Je vraagt een test niet aan in de hoop dat hij positief is
Als een arts troponine aanvraagt, vraagt ze zich niet af: ‘Heeft deze patiënt een hartinfarct?’ Ze vraagt zich af: ‘Hoeveel moet ik mijn inschatting bijstellen op grond van deze uitslag?’ Dat zijn verschillende vragen.
Nog voordat de test is aangevraagd, heeft ze al een inschatting. Een man van 62 met pijn op de borst die uitstraalt naar de linkerarm en die klam zweet, heeft een hoge voorafkans op een acuut coronair syndroom. Een vrouw van 28 met dezelfde hoofdklacht na drie espresso's heeft een lage. De troponine-uitslag betekent voor elk van hen iets anders. Een licht verhoogd troponine bevestigt bij de eerste patiënt wat ze al vermoedde. Dezelfde uitslag is bij de tweede patiënt eerder fout-positief, want de test zelf is niet perfect, en als je een onvolmaakte test loslaat op iemand die de aandoening waarschijnlijk niet heeft, werkt de rekensom tegen je.
Elke test heeft een sensitiviteit en een specificiteit. De sensitiviteit zegt hoe vaak de test de ziekte vindt als die er echt is. De specificiteit zegt hoe vaak de test iemand die de ziekte niet heeft terecht vrijpleit. Geen test scoort op een van beide 100%. Een test met een sensitiviteit van 95% mist nog steeds 5% van de echte gevallen. Een test met een specificiteit van 90% markeert nog steeds 10% van de gezonde mensen ten onrechte. Die getallen zijn eigenschappen van de test, niet van de patiënt. En ze betekenen dat elke uitslag onzekerheid meedraagt die je vertrouwen moet bijstellen, niet vervangen.
Dat is bayesiaans redeneren. Je begint met wat je al van de patiënt weet. Je krijgt een nieuw stukje informatie. Je stelt je inschatting bij naargelang hoe betrouwbaar die informatie is. Daarna doe je dat opnieuw met het volgende stukje.
De meeste klinische AI doet het omgekeerde
De meeste AI-systemen in de zorg werken achterstevoren. Ze nemen een verzameling uitslagen, vitale functies, labwaarden, diagnoses en medicatie, en leggen die achteraf naast patronen die ze uit trainingsdata hebben geleerd. Het systeem ziet een creatinine van 1,6, diabetes in de voorgeschiedenis en een ACE-remmer op de medicatielijst, en concludeert ‘waarschijnlijk chronische nierschade’, omdat die combinatie van kenmerken vaak samen voorkwam in de gevallen waarop het is getraind.
Dat klinkt redelijk, tot je bedenkt wat er ontbreekt. Het systeem weet niet of het creatinine stijgt of stabiel is. Het weet niet of de ACE-remmer is voorgeschreven om de nieren te beschermen of voor de bloeddruk. Het weet niet dat het creatinine van de patiënt twee jaar geleden 0,9 was en sindsdien gestaag oploopt. Het houdt er geen rekening mee dat de albuminetest in de urine in deze populatie 15% fout-positieven geeft. Het legt alleen de huidige momentopname naast historische patronen en plakt er een label op.
Een arts die naar dezelfde patiënt kijkt, redeneert vooruit. Ze begint met de voorafkans op chronische nierschade, gegeven de leeftijd, het geslacht en de risicofactoren van de patiënt. Ze stelt die bij op grond van het creatinine, maar weegt die bijstelling af naar hoeveel ze één creatininemeting vertrouwt. Ze kijkt naar het beloop, niet alleen naar het getal van vandaag. Ze neemt de ACE-remmer mee, maar vraagt zich eerst af waarom die is voorgeschreven voordat ze hem als aanwijzing voor nierziekte telt. Elk gegeven verschuift de kans, en elk gegeven weegt mee naar hoe betrouwbaar het is.
De retrospectieve aanpak vraagt: waar lijkt dit op? De prospectieve aanpak vraagt: gegeven alles wat we tot nu toe weten, wat zegt deze nieuwe informatie ons, en hoeveel moeten we die vertrouwen?
De hele patiënt zien of alleen de uitslagen
Een van de eerste dingen die je in je opleiding leert, is dat je de patiënt behandelt, niet de labwaarde. Een kalium van 5,8 in een gehemolyseerd monster zegt niets. Een bloeddruk van 160 bij een patiënt die net naar de afspraak is komen rennen, is geen hypertensie. De context bepaalt of een uitslag signaal is of ruis, en voor context moet je de patiënt kennen voorbij wat er vandaag in het dossier staat.
Een algemene AI verwerkt uitslagen. Zo'n systeem leest de getallen, de notities en de gecodeerde diagnoses, en geeft een uitkomst op basis van tekstpatronen. Daar is het heel goed in. Het vat een ontslagbrief sneller samen dan welk mens ook. Het haalt gestructureerde gegevens uit rommelige klinische tekst. Maar het leest het dossier zoals jij een casus in een leerboek leest. Achteraf.
Een arts die een patiënt op dat moment ziet, doet iets anders. Ze redeneert onder onzekerheid, vooruit in de tijd, stelt haar beoordeling bij met elk nieuw gegeven en weegt elk gegeven naar hoeveel ze het vertrouwt. Ze weet dat een positieve D-dimeer bij een patiënt met een laag risico waarschijnlijk fout-positief is. Ze weet dat een normale thoraxfoto een beginnende pneumonie niet uitsluit. Ze houdt de voorafkans in haar hoofd en stelt die bij met elke bevinding, niet allemaal even zwaar, maar naar de diagnostische waarde van elke bevinding.
Toen we Chroneme bouwden, wilden we dat het systeem redeneert zoals zij, niet zoals een zoekmachine. Vooruit, niet terug. Met kansen die bij elk nieuw gegeven worden bijgesteld, gewogen naar hoe betrouwbaar dat gegeven werkelijk is.
Hoe dit in de praktijk werkt
Een man van 58 met diabetes type 2 komt voor routinelab. Zijn uitgangskans op chronische nierschade, op grond van leeftijd, geslacht en de diagnose diabetes, begint op een bepaald niveau. Niet nul, want diabetes is de belangrijkste oorzaak van chronische nierschade. Niet hoog, want hij heeft geen klachten en geen eerdere nierafwijkingen.
Zijn creatinine is 1,2. Technisch gezien binnen de normaalwaarden, maar hoger dan bij de vorige meting. Het systeem stelt bij. Niet veel, want één licht verhoogd creatinine heeft een bescheiden diagnostische waarde. De sensitiviteit en specificiteit van één creatininemeting voor chronische nierschade zijn op zichzelf niet bijzonder sterk.
Tien maanden later is zijn creatinine 1,4 en is zijn eGFR onder de 60 gezakt. Nu is de bijstelling groter, want een eGFR onder de 60 heeft een veel hogere diagnostische waarde voor chronische nierschade. Maar het systeem ziet ook iets wat een statisch model niet ziet: het beloop. Het creatinine is niet alleen verhoogd. Het stijgt in een tempo dat, doorgetrokken, in een zorgwekkend gebied uitkomt.
Een jaar later verschijnt er proteïnurie. De kans is nu hoog genoeg om in actie te komen. Maar dit is het klinisch belangrijke deel: het systeem signaleerde deze patiënt al maanden voordat de proteïnurie opdook. Niet met zekerheid. Met een kans die zo opliep dat ze aandacht verdiende. De arts die het dossier bekijkt, ziet elke bijstelling, ziet waardoor die kwam en beslist of ze het ermee eens is. Denkt ze dat de ACE-remmer voor de bloeddruk is voorgeschreven en niet voor de nieren, dan kan ze die factor in haar klinisch oordeel anders wegen. Het systeem laat zijn redenering zien. Zij past de hare toe.
Het beloop zelf wordt bewijs, los van welk afzonderlijk getal ook.
Waarom dit belangrijk is voor vertrouwen
Als een neuraal netwerk zegt ‘73% kans op chronische nierschade’, kun je niet vragen waarom. Het getal komt voort uit miljoenen parameters die niet overeenkomen met klinische begrippen. Een arts kan er niet naar kijken en zeggen: ‘Met het creatininedeel ben ik het eens, maar je laat de medicatiegeschiedenis te zwaar wegen.’ Er is geen creatininedeel. Er is geen medicatiedeel. Er is alleen een getal.
Als een bayesiaans systeem 73% zegt, kan een arts vragen waarom. Ze ziet welk bewijs de kans verschoof en met hoeveel. Ze kan het oneens zijn met een specifieke factor en haar eigen oordeel toepassen. Dat gesprek is hoe klinische AI de zorg echt verandert. Zonder dat gesprek is de uitkomst een bewering. Met dat gesprek is de uitkomst een argument.
Een nefroloog aan wie we het systeem lieten zien, maakte dit punt heel helder. Hij bekeek de bewijsketen bij een patiënt en zei dat hij het met het meeste eens was, maar dat één factor te zwaar woog omdat de context van het voorschrijven anders was dan het systeem aannam. Hij had gelijk. En dat hij die observatie kon maken, de specifieke factor kon aanwijzen en zijn expertise kon toepassen, is precies wat klinische beslisondersteuning mogelijk moet maken. Een black box had hem dezelfde kans gegeven, zonder enige manier om dat gesprek te voeren.
De beperkingen waar we eerlijk over zijn
Bayesiaanse inferentie gaat ervan uit dat de bewijsstukken, gegeven de ziekte, onderling onafhankelijk zijn. In de klinische geneeskunde is dat vaak niet zo. Creatinine en proteïnurie hangen bij chronische nierschade met elkaar samen. Dit is een bekende beperking, en die perfect oplossen is in het vakgebied nog een open probleem.
De kwaliteit van de uitkomst hangt af van de kwaliteit van de gewichten van het bewijs. Sommige zijn goed onderbouwd in de gepubliceerde literatuur. Andere zijn benaderingen die we via validatie verfijnen. Het kalibreren gaat door en we doen niet alsof dat anders is.
Bayesiaanse inferentie gaat goed om met gestructureerd, meetbaar bewijs: labwaarden, vitale functies, medicatie, gecodeerde diagnoses. Met ongestructureerde klinische notities en klachten die patiënten zelf melden gaat het minder goed. We gebruiken verschillende methoden voor verschillende soorten klinische gegevens en kiezen het gereedschap dat bij het probleem past.
We kozen voor bayesiaanse inferentie omdat die weerspiegelt hoe artsen al denken. Het systeem formaliseert wat een goede clinicus intuïtief doet, op schaal, bij elke patiënt, continu. Meer is het niet. Geen magie. Gewoon de wiskunde achter klinisch redeneren, expliciet gemaakt.
Nieuwe essays en updates, per e-mail.
