Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

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 bagud­kompabilitet versioneres udtræks­funktionaliteten 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”

RegisterversionsnummerAf hensyn til bagud­kompabilitet versioneres udtræks­funktionaliteten 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 bagud­kompabilitet versioneres udtræks­funktionaliteten 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”

RegisterversionsnummerAf hensyn til bagud­kompabilitet versioneres udtræks­funktionaliteten 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&#xE6;nget</vejnavn>

          <bygningsnummer>42</bygningsnummer>

          <husnummer>123</husnummer>

          <etage>12</etage>

          <sideDoerNummer>th.</sideDoerNummer>

          <bynavn>Enby</bynavn>

          <postnummer>1448</postnummer>

          <postdistrikt>N&#xF8;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&#xE6;nget</vejnavn>

          <bygningsnummer>42</bygningsnummer>

          <husnummer>123</husnummer>

          <etage>12</etage>

          <sideDoerNummer>th.</sideDoerNummer>

          <bynavn>Enby</bynavn>

          <postnummer>1448</postnummer>

          <postdistrikt>N&#xF8;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
languagebash
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/2209632741/custody

Response

Der svares med HTTP statuskode 404. 

Code Block
languagejs
{ }


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
languagebash
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327412209632770/custodyname

Response

Der svares med HTTP statuskode 404200. 

Code Block
languagejs
{"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
languagebash
curl -H "Accept: application/json" http://stamdatahost/stamdata-personinformation/v1/person/22096327702209632771/name

Response

Der svares med HTTP statuskode 200.

Code Block
languagejs
{"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
languagejs
{ }

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
languagebash
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
languagejs
{ }

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
languagebash
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
languagejs
[{"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:

ParameterBeskrivelseEksemel
NavnDet navn som filter skal kaldes."Filter 1"
ViewPathEr 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:

ParameterBeskrivelseEksemel
NavnDet 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:

...

                   
    </soapenv:Header>
    <soapenv:Body>
        <ns3:FilterNewRequestType 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:viewPath>vitamin/1/grunddata/1</ns3:viewPath>
            <ns3:DataTypeFieldList>drugID</ns3:DataTypeFieldList>
            <ns3:DataTypeFieldList>varetype</ns3:DataTypeFieldList>
            <ns3:DataTypeFieldList>varedeltype</ns3:DataTypeFieldList>
            <ns3:DataTypeFieldList>alfabetSekvensplads</ns3:DataTypeFieldList>
        </ns3:FilterNewRequestType>
    </soapenv:Body>
</soapenv:Envelope>


Forespørgsel på at slette et filter:

...


       

...

...
    </soapenv:Header>
    <soapenv:Body>
        <ns3:

...

...

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.

...