Textmining
In zorginstellingen worden veel gegevens in het patiëntendossier vastgelegd in vrije tekst, zoals in verslagen van consulten, verpleegkundige rapportages, of correspondentie. Voor toepassingen in de zorg, in het onderzoek of bij bedrijfsvoering is deze informatie erg bruikbaar.
Het is echter niet eenvoudig om vrije tekst weer te verwerken tot gestructureerde en bruikbare data. Dat komt bijvoorbeeld door: variatie in taalgebruik en terminologie, gebruik van synoniemen, domein-specifieke afkortingen en termen, gebruik van steno, typ- en spelfouten, impliciete informatie, de context waarin begrippen voorkomen, en vele andere aspecten. Zorgapplicaties, onderzoeksdatasets en dashboards maken daardoor maar zelden gebruik van deze schat aan informatie, of alleen op kleine schaal na veel handmatig werk.
In het UMC Utrecht werken wij onder de noemer 'Textmining' aan methoden, technieken en technologieën om vrije tekst wél op schaal te structureren en doorzoeken. Waar mogelijk gebruiken en ontwikkelen we daarvoor open source-oplossingen. Op deze pagina bieden we een kort overzicht van onze inspanningen op dit gebied. Onder use cases omschrijven we verderop enkele toepassingen die we hiermee al mogelijk hebben gemaakt.
Klinische Natural Language Processing (NLP) uitklapper, klik om te openen
Het vakgebied van de klinische NLP heeft als taak de relevante informatie die in vrije tekst verborgen zit aan het oppervlak te brengen. Dat proces kan uit verschillende stappen bestaan, zoals de-identificatie, herkenning van medische concepten, oplossen van ambiguïteit, en detecteren van context van begrippen. In een consultverslag zou bijvoorbeeld de volgende zin kunnen voorkomen:
Bij dhr. Jansen werd een vergroting van het RA vastgesteld, maar werd longembolie uitgesloten.
In deze zin komt de naam van de patiënt voor, die automatisch verwijderd wordt om de privacy van patiënten te waarborgen:
Bij
[PERSOON]
werd een vergroting van het RA vastgesteld, maar werd longembolie uitgesloten.
Er staan twee medische begrippen in het fragment, die automatisch herkend en gelinkt worden aan de juiste concepten uit het Unified Medical Language System (UMLS), een metathesaurus van de biomedische wetenschappen:
Bij
[PERSOON]
werd een vergroting van het
[RA C0225844 - Rechter atrium] [RA C0003873 - Reumatoïde artritis]
vastgesteld, maar werd
[longembolie C0034065 - Longembolie]
uitgesloten.
Het begrip RA wordt tweemaal herkend, eenmaal als Rechter Atrium (UMLS C0225844
), en eenmaal als Reumatoïde Artritis (UMLS C0003873
). Uit de context van de zin (vergroting, longembolie) wordt door een machine learning-techniek afgeleid dat het waarschijnlijk om het eerste gaat. Daarnaast is het concept Longembolie (UMLS C0034065
) opgeschreven in ontkennende vorm. Ook dit wordt automatisch herkend en verwerkt in de gestructureerde output:
Bij
[PERSOON]
werd een vergroting van het
[RA C0225844 - Rechter atrium | bevestigd]
vastgesteld, maar werd
[longembolie C0034065 - Longembolie | ontkend]
uitgesloten.
Hiermee is de belangrijkste informatie die opgesloten zat in de vrije tekst gestructureerd, en daarmee beschikbaar voor allerlei verdere toepassingen. Dit zijn slechts enkele voorbeelden van bewerkingsstappen die mogelijk zijn op klinische tekst. Het vakgebied van klinische NLP kan voortbouwen op recente ontwikkelingen uit de niet-klinische taalverwerking, en klinische taalverwerking van met name Engelstalige tekst, maar is nog volop in ontwikkeling.
Clinlp
Om deze ontwikkelingen samen te brengen, werkt het UMC Utrecht aan de open source toolkit clinlp
.
Clinlp
maakt het mogelijk om NLP pipelines te ontwikkelen voor Nederlandse medische teksten. Nuttig als startpunt als je íets met Nederlandse NLP wilt doen. De principes en doelstellingen waarop het gebouwd is, zijn:
Functioneel:
- Biedt NLP pipelines geoptimaliseerd voor Nederlandse klinische tekst
- Effectief en productieklaar
- Inzetbaar out-of-the-box, maar zeer configureerbaar
- (Her)gebruikt bestaande componenten waar mogelijk, implementeert nieuwe componenten waar nodig
- Niet bedoeld voor annotatie, training en analyse - reeds gedekt door bestaande packages
Ontwikkeling:
- Gratis en open source
- Gericht op de technische gebruiker
- Samengesteld en onderhouden door de Nederlandse klinische NLP gemeenschap
- Gebouwd met behulp van het spaCy raamwerk (>3.0.0)
- Daarom niet-destructief
- Werkt toe naar een bepaald niveau van standaardisatie van componenten (abstractie, protocollen)
- Volgt best practices uit de industrie (systeemontwerp, code, documentatie, testen, CI/CD)
Met clinlp
willen we de kwaliteit van Nederlandse klinische NLP pipelines verbeteren, o.a. door de inspanningen van de Nederlandse NLP community te concentreren. Wij geloven dat we grotere stappen kunnen maken als we samenwerken, en het helpt als we dat vanuit een gezamenlijke toolkit kunnen doen. Hiermee creëeren we ook een interessante werkomgeving voor (nieuwe) NLP-ontwikkelaars die met concrete tools aan de slag kunnen gaan en zich kunnen ontwikkelen door in een community van elkaar te leren. Door kennis en ervaringen uit te wisselen, wordt de valorisatie van klinische NLP methoden ook versneld.
Clinlp
is nog volop in ontwikkeling, dus als je enthousiast bent over het gebruik of als je wilt bijdragen, aarzel dan niet om contact op te nemen. We bespreken graag de ideeën en behoeften vanuit het perspectief van een (eind)gebruiker, engineer of clinicus, en formuleren samen een roadmap met volgende stappen.
Naast clinlp
, werken wij ook nog (mee) aan andere open source projecten:
Text search uitklapper, klik om te openen
Een veelgevraagde toepassing is het screenen van grote groepen patiënten, bijvoorbeeld voor inclusie in een studie, waarbij de inclusiecriteria vooral terug te vinden zijn in vrije tekst. Het elektronische patiëntendossier zelf biedt hiervoor geen mogelijkheden. Voor deze groep gebruikers stellen we tekstdata beschikbaar in de open source-applicatie EMERSE. Daarin kunnen zorgprofessionals vrije tekst zelfstandig en zeer snel doorzoeken, vergelijkbaar met PubMed/Google (bijvoorbeeld met AND
, OR
, wildcards, exacte matching, etc.). De hoeveelheid handmatig werk voor het screenen van patiënten wordt daarmee sterk verminderd, zeker als het gaat om kleine aantallen in een grote populatie. In dat geval zou een arts handmatig moeten zoeken in de dossiers van patiënten die hij/zij behandeld heeft. Behalve dat zoeken met een zoekmachine sneller is dan de handmatige methode, is het ook veiliger. Alleen de patiënten die voldoen aan de zoekopdracht zullen als resultaat getoond worden, en persoonlijke informatie zoals namen en adresgegevens kunnen worden afgeschermd in de tekst.
Scan de bovenstaande QR-code met uw telefoon om een video over dit onderwerp te bekijken. Of bekijk de video via:
Ook voor stuurinformatie en andere vraagstukken kunnen gebruikers met behulp van EMERSE een zoekopdracht zelfstandig ontwikkelen en verfijnen. Denk bijvoorbeeld aan aantallen/trends van bepaalde aandoeningen, symptomen of klachten voor gebruik in rapportages.
EMERSE is een open source applicatie ontwikkeld aan de University of Michigan. Het ontwikkelteam daar is o.a. bezig met de integratie van NLP-technieken (zoals hierboven) in de zoekmachine, zodat er ook gezocht kan worden op concepten, er gefilterd kan worden op negaties en zekerheid, en er rekening gehouden kan worden met (familie)context. Hierdoor zal er met nog minder handmatig werk nog nauwkeuriger kunnen worden gezocht.
Samenwerking uitklapper, klik om te openen
Dat er veel vraag is naar het hergebruik van vrije tekst, blijkt ook uit het samenwerkingsverband tussen vijf umc's op dit gebied via SURF. We maken gebruik van elkaars kennis, ontwikkelen (mee) aan open source oplossingen, en valideren onze methoden en technieken met elkaar. Op die manier zorgen we dat onze collectieve inzet ook collectief bruikbare oplossingen oplevert.
Deze samenwerking is ook gepubliceerd als project in de Research Software Directory, zie link.