PIRR - Anrop av webbtjänster
Denna sida ger en beskrivning av hur webbtjänster ska anropas i E-hälsomyndighetens system Partneringångar för Receptregistret (PIRR). PIRR består av en webbservice som exponerar tjänster för e-recept djur.
1. Termer och begrepp
Term |
Betydelse |
Webbservice |
Funktionalitet som är implementerad enligt W3C Web Services. |
Tjänst |
Det finns två tjänster i PIRR: Nytt recept djur och Makulera recept djur. |
Meddelande |
Den information som utväxlas mellan en klient och webservice i PIRR. Sker med hjälp av SOAP. (W3C samt HTTP). |
Indata |
Meddelande som skickas till tjänsten. |
Utdata |
Meddelande som returneras från tjänsten. |
Partner |
Användare av E-hälsomyndighetens webbservice. |
APERAK |
Application Error and Acknowledgement Message (UN/EDIFACT) Svarsmeddelande innehållande information om anropet till tjänsten. |
Saml-intyg |
Intyg enligt SAML2-standard som styrker identiteten av den som anropar tjänsten. Utfärdat av en IdP som är godkänd av Sambi-federationen eller annan av E-hälsomyndigheten godkänd operatör. |
2. Beskrivning av PIRR webservice
PIRR består av en webbservice med en operation (callService) som är generell. Via den generella ingången erhålls åtkomst till funktionalitet för att skapa och makulera e-recept för djur. I svaret returneras, förutom applikationskvittens (APERAK), en struktur som innehåller svarskoder vilka beskriver hur anropet gick.
2.1. Säkerhet
E-hälsomyndighetens säkerhetslösning
2.1.1. S/MIME-signering
Elektroniska meddelanden som skickas till E-hälsomyndigheten ska S/MIME-signeras.
2.1.2. Åtkomstintyg utfärdat av IdP godkända av Sambi- federationen eller annan av E-hälsomyndigheten godkänd operatör
För att styrka identiteten vid anrop av tjänsten så ska anroparen tillhandahålla ett Saml-intyg utfärdat av en IdP som är godkänd av Sambi-federationen eller annan av E-hälsomyndigheten godkänd aktör. Intyget placeras i SOAP-headern enligt nedan. Se sidan Anropsinformation WebService (SOAP).
2.1.2.1. Särskild hantering för PIRR/NEF avseende giltighetstid på SAML-intyg
Grundprincipen är att tjänsteanropen ska ske inom SAML-intygets giltighetstid, det vill säga 60 minuter.
I nuläget sker ett flertal tjänsteanrop av olika anledningar dagligen som då skulle ske utanför SAML-intygets giltighetstid.
För att inte få en stor påverkan har myndigheten beslutat att acceptera och ta emot tjänsteranrop med SAML-intyg där giltigheten har förfallit.
Myndigheten kommer acceptera SAML-intyg upp till och med 24 timmar utifrån starttidpunkten för intygets giltighetstid.
Denna funktionalitet finns även för OAuth2-åtkomstintyg.
2.2. Adresser till partneringångar
Adresser för produktion och interntest fås från ehm, både för Internet och Sjunet
2.3. Indata
Eventuellt Saml-intyg som styrker anroparens identitet placeras i soap:header-elementet. Intyget behöver styrka att anropare är veterinär enligt Kravspecifikation Behörighetsstyrning för djurrecepttjänsterna.
Meddelandet som skickas till callService placeras i soap:body-elementet och består av ett header- och ett body-element. I headerelementet finns bland annat information som visar vilken funktionalitet man önskar använda sig av (nytt e-recept eller makulering). e-recept eller makuleringsbegäran skickas med som ett signerat S/MIME-dokument och ska vara base64-encodat.
e-recept/makuleringsbegäran definieras i respektive tjänsts XML-schema (PrescriptionAnimal.xsd och PrescriptionCancellationAnimal.xsd samt de generella Common.xsd, Types.xsd och Header.xsd). Samtliga scheman kan erhållas från E-hälsomyndighetens kundytor.
Figur 1. Exempel på ett anrop
2.3.1. Indata detaljerat (Namnen härrör från XML-schema i WSDL)
2.3.1.1. ServiceRequestWrapper
Namn |
Typ |
Kardinalitet |
serviceRequest |
ServiceRequest |
1..1 |
2.3.1.2. ServiceRequest
Namn |
Typ |
Kardinalitet |
requestHeader |
RequestHeader |
1..1 |
requestBody |
RequestBody |
1..1 |
2.3.1.3. RequestHeader
Namn |
Typ |
Kardinalitet |
securityDescriptor |
SequrityDescriptor |
1..1 |
serviceDescriptor |
ServiceDescriptor |
1..1 |
2.3.1.4. RequestBody
Namn |
Typ |
Kardinalitet |
requestDocuments |
ArrayOfRequestDocument |
1..1 |
2.3.1.5. SecurityDescriptor
Namn |
Typ |
Kardinalitet |
Beskrivning |
certificate |
String |
1..1 |
Reserverat för framtida användning. |
credentials |
String |
1..1 |
Reserverat för framtida användning. |
principal |
String |
1..1 |
Reserverat för framtida användning. |
2.3.1.6. Checksum
Namn |
Typ |
Kardinalitet |
Beskrivning |
type |
String |
1..1 |
Reserverat för framtida användning. |
value |
long |
1..1 |
Reserverat för framtida användning. |
2.3.1.7. ServiceDescriptor
Namn |
Typ |
Kardinalitet |
Beskrivning |
checksum |
Checksum |
1..1 |
Reserverat för framtida användning. |
conversationId |
String |
1..1 |
Anropets identitet. Skickas tillbaka i svaret. Genereras om inget anges. |
name |
String |
1..1 |
NewPrescriptionAnimal – Nytt recept djur CancelPrescriptionAnimal – Makulera recept djur |
priority |
int |
1..1 |
Reserverat för framtida användning. |
2.3.1.8. ArrayOfRequestDocument
Namn |
Typ |
Kardinalitet |
Beskrivning |
RequestDocument |
RequestDocument |
0..unbounded |
PIRR stödjer för närvarande bara en och endast en förekomst av RequestDocument. |
2.3.1.9. RequestDocument
Namn |
Typ |
Kardinalitet |
Beskrivning |
contentLength |
int |
1..1 |
Längden i bytes på innehållet i data-elementet. |
contentTransferEncoding |
String |
1..1 |
binary. |
contentType |
String |
1..1 |
multipart/signed. |
data |
base64Binary (Ref. 7) |
1..1 |
Recept/Makulering förpackat i ett signerat S/MIME-meddelande som base64-encodas (Base64-encoding används för att minska risken för att data förvanskas under transport. Base64-encodad data hanteras av de flesta system). e-recept/makuleringsbegäran enligt: PrescriptionAnimal.xsd eller PrescriptionCancellationAnimal.xsd |
2.4. Utdata
Svarsmeddelandet som skickas från PIRR i soap:body består att ett header- och ett body-element. I headerelementet finns information som möjliggör att avgöra hur anropet gick. Beroende på status för anropet levereras en applikationskvittens (APERAK) i serviceResponse.responseBody.responseDocuments.ResponseDocument.data. Innehållet i data-elementet signeras inte men är base64-encodat. Applikationskvittensen finns definierad i respektive tjänsts XML-schema (AperakAnimal.xsd och AperalCancellationAnimal.xsd samt de generella Common.xsd, Types.xsd och Header.xsd). Samtliga scheman kan erhållas från E-hälsomyndighetens kundytor.
2.4.1. Utdata detaljerat
2.4.1.1. ServiceResponseWrapper
Namn |
Typ |
Kardinalitet |
serviceResponse |
ServiceResponse |
1..1 |
2.4.1.2. ServiceResponse
Namn |
Typ |
Kardinalitet |
responseHeader |
ResponseHeader |
1..1 |
responseBody |
ResponseBody |
1..1 |
2.4.1.3. ResponseHeader
Namn |
Typ |
Kardinalitet |
resultDescriptor |
ResultDescriptor |
1..1 |
serviceDescriptor |
ServiceDescriptor |
1..1 |
2.4.1.4. ResultDescriptor
Namn |
Typ |
Kardinalitet |
Beskrivning |
code |
String |
1..1 |
0 – Accepterat 1 – Accepterat med varning 2 – Ej accepterat 1000-1999 – Tekniskt fel 2000-2999 – Säkerhetsfel 3000-3999 – Fel på indata |
message |
String |
1..1 |
Information om resultatet. |
För koderna 0, 1 och 2 returneras en applikationskvittens, aperak, i serviceResponse.responseBody.responseDocuments.ResponseDocument.data. Beroende på typ av fel kan aperak returneras för koderna 1000-1999, 2000-2999 samt 3000-3999.
För ytterligare information om svarskoder och applikationskvittenser hänvisas till Riktlinjer kvittenshantering.
2.4.1.5. ResponseBody
Namn |
Typ |
Kardinalitet |
responseDocuments |
ArrayOfResponseDocument |
1..1 |
2.4.1.6. ArrayOfResponseDocument
Namn |
Typ |
Kardinalitet |
Beskrivning |
ResponseDocument |
ResponseDocument |
0..unbounded |
PIRR stödjer för närvarande bara en och endast en förekomst av ResponseDocument. |
2.4.1.7. ResponseDocument
Namn |
Typ |
Kardinalitet |
Beskrivning |
contentLength |
int |
1..1 |
Längden i bytes på innehållet i data-elementet. |
contentTransferEncoding |
String |
1..1 |
binary. |
contentType |
String |
1..1 |
application/xml |
data |
base64Binary (Ref. 7) |
1..1 |
APERAK enligt AperakAnimal.xsd eller AperalCancellationAnimal.xsd |
2.5. Elementvärden vid utdata
Element |
Värde |
serviceResponse.responseHeader.serviceDescriptor.name |
NewPrescriptionAnimal – Nytt e-recept djur CancelPrescriptionAnimal – Makulera e-recept djur |
serviceResponse.responseBody.responseDocuments.ResponseDocument.data |
Aperak enligt AperakAnimal.xsd eller AperalCancellationAnimal.xsd |
serviceResponse.responseBody.responseDocuments.ResponseDocument.contentLength |
Längden i bytes av data. |
serviceResponse.responseBody.responseDocuments.ResponseDocument contentTransferEncoding |
base64 eller binary |
serviceResponse.responseBody.responseDocuments.ResponseDocument.contentType |
application/xml |
serviceResponse.responseHeader.serviceDescriptor.conversationId |
Anropets identitet. Sätts till värdet av motsvarande element i requestet. |
3. Innehåll i data-elementet
3.1. Indata
I dataelementet levereras e-recept/makuleringsbegäran. Formatet på dokumentet ska följa S/MIME version 3-standarden.
Dokumentet ska signeras och levereras i multipart/signed-format. Certifikatet tillsammans med kedjan upp till CA-certifikatet ska finnas i PKCS-7-delen av dokumentet. Vidare måste CA-certifikatet finnas installerat hos E-hälsomyndigheten. Detta för att verifiering av inskickat certifikat ska kunna utföras.
3.1.1.1. S/MIME-header
Content-Type: multipart/signed; protocol="application/pkcs7-signature"; micalg=sha1;
boundary="----=_Part_1_655641627.1394783459289"
OBS! Ovanstående värde på "boundary" är bara ett exempel.
3.1.1.2. Part 1-header
Content-Type: application/xml
Content-Transfer-Encoding: binary
charset: utf-8
3.1.1.3. Part 2-header
Content-Type: application/pkcs7-signature; name=smime.p7s; smime-type=signed-data
Content-Transfer-Encoding: base64
Content-Disposition: attachment; filename="smime.p7s"
Content-Description: S/MIME Cryptographic Signature
3.2. Utdata
I dataelementet kan en applikationskvittens returneras. Innehållet i applikationskvittensen definieras av respektive tjänsts schema. Ingen signering görs på applikationskvittensen (kvittensen returneras inte i S/MIME-format).
4. Referenser till andra styrande dokument
Nr |
Namn |
URL |
1 |
W3C Web Services |
|
2 |
HTTP |
|
3 |
HTTP Authentication: Basic and Digest Access Authentication |
|
4 |
The Secure Sockets Layer (SSL) Protocol Version 3.0 |
|
5 |
S/MIME Version 3 Message Specification |
|
6 |
PKCS #7: Cryptographic Message Syntax |
|
7 |
base64Binary |
|
8 |
Sambi säkerhetsfederation |
|
9 |
Kravspecifikation Behörighetsstyrning |
|
10 |
Anropsexempel Saml |
Handbokssida Saml |
Versionshistorik
Version |
Datum |
Kommentar |
---|---|---|
1.0 | 2021-11-27 | Ny handbok vård- och apotekstjänster |