Versions Compared

Key

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

...

Table of Contents
maxLevel2

 

Introduktion

NSP´en udstillen udstiller en stamdata kopiregister service (SKRS). Servicen giver systemer mulighed for at holde / trække en lokal kopi af et nationalt stamdata register, som f.eks. CPR-registeret eller SOR-registeret. 

For at få adgang til stamdatas kopi-register-service skal man først have oprettet en juridisk aftale ved at kontakte NSP-operatøren (se: Bestillingsark for stamdataregistre). Aftalen giver adgang til forskellige data fra de respektive registre. Præcist hvilke registre og data-typer man får adgang til er afhængigt af din aftale. Der er en liste over alle stamdata registre på : Services på NSP.

...

Ressourcer (datatyper) er ordnet i et hierarkisk URI navnerum med URI skemanavnet stamdata.

 
stamdata://[register]/[view]/[version]?[query]

...

URI-autoriteten, markeret i blåt med teksten register, repræsenterer registeret hvor data kommer fra, f.eks. CPR-registeret.

 

Den resterende del af URI stien starter med en skråstreg '/' efterfulgt af navnet på den datatype (også kaldt view) man vil hente – markeret i grønt med teksten view – og hvilken version man ønsker, markeret i rødt med teksten version. 

Til sidst tilføjes en række parametre, der specificerer hvor langt man er nået i en et kopi-udtag og hvor mange records man ønsker at kopierer adgangen. Paginering bliver beskrevet i flere detaljer senere i dokumentet.

...

NB. Der findes en reference implementering af et klient library til at kommunikere med kopi-register servicen. Klienten er skrevet i Java og kan findes på Softwarebørsen.                                                    

Stamdata er baseret på to forskellige teknologier DGWS/SOAP og REST. Første skridt i en samtale med stamdata er at få et autorisationstoken. Et token er en 512 bit nøgle som bruges som identifikation til alle efterfølgende kald. På den måde minder et token meget om et SOSI IDkort. Et token giver dig adgang til én data-type i et register. Hvis man vil hente forskellige datatyper skal du oprette et token for hver type. Et token er gyldigt lige så længe som det SOSI IDkort, der blev brugt til at oprette den med.

...

For at hente et token skal man bruge tokenservicen. I dette afsnit er der en uformel kort beskrivelse af hvordan man komunikerer kommunikerer med Token Servicen. Token Servicen er formelt beskrevet i en WSDL-fil som kan findes i bilaget TokenService.wsdl.

                                  

Når man vil hente et token skal man identificerer dig sig selv med et SOSI IDkort. DGWS er ikke beskrevet i detalje I i dette dokument, men kan findes på http://www.medcom.dk/wm110731.

 

I SOAP-body sender man navnet på den datatype man vil hente. Datatypens navn består af en URI, f.eks. stamdata://cpr/person/v1 hvis man ønsker at hente person datatypen fra CPR registeret i version 1. Et token består af en lang streng som er base64 encoded.

...

Info
iconfalse
titleRespons fra godkendt kald
<soapenv:Envelope ...>
  <soapenv:Header>...</soapenv:Header>
  <soapenv:Body>
    <ns:AuthorizationResponseStructure>
    <ns:authorization>
      3247632398kjb32hg32yg32uytf2763t237gf237trf
      8gf8723g873gf8o374gr28o7723bor872t3fbcoa783
      29723yr7...
    </ns:authorization>
    </ns:AuthorizationResponseStructure>
  </soapenv:Body>
</soapenv:Envelope>
 
 

 

 

Opstår der derimod en fejl, bliver en DGWS 1.0.1 Fault sendt tilbage, f.eks.:

...

Når man har modtaget et token til en datatype, som beskrevet i foregående afsnit, kan man bruge det til at hente data fra kopi-register-servicen.

                                                 

Stamdata Kopi Protocol is 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 registrer, eller nærmere bestemt, datatyperne i de registrer. 

Når man laver et HTTP request til kopi-register-servicen skal man specificere tre ting: 

  1. Datatypen man vil hente opdateringer til, f.eks. sks/apotek/v1
  2. Formatet man vil have data overført i, f.eks. application/atom+xml
  3. Et token som man har hentet fra Token Servicen.

1.2.4      Eksempel på kald til kopi-register-servicen

Info
iconfalse
titleSKRS kald
GET /stamdata/sks/apotek/v1 HTTP/1.1
Host: example.com          
Accept: application/atom+xml
Authentication: STAMDATA f32hdh2dew2hd&67oqiwjdow33423j23j11gF41... 

...

 

Dette kald henter data fra sks/apotek/v1 datatypen. Datatypen er bestemt ud fra den path man sender i linje 1.

 

Man har her valgt at få data overført i ATOM format og sætter accept headeren til application/atom+xml (se linje 3).

 

Authentication

I ’Authentication’-headeren skriver man ordet STAMDATA efterfulgt at den token man har fået fra token-servicen.

...

NB. Grunden til at man skal skrive STAMDATA er at det er et custom sikkerheds skema, da tokens ikke passer ind i HTTP–Basic eller –Digest skemaerne.

 Content-Type

På nuværende tidspunkt understøtter servicen output med følgende formatter:

...

Svaret på et kald til kopi-register servicen er en ATOM feed. Her er et response som kunne være svar på kaldet i Eksempel 1. Man kan bruge ethvert ATOM API til at parse det. 

Info
iconfalse
titleSKRS svar
HTTP/1.1 200 OK 
 
<feed xmlns=”http://www.w3.org/2005/Atom
  xmlns:sd="http://www.trifork.com/-/stamdata/3.0/sor"> 
  
  <id>tag:trifork.com,2011:sor/apotek/v1/1687637218007231</id>
  <title>Stamdata Update Feed: sor/apotek/v1</title>
  <updated>2010-12-13T18:30:02Z</updated>
  
  <author>
    <name>Trifork Stamdata</name>
    <email>support.stamdata@trifork.com</email>
  </author>
  
  <entry> 
    <id>tag:trifork.com,2011:sor/apotek/v1/1687637218007231</id>
    <title/> <!— title elements can be ignored -->
    <updated>2010-12-13T18:30:02Z</updated>
    
    <content type="application/xml">
      <sd:apotek>
        <id>7236A-23</sd:id>
        <name>Svane Apoteket</name>
        <eanLocation>21341231231223</eanLocation>
        ...                    
      </sd:apotek>
    </content>
  </entry> 
  <entry>
    <id>tag:trifork.com,2011:sor/apotek/v1/1787637218007236</id>
    <title/>
    <updated>2003-12-13T15:31:11Z</updated>
    <content type="application/xml">
      <sd:apotek>
      <id>2132121</id>
      <name>Svane Apoteket</name>
      <eanLocation>11341231231223</eanLocation>
      ...
      </sd:apotek>
    </content>
  </entry>
</feed>

...

Hvis vi havde sat Accept headeren til ’application/atom+fastinfoset’, havde output været i FastInfoset format men med samme struktur som i dette eksempel.

...