Digital & IT
AI for clinical trial patient recruitment
Eligibility criteria as temporal logic, the negation and absence problems in clinical text, base rates that punish imperfect specificity, and why a matching model trained at one health system fails at the next.
Trial recruitment is the most reliable failure point in clinical development: protocols routinely close under-enrolled or extend their timelines, and the cost is measured in months of exclusivity. The appeal of automating the match is obvious. The difficulty is that both halves of the match are harder than they look.
Eligibility criteria are logic, not keywords
A protocol’s criteria are prose, but they encode temporal, quantitative and negated conditions. “Adequate hepatic function” means a laboratory value inside a stated window measured within a stated number of days of enrolment — a constraint that binds a value, a unit, a reference range and a date. “No prior systemic therapy for metastatic disease” is a negation over an interval, qualified by a disease state that itself has to be inferred. “ECOG performance status 0–1” refers to an assessment most records never made. Matching therefore requires temporal reasoning and an ability to represent absence, not string matching against a diagnosis list.
Absence is the sharper problem. A record that does not mention prior therapy is evidence of nothing: care fragments across providers, and no health system holds the whole history. A model can only ever assert that it found no evidence — which is why these systems properly output a ranked shortlist for a coordinator to screen, and why the honest metric is screen-failure rate rather than the number of candidates surfaced.
The record was written for reimbursement
Structured clinical data is a billing artefact. ICD-10 codes are assigned to justify payment, so they are systematically biased toward what is reimbursable and away from what is clinically nuanced; a code’s presence often marks a rule-out that was investigated rather than a disease that was confirmed. The clinically decisive detail — stage, biomarker status, why a drug was stopped — usually exists only in narrative notes, where negation (“no evidence of recurrence”), hypotheticals (“if progression occurs”) and family history all read as positive mentions to a naive extractor.
This is also why transfer between institutions fails. Each health system has its own template language, its own local laboratory codes, its own habits about what gets coded and what gets typed. A model that learned those habits at one site has learned that site, not the disease. Common data models exist to blunt this — OMOP for observational structure, FHIR for exchange, LOINC for laboratory identity, SNOMED CT for clinical meaning — and mapping into them is manual, lossy and where most of the real work sits.
Base rates and the fairness trap
Eligible patients are rare — often well under one percent of a health system’s population for a given protocol. Under such a base rate, even a highly specific classifier produces a candidate list dominated by false positives, because those false positives are drawn from a vastly larger pool. Reported sensitivity is close to meaningless without the prevalence it was measured at.
The final constraint is not technical. A model trained on who was historically enrolled learns historical enrolment patterns, including the under-representation of groups that trials have long under-recruited; used unexamined, it makes that pattern efficient. And identifying a patient is not permission to approach one — contact runs through the treating clinician and the site’s ethics approval, so throughput is bounded by human capacity regardless of how good the ranking is.