Page History
| Navitabs | ||||||
|---|---|---|---|---|---|---|
|
1 Formål
Nærværende dokument indgår i den samlede dokumentationspakke for stamdataregistret på NSP. Dokumentationspakken giver tilsammen det fulde overblik over dokumentationen. ”Guide til anvendere” er målrettet udviklere og arkitekter hos leverandører, som ønsker at anvende funktionaliteten udstillet af stamdataservicen. Guiden kan indeholde kodeeksempler, interaktionsbeskrivelser, servicebeskrivelser, snitfladebeskrivelser mv.
| Table of Contents |
|---|
1 Formål
Nærværende dokument indgår i den samlede dokumentationspakke for stamdataregistret på NSP. Dokumentationspakken giver tilsammen det fulde overblik over dokumentationen.
...
Adgangen til funktionaliteten er styret i flere ”lag”, idet de enkelte stamdataregistre indeholder forskelligartet information, og kan være styret af forskellige politikker. I praksis styres adgangen gennem whitelists på CVR nummer niveau[1] for de enkelte services.
Alle snitflader udstillet af stamdataservicen er baseret på Den Gode Web-Service 1.0.1 (DGWS 1.0.1), med følgende undtagelser:
- Personinformation servicen, som er en national standard for identitetsbaserede webservices i sundhedssektoren.
- DetGodeCPROpslag-1.0.4.1a, som udstiller IDWS-snitflader
- StamdataPersonLookup-1.2.0, som også udstiller IDWS-snitflader
- StamdataPersonLookup-1.2.1, som også udstiller IDWS-snitflade
I forhold til stamdataservicen forudsættes der autentifikation på DGWS niveau 3, dvs. brug af STS-signerede system-IDkort.
...
En komplet gennemgang af tilgængelige registre, datatyper samt versioner er at finde i dokumentet ”Registerspecifikation for Anvendere”.
3
...
.1 Struktur af kald til KRS
Kopiregisterservicen tager følgende input:
...
Parameter | Beskrivelse | Eksempel |
Register | Det register, der ønskes udtræk fra. | ”cpr” |
Datatype | Hvert register er opdelt i en række datatyper, og et kald til KRS returnerer en enkelt af disse. | ”person” |
Versionsnummer | Af hensyn til bagudkompabilitet versioneres udtræksfunktionaliteten for hvert enkelt register. Parameteren angiver hvilken version af en datatype der ønskes, f.eks. version 1 eller version 2 af datatypen 'Person' i cpr-registret. | ”1” |
| Registerversionsnummer | Af hensyn til bagudkompabilitet versioneres udtræksfunktionaliteten for hvert enkelt register. Parameteren angiver hvilken version af er register der ønskes, f.eks. version 1 eller version 2 af cpr-registret. | "1" |
Offset | En parameter, der angiver hvorfra i servicens udtræk af ændrede data svaret skal påbegyndes. | ”1024” |
MaxRowCount | Det maksimalt antal returnerede rækker. Anvendes til at styre størrelsen af svarene fra KRS. | ”512” |
...
Kaldet til Kopiregisterservicen er formelt specificeret i WSDL’en stamdata_krs.wsdl, der kan rekvireres ved henvendelse til NSP-operatøren.
3
...
.2 Struktur af kald til RFS
Kopiregisterservicen tager følgende input:
...
Parameter | Beskrivelse | Eksempel |
Register | Det register, der ønskes udtræk fra. | ”CPR” |
Datatype | Hvert register er opdelt i en række datatyper, og et kald til KRS returnerer en enkelt af disse. | ”person” |
Versionsnummer | Af hensyn til bagudkompabilitet versioneres udtræksfunktionaliteten for hvert enkelt register. Parameteren angiver hvilken version af en datatype der ønskes, f.eks. version 1 eller version 2 af datatypen 'Person' i cpr-registret. | ”1” |
| Registerversionsnummer | Af hensyn til bagudkompabilitet versioneres udtræksfunktionaliteten for hvert enkelt register. Parameteren angiver hvilken version af er register der ønskes, f.eks. version 1 eller version 2 af cpr-registret. | "1" |
IdList | Liste over id'er der skal laves opslag på. Formatet på id'erne afhænger af hvilken register- og datatype-paremeter der anvendes. Parameteren er påkrævet, og skal indeholde mellem 1 og 5.000 id'er. | ["1112570000","1112570001"] |
Filter | Angive hvis et filter skal benyttes, det angives som et navn. Hvis intet filter bliver givet bruges filter funktion ikke. | "Filter 1" |
Kaldet til Fleropslagsservicen er formelt specificeret i WSDL’en stamdata_rfs.wsdl, der kan rekvireres ved henvendelse til NSP-operatøren.
3.
...
3 Fejlsituationer
Hvis der er en fejl i forespørgslen, eller der opstår en fejl på serveren, vil servicen returnere en fejlmelding af typen ReplicationFault med en beskrivelse af fejlen (jævnfør WSDL som specificeret i ovenstående afsnit). Hvis forespørgslen går godt, returnerer servicen en besked af typen ReplicationResponse, der indeholder et ”any”-element. Dette any-element er af typen atom baseret på ATOM 1.0 [RFC4287]. ATOM er en syndikeringsprotokol og designet til at holde styr på ændringer i en ressource. I dette tilfælde er ressourcerne datatyperne i et register. Hvordan dette atom-element skal tolkes er forklaret nærmere i afsnit 3.6.
3.
...
4 Endpoint URL
Kopi register servicen er som udgangspunkt konfigureret på
...
<hostnavn>:8080/stamdata-batch-copy-ws-rfs/service/StamdataReplication?wsdl
...
Service til kald af rfs med som kan benyttet filter:
<hostnavn>:8080/stamdata-batch-copy-ws-rfs/service/StamdataReplication-20240227
og wsdl kan hentes ved at sætte ?wsdl efter, altså:
<hostnavn>:8080/stamdata-batch-copy-ws-rfs/service/StamdataReplication-20240227?wsdl
3.5.1 Eksempel på kald til KRS
Som klient sender man et ReplicationRequest til servicen.
Forespørgsel:
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
<S:Header>
…
</S:Header>
<S:Body>
<ns1:ReplicationRequest xmlns:ns1="http://nsi.dk/2011/10/21/StamdataKrs/">
<register>cpr</register>
<datatype>person</datatype>
<version>1</version>
<registerVersion>1</registerVersion>
<offset>0</offset>
</ns1:ReplicationRequest>
</S:Body>
</S:Envelope>
Headeren skal indeholde en DGWS 1.0.1 header.
Headeren skal indeholde en DGWS 1.0.1 header.
Bemærk Bemærk at registerVersion-parameteren er frivillig. Hvis den udelades, svarer det til angive værdien 1.
Hvis alt går som forventet og forespørgslen bliver godkendt modtages et svar:
...
Herudover skal der også vælges et register og en datatype. En liste af registre og deres datatyper kan findes på siden Stamdataregistre og tilhørende datatyper. På siden kan man bl.a. se, at registreret "cpr" fx har datatypen "person". Et request for dette vil se ud som følgende forespørgesel herunder.
Nærmere beskrivelse af registre og deres datatyper kan læses på siden Dokumentation af stamdataregistre.
Forespørgsel:
| Code Block | ||
|---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> |
...
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> |
...
<S:Header> |
...
…
...
--- </S:Header> |
...
<S:Body> |
...
<ns1: |
...
ReplicationRequest xmlns:ns1="http://nsi.dk/2011/10/21/StamdataKrs/"> |
...
<register>cpr</register>
<datatype>person</datatype>
<version>1</version>
<registerVersion>1</registerVersion>
<offset>0</offset>
</ns1:ReplicationRequest>
</S:Body>
</S:Envelope> |
Hvis alt går som forventet og forespørgslen bliver godkendt modtages et svar:
Svar:
| Code Block | ||
|---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?>
<S:Envelope xmlns:S |
...
="http:// |
...
schemas. |
...
xmlsoap.org/soap/ |
...
envelope/ |
...
"> <S:Header> --- </S:Header> <S:Body> <ns1:ReplicationResponse xmlns:ns1="http://nsi.dk/2011/10/21/StamdataKrs/"> <atom:feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://nsi.dk/-/stamdata/3.0/cpr"> |
...
<atom:id>tag:nsi.dkersonLookupWithSubscriptionIntegrationTest.java,2011:cpr/person/v1</atom:id> |
...
<atom:updated>2011-10-25T07:02:08.045Z</atom:updated> |
...
<atom:title>Stamdata Registry Feed</atom:title> |
...
<atom:author> |
...
<atom:name>National Sundheds IT</atom:name> |
...
</atom:author> |
...
…
...
--- </atom:feed> |
...
</ns1:ReplicationResponse> |
...
</S:Body> |
...
</S:Envelope> |
Opstår der derimod en fejl, bliver en DGWS 1.0.1 Fault sendt tilbage, f.eks.:
Fejl:
| Code Block | ||
|---|---|---|
| ||
<soapenv:Envelope ...> |
...
<soapenv:Header>...</soapenv:Header> |
...
<soapenv:Body> |
...
<soapenv:Fault> |
...
<faultcode>Server</faultcode> |
...
<detail> |
...
<medcom:FaultCode>expired_idcard</medcom:FaultCode> |
...
</detail> |
...
<faultstring>The ID card has expired.</faultstring> |
...
</soapenv:Fault> |
...
</soapenv:Body> |
...
</soapenv:Envelope> |
3.
...
5.2 Eksempel på kald til RFS
Som klient sender man et ReplicationRequest til servicen.
Forespørgsel:
...
| Code Block | ||
|---|---|---|
| ||
<?xml version="1.0" encoding="UTF-8"?> |
...
<S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> |
...
<S:Header> |
...
…
...
--- </S:Header> |
...
<S:Body> |
...
<ns1:ReplicationRequest xmlns:ns1="http://nsi.dk/2021/03/03/StamdataRfs/"> |
...
<register>cpr</register> |
...
<datatype>person</datatype> |
...
<version>1</version> |
...
<registerVersion>1</registerVersion> |
...
<idList> |
...
<id>1112579876</id> |
...
<id>2211657418</id> |
...
</idList> |
...
<filter>filter 1</filter> </ns1:ReplicationRequest> |
...
</S:Body> |
...
</S:Envelope> |
Headeren skal indeholde en DGWS 1.0.1 header.
Hvis filter er angivet vil response der blive filteret felter fra svaret. Hvis intet filter angivet svaret det samme som for KRS, og vil gerfor ikke blive gennemgået igen.
Strukturen af responses og faults er den samme som for KRS, og vil gerfor ikke blive gennemgået igen.
3.
...
5.
...
3 Eksempel på
...
svar ved brug af et filter til RFS
| Code Block | ||
|---|---|---|
|
...
<?xml version="1.0" encoding="UTF-8"?> |
...
<atom:feed xmlns: |
...
atom="http:// |
...
www. |
...
w3.org/ |
...
2005/ |
...
Atom" xmlns: |
...
S="http:// |
...
schemas. |
...
xmlsoap.org/ |
...
soap/ |
...
envelope/ |
...
" xmlns: |
...
ns2="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns: |
...
ns3=" |
...
http://www. |
...
w3. |
...
org/ |
...
2000/ |
...
09/xmldsig#" xmlns:ns4="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns5="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns: |
...
ns6="http: |
...
/ |
...
/ |
...
docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns: |
...
ns7="http:// |
...
nsi.dk/2024/02/27/StamdataRfs/"> <atom:id>tag:nsi.dk,2011:cpr/person/v1</atom:id> <atom:updated>2024-04-23T12:55:05.129Z</atom:updated> <atom:title>Stamdata Registry Feed</atom:title> <atom:author> <atom:name>National Sundheds IT</atom:name> </atom:author> <atom:entry> <atom:id>tag:nsi.dk,2011:cpr/person/v1/17136504000000005006</atom:id> <atom:title/> <atom:updated>2024-04-20T22:00:00.000Z</atom:updated> <atom:content type="application/xml"> <person:person xmlns="http:// |
...
nsi.dk/-/stamdata/3.0/cpr" xmlns:person="http:// |
...
nsi.dk/ |
...
-/ |
...
stamdata/3.0 |
...
/cpr">
<cpr>0102451234</cpr>
<koen>M</koen>
<fornavn>Peter</fornavn>
<mellemnavn>Sigurd</mellemnavn>
</person:person>
</atom:content>
</atom:entry>
</atom:feed> |
3.6
...
Detaljeret svar fra KRS
Her følger et mere detaljeret output fra KRS. Tolkning af dette er beskrevet i afsnittet efter.
...
| Code Block | ||
|---|---|---|
| ||
<atom:feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns="http://nsi.dk/-/stamdata/3.0/cpr"> |
...
<atom:id>tag:nsi.dk,2011:cpr/person/v1</atom:id> |
...
<atom:updated>2011-11-07T09:56:12.278Z</atom:updated> |
...
<atom:title>Stamdata Registry Feed</atom:title> |
...
<atom:author> |
...
<atom:name>National Sundheds IT</atom:name> |
...
</atom:author> |
...
<atom:entry> |
...
<atom:id>tag:nsi.dk,2011:cpr/person/v1/13206597710000000085</atom:id> |
...
<atom:title/> |
...
<atom:updated>2011-11-07T09:56:11.000Z</atom:updated> |
...
<atom:content type="application/xml"> |
...
<person> |
...
<cpr>0102451234</cpr> |
...
<koen>M</koen> |
...
<fornavn>Hans</fornavn> |
...
<mellemnavn/> |
...
<efternavn>Hansen</efternavn> |
...
<coNavn></coNavn> |
...
<lokalitet/> |
...
<vejnavn>Ligustervænget</vejnavn> |
...
<bygningsnummer>42</bygningsnummer> |
...
<husnummer>123</husnummer> |
...
<etage>12</etage> |
...
<sideDoerNummer>th.</sideDoerNummer> |
...
<bynavn>Enby</bynavn> |
...
<postnummer>1448</postnummer> |
...
<postdistrikt>Nøddebo</postdistrikt> |
...
<status>01</status> |
...
<gaeldendeCPR>3105459876</gaeldendeCPR> |
...
<foedselsdato>1947-12-24T00:00:00+01:00</foedselsdato> |
...
<stilling/> |
...
<vejKode>740</vejKode> |
...
<kommuneKode>314</kommuneKode> |
...
<validFrom>2011-11-07T10:56:21+01:00</validFrom> |
...
<validTo>2012-11-07T10:56:11+01:00</validTo> |
...
</person> |
...
</atom:content> |
...
</atom:entry> |
...
</atom:feed> |
3.
...
7 Parsing af output
Responset fra SKRS og SRFS består af et antal metadata-felter, som indeholder overordnet information om de data der er i responset, samt en række entry-elementer. Et entry-element beskriver hvordan et forretningsobjekt så ud i en bestemt periode, repræsenteret ved ValidFrom- og ValidTo-felterne. Med forretningsobjekt menes her en instans af en datatype. Et forretningsobjekt er f.eks. instansen af datatypen 'Person' i CPR-registret med cpr-nummer '0102451234'. Et forretningsobjekt beskrives således af et antal entry-elementer, ét for hver version.
Et udtræk indeholder den fulde historik for det register der forespørges på.
3.
...
7.1 Unikke nøgler
Hver datatype har en nøgle, som identificerer et forretningsobjekt. F.eks. identificeres et Person-objekt i CPR-registret ved sit CPR-nummer. Unikke nøgler for de enkelte datatyper er beskrevet i listen over registre i dokumentet "Registerspecifikation for Anvendere”.
3.
...
7.2 Revisionsnumre
Hvert entry-element indeholder et revisionsnummer, som unikt identificerer den version af forretningsobjektet, der ligger under content-elementet. Dette kan sammenlignes med en primærnøgle i en database, som identificerer en bestemt række.
...
<atom:id>tag:nsi.dk,2011:cpr/person/v1/13206597710000000085</atom:id>
3.
...
7.3 ValidFrom- og ValidTo-elementer
Et forretningsobjekt kan have flere versioner, hvilket er repræsenteret med elementerne ValidFrom og ValidTo. Et forretningsobjekt kan ikke have versioner med overlappende gyldighedsperioder, og der kan ikke være "huller" i historikken. Der gives ingen garanti for, hvor langt tilbage historikken rækker.
...
| Code Block | ||
|---|---|---|
| ||
<person>
<cpr>0102451234</cpr>
...
<efternavn>Jensen</efternavn>
...
<validFrom>2010-10-10T10:10:10+01:00</validFrom>
<validTo>2999-01-01T00:00:00+01:00</validTo>
</person> |
3.
...
7.4 DateTime
Data af typen DateTime i svaret fra SKRS vil som udgangspunkt være angivet i lokal tidszone, f.eks. '2018-07-11T08:16:47+02:00'. Der kan dog være tilfælde hvor der anvendes UTC, og anvendere skal derfor kunne håndtere begge datoformater.
3.
...
8 Paginering
Svaret fra SKRS kan maksimalt indeholde et fast antal entry-elementer, da det ikke er praktisk muligt at sende indholdet af et helt register på én gang. Størrelsen af responset kan styres med request-parameteren maxRecords. Servicen har dog en øvre grænse, som træder i kraft hvis parameteren er for stor.
...
Bemærk i øvrigt at der ikke kan anvendes paginering i SRFS.
3.
...
9 Opslagskolonner i SRFS
Dette afsnit beskriver hvilke opslagsmuligheder der tilbydes i SRFS.
...
Der findes følgende endpoints:
- http://stamdatahost:8080/stamdata-authorization-lookup-ws/service/AuthorizationService?wsdl
- http://stamdatahost:8080/stamdata-authorization-lookup-ws/service/AuthorizationCodeService?wsdl
- http://stamdatahost:8080/stamdata-authorization-lookup-ws/service/AuthorizationService-20240105?wsdl
- http://stamdatahost:8080/stamdata-authorization-lookup-ws/service/AuthorizationCodeService-20240105?wsdl
Og hvis man kalder gennem DCC:
- http://stamdatahost:8080/decoupling/nspservices/AuthorizationService
- http://stamdatahost:8080/decoupling/nspservices/AuthorizationCodeService
- http://stamdatahost:8080/decoupling/nspservices/AuthorizationService20240105
http://stamdatahost:8080/decoupling/nspservices/AuthorizationCodeService20240105
5.2.2 Eksempel: Én eller flere autorisationer
...
http://stamdatahost:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.3
Bemærk at kald til DetGodeCPROpslag med en af 1.0.4-versionerne, skal kaldes gennem DCC med en serviceIdentifier:
For 1.0.4
http://stamdatahost:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.4
DCC:
For 1.0.4.1
http://stamdatahost:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.4.1
DCC:
For For 1.0.4a
http://stamdatahost:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.4a
DCC:
For 1.0.4.1a
http://stamdatahost:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.4.1a
DCC:
1.0.4
5.3.3 Mangelfuld datagrundlag
...
For versioner tidligere end 1.2.01, gøres det ved at kalde endpoint med ?wsdl tilføjes som sådan http://endpointurl?wsdl
For version 1.2.0 1 hentes wsdl filerne (dgws eller idws) på følgende endpoints:
- http://stamdatahost:8080/stamdata-cpr-ws/service-contract/wsdl/PERSONLOOKUP_1.2.01_dgws/StamdataPersonLookup.wsdl
- http://stamdatahost:8080/stamdata-cpr-ws/service-contract/wsdl/PERSONLOOKUP_1.2.01_idws/StamdataPersonLookup.wsdl
Eller direkte på driftsoperatørens SVN:
...
http://stamdatahost:8080/stamdata-cpr-ws/service/StamdataPersonLookup-1.2.0
http://stamdatahost:8080/stamdata-cpr-ws/service/StamdataPersonLookup-1.2.1
De første endpoints findes kun af hensyn til bagud kompatibilitet og anvender wsdl filer som ligger i mapperne PERSONLOOKUP_1.0.1 og PERSONLOOKUP_1.1.0.
...
Det anbefales man anvender StamdataPersonLookup-1.2.0 1 i nye projekter, wsdl filerne til denne kan findes i PERSONLOOKUP_1.2.0 1 mappen.
5.4.
...
3 Mangelfuld data og Fejlfyldt CPR data
Se 5.3.3 Mangelfuld data og 5.3.
Snitflader er beskyttet af en whitelistning. Et cvr nummer skal være whitelistet til ”SDM” og at kalde getPersonDetail, ”SDMwithConsent” for at kalde getPersonDetailsWithContents, og "SDMwithCPR" for at kalde searchPersonDetails.
5.4.3 Mangelfuld data og Fejlfyldt CPR data
Se 5.3.3 Mangelfuld data og 5.3.4 Fejlfyldt CPR data
5.4.4 Eksempel 1: getPersonDetails(<Personnummer>)
...
Servicen returner alt gyldig information i yderregistret baseret på opslag med ydernummeret. Se beskrivelsen af Yderregisteret lisen af data felter.
5.5.1 Endpoints
httphttps://stamdatahost:80808443/stamdata-yder-lookup-ws/service/YderService
Og hvis man kalder gennem DCC:
http://stamdatahost:8080/decoupling/nspservices/YderService
5.5.1 Eksempel: Én eller flere autorisationer
...
- at verificere om et CPR nummer eksisterer. Servicen tager ikke hensyn til om personen f.eks. er afgået ved døden.
- at hente status for en given person med udgangpunkt i et CPR nummer. Denne kode kan blandt andet bruges til at afgøre om personen er afgået ved døden eller på anden måde inaktiv
- Servicen findes i 2 udgaver, hvor den oprindelige service returnerer status, som et positivt heltal uden foranstillede nuller, og den nye udgave af service bibeholder evt. foranstillede nuller i værdien af status.
- at hente alder (age) for en given person med udgangspunkt i et CPR nummer.
- at hente fødselsdag for en given person
- at hente værgemål en given person har (som forældre eller værge)
- at hente de navne en given person har
- at returnere en liste af personer der er afdøde udfra en liste af cpr numre og dato som input.
...
Servicens snitflade er beskrevet via OpenAPI og kan findes i SVN i her.
5.
...
6.1 Endpoints
Servicen kan tilgås på nedenstående endpoint hvor stamdatahost er tilrettet den korrekte host.
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}/status
- http://stamdatahost/stamdata-personinformation/2024/08/01/{cpr}/status
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}/age
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}/birthday
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}/custody
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}/name
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/deceased
...
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/{cpr}/address
- http://stamdatahost/stamdata-personinformation/2024/08/01/person/filterByStatusCode
5.6.2 Eksempel 1: Person findes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer.
...
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327402203954940 |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
{"cpr": "2209632740"}
|
5.
...
6.
...
3 Eksempel 2: Person findes ikke
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksisterer.
...
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.
| Code Block | ||
|---|---|---|
| ||
{ }
|
5.6.4
...
Eksempel 3: Status hentes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, og har status 1
...
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412203954940/status |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
{"status":"1"} |
5.
...
6.5 Eksempel 4: Status hentes på person der ikke findes
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksisterer.
...
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.
| Code Block | ||
|---|---|---|
| ||
{ }
|
5.
...
6.
...
7 Eksempel 5:
...
Alder hentes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, men ikke har en statusog har alder 29 år i 2024.
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412203954940/statusage |
Response
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at status ikke findes200.
| Code Block | ||
|---|---|---|
| ||
{ "age":29}
|
...
5.6.8 Eksempel 6: Alder hentes på person der ikke findes
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksisterer, og har alder 6 år. Samme fejl fåes, hvis alder ikke kan udregnes pga manglende fødselsdato, eller hvis fødselsdatoen fejlagtigt er registreret i fremtiden.
Request
Request i form af curl udtryk.
...
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
{"age":6} |
...
404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.
| Code Block | ||
|---|---|---|
| ||
{ }
|
5.6.10 Eksempel 7: Fødselsdag hentes
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksisterer.eksisterer, og fødselsdagen 22 marts 1995
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412203954940/agebirthday |
Response
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.200.
| Code Block | ||
|---|---|---|
| ||
{ }
"birthday":"1995-03-22"} |
5.
...
6.
...
11 Eksempel
...
8:
...
Fødselsdag hentes på person der
...
ikke findes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, men hvoer der ikke er angivet en fødselsdato i den tabel alder udregnes fra. (Samme resultat fåes, hvis fødselsdatoen fejlagtig er registret i fremtiden)
Request
IKKE eksisterer.
Request
Request i form Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/2209632741/agebirthday |
Response
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at alder CPR nummeret ikke kan udregnesfindes.
| Code Block | ||
|---|---|---|
| ||
{ }
|
5.
...
6.
...
12 Eksempel
...
9:
...
Værge og forældremål hentes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, og fødselsdagen 24 december 2012er forældre til 2 børn. Børnene er 20. december 2024 1 år (0612234612) henholdsvis 4 år (0711208372) gamle. CPR nummereret har også værgemål over person med cpr 2802064092.
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412203954940/birthdaycustody |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
{"birthday"parentalCustody":[{"relationCpr":"2012-12-24"} |
...
0711208372","age":4},{"relationCpr":"0612234612","age":1}],"wardCustody":[{"relationCpr":"2802064092"}]} |
5.6.13 Eksempel 10: Værge og forældremål hentes på person der ikke
...
har sådanne
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksisterer.der ikke har værge og fældremål
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412802064092/birthdaycustody |
Response
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.
| Code Block | ||
|---|---|---|
| ||
{ }
|
5.
...
6.
...
14 Eksempel
...
11:
...
Navn hentes
I dette eksempel kaldes servicen med et CPR nummer der er forældre til 2 børn på 9 og 16 år samt har værgemål over person med cpr 2209632743eksisterer, og personen har 3 navne (fornavn, mellem og efternavn).
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412203954940/custodyname |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
{"parentalCustodygivenName":[{"relationCpr":"2209632741"Helle","agemiddleName":9},{"relationCpr":"2209632742"Sejer","agefamilyName":16}],"wardCustodyLarsen":[{,"relationCprnameForAddressing":"2209632743Helle Sejer Larsen"}]} |
5.
...
6.
...
15 Eksempel
...
12:
...
Navn hentes på person der ikke
...
findes
I dette eksempel kaldes servicen med et CPR der ikke har værge og fældremålnummer der IKKE eksisterer.
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/2209632741/custodyname |
Response
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.
| Code Block | ||
|---|---|---|
| ||
{ }
|
5.
...
6.
...
16 Eksempel
...
13: Find afdøde personer
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, og personen har 3 navne (fornavn, mellem og efternavn)en liste af CPR numre og en dato. Servicen returnere en liste af person id'er fra input listen, som tilhører afdøde personer, som døde før tidspunktet i inputtet.
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" "http://stamdatahost/stamdata-personinformation/v1/person/2209632770/namedeceased?cpr=0810018631&cpr=2609144427&cpr=2203954940&dato=2024-05-30T17:32:28" |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
[{"givenNamecpr":"Helle0810018631"},{"middleNamecpr":"Louise","familyName":"Eskesen","nameForAddressing":"Helle Eskesen"}2609144427"}] |
5.
...
6.
...
17 Eksempel
...
14: Find personer adresse
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksisterer.eksisterer og har en atkiv status-kode. Den returner personens adresse data (adresse, by og post nummer).
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327712203954940/nameaddress |
Response
Der svares med HTTP statuskode 404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes200.
| Code Block | ||
|---|---|---|
| ||
{ }
|
...
"address":"Kastanievej,395,,","zipCode":"8550","cityName":"Ryomgård"} |
5.6.18 Eksempel 15: Status hentes
I dette eksempel kaldes ny version af servicen med en liste af CPR numre og en dato. Servicen returnere en liste af person id'er fra input listen, som tilhører afdøde personer, som døde før tidspunktet i inputtetet CPR nummer der eksisterer, og har status 01. Servicen sikre i denne udgave, at foranstillede nuller bebeholdes i svaret.
Request
Request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/deceased?cpr=0304784567&cpr=1508902650&dato=2023-07-21T17:32:28 |
Response
Der svares med HTTP statuskode 200.
...
| language | js |
|---|
...
http://stamdatahost/stamdata-personinformation/2024/08/01/person/2203954940/status |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
{"status":"01"} |
5.6.19 Eksempel 16: Find personer med status
I dette eksempel kaldes servicen med en liste af CPR numre, en statuskode og en dato. Servicen returnere en liste af person id'er fra input listen, som tilhører personer med status på tidspunktet i inputtet.
Request
Post request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" -H "Content-Type: application/json" "http://stamdatahost/stamdata-personinformation/2024/08/01/person/filterByStatusCode?statusCode=01&dato=2024-05-30T17:32:28" --data "[\"0810018631\",\"2609144427\",\"2203954940\"]" |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
[{"cpr":"2203954940"}] |
5.6.20 Eksempel 17: Finder person der er født på angivede dato
I dette eksempel kaldes servicen med en dato. Servicen returnere en liste af person id'er fra input listen, som tilhører personer med status på tidspunktet i inputtet.
Request
Get request i form af curl udtryk.
| Code Block | ||
|---|---|---|
| ||
curl -H "Accept: application/json" -H "Content-Type: application/json" "http://stamdatahost/stamdata-personinformation/v1/person/personsByBirthday?birthday=1995-03-22" |
Response
Der svares med HTTP statuskode 200.
| Code Block | ||
|---|---|---|
| ||
[{"cpr":"2203954940"}] |
5.7 Yderinformation
Stamdataservicen udstiller en REST service der kan tilgå data om yder. Anvenderguiden kan læses her:
SDM - Guide til anvendere - Yderinformation
5.8 Sikredeinformation
Stamdataservicen udstiller en REST service der kan tilgå data om sikrede. Anvenderguiden kan læses her:
SDM - Guide til anvendere - Sikredeinformation
6 Stamdata Filter Management Service (SFMS)
6.1 Struktur af kald til SFM
Opret et nyt filter tager følgende inputs:
| Parameter | Beskrivelse | Eksemel |
|---|---|---|
| Navn | Det navn som filter skal kaldes. | "Filter 1" |
| ViewPath | Er informationer på SKRS eller SRFS, skal angives på en af disse to foramter. Format med registerVersion: register/registerversion/datatype/version Format uden registerVersion: register/datatype/version | "vitamin/1/grunddata/1" |
| DataTypeFieldList | Specificer hvilket felter som skal vises ved brug af filter ved visning af en specifik datatype. | "varetype", "alfabetSekvensplads" |
Slet filter tager følgende inputs:
| Parameter | Beskrivelse | Eksemel |
|---|---|---|
| Navn | Det navn som filter skal kaldes. | "Filter 1" |
6.2 Fejlsituationer
Hvis der er en fejl i forespørgslen, eller der opstår en fejl på serveren, vil servicen returnere en fejlmelding af typen FilterFaultResponseType med en beskrivelse af fejlen. Hvis forespørgslen går godt, returnerer servicen en besked af typen FilterResponseType, der indeholder en ”status”-element med status "OK".
6.3 Endpoints eksempel
Forespørgsel på at lave et nyt filter:
<?xml version="1.0" encoding="UTF-8" ?> … |
|---|
Forespørgsel på at slette et filter:
Svar:
| <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <S:Header> ... </S:Header> <S:Body> <ns3:FilterResponseType xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns:ns3="http://nsi.dk/2024/04/03/StamdataSfm" xmlns:ns4="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns5="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns6="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd"> <ns3:status>OK</ns3:status> </ns3:FilterResponseType> </S:Body> </S:Envelope> |
|---|
Fejl:
| <?xml version="1.0" encoding="UTF-8"?> <S:Envelope xmlns:S="http://schemas.xmlsoap.org/soap/envelope/"> <soapenv:Header xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"> ... </soapenv:Header> <S:Body> <S:Fault xmlns:ns4="http://www.w3.org/2003/05/soap-envelope"> <faultcode>S:Server</faultcode> <faultstring>Filter name was too short, the minimum allowed is '3'.</faultstring> <detail> <ns3:FilterFaultResponseType xmlns="http://www.w3.org/2000/09/xmldsig#" xmlns:ns2="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns:ns3="http://nsi.dk/2024/04/03/StamdataSfm" xmlns:ns4="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns5="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:ns6="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:nil="true"/> <ns2:exception xmlns:ns2="http://jax-ws.dev.java.net/" class="dk.nsi._2024._04._03.stamdatasfm.FilterFaultMessage" note="To disable this feature, set com.sun.xml.ws.fault.SOAPFaultBuilder.disableCaptureStackTrace system property to false"> <message>Filter name was too short, the minimum allowed is '3'.</message> <ns2:stackTrace> <ns2:frame class="dk.nsi.filter.management.sfm.webservice.FilterManagementImpl" file="FilterManagementImpl.java" line="177" method="validateFilterName"/> ... <ns2:frame class="java.util.concurrent.ThreadPoolExecutor$Worker" file="ThreadPoolExecutor.java" line="624" method="run"/> <ns2:frame class="java.lang.Thread" file="Thread.java" line="750" method="run"/> </ns2:stackTrace> </ns2:exception> </detail> </S:Fault> </S:Body> </S:Envelope> |
|---|
6.4 EndPoints
Der findes følgende endpoints:
7 Whitelistning
Snitflader er beskyttet af en whitelisting, der findes i 4 typer. Læs mere omkring at blive whitlisted på Adgang til NSP - Anvendere.
En whitelisting kan give adgang til en eller flere registreservices og dens tilhørende endpoints. I tabellen her vises der hvilket registerservices, endpoints og operationer som en whitelisting vil give adgang til.
| Registreservices | Hvilket registreservices endpoints gives der adgang til | Hvilket operationer giver det adgang til |
|---|---|---|
Det Gode CPR Opslag (SCES) |
|
|
Enkeltopslag i autorisationsregistret (SAES) |
|
|
Enkeltopslag i yderregistret (SYES) |
|
|
...
[1] Det er forventningen, at det er i nær fremtid bliver muligt at adgangsstyre på system-niveau.
...