Page History
...
Notificeringer i NAS
I forbindelse med skriveoperationer i SKR (oprettelse, opdateringer og sletninger) sker der en notificering via NAS. Se evt. NAS 2.0 Anvenderguide.
De enkelte notificeringer indholder ikke detaljer vedr. opdateringen eller stamkortet, 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.
...
Følgende er et eksempel på en opdateringsnotificering:
...
Topic der anvendes: http://sundhedsdatastyrelsen.dk/PersonalDataCard/2020/11/01:DataCardUpdated
...
Denne snitflade muliggør at data kan opdateres asynkront på baggrund af et systemkald. Snitfladen understøtter niveau 3 ID-kort, via OCES funktionscertifikater (FOCES), samt niveau 4 ID-kort.
Snitfladen udstiller en enkelt operation, der tillader at enten oprettes borgerens stamdata, stamdata redigeres eller stamdata slettes. Det er ikke muligt at læse via denne snitflade, dertil skal eksisterende snitflader benyttes.
Opdatering:
Opdatering foregår ved at anvenderen sender sin lokale kopi indeholdene alt information fra stamkortregisteret, som anvenderen tidligere har synkroniseret, til ”savadatacard” webservicen. Bemærk, alle information fra stamkortregisteret pånær dataenterer information skal medsendes ved hvert opdateringsrequest.
Webservicen har derved til ansvar at lave hhv. de oprettelser, opdateringer og sletninger der er sket på data, ved at sammenligne det indsendte med eksisterende data i stamkortregisteret.
Det skal ikke være nødvendigt at sende "dataenterer" tilbage på de elementer der ikke er opdateret, resten af informationen skal dog kunne verificeres af servicen.
Servicen svarer ”200 ok” hvis alt er vel, eller giver en sigende fejlkode tilbage.
Opdateringstidspunkt:
Hvert element (som beskrevet i skrdatacardservice.xsd) har et opdateringstidspunkt. Serviceanvenderen skal opgive sit eget seneste synkroniseringstidspunkt for elementet i ”lastupdated” som er et datatime element i formatet yyyymmddhhmmss+zzzz. Der er ikke millisekunders præcision på dette tidsstempel.
Hvis servertidspunktet for elementet har ændret sig siden den sidste lokale synkronisering/kopi, vil en fejlkode 900 blive returneret, og information fra stamkortregisteret skal genindlæses af anvenderen. Der bliver i det tilfælde ikke opdateret nogle elementer fra stamkortregisteret.
Sletning:
Hvert element (som beskrevet i skrdatacardservice.xsd) kan slettes af borgeren, anvenderen skal udfylde ”tobeDeleted” og sætte værdien til true. Anvenderens seneste synkroniseringstidspunkt for elementet der forsøges slettet, skal ligeledes angives i ”lastupdated”.
Hvis servertidspunktet for elementet har ændret sig siden den sidste lokale kopi, vil en fejlkode 900 blive returneret, og information fra stamkortregisteret skal genindlæses. Der bliver i det tilfælde ikke slettet nogle elementer fra stamkortregisteret.
Code Block | ||||
---|---|---|---|---|
| ||||
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<xs:schema xmlns:hl7="urn:hl7-org:v3" xmlns:skr="urn:hl7-org:skr" xmlns:xs="http://www.w3.org/2001/XMLSchema" version="1.0" targetNamespace="http://sundhedsdatastyrelsen.dk/skr/2022/02/10">
<xs:import schemaLocation="http://wsdl.nspop.dk/skr-service/schema/cda/POCD_MT000040_SDTC.xsd" namespace="urn:hl7-org:v3"/>
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SaveDataCardRequest">
<xs:complexType>
<xs:sequence>
<!-- cprnr -->
<xs:element name="id" type="hl7:II" minOccurs="1" maxOccurs="1"/>
<xs:element name="contactInformation" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="contactInformation" type="ContactInformationType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="relatedPersons" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="relatedPerson" type="RelatedPersonType" minOccurs="1" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="temporaryAddress" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="temporaryAddress" type="TemporaryAddressType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="language" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="language" type="LanguageType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="healthProvider" minOccurs="0" maxOccurs="1">
<xs:complexType>
<xs:sequence>
<xs:element name="healthProvider" type="HealthProviderType" minOccurs="1" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element xmlns:xs="http://www.w3.org/2001/XMLSchema" name="SaveDataCardRequestResponse">
<xs:complexType>
<xs:sequence></xs:sequence>
</xs:complexType>
</xs:element>
<xs:simpleType name="NoteType">
<xs:restriction base="xs:string">
<xs:maxLength value="1000"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="RelatedPersonType">
<xs:sequence>
<!-- UUID -->
<xs:element name="id" type="hl7:II" minOccurs="0" maxOccurs="1"/>
<!-- Sidst opdateret dato/tid da den pårørende blev hentet fra Fælles Stamkort-->
<xs:element name="lastupdated" type="xs:dateTime"/>
<xs:element name="associatedEntity" type="hl7:POCD_MT000040.AssociatedEntity" minOccurs="1" maxOccurs="1"/>
<xs:element name="relationshipType" type="hl7:CD" minOccurs="1" maxOccurs="1"/>
<xs:element name="note" type="NoteType" minOccurs="0" maxOccurs="1"/>
<xs:element name="dataEnterer" type="hl7:POCD_MT000040.Author" minOccurs="0" maxOccurs="1"/>
<xs:element name="tobeDeleted" type="xs:boolean" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="TemporaryAddressType">
<xs:sequence>
<!-- UUID -->
<xs:element name="id" type="hl7:II" minOccurs="0" maxOccurs="1"/>
<!-- Sidst opdateret dato/tid da den midlertidige adresse blev hentet fra Fælles Stamkort-->
<xs:element name="lastupdated" type="xs:dateTime"/>
<xs:element name="addr" type="hl7:AD" minOccurs="1" maxOccurs="1"/>
<xs:element name="dataEnterer" type="hl7:POCD_MT000040.Author" minOccurs="0" maxOccurs="1"/>
<xs:element name="tobeDeleted" type="xs:boolean" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:simpleType name="LanguageCodeStringType">
<xs:restriction base="xs:string">
<xs:maxLength value="2"/>
</xs:restriction>
</xs:simpleType>
<xs:complexType name="LanguageCodeType">
<xs:simpleContent>
<xs:extension base="LanguageCodeStringType">
<xs:attribute name="codeSystem" type="xs:string"/>
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="LanguageType">
<xs:sequence>
<!-- UUID -->
<xs:element name="id" type="hl7:II" minOccurs="0" maxOccurs="1"/>
<!-- Sidst opdateret dato/tid da sprog blev hentet fra Fælles Stamkort-->
<xs:element name="lastupdated" type="xs:dateTime"/>
<xs:element name="languageCode" type="LanguageCodeType" minOccurs="1" maxOccurs="1"/>
<xs:element name="dataEnterer" type="hl7:POCD_MT000040.Author" minOccurs="0" maxOccurs="1"/>
<xs:element name="tobeDeleted" type="xs:boolean" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
<xs:element name="language" type="LanguageType"/>
<xs:complexType name="ContactInformationType">
<xs:sequence>
<!-- Sidst opdateret dato/tid da kontaktinformation blev hentet fra Fælles Stamkort-->
<xs:element name="lastupdated" type="xs:dateTime"/>
<xs:element name="telecom" type="hl7:TEL" minOccurs="0" maxOccurs="3"/>
<xs:element name="dataEnterer" type="hl7:POCD_MT000040.Author" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="HealthProviderType">
<xs:sequence>
<!-- UUID -->
<xs:element name="id" type="hl7:II" minOccurs="0" maxOccurs="1"/>
<!-- Sidst opdateret dato/tid da tandlæge blev hentet fra Fælles Stamkort-->
<xs:element name="lastupdated" type="xs:dateTime"/>
<xs:element name="providerType" type="hl7:CD" minOccurs="1" maxOccurs="1"/>
<!-- type, f.eks. tandlæge -->
<xs:element name="organization" type="hl7:POCD_MT000040.Organization" minOccurs="1" maxOccurs="1"/>
<!-- tandlæge, givet ved enten ydernr eller SOR-id (institutionsejer) -->
<xs:element name="dataEnterer" type="hl7:POCD_MT000040.Author" minOccurs="0" maxOccurs="1"/>
<xs:element name="tobeDeleted" type="xs:boolean" minOccurs="0" maxOccurs="1" />
</xs:sequence>
</xs:complexType>
</xs:schema> |
Til SaveDatacard-snitfladen er der følgende wsdl fil:
...
WSDL-filer | |
---|---|
Stamkortregister DGWS | <server>/skr/wsdl/dgws20190801 |
Stamkortregister IDWS | <server>/skr/wsdl/idws20190801 |
Stamkortregister DGWS | <server>/skr/wsdl/dgws20200728 |
Stamkortregister IDWS | <server>/skr/wsdl/idws20200728 |
...
<server>/skr/wsdl/idws20200728 |
Valideringsbeskeder
Fejlkoder:
Webservicen følger ”Den Gode Webservice 1.0.1” hvilket betyder at fejlkoder, erklæres i faultelementet ”dgwsfault”, som specificerer indholdet af detail elementet for soap:Fault. I DGWS er detail elementet altid en medcom:FaultCode, der indeholder fejlkoden fra ”den gode webservice” som specificeret i deres ”Response-dataliste” eller en webservicespecifik kode.
Ved valideringsfejl for et request til SKR returneres der en fejlbesked, som indeholder en kode og overdnet tekst samt detaljer for fejlen.
Eksempel: 200: Fejl i request i forbindelse med oprettelse af pårørende, Detaljer: Påkrævet element mangler: relatedPerson.associatedEntity.associatedPerson.name.given.
Nedenfor er de mulige fejlbeskeder beskrevet. Første tabel indeholder de overordnede fejlbeskeder og tilhørende fejlkoder, mens tabellen derunder indeholder de fejlbeskeder, der beskriver detaljer for fejlen.
For webservicespecifikke koder er der følgende, som alle pakkes ind i ”skr:FaultCode”:
Valideringsbeskeder
Kode | Besked | |
---|---|---|
100 | Der opstod en fejl | - |
101 | Der opstod en fejl i forbindelse med hent stamkort | Der gives en undtagelse, når du kalder tjenesten GetPersonalDataCard. Undtagelse er inkluderet i fejlmeddelelse |
102 | Ingen data fundet | - |
200 | Fejl i request i forbindelse med oprettelse af pårørende | Når du opretter slægtninge med CreateRelatives-servicemetoden, findes den givne Uuid i serviceanmodningen for Relative ikke fundet. Undtagelse er smidt, når du kalder CreateRelatives servicemetode, undtagelse er knyttet til fejlmeddelelse |
201 | Intern fejl i forbindelse med oprettelse af pårørende | Undtagelse er smidt, når du kalder CreateRelatives servicemetode, undtagelse er knyttet til fejlmeddelelse |
210 | Fejl i request i forbindelse med ændring af pårørende | Undtagelse er smidt, når du kalder CreateRelatives servicemetode, undtagelse er knyttet til fejlmeddelelse |
211 | Intern fejl i forbindelse med ændring af pårørende | Undtagelse er kastet, når du kalder UpdateRelatives servicemetode, undtagelse er knyttet til fejlmeddelelse |
220 | Fejl i request i forbindelse med sletning af pårørende | Når du sletter pårørende med DeleteRelatives servicemetode, findes det angivne RelativeId i serviceanmodningen for Relative ikke fundet. Undtagelse er smidt, når du kalder CreateRelatives servicemetode, undtagelse er knyttet til fejlmeddelelse |
221 | Intern fejl i forbindelse med sletning af pårørende | Undtagelse er smidt, når du kalder DeleteRelatives servicemetode, undtagelse er knyttet til fejlmeddelelse |
230 | Fejl i request i forbindelse med oprettelse af sprog | Når du opretter et sprog med CreateLanguage-tjenestemetoden, konstateres det, at den givne sprogkode ikke eksisterer i databasen |
231 | Intern fejl i forbindelse med oprettelse af sprog | Undtagelse er kastet, når du kalder CreateLanguage servicemetode, undtagelse er knyttet til fejlmeddelelse |
240 | Fejl i request i forbindelse |
med ændring af sprog | Ved opdatering af sprog med UpdateLanguage-tjenestemetoden konstateres det, at det givne sprog mangler eller allerede eksisterer for en person. Undtagelse er kastet, når du kalder UpdateLanguages servicemetode, undtagelse er knyttet til fejlmeddelelse | |
241 | Intern fejl i forbindelse med ændring af sprog | Undtagelse er kastet, når du kalder UpdateLanguage service metode, undtagelse er knyttet til fejlmeddelelse |
250 | Fejl i request i forbindelse med sletning af sprog | Når du sletter Language med DeleteLanguage-tjenestemetoden, konstateres det, at det givne LanguageId mangler eller eksisterer ikke. Undtagelse kastes, når DeleteLanguage-tjenestemetoden kaldes, undtagelse er knyttet til fejlmeddelelsen |
251 | Intern fejl i forbindelse med sletning af sprog | Undtagelse kastes, når DeleteLanguage-tjenestemetoden kaldes, undtagelse er knyttet til fejlmeddelelsen |
260 | Fejl i request i forbindelse med oprettelse af midlertidig adresse | Når du opretter TempraryAddress med CreateTemporaryAddress-tjenestemetoden, konstateres det, at den givne adresse allerede eksisterer, der er en anden TemporaryAddres, eller tidsperioden for TempraryAddres er forkert. Undtagelse er kastet, når du kalder CreateTemporaryAddress-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
261 | Intern fejl i forbindelse med oprettelse af midlertidig adresse | Undtagelse er kastet, når du kalder CreateTemporaryAddress-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
270 | Fejl i request i forbindelse med ændring af midlertidig adresse | Når man opdaterer TempraryAddress med UpdateTemporaryAddress-tjenestemetoden, konstateres det, at den givne adresse allerede eksisterer, der er en anden TemporaryAddress, eller tidsperioden for TempraryAddress er forkert. Undtagelse er kastet, når du kalder UpdateTemporaryAddress-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
271 | Intern fejl i forbindelse med |
ændring af midlertidig adresse | Undtagelse er kastet, når du kalder UpdateTemporaryAddress-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen | |
280 | Fejl i request i forbindelse med sletning af midlertidig adresse | Når du sletter TempraryAddress med DeleteTemporaryAddress-tjenestemetoden, konstateres det, at den angivne adresse er tom eller ikke eksisterer. Undtagelse er kastet, når du kalder DeleteTemporaryAddress-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
281 | Intern fejl i forbindelse med sletning af midlertidig adresse | Undtagelse er kastet, når du kalder DeletieTemporaryAddress-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
290 | Fejl i request i forbindelse med oprettelse af tandlæge | Når du opretter HealthProvider med CreateHealthProvider-tjenestemetoden, konstateres det, at den givne HealthProvider ikke eksisterer, eller en anden HealthProvider eksisterer allerede. Undtagelse er kastet, når DeleteLanguages servicemetode kaldes, undtagelse er knyttet til fejlmeddelelse |
291 | Intern fejl i forbindelse med oprettelse af tandlæge | Undtagelse er smidt, når du kalder CreateHealthProvider-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
300 | Fejl i request i forbindelse med ændring af tandlæge | Når du opdaterer HealthProvider med UpdateHealthProvider-servicemetoden, konstateres det, at der ikke er nogen HealthProvider at opdatere, eller også eksisterer den HealthcareProvider, der er sendt i anmodningen, allerede. Undtagelse er kastet, når du kalder UpdateHealthProvider service metode, undtagelse er knyttet til fejlmeddelelse |
301 | Intern fejl i forbindelse med ændring |
af tandlæge | Undtagelse er kastet, når du kalder UpdateHealthProvider service metode, undtagelse er knyttet til fejlmeddelelse | |
310 | Fejl i request i forbindelse med sletning af tandlæge | Når du sletter HealthProvider med DeleteHealthProvider-tjenestemetoden, konstateres det, at det givne HealthProviderId er tomt, eller der er ingen nuværende HealthProvider at slette. Undtagelse er kastet, når du kalder DeleteHealthProvider-servicemetoden, undtagelse er knyttet til fejlmeddelelsen |
311 | Intern fejl i forbindelse med sletning af tandlæge | Undtagelse er kastet, når du kalder DeleteHealthProvider-servicemetoden, undtagelse er knyttet til fejlmeddelelsen |
320 | Fejl i request i forbindelse med ændring af kontaktinformation | Når du opdaterer ContactInformation med UpdateContactInformation-tjenestemetoden, er en af anmodningsattributterne ikke i det forventede format. For eksempel er telefonnummeret større end den maksimale længde (45 tegn) |
321 | Intern fejl i forbindelse med ændring af kontaktinformation | Undtagelse er kastet, når du kalder UpdateContactInformation service metode, undtagelse er knyttet til fejlmeddelelse |
400 | Fejl i request i forbindelse med gem datacard | Et af følgende elementer for Relative i serviceanmodningen er tomt (Relative.ServiceActor, TempAddress.ServiceActor, Language.ServiceActor, HealthProvider.ServiceActor, ContactInformation.ServiceActor) Den givne slægtning i anmodningen om at gemme eller opdatere tjenesten er ikke til stede. |
401 | Intern fejl i forbindelse med gem datacard | Undtagelse er kastet, når saveDataCard kaldes (undtagelse er knyttet til fejl). Hvis pårørende givet til sletning ikke er til stede |
410 | Borgerens kontaktoplysninger eksisterer i forvejen | Når du validerer mod eksisterende kontaktoplysninger, konstateres det, at de givne kontaktoplysninger i anmodningen allerede eksisterer. |
420 | Borgerens midlertidige adresse eksisterer i forvejen | Ved validering mod eksisterende adresse findes den givne adresse i anmodningen allerede. |
430 | Borgerens sprog eksisterer i forvejen |
Når man validerer mod eksisterende sprog, konstateres det, at det givne sprog i anmodningen allerede eksisterer. | ||
440 | Borgerens tandlæge eksisterer i forvejen | Ved validering mod eksisterende tandlæge konstateres det, at den givne tandlæge i anmodningen allerede eksisterer. |
500 | Ugyldig sikkerhedsbillet | Når du validerer SccurityTicket, konstateres det, at billetten mangler eller er ugyldig |
501 | Adgang til CPR-nummeret ikke tilladt | Brugeren har ikke tilladelse til at kalde den specifikke servicemetode |
502 | CPR-nummer angivet som DataEnterer i request matcher ikke CPR-nummer i certifikat | Det CPR-nummer, der er angivet i serviceanmodningen, stemmer ikke overens med det certifikat, der blev brugt til at ringe til tjenesten |
503 | CVR-nummer er ikke whitelisted til DGWS niveau 3 kald på denne operation | CVR-nummer er ikke whitelisted |
504 | Delegering ikke tilladt | ActingUser er en HealthcareProfessional, men ingen PrincipalUser er til stede |
505 | CVR nummer ikke fundet i sikkerhedsbilletten | Der findes ingen CVR i sikkerhedsbilletten, der bruges til at ringe til tjenesten |
506 | Bruger skal være identificeret ved CPR nummer | UserIdentifier er ikke i CPR-format |
507 | Brugertype kunne ikke bestemmes udfra sikkerhedsbillet | - |
508 | Forkert audience i sikkerhedsbillet | Det angivne publikum har ikke tilladelse til at bruge tjenesten |
509 | Ingen gyldig bruger type identificeret | Ingen ActingUser og ingen organisation er til stede i den medfølgende sikkerhedsbillet |
510 | Delegering ikke tilladt, da ingen relation angivet mellem borgere kunne bestemmes | Der er ikke fundet nogen delegationsrelation mellem den person, der er angivet i sikkerhedsbilletten og CPR for den person, der er angivet i serviceanmodningen |
800 | Fejl i request i forbindelse med migrering af stamkort | Fælles Stamkort er verificeret af borgeren |
801 | Intern fejl i forbindelse med migrering af stamkort | Undtagelse er kastet, når du kalder MigratePersonalDataCard-tjenestemetoden, undtagelse er knyttet til fejlmeddelelsen |
802 | Der opstod en fejl i forbindelse med migrering af stamkort | - |
810 | Fejl i request i forbindelse med migrering af stamkort | Der eksisterer et telefonnummer af type hjemme i forvejen |
820 | Fejl i request i forbindelse med migrering af stamkort | Borgerens sprog eksisterer i forvejen |
830 | Fejl i request i forbindelse med migrering af stamkort | Borgerens TempAddress findes allerede |
900 | Tidsstempel matcher ikke allerede gemt data | Tidsstemplet i serviceanmodningen for opdatering stemmer ikke overens med det tidspunkt, hvor data sidst blev opdateret. Dette gælder elementer: ContactInfo, Pårørende, Sprog, TempAddress og HealthProvider. |
Detaljer for valideringsbeskeder:
...