Page History
...
Stamkortregistret (SKR) er en service med operationer til registrering og udstilling af stamdata for borgere. Dette inkluderer pårørende, midlertidige adresser, sprog mm. Servicen beskrives i det følgende, som forudsætter kendskab til HL7 CDA og webservices.
Ændringslog
Version | Dato | Ændring | Ansvarlig |
---|---|---|---|
1.0 | 2018-08-31 | Initialt dokument | Trifork |
1.1 | 2018-09-13 | Tilføjet manglende beskrivelse af ID-attribut for Language-struktur (UUID). Beskrivelse af, at Stamkort hentes via Det Fælles Stamkort | Trifork |
1.2 | 2018-09-19 | Rettet et forkert link til CreateTemporaryAddress request eksempel. | Trifork |
1.3 | 2018-10-09 | Tilføjet og updateres create requests eksempler med id (Uuid) | Trifork |
1.4 | 2018-10-11 | Præcisering omkring antal midlertidige adresser, så der altid kun er én | SDS |
1.5 | 2018-11-29 | Tilrettet, således at fornavn og efternavn på pårørende er påkrævede. (Der er bestilt en ændring, således efternavn gøres optionelt) | SDS |
HL7 CDA
Modellen der anvendes til at repræsentere stamdata 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 SKR. 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 (fx at en adresse er en hjemmeadresse ved at angive use="H"), og derfor sker der validering i SKR af, 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.
...
Ifm. HL7 CDA er der defineret en række "OIDer", 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 SKR er følgende OIDer aktuelle:
Type | OID | Beskrivelse | Eksempel |
---|---|---|---|
Patientkontakt | 1.3.6.1.4.1.19376.1.5.3.1.2.4 | Template-id på participant (se evt. https://wiki.ihe.net/index.php/1.3.6.1.4.1.19376.1.5.3.1.2.4) | <ns2:participant typeCode="IND"> <ns2:templateId root="1.3.6.1.4.1.19376.1.5.3.1.2.4"/> |
SOR | 1.2.208.176.1.1 | Type af organisations-ID baseret på SOR. | <id extension="368061000016003" root="1.2.208.176.1.1" assigningAuthorityName="SOR"/> |
SKS | 2.16.840.1.113883.3.4208.100.5 | Type af organisations-ID baseret på SKS. | <id extension="368061000016003" root="2.16.840.1.113883.3.4208.100.5" assigningAuthorityName="SKS"/> |
CVR-P | 1.2.208.184.15.9* | Type af organisations-ID baseret på CVR-P. | <id extension="368061000016003" root="1.2.208.184.15.9" assigningAuthorityName="CVR-P"/> |
CVR | 1.2.208.184.15.10* | Type af organisations-ID baseret på CVR. | <id extension="368061000016003" root="1.2.208.184.15.10" assigningAuthorityName="CVR"/> |
Ydernummer | 1.2.208.184.15.8* | Type af organisations-ID baseret på Ydernummer. | <id extension="368061000016003" root="1.2.208.184.15.8" assigningAuthorityName="Yder"/> |
Kommunekode | 1.2.208.184.15.11* | Type af organisations-ID baseret på Kommunekode. | <id extension="3680610000" root="1.2.208.184.15.11" assigningAuthorityName="Kommunekode"/> |
CPR | 1.2.208.176.1.2 | CPR-nummer | <id extension="2512489996" root="1.2.208.176.1.2" assigningAuthorityName="CPR"/> |
DK MedCom (member body) | 1.2.208.184 | Id på ClinicalDocument. Ikke aktual ifm. SKR (extension=NA) | <ns2:id assigningAuthorityName="MedCom" extension="NA" root="1.2.208.184"/> |
Fortrolighed | 2.16.840.1.113883.5.25 | Altid N=Normal ifm. SKR | <ns2:confidentialityCode code="N" codeSystem="2.16.840.1.113883.5.25"/> |
ISO-angivelse af sprog | 1.0.639.1 | ISO-639-1 formatteret sprog | <ns4:languageCode codeSystem="1.0.639.1">de</ns4:languageCode> |
ISO-angivelse af køn | 2.16.840.1.113883.5.1 | En borgers køn (M/F) | <ns2:administrativeGenderCode code="F" codeSystem="2.16.840.1.113883.5.1"/> |
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"/> |
Stamkode code system | 1.2.208.184.15.1* | Kodesystem, ikke aktuel ifm. SKR (code=NA) | <ns2:code code="NA" codeSystem="1.2.208.184.15.1" displayName="Stamkort"/> |
Midlertidig adresse | 1.2.208.184.15.2* | IDer (UUID) på midlertidige adresse | <ns4:temporaryAddress> |
Pårørende | 1.2.208.184.15.3* | IDer (UUID) på pårørende | <ns4:relatedPerson> |
Pårørende type | 1.2.208.184.15.4* | Følger MedCom-definerede typer for pårørende: uspec_paaroerende, barn, aegtefaelle, forældre, barnebarn, svigerbarn, ingen_relationer, nabo, samboende, registreret_partner, søskende, øvrig_familie | <ns2:code code="uspec_paaroerende" codeSystem="1.2.208.184.15.4"/> |
Uddannelseskode | 1.2.208.184.15.5* | IDer (UUID) på uddannelseskoder | <ns2:id assigningAuthorityName="UDDANNELSESKODE" extension="7170" root="1.2.208.184.15.5"/> |
Autorisationsid | 1.2.208.184.15.6* | IDer (UUID) på autorisationskoder | <ns2:id assigningAuthorityName="AUTORISATION" extension="09YM8" root="1.2.208.184.15.6"/> |
* id defineres endeligt af MedCom.
...
WSDLen for SKR indeholder nedenstående operationer:
Operation | Beskrivelse | ||
---|---|---|---|
GetPersonalDataCard_2018_05_01 | Hent stamkort for en specifik borger.
| ||
UpdateContactInformation_2018_05_01 | Opdater en borgers kontaktoplysninger | ||
CreateRelatives_2018_05_01 | Opret en pårørende | ||
UpdateRelatives_2018_05_01 | Opdater en pårørendes stamdata | ||
DeleteRelatives_2018_05_01 | Slet en pårørende | ||
CreateTemporaryAddress_2018_05_01 | Opret midlertidig adresse for den pågældende borger
| ||
UpdateTemporaryAddress_2018_05_01 | Opdater midlertidig adresse | ||
DeleteTemporaryAddress_2018_05_01 | Slet midlertidig adresse | ||
CreateLanguage_2018_05_01 | Opret borgers sprog | ||
UpdateLanguage_2018_05_01 | Opdater borgers sprog | ||
DeleteLanguage_2018_05_01 | Slet borgers sprog | ||
CreateHealthProvider_2018_05_01 | Opret en tandlæge for den pågældende borger | ||
UpdateHealthProvider_2018_05_01 | Opdater tandlæge | ||
DeleteHealthProvider_2018_05_01 | Slet en tandlæge |
De enkelte operationer forklares i de følgende afsnit.
...
Request-eksempel: GetPersonalDataCard_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
Response-eksempel: GetPersonalDataCard_response.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
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 | Tidspunkt for generering af svar | ||
confidentialityCode | Krævet pr. standard, fast værdi | - | - |
languageCode | Krævet pr. standard, fast værdi | - | - |
versionNumber | Stamkortets versionsnummer | int(11) | Nej |
recordTarget.patientRole.id | Borgerens CPR-nr i "extension"-attribut | int(10) | Nej |
author.time | Dato/tid. Format: yyyyMMddHHmmssZ, fx. 20171024143445+0200 | varchar(19) | Ja (2) |
author.assignedAuthor.assignedPerson.name.given | Seneste stamkort-modifikator, fornavn | varchar(80) | Ja (1) |
author.assignedAuthor.assignedPerson.name.family | Seneste stamkort-modifikator, efternavn | varchar(80) | Ja (1) |
custodian.assignedCustodian.representedCustodianOrganization.id | Krævet pr. standard, fast værdi | - | - |
Nedenstående elementer hører alle under component.structuredBody.component.section.entry.relatedPerson: | |||
id | Pårørendes id (UUID). Skal benyttes som nøgle ifm. UpdateRelatives/DeleteRelatives | varchar(36) | Nej |
associatedEntity.addr | Se tabel længere nede (delt struktur) | - | Ja |
associatedEntity.telecom | 0-3 forekomster med attribut use=H/MP/WP (H=home, MP=mobile phone, WP=work place). Telefonnummer angives i attributten "value" med præfix "tel:", fx value="tel:01123622" | varchar(45) | Nej |
associatedEntity.associatedPerson.name.given | Pårørendes for- og mellemnavn | varchar(80) | Nej |
associatedEntity.associatedPerson.name.family | Pårørendes efternavn | varchar(80) | Nej |
relationshipType | Pårørendes type (en af følgende MedCom-typer: uspec_paaroerende, barn, aegtefaelle, forældre, barnebarn, svigerbarn, ingen_relationer, nabo, samboende, registreret_partner, søskende, øvrig_familie) | <relationshipType code=MecomType codeSystem="1.2.208.184.15.4" displayName=MecomType /> | Ja |
note | Fritekstbeskrivelse af den pårørendes rolle i forhold til borgeren, hvilke opgaver personen kan være behjælpelig med osv. | varchar(1000) | Ja |
dataEnterer | Se tabel længere nede (delt struktur) | - | Nej |
Nedenstående elementer hører alle under component.structuredBody.component.section.entry.temporaryAddress: | |||
id | Midlertidig adresses id (UUID). Skal benyttes som nøgle ifm. UpdateTemporaryAddress/DeleteTemporaryAddress | varchar(36) | Nej |
addr | Se tabel længere nede (delt struktur) | - | Nej |
dataEnterer | Se tabel længere nede (delt struktur) | - | Nej |
Nedenstående elementer hører alle under component.structuredBody.component.section.entry.language: | |||
id | Sprog id (UUID). Skal benyttes som nøgle ifm. UpdateLanguage/DeleteLanguage | varchar(36) | Nej |
languageCode | Sprogkode (kan være tom for fx spædbørn, borgere uden taleevne mm). Format: ISO-639-1 | char(2) | Ja |
dataEnterer | Se tabel længere nede (delt struktur) | - | Nej |
Nedenstående elementer hører alle under component.structuredBody.component.section.entry.healthProvider: | |||
id | Tandlæges id (UUID). Skal benyttes som nøgle ifm. UpdateHealthProvider/DeleteHealthProvider | varchar(36) | Nej |
providerType | Indeholder sundhedspersonens type. Pt. altid code/displayName=tandlæge. | - | Nej |
organization | Se tabel længere nede (delt struktur) | - | Ja |
dataEnterer | Se tabel længere nede (delt struktur) | - | Nej |
Nedenstående elementer hører alle under component.structuredBody.component.section.entry.patientContact: | |||
telecom | 0-3 forekomster med attribut use=H/MP/WP (H=home, MP=mobile phone, WP=work place). Telefonnummer angives i attributten "value" med præfix "tel:", fx value="tel:01123622" | varchar(45) | Ja |
dataEnterer | Se tabel længere nede (delt struktur) | - | Nej |
(1): Mangler kun hvis der ikke findes et stamkort
...
Request-eksempel: UpdateContactInformation_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
telecom | 0-3 forekomster med attribut use=H/MP/WP (H=home, MP=mobile phone, WP=work place). Telefonnummer angives i attributten "value" med præfix "tel:", fx value="tel:01123622" | varchar(45) | Nej |
dataEnterer | Personen der opdaterer. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): UpdateContactInformation_response.xml
...
Request-eksempel med Id: CreateRelativesWithId_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
relatedPerson | Liste-struktur tilsvarende relatedPerson i GetPersonalDataCard response | - | Nej |
relatedPerson.id | ID til den pårørende der skal oprettes (UUID) | varchar(36) | Ja |
dataEnterer | Personen der opretter. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): CreateRelatives_response.xml
...
Request-eksempel: UpdateRelatives_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives id på en "relatedPerson" fra svaret på en GetPersonalDataCard | varchar(10) | Nej |
relatedPerson | Liste-struktur tilsvarende relatedPerson i GetPersonalDataCard response | - | Nej |
dataEnterer | Personen der opdaterer. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): UpdateRelatives_response.xml
...
Request-eksempel: DeleteRelatives_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
relativeId | ID(er) på den/de pårørende der skal slettes. Hvert id skal matche id (UUID) på en relatedPerson fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
dataEnterer | Personen der sletter. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): DeleteRelatives_response.xml
...
Request-eksempel med id: CreateTemporaryAddressWithId_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
temporaryAddress.id | ID på den midlertidige adresse der skal oprettes (UUID) | varchar(36) | Ja |
temporaryAddress.addr | Den midlertidige adresse der skal oprettes. Indeholder addr-struktur, som beskrevet længere nede | - | Nej |
dataEnterer | Personen der opretter. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): CreateTemporaryAddress_response.xml
...
Request-eksempel: UpdateTemporaryAddress_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
temporaryAddress.id | ID på den midlertidige adresse der skal opdateres. Skal modsvare id (UUID) på en temporaryAddress fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
temporaryAddress.addr | Den midlertidige adresse der skal oprettes. Indeholder addr-struktur, som beskrevet længere nede | - | Nej |
dataEnterer | Personen der opdaterer. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): UpdateTemporaryAddress_response.xml
...
Request-eksempel: DeleteTemporaryAddress_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
temporaryAddressId | ID(er) på den/de midlertidige adresser der skal slettes. Hvert id skal matche id (UUID) på en temporaryAddress fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
dataEnterer | Personen der sletter. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): DeleteTemporaryAddress_response.xml
...
Request-eksempel med id: CreateLanguageWithId_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
language.id | ID på det sprog der skal oprettes (UUID) | varchar(36) | Ja |
language.languageCode | Sprogkode. Format: ISO-639-1 | char(2) | Nej |
dataEnterer | Personen der opretter. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): CreateLanguage_response.xml
...
Request-eksempel: UpdateLanguage_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
language.id | ID(er) på det/de sprog der skal opdateres. Hvert id skal matche id (UUID) på et language fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
language.languageCode | Sprogkode. Format: ISO-639-1 | char(2) | Nej |
dataEnterer | Personen der opdaterer. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): UpdateLanguage_response.xml
...
Request-eksempel: DeleteLanguage_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
languageId | ID(er) på det/de sprog der skal slettes. Hvert id skal matche id (UUID) på et language fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
dataEnterer | Personen der sletter. Se tabel længere nede (delt struktur) | - | Nej |
Response-eksempel (indeholder ingen data): DeleteLanguage_response.xml
...
Request-eksempel med Id: CreateHealthProviderWithId_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
healthProvider.id | ID på den tandlæge der skal oprettes (UUID) | varchar(36) | Ja |
healthProvider.providerType | Som attribut "code" angives "tandlæge", som er den eneste værdi der understøttes i aktuelle version. | - | Nej |
healthProvider.organization | Tandlægeorganisation. Se tabel længere nede (delt struktur) | - | Nej |
dataEnterer | Personen der opretter. Se tabel længere nede (delt struktur) | - | Nej |
UpdateHealthProvider
Request-eksempel: UpdateHealthProvider_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
healthProvider.id | ID(er) på den tandlæge der skal opdateres. Id skal matche UUID på en tandlæge fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
healthProvider.providerType | Som attribut "code" angives "tandlæge", som er den eneste værdi der understøttes i aktuelle version. | - | Nej |
healthProvide.organization | Tandlægeorganisation. Se tabel længere nede (delt struktur) | - | Nej |
dataEnterer | Personen der opdaterer. Se tabel længere nede (delt struktur) | - | Nej |
DeleteHealthProvider
Request-eksempel: DeleteHealthProvider_request.xml
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives personens CPR-nummer (uden bindestreg) | varchar(10) | Nej |
healthProvider.id | ID(er) på den tandlæge der skal slettes. Id skal matche UUID på en tandlæge fra svaret på en GetPersonalDataCard | varchar(36) | Nej |
dataEnterer | Personen der sletter. Se tabel længere nede (delt struktur) | - | Nej |
Addr
Bemærk at der på en "addr"-struktur skal anvendes attribut isNotOrdered="false", da funktionalitet afhænger af en bestemt rækkefølge af streetAddressLine.
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
streetAddressLine | Adresselinje, 0-4 forekomster | varchar(80) | Ja |
postalCode | Postnummer | varchar(10) | Ja |
city | By | varchar(80) | Ja |
country | Land | varchar(80) | Ja |
useablePeriod | 1 eller 2 forekomster. 1 til at indikere en periode gældende fra et givet tidpunkt og fremad, eller 2 til at angive et datointerval, f.eks. således (værdien operator="I" betyder "intersection"): <cda:useablePeriod value="20140106" operator="I"/> Format for value-attributten er yyyyMMdd | varchar(8) for value-attribut | Ja |
Organization
Organisation anvendes til at beskrive navn, adresse mv. for en tandlæge
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
id | Som attribut "extension" angives organisationens ydernummer | varchar(80) | Ja |
name | Navn på organisationen | varchar(120) | Ja |
telecom | Telefonnummer på organisationen | varchar(45) | Ja |
addr.streetAddressLine | Adresselinje. Der kan forekomme op til 4 linjer i en adresse | varchar(80) | Ja |
addr.postalCode | Postnummer | varchar(80) | Ja |
addr.city | Bynavn | varchar(80) | Ja |
addr.country | Land | varchar(80) | Ja |
DataEnterer
Den generelle dataEnterer-struktur der anvendes på diverse request, samt på relatedPerson, temporaryAddress og language, ser ud som følger (organisationsoplysninger skal angives hvis der er tale om en sundhedsperson):
Element | Beskrivelse | Type | Optionel |
---|---|---|---|
time | Tidspunkt for opdatering. Format: yyyyMMddHHmmssZ, fx. 20171024143445+0200 | varchar(19) | Nej |
assignedAuthor.id | En eller flere forekomster med værdi i attribut "extension" og type (fx CPR/AUTORISATION/UDDANNELSESKODE) i attribut "assigningAuthorityName" | extension varchar(10), assigningAuthorityName varchar(30) | Nej |
assignedAuthor.assigningPerson.name.given | For- og mellemnavn på person bag opdatering | varchar(80) | Nej |
assignedAuthor.assigningPerson.name.family | Efternavn på person bag opdatering | varchar(80) | Nej |
assignedAuthor.representedOrganization.id | Organisations id, såfremt der er tale om en sundhedsperson. Værdi findes i attribut "extension", type i attribut "assigningAuthorityName" | extension varchar(80), assigningAuthorityName varchar(30) | Ja |
assignedAuthor.representedOrganization.name | Organisations navn | varchar(30) | Ja |