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-10Tilføjelser til snitfladebeskrivelseTrifork
1.0.22018-08-31Ny releaseTrifork
1.0.82019-04-12Tilføjelse af flere PermissionType værdierTrifork

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.

ClinicalDocument v8

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

CPR1.2.208.176.1.2CPR-nummer

<ns2:id assigningAuthorityName="CPR" extension="0501792275" root="1.2.208.176.1.2"/>

DK MedCom (member body)1.2.208.184Id på ClinicalDocument. Ikke aktuel ifm. denne service (extension=NA)

<ns2:id assigningAuthorityName="MedCom" extension="NA" root="1.2.208.184"/>

Fortrolighed2.16.840.1.113883.5.25Altid N (for "Normal") ifm. denne service

<ns2:confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25"/>

Dokument type-id2.16.840.1.113883.1.3HL7-registreret RMIM (HL7 internal)

<ns2:typeId extension="POCD_HD000040" root="2.16.840.1.113883.1.3"/>

ODR code system1.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:

Eksempel på notifikation ved skrivning fra ODR
<ns3:Notify xmlns:ns3="http://docs.oasis-open.org/wsn/b-2" xmlns:ns2="http://www.w3.org/2005/08/addressing" xmlns:ns6="http://nsi.dk/advis/v10" xmlns:ns7="http://sundhedsdatastyrelsen.dk/organdonor/2022/08/01/">
     <ns3:NotificationMessage>
          <ns3:Topic Dialect="http://docs.oasis-open.org/wsn/t-1/TopicExpression/Simple">http://sundhedsdatastyrelsen.dk/OrganDonation/2022/05/05:OrganDonationUpdated</ns3:Topic>
          <ns3:Message>
               <ns6:NotifyContent id="0501792275" idType="http://nsi.dk/advis/v10/CPR">      
					<ns7:OrgandonorUpdated>
						<ns7:type>http://sundhedsdatastyrelsen.dk/MessageDefinition/Organdonor-notification</ns7:type>
						<ns7:date>2022-10-27</ns7:date>
						<ns7:version>1</ns7:version>
					</ns7:OrgandonorUpdated>
                </ns6:NotifyContent>
          </ns3:Message>
     </ns3:NotificationMessage>
</ns3:Notify>
OrganDonorUpdatedNotification
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
		   targetNamespace="http://sundhedsdatastyrelsen.dk/organdonor/2022/08/01/"
		   elementFormDefault="qualified">
	<xs:element name="OrgandonorUpdated">
		<xs:complexType>
			<xs:sequence>
				<xs:element name="type" type="xs:string"/>
				<xs:element name="date" type="xs:string"/>
				<xs:element name="version" type="xs:string"/>
			</xs:sequence>
		</xs:complexType>
	</xs:element>
</xs:schema>

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


DGWSIDWS
SundhedspersonaleAdminBorger

CreateOrganDonorRegistration_2018_05_01

Opret en organdonorregistrering for en specifik borger

NejJaJa

UpdateOrganDonorRegistration_2018_05_01

Opdatér en borgers organdonorregistrering

NejJaJa

DeleteOrganDonorRegistration_2018_05_01

Slet en borgers organdonorregistrering

NejJaJa

GetOrganDonorRegistration_2018_05_01

Hent en organdonorregistrering for en specifik borger

JaJaJa

HasOrganDonorRegistration_2018_05_01

Hent om en specifik borger har en organdonorregistrering

JaJaJa

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

author.assignedAuthor.id

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.

  • No labels