Zephyrnet-logo

Bouw een cognitieve zoekopdracht en een gezondheidskennisgrafiek met behulp van AWS AI-services

Datum:

Medische gegevens zijn sterk contextueel en sterk multimodaal, waarbij elke gegevenssilo afzonderlijk wordt behandeld. Om verschillende gegevens te overbruggen, integreert een op kennisgrafieken gebaseerde benadering gegevens over domeinen heen en helpt het de complexe weergave van wetenschappelijke kennis op een natuurlijkere manier weer te geven. Drie componenten van belangrijke elektronische medische dossiers (EPD) zijn bijvoorbeeld diagnosecodes, primaire opmerkingen en specifieke medicijnen. Omdat deze worden weergegeven in verschillende gegevenssilo's, is secundair gebruik van deze documenten voor het nauwkeurig identificeren van patiënten met een specifiek waarneembaar kenmerk een cruciale uitdaging. Door die verschillende bronnen met elkaar te verbinden, hebben materiedeskundigen een rijkere pool van gegevens om te begrijpen hoe verschillende concepten, zoals ziekten en symptomen, met elkaar omgaan en om hun onderzoek te helpen uitvoeren. Dit helpt onderzoekers en praktijkmensen in de gezondheidszorg en biowetenschappen uiteindelijk om betere inzichten uit de gegevens te creëren voor een verscheidenheid aan gebruiksscenario's, zoals het ontdekken van geneesmiddelen en gepersonaliseerde behandelingen.

In dit bericht gebruiken we Amazon Health Lake om EPD-gegevens te exporteren in het Bronnen voor snelle interoperabiliteit in de gezondheidszorg (FHIR) gegevensformaat. Vervolgens bouwen we een kennisgrafiek op op basis van de belangrijkste entiteiten die zijn geëxtraheerd en geharmoniseerd uit de medische gegevens. Amazon HealthLake extraheert en transformeert ook ongestructureerde medische gegevens, zoals medische notities, zodat deze kunnen worden doorzocht en geanalyseerd. Samen met Amazon Kendra en Amazone Neptunus, staan ​​we domeinexperts toe om een ​​natuurlijke taalvraag te stellen, de resultaten en relevante documenten naar boven te halen en verbonden belangrijke entiteiten zoals behandelingen, afgeleide ICD-10-codes, medicijnen en meer te tonen in records en documenten. Dit maakt een eenvoudige analyse van het gelijktijdig voorkomen van belangrijke entiteiten, analyse van comorbiditeiten en analyse van patiëntencohorten in een geïntegreerde oplossing mogelijk. Door effectieve zoekmogelijkheden en datamining te combineren via grafieknetwerken, worden tijd en kosten voor gebruikers verminderd om relevante informatie over patiënten te vinden en de kennisonderhoud rondom EPD's te verbeteren. De codebasis voor dit bericht is beschikbaar op de GitHub repo.

Overzicht oplossingen

In dit bericht gebruiken we de output van Amazon HealthLake voor twee doeleinden.

Ten eerste indexeren we EPD's in Amazon Kendra voor semantische en nauwkeurige documentclassificatie op basis van patiëntnotities, die de efficiëntie van artsen helpen verbeteren door patiëntnotities te identificeren en deze te vergelijken met andere patiënten met vergelijkbare kenmerken. Dit verschuift van het gebruik van een lexicale zoekopdracht naar een semantische zoekopdracht die context rond de zoekopdracht introduceert, wat resulteert in betere zoekresultaten (zie de volgende schermafbeelding).

Ten tweede gebruiken we Neptune om kennisgrafiektoepassingen te bouwen waarmee gebruikers metagegevens die zijn gekoppeld aan patiëntnotities in een eenvoudiger en genormaliseerde weergave kunnen bekijken, waardoor we de belangrijke kenmerken van een document kunnen benadrukken (zie de volgende schermafbeelding).

Het volgende diagram illustreert onze architectuur.

De stappen om de oplossing te implementeren zijn als volgt:

  1. Maak en exporteer Amazon HealthLake-gegevens.
  2. Extraheer notities en metagegevens van patiëntbezoeken.
  3. Laad gegevens van patiëntnotities in Amazon Kendra.
  4. Laad de gegevens in Neptune.
  5. Stel de backend en frontend in om de webapp uit te voeren.

Maak en exporteer Amazon HealthLake-gegevens

Maak als eerste stap een datastore met Amazon HealthLake via de Amazon HealthLake-console of de AWS-opdrachtregelinterface (AWS CLI). Voor deze post richten we ons op de AWS CLI-aanpak.

  1. Wij gebruiken AWS-Cloud9 om een ​​datastore te maken met de volgende code, ter vervanging van < > met een unieke naam:
aws healthlake create-fhir-datastore --region us-east-1 --datastore-type-version R4 --preload-data-config PreloadDataType="SYNTHEA" --datastore-name "<<your_data_store_name>>"

De voorgaande code maakt gebruik van een vooraf geladen gegevensset van Synthea, die wordt ondersteund in FHIR-versie R4, om te onderzoeken hoe Amazon HealthLake-uitvoer kan worden gebruikt. Het uitvoeren van de code levert een reactie op die lijkt op de volgende code, en het duurt een paar minuten om deze stap te voltooien (ongeveer 30 minuten op het moment van schrijven):

{ "DatastoreEndpoint": "https://healthlake.us-east-1.amazonaws.com/datastore/<<your_data_store_id>>/r4/", "DatastoreArn": "arn:aws:healthlake:us-east-1:<<your_AWS_account_number>>:datastore/fhir/<<your_data_store_id>>", "DatastoreStatus": "CREATING", "DatastoreId": "<<your_data_store_id>>"
}

U kunt de voltooiingsstatus controleren op de Amazon HealthLake-console of in de AWS Cloud9-omgeving.

  1. Om de status in AWS Cloud9 te controleren, gebruikt u de volgende code om de status te controleren en wacht u tot DatastoreStatus verandert van CREATING naar ACTIVE:
aws healthlake describe-fhir-datastore --datastore-id "<<your_data_store_id>>" --region us-east-1

  1. Wanneer de status verandert in ACTIVE, haal de rol ARN op van de HEALTHLAKE-KNOWLEDGE-ANALYZER-IAMROLE stapelen in AWS CloudFormatie, gekoppeld aan de fysieke ID AmazonHealthLake-Export-us-east-1-HealthDataAccessRole, en kopieer het ARN naar de gekoppelde pagina.
  2. Gebruik in AWS Cloud9 de volgende code om de gegevens van Amazon HealthLake naar het Amazon eenvoudige opslagservice (Amazon S3) bucket gegenereerd op basis van AWS Cloud-ontwikkelingskit (AWS CDK) en noteer de job-id output:
aws healthlake start-fhir-export-job --output-data-config S3Uri="s3://hl-synthea-export-<<your_AWS_account_number>>/export-$(date +"%d-%m-%y")" --datastore-id <<your_data_store_id>> --data-access-role-arn arn:aws:iam::<<your_AWS_account_number>>:role/AmazonHealthLake-Export-us-east-1-HealthKnoMaDataAccessRole

  1. Controleer of de exporttaak is voltooid met behulp van de volgende code met de job-id verkregen uit de laatste code die je hebt uitgevoerd. (als de export is voltooid, JobStatus in de uitgangstoestanden COMPLETED):
aws healthlake describe-fhir-export-job --datastore-id <<your_data_store_id>> --job-id <<your_job_id>>

Extraheer notities en metagegevens van patiëntbezoeken

De volgende stap omvat het decoderen van patiëntbezoeken om de ruwe teksten te verkrijgen. We zullen het volgende bestand DocumentReference-0.ndjson (weergegeven in de volgende schermafbeelding van S3) importeren uit de Amazon HealthLake-exportstap die we eerder voltooiden in de geïmplementeerde CDK Amazon Sage Maker notebook instantie. Sla eerst de notebook uit de Github-opslagplaats op in de SageMaker-instantie. Voer vervolgens de notebook uit om automatisch de DocumentReference-0.ndjson-bestanden van S3 te zoeken en te importeren.

Gebruik voor deze stap de SageMaker met middelen om de notebook snel uit te voeren. Het eerste deel van het notitieboekje maakt een tekstbestand aan dat aantekeningen bevat van het bezoek van elke patiënt en wordt opgeslagen op een Amazon S3-locatie. Omdat er voor één patiënt meerdere bezoeken kunnen bestaan, combineert een unieke identificatie de unieke patiënt-ID en de bezoek-ID. De notities van deze patiënten worden gebruikt om semantische zoekopdrachten uit te voeren tegen het gebruik van Amazon Kendra.

De volgende stap in de notebook is het maken van triples op basis van de automatisch geëxtraheerde metadata. Door de metadata aan te maken en op te slaan op een Amazon S3-locatie, kan een AWS Lambda functie wordt geactiveerd om de triples rond de notities van het patiëntbezoek te genereren.

Laad gegevens van patiëntnotities in Amazon Kendra

De tekstbestanden die in het bronpad van de S3-bucket worden geüpload, moeten worden gecrawld en geïndexeerd. Voor dit bericht wordt een ontwikkelaarseditie gemaakt tijdens de implementatie van AWS CDK, dus de index wordt gemaakt om de onbewerkte patiëntnotities met elkaar te verbinden.

  1. Zoek op de AWS CloudFormation-console onder de HEALTHLAKE-KNOWLEDGE-ANALYZER-CORE-stack naar kendra op de Resources tab en noteer de index-ID en gegevensbron-ID (kopieer het eerste deel van de fysieke ID vóór de pijp (|)).

  1. Voer in AWS Cloud9 de volgende opdracht uit om de patiëntnotities in Amazon S3 te synchroniseren met Amazon Kendra:
aws kendra start-data-source-sync-job --id <<data_source_id_2nd_circle>> --index-id <<index_id_1st_ circle>>

  1. U kunt controleren of de synchronisatiestatus is voltooid door de volgende opdracht uit te voeren:
aws kendra describe-data-source --id <<data_source_id_2nd_circle>> --index-id <<index_id_1st_circle>>

Omdat de opgenomen gegevens erg klein zijn, zou het onmiddellijk moeten laten zien dat Status ACTIEF is bij het uitvoeren van de voorgaande opdracht.

Laad de gegevens in Neptune

In deze volgende stap hebben we toegang tot het Amazon Elastic Compute-cloud (Amazon EC2) -instantie die is opgestart en de triples van Amazon S3 in Neptune laadt met behulp van de volgende code:

curl -X POST -H 'Content-Type: application/json' https://healthlake-knowledge-analyzer-vpc-and-neptune-neptunedbcluster.cluster-<<your_unique_id>>.us-east-1.neptune.amazonaws.com:8182/loader -d '
{ "source": "s3://<<your_Amazon_S3_bucket>>/stdized-data/neptune_triples/nquads/", "format": "nquads", "iamRoleArn": "arn:aws:iam::<<your_AWS_account_number>>:role/KNOWLEDGE-ANALYZER-IAMROLE-ServiceRole", "region": "us-east-1", "failOnError": "TRUE"
}'

Stel de backend en frontend in om de webapp uit te voeren

De voorgaande stap duurt enkele seconden om te voltooien. Configureer in de tussentijd de EC2-instantie om toegang te krijgen tot de web-app. Zorg ervoor dat zowel Python als Node in de instantie zijn geïnstalleerd.

  1. Voer de volgende code uit in de terminal van de instantie:
sudo iptables -t nat -I PREROUTING -p tcp --dport 80 -j REDIRECT --to-ports 3000

Dit routeert het openbare adres naar de geïmplementeerde app.

  1. Kopieer de twee mappen met de titel ka-webapp en ka-server-webapp en upload ze naar een map met de naam dev in de EC2-instantie.
  2. Maak voor de frontend een scherm door de volgende opdracht uit te voeren:
screen -S back 

  1. Verander in dit scherm de map in ka-webapp en loop npm installeren.
  2. Ga na de installatie naar het bestand .env.development en plaats het openbare IPv2-adres van Amazon EC4 en sla het bestand op.
  3. lopen npm start en verwijder vervolgens het scherm.
  4. Maak voor de backend een ander scherm door het volgende in te voeren:
screen -S back

  1. Verander de map in ka-server-webapp en loop pip install -r requirements.txt.
  2. Als de bibliotheken zijn geïnstalleerd, voert u de volgende code in:
  1. Maak los van het huidige scherm en ga met een willekeurige browser naar het Amazon EC2 Public IPv4-adres om toegang te krijgen tot de webapp.

Zoek naar een diagnose van een patiënt en kies een documentlink om de kennisgrafiek van dat document te visualiseren.

Volgende stappen

In dit bericht integreren we gegevensoutput van Amazon HealthLake in zowel een zoek- als grafiekengine om semantisch relevante informatie te doorzoeken en belangrijke entiteiten te markeren die aan documenten zijn gekoppeld. U kunt deze kennisgrafiek verder uitbreiden en koppelen aan andere ontologieën zoals MeSH en MedDRA.

Bovendien biedt dit een basis om andere klinische datasets verder te integreren en deze kennisgrafiek uit te breiden om een ​​datafabriek op te bouwen. U kunt query's uitvoeren op historische populatiegegevens, waarbij u gestructureerde en taalgebaseerde zoekopdrachten koppelt voor cohortselectie om de ziekte te correleren met de uitkomst van de patiënt.

Opruimen

Voer de volgende stappen uit om uw bronnen op te schonen:

  1. Om de aangemaakte stapels te verwijderen, voert u de volgende opdrachten in de opgegeven volgorde in om alle bronnen correct te verwijderen:
$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-UPDATE-CORE
$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-WEBAPP
$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-CORE

  1. Terwijl de voorgaande opdrachten worden uitgevoerd, verwijdert u de Amazon Kendra-gegevensbron die is gemaakt:
$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-VPC-AND-NEPTUNE
$ cdk destroy HEALTHLAKE-KNOWLEDGE-ANALYZER-IAMROLE
$ aws healthlake delete-fhir-datastore --datastore-id <<your_data_store_id>> 

  1. Om te controleren of het is verwijderd, controleert u de status door de volgende opdracht uit te voeren:
$ aws healthlake describe-fhir-datastore --datastore-id "<<your_data_store_id>>" --region us-east-1

  1. Controleer de AWS CloudFormation-console om ervoor te zorgen dat alle bijbehorende stacks beginnen met HEALTHLAKE-KNOWLEDGE-ANALYZER zijn allemaal met succes verwijderd.

Conclusie

Amazon HealthLake biedt een beheerde service op basis van de FHIR-standaard waarmee u gezondheids- en klinische oplossingen kunt bouwen. Door de output van Amazon HealthLake te verbinden met Amazon Kendra en Neptune, kun je een cognitieve zoekopdracht en een gezondheidskennisgrafiek bouwen om je intelligente applicatie aan te drijven.

Door op deze benadering voort te bouwen, kunnen onderzoekers en eerstelijnsartsen gemakkelijk klinische aantekeningen en onderzoeksartikelen doorzoeken door hun vraag eenvoudig in een webbrowser te typen. Elk klinisch bewijs wordt gelabeld, geïndexeerd en gestructureerd met behulp van machine learning om op bewijzen gebaseerde onderwerpen te bieden over zaken als overdracht, risicofactoren, therapeutica en incubatie. Deze specifieke functionaliteit is enorm waardevol voor clinici of wetenschappers omdat het hen in staat stelt snel een vraag te stellen om hun klinische besluitvormingsondersteuning of onderzoek te valideren en vooruit te helpen.

Probeer dit zelf uit! Implementeer deze oplossing met Amazon HealthLake in uw AWS-account door het voorbeeld te implementeren op GitHub.


Over de auteurs

Prithiviraj Jothikumar, PhD, is een datawetenschapper bij AWS Professional Services, waar hij klanten helpt bij het bouwen van oplossingen met behulp van machine learning. Hij kijkt graag naar films en sport en brengt graag tijd door om te mediteren.

Phi Nguyen is een oplossingsarchitect bij AWS die klanten helpt bij hun cloudtraject met een speciale focus op data lake, analyse, semantische technologieën en machine learning. In zijn vrije tijd fiets je naar zijn werk, coacht hij het voetbalteam van zijn zoon of geniet je van een natuurwandeling met zijn familie.

Parminder Bhatia is een wetenschappelijk leider in de AWS Health AI en bouwt momenteel op schaal deep learning-algoritmen voor klinische domeinen. Zijn expertise ligt op het gebied van machine learning en grootschalige tekstanalysetechnieken in omgevingen met weinig middelen, met name in biomedische, biowetenschappen en gezondheidszorgtechnologieën. Hij houdt van voetballen, watersporten en reizen met zijn gezin.

Garin Kessler is Senior Data Science Manager bij Amazon Web Services, waar hij teams van datawetenschappers en applicatiearchitecten leidt om op maat gemaakte machine learning-applicaties voor klanten te leveren. Buiten AWS geeft hij lezingen over machine learning en neurale taalmodellen in Georgetown. Als hij niet aan het werk is, luistert hij graag naar (en maakt) muziek van twijfelachtige kwaliteit met vrienden en familie.

Dr. Taha Kass-Hout is directeur Machine Learning en Chief Medical Officer bij Amazon Web Services, en leidt onze Health AI-strategie en inspanningen, waaronder Amazon Comprehend Medical en Amazon HealthLake. Taha werkt ook samen met teams bij Amazon die verantwoordelijk zijn voor de ontwikkeling van de wetenschap, technologie en schaal voor COVID-19-laboratoriumtests. Als arts en bio-informaticus diende Taha twee termijnen onder president Obama, waaronder de eerste Chief Health Informatics officer bij de FDA. Gedurende deze tijd als ambtenaar was hij een pionier in het gebruik van opkomende technologieën en cloud (CDC's elektronische ziektesurveillance), en richtte hij breed toegankelijke wereldwijde platforms voor het delen van gegevens op, de openFDA, waarmee onderzoekers en het publiek gegevens over ongewenste voorvallen konden zoeken en analyseren. en precisionFDA (onderdeel van het Presidential Precision Medicine-initiatief).

Coinsmart. Beste Bitcoin-beurs in Europa
Bron: https://aws.amazon.com/blogs/machine-learning/build-a-cognitive-search-and-a-health-knowledge-graph-using-amazon-healthlake-amazon-kendra-and-amazon- Neptunus/

spot_img

Laatste intelligentie

spot_img

Chat met ons

Hallo daar! Hoe kan ik u helpen?