This is an old revision of the document!
Table of Contents
Dosage AI service
OBS! Under udvikling
DosageAI servicen er et selvstændigt FMK modul, der udstiller en snitflade mod klient-applikationer, der har behov for at få oversat en indtastet tekst til en faktisk lægemiddelordination med tilhørende dosis og indikation. Med andre ord, at få foreslåer en struktureret ordination ud fra en skrevet tekst.
Servicen, som stilles til rådighed for klient-applikationer, gør brug af Artificial Intelligence (AI) / machine learning til at udvælge en prædefineret lægemiddelordination på struktureret form - med tilhørende dosis-angivelse samt indikation - ud fra den indtastede tekst i klient-applikationen.
Brugeren af klient-applikationen, eksempelvis en læge, får efterfølgende vist en struktureret lægemiddelordination i klient-applikationen, som DosageAI servicen har returneret fra selve kaldet. Lægen kan nu rette i den viste lægemiddelordination, hvis den viste struktureret ordination ikke stemmer overens med det ønskede. Den eventuelt korrigeret struktureret lægemiddelordination vil efterfølgende blive sendt retur til DosageAI servicen sammen med den oprindelige tekst, som blev indtastet til at begynde med. Dette kald til DosageAI servicen har til formål at forbedre datagrundlaget for AI-algoritmen, således at fremtidige forespørgsler for en struktureret lægemiddelordination bliver mere præcise og dermed en bedre hjælp til brugerne af klient-applikationen.
Når DosageAI servicen kører i produktion, vil der ikke være noget læring mht. AI algoritmen eller datagrundlaget, da man regner med at have et så præcist og fuldendt datagrundlag som muligt, og for at sikre konsistens i svarene, dvs. hvis lægen indtaster den samme tekst to gange med en uges mellemrum, så vil svaret altid være det samme, som lægen får retur.
Selve lægemiddelordinationen oprettes efterfølgende i klient-applikationen i et nyt kald, og er derfor ikke en del af denne struktureringsproces.
DosageAI servicen afvikles for sig, som et selvstændigt modul, afkoblet fra selve Fælles Medicinkort servicen, men gør dog brug af noget fælles funktionalitet, som anvendes og tilbydes igennem FMK servicen. Fordelen ved at have en selvstændig serviet er at den kan tilrettes, udvides og deployes uafhængigt af FMK og andre moduler.
Der sendes ingen personhenførbare data via DosageAI servicen.
Snitfladebeskrivelser
DosageAI snitfladen, som er tilgængelig for klient-applikationer, stiller to klient-forespørgsler til rådighed.
Foreslå en struktureret ordination ud fra tekst
Den ene forespørgsel anvendes til at opbygge en lægemiddelordination ud fra en tekst, som brugeren, eksempelvis en læge, indtaster i klient-applikationen. Denne tekst sendes i forespørgslen til DosageAI servicen som input. Man kan vælge at angive et maksimalt antal svar som forespørgslen skal returnere. Men vi anbefaler altid at sætte denne værdi til 1 i kaldet, idet klient-applikationen i dette tilfælde kun vil modtage et enkelt resultat for en struktureret lægemiddelordination, nemlig den ordination, der har det højeste konfidenstal i forhold til den indtastede tekst. Dvs. det bedst mulige svar fra AI algoritmen.
Svaret, der returneres fra denne forespørgsel, indeholder kendte FMK typer såsom DrugType, DrugDosage og Indication, samt et nyt felt, Confidence, som indikerer hvor stor tillid AI-algoritmen har til at det er den korrekte lægemiddelordination & dosisangivelse med hensyn til den indtastede tekst, der blev givet i forespørgslen. Confidence feltet indeholder en værdi mellem 0 og 100, hvor 100 er det højeste konfidenstal.
Klient-applikationen kan efterfølgende sortere svar fra på baggrund af en given tærskelværdi for konfidenstallet. Denne tærskelværdi kan i klient-applikationen være parametriseret, således at man i testfasen kan justere denne tærskel alt efter hvor god AI-algoritmen er til at strukturere tekst til ordinationer. På denne måde kan man i klient-applikationerne tilbyde lægerne at angive hvor høj tærskelværdien skal være individuelt.
Hvis eksempelvis et svar indeholder en lægemiddelordination med dosis og indikation, men hvor Confidence tallet er under tærskelværdien, så skal klient-applikationen ikke vise en struktureret ordination men blot tomme felter og det er meningen at i dette tilfælde skal lægen selv manuelt indtaste værdierne, eller prøve med at indtaste en ny tekst.
Send korrigeret struktureret ordination retur
Den anden forespørgsel, der stilles til rådighed, anvendes til at sende den (eventuelt) korrigerede lægemiddelordination retur til DosageAI servicen. Denne forespørgsel medtager derfor en struktureret lægemiddelordination bygget op omkring de samme FMK typer som i den første forespørgsel. Denne forespørgsel indeholder også den oprindelige tekst, der blev indtastet. Dermed skal klient-applikationen gemme den oprindelige tekst således at den kan indsættes i dette kald efter at brugeren har korrigeret i teksten og er klar til at oprette selve lægemiddelordinationen.
Kaldet returnerer en statuskode for om kaldet tilbage til DosageAI servicen gik godt eller ej. Hvis kaldet gik godt returneres blot et tomt svar.
Eksempel XML for brugen af DosageAI servicen
Nedenunder ses et eksempel XML dokument på at sende en tekst til DosageAI servicen. Her er værdien på MaxResult sat til 1, dvs. maksimalt 1 svar kan returneres fra DosageAI servicen, hvis muligt. Hvis ikke det er muligt at returnere en struktureret ordination, så returneres en fejl i stedet for. I nedenstående eksempel er antallet af tabletter forkert angivet i resultatet (se Quantity feltet). Der står 1 i stedet for 2. Derfor er lægemiddelordinationen korrigeret i det efterfølgende eksempel, dvs. lægen har manuelt korrigeret denne og resultatet bliver sendt retur til DosageAI servicen med henblik på læring af algoritmen.
?xml version="1.0" encoding="UTF-8"?> <ParseDrugMedicationTextRequest xsi:schemaLocation="http://fmk-teknik.dk/dosageAI/xml.schema/2022/03/01 ParseDrugMedicationTextRequest.xsd" xmlns="http://fmk-teknik.dk/dosageAI/xml.schema/2022/03/01" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <DrugMedicationText>Simvastatin 20 mg, 2 tbl morgen og aften (men tag halv dosis den første uge), mod forhøjet kolesterol</DrugMedicationText> <!--Optional:--> <MaxResult>1</MaxResult> </ParseDrugMedicationTextRequest>
Nedenunder ses et eksempel på XML dokument der viser et svar fra DosageAI servicen på det ovenstående request. Svaret indeholder kendte FMK typer for en lægemiddelordination, dosis og indikation. Namespaces er udeladt i XML eksemplet nedenfor for at simplificere typerne. Konfidensværdien af den strukturerede ordination er her i eksemplet sat til 95.
<?xml version="1.0" encoding="UTF-8"?>
<ParseDrugMedicationTextResponse xsi:schemaLocation="http://fmk-teknik.dk/dosageAI/xml.schema/2022/03/01 ParseDrugMedicationTextResponse.xsd" xmlns="http://fmk-teknik.dk/dosageAI/xml.schema/2022/03/01" xmlns="http://www.dkma.dk/medicinecard/xml.schema/2015/01/01" xmlns="http://www.dkma.dk/medicinecard/xml.schema/2015/01/01/E4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ParseDrugMedicationTextResult>
<Drug>
<ATC>
<Code source="Medicinpriser" date="2015-01-06">C10AA01</Code>
<Text>Simvastatin</Text>
</ATC>
<Identifier source="Medicinpriser" date="2014-05-01">28103185500</Identifier>
<Name>Simvastatin Stada</Name>
</Drug>
<Dosage>
<Structures>
<UnitTexts>
<Singular>tablet</Singular>
<Plural>tabletter</Plural>
</UnitTexts>
<Structure>
<IterationInterval>2</IterationInterval>
<StartDate>2021-03-01</StartDate>
<DosageEndingUndetermined/>
<Day>
<Number>1</Number>
<Dose>
<Quantity>1</Quantity>
</Dose>
</Day>
<Day>
<Number>2</Number>
<Dose>
<Quantity>1</Quantity>
</Dose>
</Day>
</Structure>
</Structures>
</Dosage>
<Indication>
<Code source="Medicinpriser" date="2014-05-01">79</Code>
<Text>mod forhøjet kolesterol</Text>
</Indication>
<Confidence>95</Confidence>
</ParseDrugMedicationTextResult>
</ParseDrugMedicationTextResponse>
Nedenstående ses et eksempel på et XML dokument der viser et request til DosageAI servicen med den korrigerede, strukturerede lægemiddelordination. Dette request indeholder kendte FMK typer for en lægemiddelordination, dosis og indikation. Namespaces er udeladt i XML eksemplet nedenfor for at simplificere typerne. Dette request indeholder også den oprindelige tekst, som lægen har indtastet i klient-applikationen. Denne tekst ses som det sidste felt i XML eksemplet.
<?xml version="1.0" encoding="UTF-8"?>
<SendDrugMedicationResultRequest xsi:schemaLocation="http://fmk-teknik.dk/dosageAI/xml.schema/2022/03/01 SendDrugMedicationResultRequest.xsd"
xmlns="http://fmk-teknik.dk/dosageAI/xml.schema/2022/03/01" xmlns="http://www.dkma.dk/medicinecard/xml.schema/2015/01/01" xmlns="http://www.dkma.dk/medicinecard/xml.schema/2015/01/01/E4"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<ParseDrugMedicationTextResult>
<Drug>
<ATC>
<Code source="Medicinpriser" date="2015-01-06">C10AA01</Code>
<Text>Simvastatin</Text>
</ATC>
<Identifier source="Medicinpriser" date="2014-05-01">28103185500</Identifier>
<Name>Simvastatin Stada</Name>
</Drug>
<Dosage>
<Structures>
<UnitTexts>
<Singular>tablet</Singular>
<Plural>tabletter</Plural>
</UnitTexts>
<Structure>
<IterationInterval>2</IterationInterval>
<StartDate>2021-03-01</StartDate>
<DosageEndingUndetermined/>
<Day>
<Number>1</Number>
<Dose>
<Quantity>2</Quantity>
</Dose>
</Day>
<Day>
<Number>2</Number>
<Dose>
<Quantity>2</Quantity>
</Dose>
</Day>
</Structure>
</Structures>
</Dosage>
<Indication>
<Code source="Medicinpriser" date="2014-05-01">79</Code>
<Text>Mod forhøjet kolesterol. Men tag halv dosis den første uge.</Text>
</Indication>
</ParseDrugMedicationTextResult>
<DrugMedicationText>Simvastatin 20 mg, 2 tbl morgen og aften (men tag halv dosis den første uge), mod forhøjet kolesterol</DrugMedicationText>
</SendDrugMedicationResultRequest>
WSDL for DosageAI 1.0
DosageAI servicens SOAP snitflade mod klient-applikationer er defineret gennem den tilhørende WSDL, som kan ses og downloades via linket:
https://github.com/trifork/FMKResources/blob/master/wsdl/DosageAI_2022_03_01-collection-dist.zip
https://github.com/trifork/FMKResources/blob/master/wsdl/DosageAI-inline_2022_03_01.wsdl.zip
