Patientsikkerhedsadvarsler webservices Dokumentation Version 1.0.0
Indhold Indledning... 3 Kontantpersoner... 3 Retningslinjer og anbefalinger for anvendelse... 5 Tilgang til advarslerne... 5 En advarsel består af... 5 Eksempler på anvendelse... 6 Passiv advarsler i form af ikon ved lægemiddelnavnet... 6 Aktiv beslutningsstøtte i form af advarsler enten blokerende eller som pop op-advarsler... 8 Teknologi... 9 Struktur og data... 9 Serviceparametre... 9 Warningservices... 9 Eksempler på kald:... 10 Returfelter... 11 Advarselsikoner:... 12 Status og fejlmeddelelser... 14 Appendiks D: Versionshistorik... 15 2
Indledning Dette dokument beskriver de web-services, som stiller et faglig grundlag vedrørende Patientsikkerhedsadvarsler til rådighed for eksterne partnere. Den returnerede XML muliggør, at eksterne partnere kan udvikle egne præsentationslag af advarslerne, enten som information til de relevante præparater eller som beslutningsstøtte i forbindelse med ordinationer eller administration/udlevering af de pågældende lægemidler. Hvordan det faglige grundlag anvendes og implementeres er op til de enkelte regioner/hospitaler, praktiserende læger og apoteker. DLIs web-services med patientsikkerhedsadvarsler er baseret på adgangsstyring via kendte IP-adresser. I forbindelse med den kontrakt, der indgås, skal der derfor oplyses den/de (evt. interval af) IP-adresse(r), som vil blive anvendt ved kald af DLIs web-services. Hvilke web-services/forespørgsler (metoder) en konkret IP-adresse giver adgang til, er bestemt ud fra den kontrakt, der er indgået med DLI om dette. Der kan evt. udstedes en midlertidig adgang til testsystemet baseret på et userid/password. Dette dokumentet beskriver, hvilke data der stilles til rådighed, hvordan data tilgås, og hvilke anbefalinger DLI stiller til anvendelse og præsentation af disse data. Eventuelle krav fra DLI A/S s side til præsentation af data vil fremgå af kontrakten. DLIs webservices er udarbejdet i overensstemmelse med data og telestyrelsens anbefalinger (OIO-NDR version 3.2) og derudover er det forsøgt at anvende samme navngivning som i Det Fælles Medicinkort (FMK), de steder, hvor det er relevant. Der stilles krav om at systemer der tilgår DLI s webservices understøtter og anvender gzip eller deflate encoding. Kontaktpersoner Navn: tlf: email: Anette Petersen Udviklingschef 39 15 09 63 ap@dli.dk Randi Jørgensen Projektleder 39 15 09 90 rj@dli.dk Peter Madsen Softwarearkitekt 39 15 09 97 pm@dli.dk Jørgen Nielsen Direktør Produktinformation 39 15 09 83 jn@dli.dk 3
Risikolægemidler og fejlmedicinering Informationerne og advarslerne er udarbejdet for de indholdsstoffer, hvor der hyppigst bliver begået alvorlige medicineringsfejl i Danmark. De lægemidler der hyppigst er involveret i alvorlige medicineringsfejl betegnes her som risikolægemidler. Formålet er igennem information og advarsler, at oplyse om de mest alvorlige medicineringsfejl i Danmark og medvirke til at forebygge mod de gentager sig. Ved alvorlige fejl forstås fejl som er livstruende, medfører død, alvorligt funktionstab eller akut indlæggelse (Sac score 3). I udarbejdelsen af informationen er der taget udgangspunkt i Sundhedsstyrelsens TemaRapport 2007 om risikomedicin (www.sst.dk) og fokuseret på de præparater, som har været involverede i faktuelle SAC 3 hændelser (hændelser, som medfører død, alvorligt funktionstab eller akut indlæggelse). Andre anvendte kilder er Sundhedsvæsenets Patientklagenævn (www.pkn.dk) og de sager, hvor de pågældende lægemidler har været involveret i en fejlmedicinering med alvorlige konsekvenser. Kun relevante advarsler for hvert enkelt præparat er medtaget. Dvs. at findes et præparat kun i en enkelt dispenseringsform (fx som plastre), medtages advarsler vedrørende fejlberegninger af injektionsvæsker (med samme indholdsstof) ikke. Da information og advarsler om lægemidler er et dynamisk felt i konstant udvikling, holder vi os løbende orienteret om nye og kommende faktuelle medicineringsfejl gennem nyhedsbreve fra Sundhedsstyrelsens Patientsikkerhedsdatabase, årsrapporter, patientklagenævnet og det redigerede www.trygpatient.dk (nu www.sikkerpatient.dk). Arbejdet med patientsikkerhed fortsætter både i Medicin.dk-regi, men også med eksterne samarbejdspartnere. Vi sidder med i arbejdsgruppen under Lægemiddelstyrelsen, som udarbejder en større national liste over risikolægemidler. Den vil være bredere i sit sigte end information og advarsler vedr. risikolægemidler og fejlmedicinering fra Medicin.dk, idet den også vil indeholde lægemidler med særlig problemfyldt farmakokinetik og compliance. Information og advarsler vil blive opdateret i takt med, at nye hændelser offentliggøres. De hyppigste kategorier af medicineringsfejl fra sygehuse registreret i Dansk Patientsikkerheds Database er: forkert dosis forkert præparat ingen medicin forkert patient forkert tidspunkt medicin trods allergi forkert administrationsvej Det mest almindelige resultat for patienten ved rapporterede medicineringsfejl er overdosering. 4
Retningslinjer og anbefalinger for anvendelse DLI stiller med denne webservice et faglig grundlag til rådighed, der enten kan anvendes som information til de relevante præparater eller som beslutningsstøtte i forbindelse med ordinationer eller administration/udlevering af de pågældende lægemidler. Nedenfor vil der være en gennemgang af hvordan man tilgår patientsikkerhedsadvarslerne, hvad en advarslen består af, og forslag til hvordan de kan præsenteres. Tilgang til advarslerne For at hente aktuelle patientsikkerhedsadvarsler bruges servicesene: PatientSafetyService. Dette sker ved onlinekald. Tilgængelig data opdateres så vidt muligt i overensstemmelse med takstopdateringerne. Dvs hver 14. dag. Det er derfor altid aktuel data og de aktuelle drugid/varenumre der er tilgængelig. PatientSafetyService.svc har 3 metoder til at hente data via forskellige inputparametre. Det drejer sig om følgende: Varenummerniveau(PackageNumberIdentifier) returnerer samtlige advarsler på præparatet som det pågældende varenummer tilhører. Advarslerne er sorteret efter drugid. Drugidniveau(DrugIdentifier) returnerer samtlige advarsler på præparatet som det pågældende drugid tilhører. Advarslerne er sorteret efter drugid. Drugidniveau(DrugIdentifier) kombineret med en fejltype. Denne metode returnerer kun advarsler der tilhører den givne drugid og som har den oplyste fejltype. Oplysninger, om hvilke varenumre(packagenumberidentifier)/drugid s(drugidentifier), der hører til hvilket præparat, gives i taksten og varenumrene(packagenumberidentifier) er desuden at finde på medicinpriser.dk En advarsel består af Hver præparat har tilknyttet en til flere advarsler. Advarslerne er knyttet op på drugidniveau. Dvs. der kan være koblet et til flere drugid s til hver advarsel alt efter hvor mange af præparatets drugid s advarslen hører til. Dette muliggøre følgende senarie: Et præparat med tre drugid s har sammenlagt koblet tre advarsler op. To af advarslerne gælder for alle tre drugid s, og de er derfor alle tre tilkoblet advarslerne. Derimod gælder den sidste advarsel kun to af drugidentifierne, hvorfor der kun er koblet to drugid s til advarslen. Alt efter om det ønskes at vise patientsikkerhedsadvarsler på præparatniveau, drugidniveau eller varenummerniveau, er det derfor vigtigt at sortere i det returnerede resultat alt efter hvad der ønskes. For at få en komplet korrekt advarsel er det derfor vigtigt, at de forskellige dele af advarslen sættes sammen korrekt. En advarsel består af følgende: <PatientRiskTypeText> er en kort beskrivelse af hvilken risikotype advarslen har. Det kan fx være "Fejldosering" <PatientErrorTypeIndicator> er et tal mellem 1 og 4, som indikerer de forskellige fejltyper. Se de forskellige fejltyper i tabel 1: 5
<PatientErrorTypeText> er en kort beskrivelse af hvilken fejltype, den aktuelle patientsikkerhedsadvarsel. Det kan fx være "Ordinationsfejl". På denne måde kan man fra/tilvælge de advarsler, som er aktuelle i den givne situation. Ordinationsfejl vil fx ikke være aktuelle i adminiatrationsøjeblikket, dvs på sygeplejerskens brugergrænseflade. Se de forskellige fejltypetekster i tabel 1. Fejltype <PatientErrorTypeIndicator> svarer til <PatientErrorTypeText>: 1 Ordinationsfejl 2 Administrations/dispenseringsfejl 3 Administrationsfejl/Compliance 4 Dokumentationsfejl Tabel 1: Liste over de 4 fejltyper <PatientErrorDescriptionShortText> er en kort advarselstekst, som beskriver hvad patientsikkerhedsadvarslen går ud på. Denne tekst er beregnet til at kunne bruges til alt tekster eller lignende. <PatientErrorDescriptionText> er en fuld advarselstekst. Som beskrive hvad den givne patientsikkerhedsadvarsel går ud på. <PatientConsequenceText> er en beskrivelse af hvad de observerede konsekvenser har været for den handling som patientsikkerhedsadvarslen går ud på. <UsedReferencesIdentifiers> informerer om hvilke referencer der er anvendt til den enkelte advarsel. <ReferenceTitleText>, <ReferenceAuthorName>, <ReferenceSourceText>, <ReferenceYearText>, <ReferenceVolumeNumberText> og <ReferencePagesText> giver tilsammen en reference. Det er dog ikke altid at alle enhederne indeholder data. Der kan være 1 til flere referencer på en advarsel. Det er valgfrit om man ønsker, at inkludere referencerne i en Patientsikkerhedsadvarsel. Der desuden lavet et ikon som kan kobles på risikolægemiddeladvarslerne. Billedikonet i servicen er en binær billedfil). Ikonet hentes både i 32x32 eller 64x64. Eksempler på anvendelse Hvordan det faglige grundlag anvendes og implementeres er op til de enkelte regioner/hospitaler, praktiserende læger og apoteker. Dog er der i nedenstående nogle retningslinjer og eksempler på, hvorledes patientsikkerhedsadvarslerne kan anvendes. Passiv advarsler i form af ikon ved lægemiddelnavnet En passiv advarsel kunne fx være, at der placeres et advarselsikonet ved siden af lægemiddelnavnet i forbindelse med en ordination eller ved administrationen/dispenseringen. Disse lister kunne være sorteret således at det kun er 6
advarsler med bestemte fejltype som vises i forbindelse med ordinationen, og advarsler med andre fejltyper der vises i forbindelse med administrationen.. Følgende eksempel tager udgangspunkt i præparatet Digoxin "DAK", dvs. det returnerede data til metoden GetByDrugIdentifier når der kaldes ind med et af Digoxin "DAK" s drugid s: 28100709776 og 28100709876. For Digoxin "DAK" kunne en advarselstekst i ordinationsvinduet se ud som på figur 1. Præparatnavn Dispform & Styrke Varenummer Ikoner Digoxin DAK tabl. 62,5 mikg 183400 Digoxin DAK tabl. 250 mikrogram 183434 Fejlagtig fortsat med mætningsdosis Overset prøvesvar Overset seponering Figur 1: Eksempel på passiv advarsel i ord øjeblikket incl. mouseover tekst der fortæller om advarslens indhold Bemærk at der faktisk er 4 advarsler på hvert af Digoxin "Dak" s drugid s, men at der kun vises tre advarsler. Dette skyldes, at 1 af dem har fejltypen: Administration/compliance. Så vil denne kun være forstyrrende i ordinationsvinduet. Idet mouseover teksten kun er en kort beskrivelse af advarslen vil et tryk på ikonet lede frem til en fuld advarselsbeskrivelse. Se figur 2. Figur 2: En fuld fejlbeskrivelse 7
Ved denne visning kan det vælges om der kun skal vises de advarsler der er knyttet til det valgte drugid/varenunmer, eller om det skal være en visning af samtlige advarsler på præparatet. Aktiv beslutningsstøtte i form af advarsler enten blokerende eller som pop op-advarsler Det faglige informationsgrundlag er bygget op således, at den korte advarselstekst er adskilt fra den uddybende information advarslen. Samtidig er advarslerne typeinddelt i form af <PatientErrorTypeIndicator>. Dette giver mulighed for kun at anvende eksempelvis de advarsler, der har med en given situation at gøre fx. administrations-/dispenseringsfejl. Advarslerne kan så anvendes så de enten blokerer en administration med en pop-up, og administrationen kan først godkendes efter at der er trykket "ok" til advarslen. Tanken er at advarslerne kun fremkommer i de brugssituationer hvor advarslen er relevant og i tilfælde af advarslen ikke gælder alle præparatets drugid s skal den kun komme på de relevante. Det er i den forbindelse dog vigtigt at overveje, om patientsikkerhedsadvarslerne i alle situationer er velegnede til at fungerer som pop-op advarsler eller blokerende advarsler. Denne overvejelse er især vigtig på de lægemidler som er hyppigt anvendt, da for mange pop-op s kan give anledning til alarmtræthed. Specielt set i sammenhæng med den mængde advarsler, som systemerne i øvrigt kan genere. 8
Teknologi Webservicesene, som leverer Patientsikkerhedsadvarslerne, er udviklet i Microsoft.Net 4.0 med WCF (Windows Communication Foundation). Der stilles krav om at systemer der tilgår DLI s webservices understøtter og anvender gzip eller deflate encoding. Struktur og data Alle services kan tilgås via 2 interfaces: Et SOAP-baseret interface og et REST-baseret (http GET) interface. Den SOAP-baserede produktion-service har følgende adresse: http://webservices.medicin.dk/v1/warningservices/patientsafetywarnings/patientsafetyse rvice.svc/ Test-udgaverne af de samme serviceadresser (som kan autoriseres vha username/password) har Test/ efter servicenavnet, før metodenavnet. Serviceparametre Service-parametrene er opdelt på følgende måde (vist som en REST http-get Url): Domæneadresse/version/WarningServices/serviceområde/(Test)/servi ce/interface/metode/parameter(/parameter/ ) Hvor Domæne er http://webservices.medicin.dk Version er pt. v1 for alle services, dvs. version 1. Over tid vil flere services komme i nye versioner. ServiceOmråde er PatientSafetyWarnings Interface kan være soap eller rest. Test: Anvendes hvis man ønsker at anvende test-services, hvor der kan anvendes username/password til autorisation. Ellers udelades denne del af serviceadressen. Service, metode og parameter Her følger en oversigt over hvilke services og tilhørende metode med deres parametre, som eksisterer i version 1. For alle beskrivelser gælder, at hvis man anvender test-services har de 2 parametre før de(n) parameter, som er angivet for den konkrete metode, det er : {USRNAME} og {PASSWORD}, altså../{username}/{password}/{parameter1}/{parameter2}/ Warningservices Patientsikkerhedsadvarsler er en af DLI s advarselsservices og den hører derfor til serviceområdet WarningServices under navnet PatientSafetyWarnings. PatientSafetyWarnings har følgende metoder/parametre: 1. Service: PatientSafetyService.svc: Fremfinder en patientsikkerhedsadvarsel. Advarslen kan hentes på tre måder: via drugid eller via varenummer. o Metode: GetByDrugIdentifier Parameter: DrugIdentifier (DrugId) Parameter: True/False (include images) 9
o o Metode: GetByPackageNumberIdentifier Parameter: PackageNumberIdentifier (Varenummer) Parameter: True/False (include images) Metode: GetByDrugIdentifierAndPatientErrorTypeIndicator Parameter: DrugIdentifier (DrugId) Parameter: True/False (include images) Parameter: PatientErrorTypeIndicator(Fejltype) I forbindelse med den sidste metode skal man kende nummeret på den fejltype man ønkser at kalde med. Der findes 4 forskellige, og de er vist i tabel 2: Fejltype <PatientErrorTypeIndicator> svarer til <PatientErrorTypeText>: 1 Ordinationsfejl 2 Administrations/dispenseringsfejl 3 Administrationsfejl/Compliance 4 Dokumentationsfejl Tabel 2: Liste over de 4 fejltyper Eksempler på kald: I det nedenstående er givet et par eksempler på kald ved bruge af forskellige metoder. Samt en kort forklaring af resultatslisten. Kald med metoden: GetByDrugIdentifierAndPatientErrorTypeIndicator http://webservices.medicin.dk/v1/warningservices/patientsafetywarnings/patientsafetyse rvice.svc/rest/getbydrugidentifier/28101656385/true Som det kan ses Indeholder resultatslisten samtlige advarsler på præparatet (Morfin "SAD"), også de advarsler som ikke gælder for det kaldte drugid (28101656385). Hvis der kun skal vises resultater på det pågældende drugid, skal resultatslisten sorteres efter drugid(appliestodrugidentifier) i efterbearbejdningen. Kald med metoden: GetByDrugIdentifierAndPatientErrorTypeIndicator http://webservices.medicin.dk/v1/warningservices/patientsafetywarnings/patientsafetyse rvice.svc/rest/getbydrugidentifierandpatienterrortypeindicator/28101656385/true/2 Her kaldes med samme drugid som det første eksempel kombineret med fejltype(patienterrortypeindicator) = 2. Dette kald returnerer ingen advarsler, idet der ikke er nogle advarsler med fejltype(patienterrortypeindicator) = 2 på dette drugid. Var metoden derimod blevet kaldt med drugidet (28101656885) ville der returneres to advarsler hvor fejltypen = 2. 10
Returfelter I den nedenstående tabel vil der være en beskrivelse af de enkelte returfelter i XMLén: Tag-navn Indhold Atributter Parent-tag <DLIDrugDescripti onidentifier> DLI s egntpræpar atnummer <DrugName> Præparatet s handelsnav n <CombinationIndic ator> Indikation om præparatet er et kombination spræparat <PatientSafetyWar ningstructure> <PatientRiskType Indicator> <PatientRiskTypeT ext> <PatientErrorTypeI ndicator> <PatientErrorTypeT ext> <PatientErrorDescr iptionshorttext> <PatientErrorDescr iptiontext> <PatientConsequen cetext> <UsedReferencesId entifier> <PatientSafetyWarningStructures> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure> <PatientSafetyWarningStructure>/<U sedreferencesidentifiers> <AppliesToDrugIde ntifier> <ReferenceStructu re> <ReferenceAuthor Name> <ReferenceTitleTex t> Forfatter(e) Titel på reference ReferenceI dentifier <PatientSafetyWarningStructure>/<A ppliestodrugidentifierstructure> <ReferenceStructures> <ReferenceStructure> <ReferenceStructure> <ReferenceSource Kilde <ReferenceStructure> 11
Text> <ReferenceYearTex t> år <ReferenceStructure> <ReferenceVolume NumberText> volumenr <ReferenceStructure> <ReferencePagesT ext> sidehenvisn ing <ReferenceStructure> <ActiveSubstanceS tructure> <ActiveSubstanceStructures> <ActiveSubstanceT ext> Præparatet s indholdsstof (fer) <ActiveSubstanceStructure> <AppliesToDrugIde ntifier> <ActiveSubstanceStructure>/<Applie stodrugidentifiers> <CompanyName> Producente ns navn (Firmanavn) <ATCCode> Produktets ATC-koder/ ATC-kode <ATCCodes> <DrugFormStructu re> Produktets DrugID/Dru gids DrugIdentifi er <DrugFormStructures> <DrugFormText> Dispenserin gsform <DrugFormStructure> <DrugStrengthAnd UnitText> styrke og enhed <DrugFormStructure> <PackageStructure > <PackageStructures> <PackageNumberI dentifier> Varenumm er <PackageStructure> <DliPackageInfor mationtext> Tekst forbundet med en pakning <PackageStructure> <WarningImage> Image incl info om info type. Er kun fyldt ud hvis det vælges at få returneret image (True/false) ImageType, Imagesize og ImageCont ent <WarningImages> Advarselsikoner: Advarselsikonerne leveres som gif-images og er base64-encodede i den returnerede xml. 12
13
Status og fejlmeddelelser Input-parametre bliver valideret og der kastes en exception, hvis der er fejl i input. Ligeledes kastes en exception, hvis man kalder en service/metode, som man ikke er autoriseret til. Hvis man anvender SOAP-interfacet kastes SOAP-exceptions, hvis man anvender RESTinterfacet får en en http-status code tilbage, 500 (UnAuthorized)hvis man ikke er autoriseret og ellers en 400 (Bad Request). Når man får en 400 tilbage stå der en uddybende information i headeren svarende til nedenstående tabel over mulige fejlkoder: Fejlkode Betydning 500 UnAuthorized 600 InvalidDliDrugIdentifier 602 InvalidDrugIdentifier 604 InvalidPackageNumberIdentifier 606 InvalidMediaIdentifier 700 EntityNotFound 702 InputParameterMissing 704 InvalidDate 706 InputLengthLimitExceeded 708 InvalidBoolean 802 InvalidInteger 803 IntegerNotWithValidRange 900 ServiceNotAvailable 910 ServiceDownForMaintenance 999 InternalSystemError 14
Appendiks D: Versionshistorik Version 1.0.0 Dokumentets startsversion 15