Page History
...
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” |
...
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.
...
<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.4.1 Eksempel på kald til KRS
...
Som klient sender man et ReplicationRequest til servicen.
Forespørgsel:
<?xml version="1.0" encoding="UTF-8"?>
...
<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>
...
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 faults er den samme Strukturen af responses og faults er den samme som for KRS, og vil gerfor ikke blive gennemgået igen.
3
...
Her følger et mere detaljeret output fra KRS. Tolkning af dette er beskrevet i afsnittet efter.
...
.4.3 Eksempel på svar ved brug af et filter til RFS
<?xml version="1.0" encoding="UTF-8"?> <atom:feed xmlns:atom="http://www.w3.org/2005/Atom" xmlns:S="http:// |
---|
...
...
...
...
...
" 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.5 Detaljeret svar fra KRS
Her følger et mere detaljeret output fra KRS. Tolkning af dette er beskrevet i afsnittet efter.
<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.6 Parsing af output
<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.6 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.
...
I dette eksempel kaldes servicen med et CPR der ikke har værge og fældremålhar 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/2209632741/custody |
Response
Der svares med HTTP statuskode 404.
Code Block | ||
---|---|---|
| ||
{ }
|
5.4.6 Eksempel 10: Navn hentes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, 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/22096327412209632770/custodyname |
Response
Der svares med HTTP statuskode 404200.
Code Block | ||
---|---|---|
| ||
{"givenName":"Helle","middleName":"Louise","familyName":"Eskesen","nameForAddressing":"Helle Eskesen"} |
5.4.
...
7 Eksempel
...
7: Navn hentes på person der ikke findes
I dette eksempel kaldes servicen med et CPR nummer der eksisterer, og personen har 3 navne (fornavn, mellem og efternavn)IKKE eksisterer.
Request
Request i form af curl udtryk.
Code Block | ||
---|---|---|
| ||
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327702209632771/name |
Response
Der svares med HTTP statuskode 200.
Code Block | ||
---|---|---|
| ||
{"givenName":"Helle","middleName":"Louise","familyName":"Eskesen","nameForAddressing":"Helle Eskesen"} |
...
404. Bemærk at Content-Type headeren også er application/json når HTTP koden 404 skyldes at CPR nummeret ikke findes.
Code Block | ||
---|---|---|
| ||
{ }
|
Eksempel 11: Find afdøde personer
I dette eksempel kaldes servicen med et CPR nummer der IKKE eksistereren 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/2209632771/namedeceased?cpr=0304784567&cpr=1508902650&dato=2023-07-21T17:32:28 |
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 findesHTTP statuskode 200.
Code Block | ||
---|---|---|
| ||
{ }
|
Eksempel 11: Find afdøde personer
I dette eksempel kaldes 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 inputtet.
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.
Code Block | ||
---|---|---|
| ||
[{"cpr":"0304784567"},{"cpr":"1508902650"}] |
6 Stamdata Filter Management Service (SFMS)
...
[{"cpr":"0304784567"},{"cpr":"1508902650"}] |
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. Det vil være disse oplysning i dette format: register/version/datatype/Registerversion | "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:
<?xml version="1.0" encoding="UTF-8" ?> <soapenv:Envelope xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ds="http://www.w3.org/2000/09/xmldsig#" xmlns:medcom="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns:saml="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:sosi="http://www.sosi.dk/sosi/2006/04/sosi-1.0.xsd" xmlns:wsa="http://schemas.xmlsoap.org/ws/2004/08/addressing" xmlns:wsse="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd" xmlns:wst="http://schemas.xmlsoap.org/ws/2005/02/trust" xmlns:wsu="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" id="Envelope"> <soapenv:Header> |
---|
...
...
... </soapenv:Header> <soapenv:Body> <ns3: |
---|
...
FilterDeleteRequestType xmlns:ns3="http://nsi.dk/2024/04/03/StamdataSfm" xmlns:ns2="http://schemas.xmlsoap.org/soap/envelope/" xmlns:ns4="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns:ns5="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-utility-1.0.xsd" xmlns:ns6="urn:oasis:names:tc:SAML:2.0:assertion" xmlns:ns7="http://www.w3.org/2000/09/xmldsig#" xmlns:ns8="http://docs.oasis-open.org/wss/2004/01/oasis-200401-wss-wssecurity-secext-1.0.xsd"> <ns3:name>Filter |
---|
...
1</ns3:name> |
---|
...
...
...
</ns3: |
---|
...
FilterDeleteRequestType> </soapenv:Body> </soapenv:Envelope> |
---|
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:
...
[1] Det er forventningen, at det er i nær fremtid bliver muligt at adgangsstyre på system-niveau.
...