Clinical Trial Matching
Patient Eligibility Prediction
class TrialMatcher:
def __init__(self):
self.criteria_models = {}
def predict_eligibility(self, patient, trial):
scores = []
for criterion in trial['criteria']:
model = self.criteria_models.get(criterion['type'])
if model:
scores.append(model.predict_proba(patient)[0, 1])
return np.mean(scores) if scores else 0
def rank_trials(self, patient, trials):
scored = [(t, self.predict_eligibility(patient, t)) for t in trials]
return sorted(scored, key=lambda x: x[1], reverse=True)