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 |