
De typefout van $800.000 per dag: hoe een AI die katheters verwart het geneesmiddelenonderzoek nekt
Het was een dinsdagavond en ik staarde naar een spreadsheet die nergens op sloeg.
We hadden een pilot lopen — waarin we testten hoe goed een groot taalmodel patiëntendossiers kon toetsen aan de geschiktheidscriteria voor een oncologisch onderzoek. Het protocol was rechttoe rechtaan, zoals oncologische protocollen gaan: een nieuw antistollingsmiddel met een lijst uitsluitingscriteria, waarvan er één luidde "eerdere hartkatheterisatie". Hartkatheterisatie. Een katheter die in de hartkamers wordt geschoven om de coronaire functie te beoordelen. Een ernstige, invasieve cardiale ingreep.
De AI had een patiënt als niet-geschikt gemarkeerd. Reden: hartkatheterisatie. Ik haalde het dossier van de patiënt erbij. De gedocumenteerde ingreep was een centraalveneuze punctie — een centrale lijn geplaatst in de halsader voor toediening van medicatie. Het is een vasculaire toegangsprocedure aan het bed. Verpleegkundigen doen het op de IC. Het is geen hartingreep. Het komt er niet eens in de buurt.
Maar het model zag "katheter", zag "veneus", zag dat de aantekening op een hartbewakingsafdeling was geschreven, en concludeerde: hetzelfde ding. De patiënt was weg. Uitgesloten. Nooit onder de aandacht gebracht van de locatiecoördinator. En dit is wat me achtervolgde — niemand zou het gemerkt hebben. Het systeem zou een geschikte patiënt stilzwijgend hebben weggegooid, en het onderzoek zou één persoon korter zijn geweest, en niemand zou hebben geweten waarom de inclusie achterbleef.
Dat was het moment waarop ik ophield te geloven dat betere prompts de werving voor klinische onderzoeken zouden oplossen. Het probleem is niet de woordenschat van het model. Het probleem is dat we een kansmachine gebruiken om het werk van logica te doen.
Waarom blijft 80% van de pijplijn van farma vastzitten in de werving?
De farmaceutische industrie heeft een vuil geheim waar geen enkele beleggerscall graag bij stilstaat: ongeveer 80% van de klinische onderzoeken haalt de inclusietermijnen niet. Niet omdat de wetenschap fout is. Niet omdat er geen patiënten bestaan. Maar omdat het proces van het vinden van geschikte patiënten en het koppelen aan onderzoeken op een fundamenteel niveau kapot is.
Laat me een bedrag hangen aan die gebrokenheid. Volgens het Tufts Center for the Study of Drug Development kost één dag vertraging in geneesmiddelenontwikkeling nu ruwweg $800.000 aan misgelopen receptomzet voor een goed presterend product. In cardiovasculaire en hematologische toepassingen stijgt dat getal tot boven de $1,3 miljoen per dag. Voor een inclusievertraging van zes maanden op een concurrerend oncologisch geneesmiddel — het soort vertraging dat routinematig voorkomt — kijk je tegen een getal aan dat een wetenschappelijk superieure therapie commercieel dood-bij-aankomst kan maken.
Het knelpunt in geneesmiddelenonderzoek is niet langer de wetenschap. Het is de syntaxis.
En de operationele realiteit is nog grimmiger dan de financiële. 37% van de onderzoekslocaties includeert te weinig, en 11% slaagt er niet in ook maar één patiënt te includeren. Elke screeningsmislukking — een patiënt die op papier geschikt lijkt maar het niet is — kost ongeveer $1.200. Wanneer je AI-tool 100 "matches" genereert en er maar 5 echt zijn, heb je de werving niet geautomatiseerd. Je hebt een denial-of-service-aanval op je eigen onderzoekslocaties gelanceerd.
Ik heb dit zien gebeuren. Locatiecoördinatoren die enthousiast waren over onze vroege prototypes begonnen de matchlijsten volledig te negeren. "Jouw tool geeft me rommel", vertelde er een me tijdens een gesprek. Ze had geen ongelijk. Ze ging terug naar het handmatig doorzoeken van pdf's. Ctrl+F. De feitelijke state of the art van de industrie.
De katheter die mijn geloof in LLM's brak
Laat me dieper ingaan op die fout op dinsdagavond, want die illustreert iets waar de meeste pitches over AI-in-de-zorg overheen glijden.
Wanneer een groot taalmodel tekst verwerkt, zet het woorden om in vectoren — punten in een hoogdimensionale wiskundige ruimte. Woorden die in vergelijkbare contexten voorkomen, belanden dicht bij elkaar. "Hartkatheterisatie" en "centraalveneuze katheterisatie" zijn in de vectorruimte praktisch buren. Beide hebben te maken met katheters. Beide hebben te maken met het vaatstelsel. Beide komen voor in klinische aantekeningen omringd door vergelijkbaar medisch jargon.
Maar het zijn compleet verschillende ingrepen gericht op verschillende anatomische structuren met verschillende risicoprofielen en verschillende klinische implicaties. De ene gaat het hart in. De andere gaat een ader in. Het protocol sloot de eerste uit. De patiënt had de tweede. En de AI kon het verschil niet zien, omdat hij geen anatomie begrijpt — hij begrijpt woordnabijheid.
Dit is geen randgeval. Studies die AI-modellen voor onderzoeksmatching evalueren, hebben precies deze faalmodus vastgesteld: modellen die ten onrechte concluderen dat hartkatheterisatie hetzelfde is als een centraalveneuze punctie, wat leidt tot onterechte uitsluiting. Het is een categorie van fouten, geen eenmalige bug.
Ik legde dit de volgende ochtend voor aan mijn team. Een van onze engineers — briljante kerel, achtergrond in deep learning — opperde dat we het konden oplossen met betere fine-tuning. Meer medische trainingsdata. Grotere contextvensters. Ik herinner me het argument dat volgde, want het was het argument dat onze hele technische richting bepaalde. Mijn standpunt was simpel, en ik zei het waarschijnlijk te bot: je kunt je niet uit een ontbrekende ontologie fine-tunen.
Een LLM weet niet dat "hartkatheterisatie" zich op een andere tak van de boom van medische ingrepen bevindt dan "centraalveneuze katheterisatie". Hij heeft geen boom. Hij heeft een mist van statistische associaties. En geen enkele hoeveelheid trainingsdata zal hem het strakke, hiërarchische begrip geven dat een medische ontologie biedt — de kennis dat Ingreep A een subtype is van "Ingreep aan het hart", terwijl Ingreep B een subtype is van "Katheterisatie van ader", en dat deze categorisch verschillend zijn.
Dat argument eindigde ermee dat we onze architectuur vanaf de grond opnieuw opbouwden.
Wat is ontologie-gedreven fenotypering, en waarom zou het je iets kunnen schelen?

Hier is het idee in gewone taal: in plaats van een AI te vragen medische dossiers te lezen en te raden wat ze betekenen, dwingen we de AI om elk medisch concept dat hij tegenkomt te vertalen naar een gestandaardiseerde code uit SNOMED CT — 's werelds meest omvattende klinische terminologiesysteem — voordat hij enige beslissing neemt.
SNOMED CT is geen woordenboek. Het is een enorme gerichte graaf waarin medische concepten verbonden zijn door logische relaties. De belangrijkste is de Is-A-relatie. "Coronaire angiografie" is-a "hartkatheterisatie" is-a "ingreep aan het hart". "Centraalveneuze katheterisatie" is-a "katheterisatie van ader" is-a "inbrengen van vasculaire katheter". Verschillende takken. Verschillende ouders. Verschillende betekenis.
Dus wanneer ons systeem een protocol tegenkomt dat "hartkatheterisatie" uitsluit en een patiëntendossier dat een centrale-lijnplaatsing vermeldt, vergelijkt het geen strings of vectoren. Het vraagt de ontologie: Is de ingreep van deze patiënt een subtype van de uitgesloten ingreep? De graaf antwoordt nee. De patiënt blijft geschikt. Deterministisch. Elke keer.
We stopten met vragen "lijken deze woorden op elkaar?" en begonnen te vragen "zijn deze concepten logisch verwant?" Die ene verschuiving veranderde alles.
Dit werkt zelfs wanneer artsen in steno schrijven. "Hart cath", "angio", "LHC", "centrale lijn", "CVC-inbreng" — SNOMED CT koppelt al deze varianten aan specifieke concept-ID's. Zodra je met concept-ID's werkt in plaats van met strings, verdwijnt de dubbelzinnigheid. Je matcht betekenis met betekenis, niet woord met woord.
Ik heb geschreven over de technische architectuur hierachter — de SNOMED CT-hiërarchieën, de postcoördinatie voor lateraliteit en ernst, de constructie van computationele fenotypes — in de interactieve versie van ons onderzoek. Maar het kerninzicht is simpel: medische AI heeft een kaart van de geneeskunde nodig, niet slechts een statistisch model van medische taal.
Hoe ontleed je "tenzij"?

Ontologie handelt het wat af — over welke medische concepten hebben we het? Maar protocollen van klinische onderzoeken hebben nog een laag complexiteit die generieke AI verschrikkelijk slecht afhandelt: de logica van geschiktheid.
Hier is een echt uitsluitingscriterium uit een oncologisch onderzoek:
"Sluit patiënten met hypertensie uit, tenzij deze goed onder controle is met stabiele medicatie gedurende ten minste 3 maanden."
Een trefwoordmatcher ziet "hypertensie" en sluit de patiënt uit. Een booleaanse filter ziet hypertensie = WAAR en sluit uit. Beide benaderingen gooien een patiënt weg die hypertensie heeft maar perfect geschikt is, omdat zijn bloeddruk al maanden onder controle en stabiel is.
Dit maakte me lichtelijk gek toen ik het voor het eerst op schaal tegenkwam. We haalden de geschiktheidscriteria uit een reeks fase II- en III-oncologieprotocollen en ontdekten dat het merendeel voorwaardelijke uitsluitingen bevatte — "tenzij"-clausules, "behalve wanneer"-clausules, temporele afhankelijkheden zoals "binnen 6 maanden" of "meer dan 90 dagen daarvoor afgerond". Dit zijn geen randgevallen. Ze zijn de norm. En elk van hen is een valstrik voor systemen die niet kunnen redeneren over voorwaarden, toestemmingen en tijd.
We wendden ons tot deontische logica — een tak van de formele logica die zich bezighoudt met verplichtingen, toestemmingen en verboden. Het is de logica van normen en regels, oorspronkelijk ontwikkeld door filosofen, en ze past perfect op de criteria van klinische onderzoeken. Hypertensie hebben is verboden — tenzij je ook voldoet aan de toestemmingsvoorwaarden van een gecontroleerde bloeddruk en stabiele medicatie gedurende de vereiste duur. Het systeem modelleert dit als een formele logische expressie, controleert de tijdlijn van de patiënt en berekent geschiktheid met wiskundige precisie.
Nog een patroon dat we voortdurend zien:
"Patiënten mogen geen eerdere chemotherapie hebben gehad, tenzij het neoadjuvante therapie betrof die meer dan 6 maanden geleden is afgerond."
De AI moet gelijktijdig drie dingen verifiëren: heeft de patiënt chemotherapie gekregen? Was de intentie ervan neoadjuvant? En eindigde ze meer dan zes maanden vóór de referentiedatum? We handelen dit af met wat de literatuur Temporal Ensemble Logic noemt — het systeem bouwt een tijdlijn van de klinische voorgeschiedenis van de patiënt en plaatst gebeurtenissen binnen geldige observatievensters.
Een trefwoordzoekopdracht ziet "chemotherapie" in het dossier en raakt in paniek. Ons systeem ziet chemotherapie, controleert het intentie-attribuut, meet het tijdsverschil en bepaalt geschiktheid correct.
De architectuur waar niemand om vroeg (maar die iedereen nodig heeft)

Wanneer ik onze aanpak beschrijf aan investeerders en farmadirecteuren, krijg ik soms een bepaalde blik — de blik die zegt "waarom maak je dit zo ingewikkeld? Gebruik gewoon GPT."
Ik kreeg die blik van een potentiële partner toen we ongeveer een jaar bezig waren met onze ontwikkeling. Hij was een slimme kerel, leidde het digitale-innovatieteam van een CRO, en hij geloofde oprecht dat een goed geprompte GPT-4-wrapper met wat retrieval-augmented generation eraan vastgeschroefd het probleem zou oplossen. "De modellen worden elk kwartaal beter", vertelde hij me. "Je overengineert dit."
Ik haalde onze testresultaten erbij. Dezelfde dataset, dezelfde geschiktheidscriteria. De GPT-wrapper van zijn team: wisselende nauwkeurigheid tussen runs — letterlijk verschillende antwoorden op dezelfde patiënt, afhankelijk van wanneer je het draaide. Geen audit trail. Geen manier om uit te leggen waarom een patiënt was opgenomen of uitgesloten. En een nauwkeurigheid die rond de 63-87% piekte, afhankelijk van de complexiteit van de criteria.
Ons neuro-symbolic systeem: deterministisch, reproduceerbaar, >95% nauwkeurigheid, met een compleet redeneerspoor voor elke beslissing.
De FDA accepteert "de AI dacht van wel" niet als motivering. Ze hebben een logisch bewijs nodig. Dat is geen nice-to-have — het is het verschil tussen een tool die klinisch onderzoek versterkt en een speeltje dat demopubliek imponeert.
Zo werkt de architectuur in werkelijkheid, zonder je te verdrinken in implementatiedetails:
De LLM leest. Hij verwerkt de rommelige, ongestructureerde realiteit van medische dossiers — gescande pdf's, handgeschreven aantekeningen, verhalen van artsen — en zijn enige taak is het extraheren en normaliseren van medische entiteiten. Hij leest "pt klaagt over pijn op de borst" en geeft het SNOMED-concept voor pijn op de borst uit. Meer niet. De LLM is de perceptielaag. Hij neemt nooit een geschiktheidsbeslissing.
De kennisgraaf mapt. Geëxtraheerde entiteiten worden gekoppeld aan SNOMED CT-concept-ID's, ondubbelzinnig gemaakt door context. "Verkoudheid" het virus versus "koud" de temperatuur. De graafstructuur lost de dubbelzinnigheid op.
De logica-oplosser redeneert. Dit is waar de daadwerkelijke geschiktheidsbepaling plaatsvindt — een deterministische symbolische redeneerder die deontische-logicaregels toepast op het gestructureerde fenotype van de patiënt. Hij controleert Is-A-relaties, berekent temporele looptijden, evalueert voorwaardelijke toestemmingen. Bij dezelfde invoer produceert hij altijd dezelfde uitvoer.
We gebruiken ook GraphRAG in plaats van standaard vectorgebaseerde retrieval. Standaard RAG haalt documentfragmenten op op basis van woordgelijkenis. GraphRAG doorloopt relaties. Als een onderzoek "elk geneesmiddel dat interageert met CYP3A4-enzymen" uitsluit en een patiënt Middel B gebruikt, mist standaard RAG mogelijk het verband als het dossier van de patiënt nooit expliciet zegt "Middel B is een CYP3A4-remmer". GraphRAG weet het, omdat de kennisgraaf de relatie bevat: Middel B remt CYP3A4. Multi-hop-redeneren. Het soort verband dat een apotheker intuïtief legt maar een op tekst matchend systeem nooit zou leggen.
Voor de volledige technische uiteenzetting van de architectuur — de Type 4 neuro-symbolic-integratie, concept-bewuste decodering, de FHIR/CDISC-interoperabiliteitslaag — zie ons uitgebreide onderzoekspaper.
"Maar worden de modellen niet gewoon beter?"
Mensen brengen altijd dit punt in, en ik begrijp waarom. Het traject van LLM's is werkelijk indrukwekkend. Elke paar maanden scoort een nieuw model hoger op medische benchmarks. Dus waarom niet wachten?
Omdat het probleem niet capaciteit is — het is architectuur. Een LLM is een probabilistische tokenvoorspeller. Hem groter maken en op meer medische tekst trainen maakt hem een betere probabilistische tokenvoorspeller. Het maakt hem geen logica-engine. Het geeft hem geen determinisme. Het geeft hem geen audit trail. En in een gereguleerde industrie waar de FDA en EMA precies moeten weten waarom Patiënt #4.271 werd uitgesloten van Onderzoek XYZ-003, is "het model voorspelde dat dit het meest waarschijnlijke antwoord was" niet acceptabel.
Er is ook het privacyprobleem dat niet verdwijnt met schaal. Het versturen van ongestructureerde patiëntendossiers naar cloudgebaseerde model-API's — zelfs enterprise-varianten — creëert HIPAA- en AVG-blootstelling die geen enkele hoeveelheid verwerkersovereenkomsten volledig ondervangt. Onze architectuur houdt patiëntgegevens binnen beveiligde enclaves. De symbolische redeneerlaag en de kennisgraaf draaien lokaal. De neurale laag kan een lokaal open-sourcemodel zijn. Beschermde gezondheidsinformatie verlaat nooit de firewall.
En dan is er nog het reproduceerbaarheidsprobleem dat ik het meest verdoemend vind. Haal hetzelfde patiëntendossier tweemaal door een LLM met dezelfde prompt, en je kunt verschillende antwoorden krijgen. Verander de temperatuurinstelling, pas het contextvenster aan, herformuleer de vraag lichtjes — een ander resultaat. Klinische onderzoeken vereisen 100% reproduceerbare beslissingen. Het regelgevingskader eist het. De ethiek eist het.
De patiënten die we verliezen
Ik heb het grootste deel van dit essay besteed aan het praten over architectuur en economie, maar ik wil ergens eerlijker eindigen.
Voor patiënten met uitgezaaide kanker, of AML, of een zeldzame genetische aandoening is een inclusievertraging van zes maanden geen regel op een financieel model. Het is het verschil tussen wel of geen toegang tot een potentieel genezende therapie. Wanneer ons systeem een geschikte patiënt ten onrechte uitsluit — omdat het twee katheteringrepen verwarde, of omdat het een "tenzij"-clausule niet kon ontleden — krijgt die patiënt geen melding met de tekst "sorry, de AI heeft een fout gemaakt". Ze horen simpelweg nooit van het onderzoek. Hun oncoloog krijgt nooit de waarschuwing. De plek blijft onbezet, of gaat naar iemand anders, en de patiënt gaat door met de standaardbehandeling, zonder ooit te weten dat er een optie bestond.
Dat is waar ik aan denk wanneer iemand me zegt om gewoon een wrapper-API te gebruiken.
We bouwden Veriprajna omdat de kloof tussen wat AI in de zorg belooft en wat het daadwerkelijk levert geen marketingprobleem is — het is een engineeringprobleem. De industrie koos de gemakkelijke architectuur (gooi er een LLM tegenaan) in plaats van de juiste architectuur (geef de LLM een ontologie en een logica-oplosser en beperk hem tot alleen datgene waar hij goed in is).
We gaan ons niet via prompt-engineering een weg banen naar precisiegeneeskunde. We hebben systemen nodig die redeneren, niet systemen die zelfverzekerd raden.
De remedie voor de wervingscrisis zijn geen betere taalmodellen. Het is het besef dat geschiktheid een logicaprobleem is dat een taalkostuum draagt. Strip de ongestructureerde tekst weg, koppel die aan een medische ontologie, pas formeel redeneren toe, en plotseling gaan de 80% van de onderzoeken die inclusietermijnen missen eruitzien als een oplosbaar probleem in plaats van een onvermijdelijkheid van de industrie.
Stop met het matchen van woorden. Begin met het matchen van patiënten. Het verschil is een kennisgraaf, een logica-oplosser en de bereidheid om iets moeilijkers te bouwen dan een wrapper.