Jämförda versioner

Nyckel

  • Dessa rader lades till.
  • Denna rad togs bort.
  • Formateringen ändrades.
Kommentera: Uppdaterade sidnamnet

Innehåll

Innehållsförteckning
minLevel1
maxLevel6
outlinetrue
stylenone
typelist
printablefalse

Inledning

Om dokumentet

Denna beskrivning är ett tillägg av tjänstekontrakten i tjänstedomänen strategicresourcemanagement:persons:person. Dokumentet beskriver hur tjänstens funktionalitet för att hämta och ladda upp filer är uppbyggd. Funktionaliteten baseras på dokument ARK_0038 enligt RIV-TA standarden och där grundprincipen för att hämta filer bygger på en RIV-tjänst för att lista tillgängliga filer och en REST-tjänst för att hämta de filer som listas via RIV-tjänsten. Anrop mot tjänsterna sker med HTTPS (Mutual-TLS) och validering av certifikatet från tjänstekonsument utförs för att endast tillåta att tjänsten levererar data till tillåtna mottagare.

Konnektivitet

SOAP-tjänst för att lista tillgängliga filer är tillgängliga via Nationell Tjänsteplattform (NTjP). NTjP saknar dock stöd för REST-baserade tjänster vilket medför att REST-tjänst för att hämta filer (ladda upp/ta bort) enbart är tillgänglig genom direktaccess mot tjänsteproducent.

Info

Versionshantering av searchPersonsByFile i version 4.8

Vid Release 4.8 gjordes en driftsförändring som gav REST-tjänsten för searchPersonsByFile två versioner. Läs mer under 2.1.1.2 Version

Notering om HSA-id: Personuppgiftstjänstens REST-tjänster kontrollerar vid begäran om filnedladdning att det är systemet med samma HSA-id som beställt filen. Om anropande konsument använder ett mellanlager i anslutning till NTjP, såsom en lokal tjänsteplattform, är det då viktigt för konsumenten att korrekt populera headern x-rivta-originalserviceconsumer-hsaid. Denna header skall ange det ursrungliga konsumerande systemets HSA-id, i enlighet med regel "Bevara ursprunglig avsändares identitet i http header" samt RIVTA Regel 23.

Beställning av behörighet

Personuppgiftstjänstens filhanteringstjänster är REST-tjänster som inte ingår i Inera NTjP. Behörighet för att använda dessa följer därför ett separat beställningsförfarande.

...

Användningsfall

Syfte

Ingående REST-tjänster

Söka personuppgifter via fil

Begär en sökning på en bifogad lista med identiteter

SearchPersonsByFile

Order/Get

Hämta resultatfil från kriteriesökning

Hämta resultat från en sökning gjord via NTjP tjänstekontrakt som genererat en resultatfil

Order/Get

Hantering av bilagor för reservidentiteter

Inkludera bilagd fil som styrker en reservidentitet

Attachment/Put

Attachment/Get

Attachment/Delete

Användningsfall

Filhantering förekommer i följande användningsfall inom Personuppgiftstjänsten:

...

Användningsfall 2 och delvis 3 följer flödet som beskrivs i ARK_0038 Refererad bilaga, medans detta inte är applicerbart i användningsfallen 1 och delvis 3 vid uppladdning av bilagor. Flöden för samtliga användningsfall specificeras i följande avsnitt.

Söka personuppgifter via fil: SearchPersonsByFile

Funktionen finns endast som restricted-variant. Returnerar alltså inte adress m.m på sekretessmarkerade personposter.

...

  • SearchPersonsByFile har ej stöd för sökning mot personposter med testIndicator=true, dvs personidentiteter som i testmiljö kallas testpersoner och i produktionsmiljö kallas valideringspersoner. En sökning mot sådan identitet kommer inte att returnera någon RequestedPersonRecord oavsett om personposten finns i databasen eller ej. För tester av SearchPersonsByFile behöver istället testpersoner med testIndicator=false användas.

Image RemovedImage Added

Parametrar

Namn

Beskrivning

profile

Obligatorisk parameter för vilken profil som önskas i svaret. Se TKB för beskrivning av profilerna P1-P5. Observera att profilen skall anges med versalt P.

Datatyp: String.

Exempel: P1

fromDate 

Valfri parameter för det datum man är intresserad av förändringar från och med baserat på fältet version i personposten.

Datatyp: LocalDateTime.

Exempel: 2021-10-12T00:00:00

maxResultsPerFile

Valfri parameter för max antal personposter per fil. Ej angivet så returneras alltid resultatet i endast en fil. Detta värde får ej vara lägre än 500.

Datatyp: Integer.

Exempel: 1000

primaryidentities 

Valfri parameter som om satt gör att endast personposter som är markerad som huvudidentitet inkluderas i svaret. En efterfrågad personpost som inte är en huvudidentitet kommer då varken att generera en requestedPersonalIdentity eller en personRecord i svarsfilen.

Datatyp: Boolean.

Exempel: true

 Version

REST-tjänsten SearchPersonsByFile finns i två versioner och anropas via två olika url:er. Det som skiljer versionerna åt är att de är kompatibla med olika versioner av domänen strategicresourcemanagement:persons:person.

Exempel

Via cURL

Request

Response

Version 1

curl -X POST \
https://api.pu.ineratest.org:443/purest/searchPersonsByFile \
-H 'content-type: multipart/form-data;' \
-F profile=P1 \
-F fromDate=2021-10-12T00:00:00 \
-F maxResultsPerFile=1000 \
-F primaryidentity=true \
-F file=@bilagan.csv

Version 2

curl -X POST \
https://api.pu.ineratest.org:443/purest/v2/searchPersonsByFile \
-H 'content-type: multipart/form-data;' \
-F profile=P1 \
-F fromDate=2021-10-12T00:00:00 \
-F maxResultsPerFile=1000 \
-F primaryidentity=true \
-F file=@bilagan.csv

Statuskod: 201 CREATED
Content-Type: application/json; charset=ISO-8859-1
Transfer-Encoding: chunked
Content:

{
  "orderId": "1028-TO63-15133551"
}

Statuskod: 400 BAD_REQUEST

  • Filen är inte av typ CSV

  • Filen är tom

  • De första raderna innehåller ogiltigt formaterad data

  • Den angivna profilen är inte giltig

  • Det angivna värdet för max antal personposter per fil är för lågt

Statuskod: 401 UNAUTHORIZED

  • Konsumenten saknar behörighet till tjänsten

Statuskod: 500 INTERNAL SERVER ERROR

  • Internt oförutsett fel

  • Filens storlek i MB överskrider tillåten gräns

  • Felaktig datatyp angiven för parameter

Hämta resultat för personsök

Flödet startar med att ett urval för ett stort antal patienter behöver göras. Detta urval sker genom anrop till någon av de asynkron "*ByOrder-tjänsterna" eller SearchPersonsByFile som alla returnerar ett Order-Id.

...

Resultatfilerna är ZIP:ade och innehåller en XML-fil med det urval som efterfrågats. Formatet som specificeras i TKB och XSD för strategicresourcemanagement:persons:person.

...

Exempel

SearchPersonsForProfileByOrder

Request

Response

Kodblock
languagexml
<soapenv:Envelope
 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:riv:itintegration:registry:1"
 xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderResponder:3">
  <soapenv:Header>
    <urn:LogicalAddress>SE165565594230-1000</urn:LogicalAddress>
  </soapenv:Header>
  <soapenv:Body>
    <urn1:SearchPersonsForProfileByOrder>
      <urn1:query>FROM personrecord WHERE name.givenname LIKE 'Daniel%';</urn1:query>
      <urn1:queryLanguage>SimpleQL</urn1:queryLanguage>
      <urn1:profile>P5</urn1:profile>
    </urn1:SearchPersonsForProfileByOrder>
  </soapenv:Body>
</soapenv:Envelope>

Kodblock
languagexml
<S:Envelope
 xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:SearchPersonsForProfileByOrderResponse
     xmlns:ns2="urn:riv:strategicresourcemanagement:persons:person:SearchPersonsForProfileByOrderResponder:3"
     xmlns:ns3="urn:riv:strategicresourcemanagement:persons:person:3"
     xmlns:ns4="urn:riv:itintegration:registry:1">
      <ns2:orderId>0622-TO17-09215997</ns2:orderId>
    </ns2:SearchPersonsForProfileByOrderResponse>
  </S:Body>
</S:Envelope>

GetFilesForOrderId

Request

Response

Kodblock
languagexml
<soapenv:Envelope
 xmlns:soapenv="http://schemas.xmlsoap.org/soap/envelope/"
 xmlns:urn="urn:riv:itintegration:registry:1"
 xmlns:urn1="urn:riv:strategicresourcemanagement:persons:person:GetFilesForOrderIdResponder:3">
  <soapenv:Header>
    <urn:LogicalAddress>SE165565594230-1000</urn:LogicalAddress>
  </soapenv:Header>
  <soapenv:Body>
    <urn1:GetFilesForOrderId>
      <urn1:orderId>0622-TO17-09215997</urn1:orderId>
    </urn1:GetFilesForOrderId>
  </soapenv:Body>
</soapenv:Envelope>

Resultat ej klart:

Kodblock
languagexml
<S:Envelope
 xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:GetFilesForOrderIdResponse
     xmlns:ns2="urn:riv:strategicresourcemanagement:persons:person:GetFilesForOrderIdResponder:3"
     xmlns:ns3="urn:riv:strategicresourcemanagement:persons:person:3"
     xmlns:ns4="urn:riv:itintegration:registry:1">
    </ns2:GetFilesForOrderIdResponse>
  </S:Body>
</S:Envelope>

Resultat klart:

Kodblock
languagexml
<S:Envelope
 xmlns:S="http://schemas.xmlsoap.org/soap/envelope/">
  <S:Body>
    <ns2:GetFilesForOrderIdResponse
     xmlns:ns2="urn:riv:strategicresourcemanagement:persons:person:GetFilesForOrderIdResponder:3"
     xmlns:ns3="urn:riv:strategicresourcemanagement:persons:person:3"
     xmlns:ns4="urn:riv:itintegration:registry:1">
      <ns2:multimedia>
        <ns3:mediaType>application/zip</ns3:mediaType>
        <ns3:reference>https://api.pu.ineratest.org:443/purest/order/get/fd6a78ee-da71-4ec6-a099-cbccc21fe468</ns3:reference>
      </ns2:multimedia>
    </ns2:GetFilesForOrderIdResponse>
  </S:Body>
</S:Envelope>

REST

Request

Response

https://api.pu.ineratest.org:443/purest/order/get/fd6a78ee-da71-4ec6-a099-cbccc21fe468

Statuskod: 200 OK
Content-Type: application/zip
Content-Disposition: attachment; filename="<filnamn>"
Transfer-Encoding: chunked
Content: fil (zippat xmldata enligt strategicresourcemanagement:persons:person)

Struktur för filnamn (både ZIP och XML): <orderId>_<datum>_<löpnummer>.zip (samt .xml)
Exempel: 0622-TO17-09215997_20170622_1.zip

Statuskod: 400 BAD_REQUEST

  • Ogiltig context path

  • HSA-id för konsument saknas

  • Certifikat för OrderId matchar inte certifikat som används vid hämtning av fil

  • Filen har redan hämtats

Statuskod: 401 UNAUTHORIZED

  • Konsumenten saknar behörighet till tjänsten

Statuskod: 404 NOT FOUND

  • Begärd referens (GUID) existerar inte

Statuskod: 500 INTERNAL SERVER ERROR

  • Internt oförutsätt fel

Bilagor för reservidentitet

En reservidentitet kan i PU-tjänsten ha 0..n bilagor. Dessa används för att styrka identiteten och kan vara exempelvis en kopia på ett pass. Bilagan kan laddas upp till reservidentiteten och senare kopplas till en specifik uppgift om styrkande av identitet. All operationer gällande bilagor görs med fördel i det av PU-tjänsten tillhandahålla GUI't, men kan vid behov hanteras av integrerande tjänster. För hantering av bilagor via GUI hänvisas till Användarhanboken för PU. Nedan beskrivs de flöden som appliceras vid integration av konsument.

Enbart exempel för REST-tjänster redovisas i följande kapitel. För information om användandet av RIV-tjänsterna hänvisas till TKB.

Ladda upp bilaga

Uppladdning av bilaga sker genom PUT och föregås av en hämtning av personpost för aktuell reservidentitet. Detta för att säkerställa att identiteten finns.

...

URL

Beror på miljö, men exempelvis: https://api.pu.ineratest.org:443/purest/attachment/put

Parametrar

Namn

Beskrivning

actorRoot

root (OID) för aktör

actorExtension

värde för aktör

actorProfessionalRoot

root (OID) för aktörens organisation/vårdgivare

actorProfessionalExtension

värde för aktörens organisation/vårdgivare

patientRoot

root (OID) för patientidentitet

patientExtension

värde patientidentitet

file

bilagan

Exempel

Via cURL

Request

Response

curl -X PUT \
https://api.pu.ineratest.org:443/purest/attachment/put \
-H 'content-type: multipart/form-data; \
-F actorRoot=HSAID \
-F actorExtension=SE123456789 \
-F actorProfessionalRoot=HSAID \
-F actorProfessionalExtension=SE987654321 \
-F patientRoot=1.2.752.74.9.1 \
-F patientExtension=00002040AA11 \
-F file=@bilagan.jpg

Statuskod: 200 OK
Content-Type: application/json; charset=ISO-8859-1
Transfer-Encoding: chunked
Content:

{
"id": "36a7068d-172b-4fee-bed5-13ecbdfa7ff2",
"mediaType": "image/jpeg",
"value": null,
"reference": "https://api.pu.ineratest.org:443/purest/attachment/get/36a7068d-172b-4fee-bed5-13ecbdfa7ff2"
}

Statuskod: 400 BAD_REQUEST

  • Ogiltig context path

  • HSA-id för konsument saknas

  • Ogiltig patientidentitet / parametrar

Statuskod: 401 UNAUTHORIZED

  • Konsumenten saknar behörighet till tjänsten

Statuskod: 500 INTERNAL SERVER ERROR

  • Internt oförutsätt fel

Koppla / Koppla ifrån bilaga

Dessa operationer är rena RIV-tjänster och beskrivs i TKB.

...

Hämta bilaga

Bilagor erhålls som en referens-URL i svaret från PU-tjänstens. Dessa används sedan som GET anrop för att hämta filerna.

...

URL

Beror på miljö, men exempelvis: https://api.pu.ineratest.org:443/purest/attachment/get/e870cddb-5842-4c72-a804-7d39fa4c5478

Parametrar

Bilagans referensID som en del av URL

Exempel

Via cURL

Request

Response

curl -X GET \
https://api.pu.ineratest.org:443/purest/attachment/get/e870cddb-5842-4c72-a804-7d39fa4c5478

Statuskod: 200 OK
Content-Type: <aktuell MIME-type>
Content-Disposition: attachment; filename="<filnamn>"
Transfer-Encoding: chunked
Content: filen

Statuskod: 400 BAD_REQUEST

  • Ogiltig context path

  • HSA-id för konsument saknas

Statuskod: 401 UNAUTHORIZED

  • Konsumenten saknar behörighet till tjänsten

Statuskod: 404 NOT FOUND

  • Begärd referens (GUID) existerar inte

Statuskod: 500 INTERNAL SERVER ERROR

  • Internt oförutsätt fel

Ta bort bilaga

Flödet förutsätter att bilagan inte har kvar några kopplingar inom reservidentiteten. Dvs flöde för "koppla ifrån bilaga" måste genomföras då det är applicerbart.

...

URL

Beror på miljö, men exempelvis: https://api.pu.ineratest.org:443/purest/attachment/delete

Parametrar

Namn

Beskrivning

actorRoot

root (OID) för aktör

actorExtension

värde för aktör

actorProfessionalRoot

root (OID) för aktörens organisation/vårsgivare

actorProfessionalExtension

värde för aktörens organisation/vårsgivare

patientRoot

root (OID) för patientidentitet

patientExtension

värde patientidentitet

referenceId

bilagans id

Exempel

Via cURL.

Request

Response

curl -X DELETE \
https://api.pu.ineratest.org:443/purest/attachment/delete \
-H 'content-type: multipart/form-data; \
-F actorRoot=HSAID \
-F actorExtension=SE123456789 \
-F actorProfessionalRoot=HSAID \
-F actorProfessionalExtension=SE987654321 \
-F patientRoot=1.2.752.74.9.1 \
-F patientExtension=00002040AA11 \
-F referenceId=e870cddb-5842-4c72-a804-7d39fa4c5478

Statuskod: 200 OK
Content-Type: text/plain; charset=iso-8859-1
Transfer-Encoding: chunked
Content:

File with id: e870cddb-5842-4c72-a804-7d39fa4c5478 was successfully deleted.

Statuskod: 400 BAD_REQUEST

  • Ogiltig context path

  • HSA-id för konsument saknas

  • Ogiltig patientidentitet / parametrar

Statuskod: 401 UNAUTHORIZED

  • Konsumenten saknar behörighet till tjänsten

Statuskod: 404 NOT FOUND

  • Begärd referens (GUID) existerar inte

Statuskod: 500 INTERNAL SERVER ERROR

  • Internt oförutsett fel

...