Page History
...
Indholdsfortegnelse
| Table of Contents |
|---|
Se eksempel på udfyldelse på DDS: DDS - Guide til anvendere - NSP services - Global Site
Introduktion
Formål
Denne guide har som formål at give et overblik over MHDService i GMv2 projektet.
Beskrivelse
MHDService er udviklet i regi af GMv2 projektet er et første skridt på vejen mod en generel MHD-baseret (se og udstiller en general MHD-basere t(se https://profiles.ihe.net/ITI/MHD/index.html) adgang til at hente dokumenter på dokumentdelingsservicen. Denne version implementerer kun de specifikke dele af standarden som projektet har brug for, men med henblik på en senere udvidelse hvor servicen kan anvendes bredere.MHDService MHDService udstiller opslag i registry og repository efter MHD standarden via operationerne ITI-67 (https://profiles.ihe.net/ITI/MHD/ITI-67.html) og ITI-68 (https://profiles.ihe.net/ITI/MHD/ITI-68.html). Disse svarer til hhv. ITI-18 og ITI-43 i tilgangen til DDS, men udstiller et mere REST-agtigt API med FHIR ressourcer. I FHIR termer laver man således i ITI-67 en søgning efter DocumentReference ressourcer. Hver DocumentReference indeholder et link, der er et opslag efter en Binary resource, der indeholder dokumentet.
...
Links til mere information
<Relevante links til andre dokumenter, herunder i forhold til de data services skal arbejde på, og den model de følger>
<Eventuel link til mere uddybende beskrivelse, intern på NSP og eksternt>
MHD standarden: https://profiles.ihe.net/ITI/MHD/index.html
...
MedComs profilering af DocumentReference: https://buildmedcomfhir.fhir.orgdk/ig/medcomdk/dk-medcom-core-document/StructureDefinition-medcom-documentreference.html
Binary ressourcen: https://hl7.org/fhir/R4/binary.html
...
Relevante use-cases
<Angiv use cases såfremt det er relevant>
Læsevejledning og forudsætninger
Dette dokument er henvendt til udviklere og arkitekter, der skal anvende MHD Service.
Det forventes at læseren har kendskab til <f.eks.: SOAP WebService, Den Gode WebService (DGWS) og Sercurity Token Service (STS), o.a.>
<Eventuel andre forudsætninger>
Sikkerhed
...
REST services, JWT / bearer token autentifikation og FHIR.
Sikkerhed
| Service udstil type | REST service med JWT JTP-H bearer token autentifikation. |
| Krævede adgange | JWT JTP-H token identificerer borgeren, der har adgang til egne dokumenter. |
| Whitelisting | <Angiv eventuel nødvendig whitelisting>Nej |
| Krævet sikkerhedsniveau | <Angiv krav til authentication for at kunne bruge servicen/komponenten>Data udstilles kun til borgerlogin, og kun borgerens egne dokumenter. |
| Forudsætninger for anvendelse | <Angiv forudsæntninger som er nødvendige for at kunne bruge servicen/komponenten, eventuelle nødvendige kald til andre services, etc.> |
| Logning | <Angiv om og hvad der logges> | <evt. yderligere krav eller forhold> |
<Eventuel nærmere introduktion>
<Eventuel yderligere beskrivelse af området / domænet som servicen/komponenten servicerer>.
<Samt yderligere information som er vigtigt for anvendelsen eller forståelsen>
| Ligesom ved brug af DDS er det anvenders ansvar kun at hente dokumenter via ITI-68, som kalder umiddelbart forinden har fået udleveret link til via ITI-67. Dette sikrer de udleverede dokumenters aktualitet. Da der kun er tale om borgertilgang til egne dokumenter er spærring ikke et problem, men dokumenter kan deprecates og erstattes af nye versioner på DDS. | |
| Logning | Der logges almindelig auditlog med kald-log jf. husreglerne. |
Definitioner og referencer
| Reference | Beskrivelse |
|---|---|
| JTP-H | JWT Token Profile for Healthcare |
| FHIR | Fast Healthcare Interoperability Resources. En standard udviklet af HL7 (Health Level 7) til elektronisk udveksling af sundhedsoplysninger. |
| DDS | Dokument Delingsservice |
Adgang, brug og snitflader
Adgang
<Beskrivelse af hvordan service/komponent bruges, snitflade(r), endpoints, og andet relevant>
...
<Angiv udstillede endpoint(s), og hvad de hedder.>
...
<Angiv henvisning til WSDL(er). For ekstern anvendbare services typisk på https://wsdl.nspop.dk/>
...
<Beskrivelser af service(s) / actions på endpoint(s). I lægmands termer beskrive hvad man kan forvente af de enkelte services.>
...
Adgang til servicen sker ved at medsende en Authorization-header med bearer token i form af JTP-H. Et gyldigt JTP-H token til test kan erhverves vha. OATH 2.0 med følgende properties (fra GMv2):
| url | https://test.cloud.idm.trifork.com/auth/realms/gravid/protocol/openid-connect/auth |
| access token url | https://test.cloud.idm.trifork.com/auth/realms/gravid/protocol/openid-connect/token |
| client id | gravidapp |
| redirect url | gravidapp |
| scope | openid profile |
Endpoint eksempler:
Capability statement :
| Endpoint | <serverurl>/mhd/api/2025/11/27/meta |
| Beskrivelse af services | Returnerer en capability statement der beskriver service samt søge parametre. |
| Resultat | Capability statement (https://build.fhir.org/capabilitystatement.html) |
Hent dokumentreferencer (ITI-67):
| Endpoint | <serverurl>/mhd/api/2025/11/27/DocumentReference?patient.identifier=2311890002&status=current |
| Beskrivelse af services | Returnerer dokument referencer for borgeren. Bemærk, der returneres kun de dokumenttyper som er MHD'en er konfigureret til at returnere. |
| Resultat | Bundle med DocumenReference resourcer |
Hent dokument (ITI-68):
| Endpoint | <serverurl>/mhd/api/2025/11/27/Binary/1.2.208.193%5E12345f0f-648f-4760-841a-05e96e3c3990?repositoryID=1.2.208.176.43210.8.10.15&homeCommunityID=1.2.208.176.43210.8.10 |
| Beskrivelse af services | Returnerer binaries indeholdende dokumenter fra DDS. Bemærk, ovenstående url findes i svaret fra hent dokumentreferencer og det er derfor ikke meningen at man selv skal konstruere den. |
| Resultat | Binary med dokument fra DDS |
Snitfladebeskrivelse og brug
Anvender skal kalde ITI-67 for at få udleveret en aktuel liste af links til dokumenter. Disse links kan umiddelbart derefter bruges i ITI-68 kald for at hente indholdet af dokumenterne. Links til dokumenter bør ikke lagres til senere anvendelse, da status mm. kan skifte på dokumentdelingsservicen, fx deprecating af dokument ved erstatning med en ny version.
MHDService-instansen henter dokumenter for den angivne patient i det dokument repository den enkelte instans er konfigureret op til. Man kan fx kun hente dokumenter fra graviditetsmappens repository med graviditetsmappe-instansen af MHDService.
Snitfladebeskrivelse og brug
<Beskrivelse af Snitfladerne, samt den logik og de regler, der skal følges for den måde servicen anvendes på, og som servicen selv efterlever.>
ITI-67
ITI-67 (registry opslag) udstiller søgning efter dokumenter i graviditetsmappen for en specifik patient baseret på søgeparameteren "patient.identifier"følgende søgninger efter dokumenter:
GET: <MHDService instance base URL>/DocumentReferencePOST: <MHDService instance base URL>/DocumentReference/_search
POST-kaldet understøtte både at parameter kaldes med query- og form- parametre. For yderligere detaljer se https://hl7.org/fhir/R4/http.html#.
I graviditetsmappen fremsøges dokumenter for en specifik patient ved at angivelse af parametrene "patient.identifier" og status. Da nuværende instans af MHD er konfigureret til at kun returnere dokumenter tillgørende gravidmappen, vil kun disse blive returneret. MHD standarden tilbyder en række yderligere søgeparametre , men disse er ikke supporteret endnu.
<snitflade 1>Request
<beskrivelse af request>
<Marker hvilke der er obligatoriske. Gerne en beskrivende tekst på samtlige parametre, og gerne også et eksempel på hvilke data der kan sættes ind her. Selv hvis man forstår beskrivelsen, så er det stadig godt at have et eksempel. Angiv hvis der er undtagelser eller specielle hensyn>
...
som er specificeret i følgende Capability statement:
https://mhd.gravidmappen.test.tcs.trifork.cloud/mhd/api/2025/11/27/metadata
I de følgende afsnit beskrives kort de minimal kald som GMv2 projektet bruger.
ITI-67 Request
Request til ITI-67 er et GET til "<MHDService instance base URL>/DocumentReference" eller POST med parameteren "patient.identifier" angivet som url-parameter eller i body'en. Parameteren angiver patientens CPR nummer.
| ITI-67 parametre | ||
|---|---|---|
| Parameter | Beskrivelse | Påkrævet |
| patient.identifier | Patientens CPR nummer | Ja |
| status | Status på dokumentet | ja |
For yderligere parametre se https://mhd.gravidmappen.test.tcs.trifork.cloud/mhd/api/2025/11/27/metadata
ITI-67 Response
Response er et FHIR searchset Bundle med MedComDocumentReference ressourcer for de fundne dokumenter.
Bemærk! I MedComs profil er der kun understøttelse for 1 author med en organisation og en optinel person. I ITI-18 kan der være flere authors, hver med en organisation og en person. I den generelle document reference profil https://hl7.org/fhir/R4/documentreference.html er der understøttelse for 0 til mange authors, desværre er en author her. enten en organisation, person, osv. Det vil sige at vi kan ikke mappe en person og bevare tilknytning til organisation som beskrevet i ITI-18. Derfor er det besluttet at vi blot mapper en organisation med person i henhold til den nuværende MedCom document reference.
ITI-68
ITI-68 (repository opslag) udstiller opslag efter dokumenter i graviditetsmappen. I ITI-67 kaldet er givet et antal MedComDocumentReferences der har en URL til hvert enkelt dokument. På denne URL findes ITI-68 opslaget efter dokumentet.
URL'en for hvert dokument vil være på formen "<MHDService instance base URL>/Binary/<documentId>", og vil returnere objektet i form af en Binary FHIR ressource, med CDA'en som "data".
ITI-68 Request
Request til ITI-68 er et GET kald til "<MHDService instance base URL>/Binary/<documentId>?repositoryID=<repo id>&homeCommunityID=<home community id>", hvor værdien af "documentId" angiver dokumentets "DocumentUniqueId".
| ITI-68 parametre | |||
|---|---|---|---|
| Parameter | Type | Beskrivelse | Påkrævet |
| documentId | Path parameter | Dokumentets DocumentUniqueId | Ja |
| repositoryID | Query parameter | Repository ID, hvor dokumentet kan hentes | Ja |
| homeCommunityID | Query parameter | Home Community ID for dokumentet | Ja |
Bemærk at DocumentReference-ressourcen fra ITI-67, indeholder linket med alle parametre, så dette link er ikke noget man som anvender skal konstruere selv.
ITI-68 Response
Response er en FHIR Binary ressource hvor dokumentet er base 64 encoded i "data" elementet.
<snitflade 1>Response
<beskrivelse af svar>
...
<snitflade 2, osv., med request/response>
Generelle koder, værdier, etc.
<Angiv eventuelle generelle koder, værdier, etc>
Fejlbeskeder
<Beskrivelse af fejlbeskeder, og i hvilke situationer man kan forvente at se disse i.
Noter omkring ting som går på tværs af services. Det kan være fejl som optræder generelt og som man skal være opmærksom på.>
Eksempler på request/response
Eksempler på request og response til de operationer der udstilles. De De enkelte elementer er beskrevet under snitfladebeskrivelse. Klient proxier kan genereres udfra WSDL'en.
...
.
ITI-67 efterfulgt af ITI-68
Et kald til ITI-67 kunne se ud som
GET <baseurl>/DocumentReference?patient.identifier=<cpr>&status=current
og give et Bundle af DocumentReferences med URL'er til at hente de enkelte dokumenter. Herunder er vist et eksempel med et enkelt og dokument. Der er skåret en masse fra for at vise hvordan selve linket er indfanget.
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<eksempel her> |
<mere eksempel>
Test
<beskriv Test muligheder, test-systemer og eventuelle testdata>
Eksempel kode og klient
Eksempel kode
<Eksempel kode. Det er meget lettere at lave sin egen implementering, hvis man kan kigge efter en anden ....>
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
<eksempel her, eller reference andet steds> |
Eksempel klient
...
{
"resourceType": "Bundle",
"type": "searchset",
"entry": [
{
"resource": {
"resourceType": "DocumentReference",
"meta": {
"profile": [
"http://medcomfhir.dk/ig/coredocument/StructureDefinition/medcom-documentreference"
]
},
...
"content": [
{
"attachment": {
"contentType": "application/fhir+json",
...
"url": "<baseurl>/Binary/<documentId>?repositoryID=<repo id>&homeCommunityID=<home community id>",
...
},
...
}
],
...
}
}
]
} |
Denne URL bruges derefter i et ITI-68 kald. ála
GET <baseurl>/Binary/<documentId>?repositoryID=<repo id>&homeCommunityID=<home community id>
som vil give dokumentet indpakket i en Binary ressource.
| Code Block | ||||
|---|---|---|---|---|
| ||||
{
"resourceType": "Binary",
"contentType": "text/xml",
"data": "<base64 encodet CDA dokument>"
} |
Test
Følgende brugere burde have journal data på både Test 1 og Test 2:
CPR |
|---|
| 1704999948 |
Dokument Historik
| 3/4 2025 | Martin Henriksen/SDS | Etablering af dokumentation |
| 10/4 2025 | Anders Ringsmose/Trifork | Forslag til API |
| 7/8 2025 | Thomas Glæsner/Trifork | Udfyldelse af dokumentation |
| 8/9 2025 | Thomas Glæsner/Trifork | Rettelser efter review |
| 12/9 2025 | Thomas Glæsner/Trifork | Opdateret link til MedComs DocumentReference Profil |