Overblik
Organdonorregistret (ODR) er en service med operationer til registrering og udstilling af borgerens organdonordata. Servicen beskrives i det følgende, som forudsætter kendskab til HL7 CDA og webservices.
Ændringslog
Version | Dato | Ændring | Ansvarlig |
---|---|---|---|
1.0.1 | 2018-08-09 | Initialt dokument | Trifork |
- | 2018-08-10 | Tilføjelser til snitfladebeskrivelse | Trifork |
1.0.2 | 2018-08-31 | Ny release | Trifork |
1.0.8 | 2019-04-12 | Tilføjelse af flere PermissionType værdier | Trifork |
HL7 CDA
Modellen der anvendes til at repræsentere organdonordata er HL7 CDA (se evt. http://www.hl7.org/implement/standards/product_brief.cfm?product_id=7 ), som er en XML-baseret standard til repræsentation af kliniske data. HL7 CDA er et begrebsapparat, som kan repræsentere en enorm mængde af forskelligartede data, hvoraf kun en lille delmængde anvendes i servicen. Det anbefales derfor at studere eksemplerne der refereres her på siden frem for modellen der defineres af HL7 CDA, da de giver et mere præcist billede af hvilke data der kræves og returneres af de forskellige operationer. CDA-terminologien gør, at man kan kvalificere de forskellige begreber gennem attributter (f.eks. at et id er et CPR nummer ved at angive assigningAuthorityName="CPR"), og derfor valideres der i servicen, at disse attributter anvendes korrekt, så der ikke er tvivl om hvordan data skal fortolkes. Dvs. i praksis sker der en strengere validering end WSDL og XSDer dikterer.
Data for en organdonorregistrering består kort fortalt af et person id (CPR-Nummer) med tilhørende værdier for forskellige typer af organer der fortæller om man vil donere disse organer, heriblandt hjerte, lever, nyre osv. Servicen indeholder herved operationer til vedligehold og aflæsning af disse data.
Anvendelse
En organdonorregistrering repræsenteres i et ClinicalDocument, som er grundpillen i CDA. Heri indgår en CDA header og en StructuredBody. I forbindelse med servicen er der lavet en "extension" til CDA, hvori det er muligt at repræsentere en organdonorregistering som observation-type i dokumentets StructuredBody, som vist på figuren nedenunder. Figuren giver et overblik over de væsentligste elementer der anvendes i CDA.
Selve dokumentets CDA Header (som ligger i ClinicalDocument før StructuredBody) indeholder information om borgerens person id (CPR-nr.) og hvem der er ophavsmand på den pågældende registreringen, hvilken kun kan være borgeren selv.
De egentlige data for borgerens registrering forefindes under StructuredBody, som indeholder en liste af Entry-elementer, dog eksisterer der kun én Entry eftersom en borger kun kan have én gyldig registrering ad gangen. Entry indholder en Observation, som reelt er det CDA element, hvor data om en organdonorregistrering forefindes.
OID
Ifm. HL7 CDA er der defineret en række OID'er, som hver især definerer et udfaldsrum for forskellige id/kode-typer. Meningen er, at der til et id (på fx en person, altså CPR-nummer) defineres et OID, som kan betragtes som en type-erklæring. For organdonorregisteringer er følgende OID'er aktuelle:
Type | OID | Beskrivelse | Eksempel |
---|---|---|---|
CPR | 1.2.208.176.1.2 | CPR-nummer | <ns2:id assigningAuthorityName="CPR" extension="0501792275" root="1.2.208.176.1.2"/> |
DK MedCom (member body) | 1.2.208.184 | Id på ClinicalDocument. Ikke aktuel ifm. denne service (extension=NA) | <ns2:id assigningAuthorityName="MedCom" extension="NA" root="1.2.208.184"/> |
Fortrolighed | 2.16.840.1.113883.5.25 | Altid N (for "Normal") ifm. denne service | <ns2:confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25"/> |
Dokument type-id | 2.16.840.1.113883.1.3 | HL7-registreret RMIM (HL7 internal) | <ns2:typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/> |
ODR code system | 1.2.208.184.15.1* | Kodesystem | <ns2:code code="OrganDonor" displayName="OrganDonorRegistration" codeSystem="1.2.208.184.15.1"/> |
* id defineres endeligt af MedCom.
På oidref.com kan man i øvrigt se betydningen af enkeltcifre i de fleste OID'er, fx http://oidref.com/2.16.840.1.113883.1.3
Notificeringer i NAS
I forbindelse med skriveoperationer i ODR (oprettelse, opdateringer og sletninger) sker der en notificering via NAS få sekunder efter ændringen er gemt. Se evt. NAS 2.0 Anvenderguide.
De enkelte notificeringer indholder ikke detaljer vedr. oprettelse, redigering eller sletning af borgerens organdonordata, men udelukkende oplysninger om det cprnummer, for hvilket opdateringen har fundet sted. Det er efterfølgende op til anvenderen at hente det opdaterede stamkort ud via snitfladerne.
Der anvendes følgende topic (som kan konfigureres): http://sundhedsdatastyrelsen.dk/OrganDonation/2022/05/05:OrganDonationUpdated.
Følgende er et eksempel på en opdateringsnotificering:
Snitflade
Sundhedsfaglige anvender servicen gennem en DGWS-snitflade, som skal kaldes med et MOCES niveau 4 medarbejdercertifikat. Via DGWS er der udelukkende adgang til at se om et registrering eksisterer, samt se detaljer om registreringen.
Borgere anvender servicen gennem en IDWS-snitflade og har adgang til alle operationer. Der understøttes ikke fuldmagter.
Snitfladerne skal kaldes skal kaldes gennem NSP'ens DCC endpoint (afkoblingskomponenten).
Server-URL'er for de forskellige test-miljøer kan findes på Endpoints for eksterne testmiljøer.
WSDL-filer | |
---|---|
HTML-side med overblik | <server>/odr/wsdl |
Organdonorregister DGWS | <server>/odr/wsdl/dgws |
Organdonorregister IDWS | <server>/odr/wsdl/idws |
Webservice-endpoints
URL | Functionality |
---|---|
<server>/odr/odr | Webservice-endpoint |
<server>/odr/odrAdmin | Webservice admin-endpoint (til brug for brugerflade) |
WSDL
Operation | Beskrivelse | DGWS | IDWS | |
---|---|---|---|---|
Sundhedspersonale | Admin | Borger | ||
CreateOrganDonorRegistration_2018_05_01 | Opret en organdonorregistrering for en specifik borger | Nej | Ja | Ja |
UpdateOrganDonorRegistration_2018_05_01 | Opdatér en borgers organdonorregistrering | Nej | Ja | Ja |
DeleteOrganDonorRegistration_2018_05_01 | Slet en borgers organdonorregistrering | Nej | Ja | Ja |
GetOrganDonorRegistration_2018_05_01 | Hent en organdonorregistrering for en specifik borger | Ja | Ja | Ja |
HasOrganDonorRegistration_2018_05_01 | Hent om en specifik borger har en organdonorregistrering | Ja | Ja | Ja |
Sundhedspersonale vil modtage fejlkode 501 - "Adgang til CPR-nummeret ikke tilladt", hvis der gøres forsøg på at få adgang til en operation, der kræver skriveadgang såsom oprette, slette eller opdatere.
Nedenfor beskrives de forskellige operationer i servicen. For hver operation gives eksempler på request/response hvis aktuelle (for simpelhedens skyld uden DGWS/IDWS headers). Eksemplerne tjener dels til formål at give overblik over hvad der skal til for at bruge en operation, men demonstrerer samtidigt hvilke attributter der er krævet. Dvs. de forskellige requests angiver hvad der som minimum skal angives.
CreateOrganDonorRegistration
Request-eksempel: CreateOrganDonorRequest.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(30) | Nej |
OrganDonorRegistration | Data for en organdonorregistrering. Type er OrganDonorRegistration. Se tabel under afsnittet Typer. | - | Nej |
Response-eksempel (indeholder ingen data): CreateOrganDonorResponse.xml
UpdateOrganDonorRegistration
Request-eksempel: UpdateOrganDonorRequest.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(30) | Nej |
OrganDonorRegistration | Data for en organdonorregistrering. Type er OrganDonorRegistration. Se tabel under afsnittet Typer. | - | Nej |
Response-eksempel (indeholder ingen data): UpdateOrganDonorResponse.xml
DeleteOrganDonorRegistration
Request-eksempel: DeleteOrganDonorRequest.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(30) | Nej |
Response-eksempel (indeholder ingen data): DeleteOrganDonorResponse.xml
GetOrganDonorRegistration
Request-eksempel: GetOrganDonorRequest.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(30) | Nej |
Response-eksempel: GetOrganDonorResponse.xml
Element | Beskrivelse |
---|---|
realmCode | Krævet pr. standard, fast værdi |
typeId | Krævet pr. standard, fast værdi |
templateId | Krævet pr. standard, fast værdi |
id | Krævet pr. standard, fast værdi |
code | Krævet pr. standard, fast værdi |
title | Krævet pr. standard, fast værdi |
effectiveTime | Krævet pr. standard, fast værdi |
ConfidentialityCode | Krævet pr. standard, fast værdi |
languageCode | Krævet pr. standard, fast værdi |
versionNumber | Versionsnummer for en registrering |
recordTarget.patient Role.id | Borgerens CPR-nr i extension"-attribut int |
author.time | Dato/tid. Format: yyyyMMddHHmmssZ, fx. 20171024143445+0200 |
Borgerens CPR-nr i extension"-attribut int | |
Nedenstående elementer hører alle under component.structuredBody.component.section.entry.observation | |
code | Krævet pr. standard, fast værdi |
value | Data for en organdonorregistrering. Type er OrganDonorRegistration. Se tabel under afsnittet Typer. |
HasOrganDonorRegistration
Request-eksempel: HasOrganDonorRequest.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(30) | Nej |
Response: HasOrganDonorResponse.xml
Element | Beskrivelse |
---|---|
registrationExists | Eksisterer der en organdonorregistrering for den pågældende person der laves en forespørgsel for. Indeholder true eller false. |
Typer
OrganDonorRegistration
Den generelle struktur der anvendes på create -og update request, samt på get response, ser ud som følger:
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
permissionType | Typen af tilladelse: FULL / FULL_WITH_RESEARCH / LIMITED / LIMITED_WITH_RESEARCH / NONE / DONT_KNOW | PermissionType | Nej |
permissionForHeart | Tilladelse til at donere hjerte | Boolean | Ja* |
permissionForLungs | Tilladelse til at donere lunger | Boolean | Ja* |
permissionForLiver | Tilladelse til at donere lever | Boolean | Ja* |
permissionForPancreas | Tilladelse til at donere bugspytkirtel | Boolean | Ja* |
permissionForKidneys | Tilladelse til at donere nyrer | Boolean | Ja* |
permissionForCornea | Tilladelse til at donere hornhinde | Boolean | Ja* |
permissionForSmallIntestine | Tilladelse til at donere tyndtarm | Boolean | Ja* |
permissionForSkin | Tilladelse til at donere hud | Boolean | Ja* |
requiresRelativeAcceptance | Accept krævet af pårørende | Boolean | Ja** |
* Hvis permissionType er angivet som LIMITED eller LIMITED_WITH_RESEARCH skal mindst én værdi være angivet. Hvis permissionType er noget andet, dvs. FULL, FULL_WITH_RESEARCH, NONE eller DONT_KNOW, så ignoreres værdien og bør derfor udelades.
** Kun påkrævet hvis permissionType er angivet som FULL, FULL_WITH_RESEARCH, LIMITED eller LIMITED_WITH_RESEARCH.