Introduktion
Formål
Specifikationen for Web Service interfacet for MinSpærring Verifikation beskriver de web services som MinSpærring Verifikation tilbyder henholdsvis sundhedsfaglige og borgere der vil udføre MinSpærring Verifikation.
Koncepter
En MinSpærring registrering beskriver sammenhængen mellem:
en borger,
(what) information om hvad en MinSpærring omhandler.
(who) sundhedsfaglig person eller organisation der er oprettet MinSpærring for.
For en detaljeret beskrivelse af datamodellen for MinSpærring og strukturen af MinSpærring elementerne se MinSpærring - Data Model
En spærring betyder at borgeren har afvist at data identificeret via what kan tilgås af personer eller organisationer identificaeret via who.
Et samtykke betyder at sundhedsfaglige personer eller organisation, identificeret via. who, kan tilgå data identificeret via what. Dette selvom der er oprettet en eller flere spæringer. Et samtykke kan også bruges i eksterne systemer til at tillade en given gruppe af personer adgang til til følsomme data der ellers er blevet markeret som private.
En registrering er enten aktive eller inaktive. En aktive registrering kan påvirke en sundhedsfagligs adgagn til følsom data om en borger. En inaktiv registrering har ikke nogen påvirkning på nuværende spærringer eller samtykker, men er udelukkende historik for en tidligere aktiv spærring eller samtykke.
En spærring eller samtykke kan oprettes for en gyldighedsperiode (when) der angiver hvilken periode der er spærret eller givet samtykke til data. Gyldighedsperioden angiver udelukkende hvornår der laves opslag på data og siger ikke noget om hvornår data var registreret eller oprettet. Samtykke skal have en gyldighedsperiode. En spærring kræber kun en startdato.
En sundhedsfagligs adgang til følsom data for en specifik borger er ikke påvirket hvis den oprettede spærring eller samtykke er for en anden sundhedsfaglig eller organisation. Dette er f.eks. hvis der er oprettet en spærring for en anden sundhedsfaglig end den der forespørger på data.
Definitioner og referencer
Formålet med denne sektion er at give et overblik over definitioner og referencer anvendt i dette dokument.
Definition | Beskrivelse |
---|---|
NSI | National Sundheds IT |
NSP | National Service Platform |
SAML | Security Assertion Markup Language |
STS | Security Token Service |
NCP | National Contact Point |
Reference | Beskrivelse |
---|---|
OIO-NDR | OIO Navngivnings- og Designregler, OIO-NDR version 3.2, http://www.itst.dk/it-arkitektur-og-standarder/standardisering/datastandardisering/oioxml-udvikling/regler/ndr-3.2 |
DGWS 1.0 | Den Gode Webservice 1.0 |
DGWS 1.0.1 | Den Gode Webservice 1.0.1 |
HSUID-Header | Healthcare Service User Identification Header (SSE/11734/IFS/0018) |
OIO-WSDL | Guide for udvikling og anvendelse af OIOWSDL, http://www.itst.dk/it-arkitektur-og-standarder/standardisering/standarder-for-serviceorienteret-infrastruktur/standarder-for-webservices/filer-til-standarder-for-webservices/OIOWSDL_english.pdf |
Læsevejledning
I dokumentet bruges begreberne autorisation og autoriseret primært i en sikkerhedskontekst, det vil sige i forståelsen af, at en person eller et system er autoriseret til at bruge en given ressource. Hvis begreberne anvendes på sundhedspersonale med dansk autorisation, der er anført i Sundhedsstyrelsens autorisationsregister, vil det blive udtrykkeligt angivet.
Et system der anvender Web Services
Et system, der bruger webservices beskrevet i dette dokument, referes som et anvendersystem.
Det antages at læseren har general forståelse for SOAP-basterede Web Services. Derfor er tekniske termer som SOAP, WSDL osv. ikke beskrevet. Kendskab til Den Gode Webservice (DGWS) 1.0.1beskrevet i [DGWS 1.0] og [DGWS 1.0.1] vil gøre forståelsen nemmere.
Dokument historik
Version | Date | Responsible | Description |
---|---|---|---|
0.1 | 24.4.2012 | Systematic | Initial version. |
0.2 | 1.5.2012 | Systematic | Optimization of data elements by verification of consent for data elements. Addition of ConsentForForeignerCheck operation. |
0.9 | 14.5.2012 | Systematic | HSUID-header reference added, reading guide updated, web service semantics updated. |
1.0 | 29.6.2012 | Systematic | ConsentForForeignersCheck, SOAP-faults, table elaboration, general improvements. |
1.1 | 28.11.2014 | Systematic | References to National Patient Index (NPI) removed. |
1.2 | 09.09.2016 | Systematic | Changed nsi:skscode to nsi:skskode and nsi:sorcode to nsi:sor to fit XML schema |
1.3 | 13.06.2018 | Systematic | Migrated to NSPOP SVN |
22.10.2018 | KIT | Document moved from Word to Confluence. Original document name was: IFS0014 Consent Verification Service Interface Description.docx | |
10.11.2020 | KIT | Oversættelse til Dansk samt ajourføring |
MinSpærring Verifikation Bruger Scenarier
Nedenstående beskriver brugerscenarier som service MinSpærring Verifikation understøtter.
Sundhedsfaglig Tjekker Borgers MinSpærring Registreringer
En sundhedsperson kan kontrollere en borgeres samtykker og spærringer for at afgøre, om der findes et samtykke eller spærring for adgang til borgerens data. Dette brugsscenarie understøttes af operationen ConsentForUserCheck. Kontrollen udføres typisk inden der hentes oplysninger om borgeren.
Resultatet af operationen er en erklæring om, hvorvidt der er spærret eller givet samtykke til den sundhedsfaglige. Resultat er enten negative, positive eller DataSpecificConsent.
DataSpecificConsent betyder, at der findes et eller flere samtykker eller spærringer til udvalgte oplysninger om borgeren. Det er således ikke muligt at afgøre, om sundhedspersonalet har ret til al information om borgeren. Derfor skal yderligere verifikation af de enkelte dataelementer udføres, inden den sundhedsfaglige kan få oplysninger om borgeren. Ved positivt svar udføres der ikke yderligere verifikation af data. Ved negativt svar er al information om borgeren utilgængelig for den sundhedsfaglige.
Sundhedsfaglig Tjekker Borgers Data Specifikke Registreringer
En sundhedsfaglig ønsker at hente en række oplysninger om en borger. Et tidligere kald til operationen ConsentForUserCheck returnerede resultatet DataSpecificConsent. Det er således nødvendigt at kontrollere hvert enkelt dataelement for borgerens samtykke eller spærring med hensyn til den sundhedsfaglige persons adgang. Operationen ConsentForDataCheck understøtter dette scenarie.
Resultatet af operationen er en liste af data elementer som den sundhedsfaglige har lov til at se.
Sundhedsfaglig i Andet Land Tjekker Borgers MinSpærring Registreringer Gennem NCP
En sundhedsfaglig person, i et andet landt, ønsker at hente information om en dansk borger. Dette sker via et kald fra et andet lands NCP til den danske NCP. Før den danske NCP returnerer infomationer om den danske borger tjekkes der at borgeren har registreret et samtykke til den sundhedsfaglige person. Dette sker ved kald til operationen ConsentForForeignersCheck.
Resultatet af operationen er om den sundhedsfaglige har samtykke til a tilgå borgerens data.
MinSpærring Verifikation Web Services
Læsevejledning
Nedenstående skabelon dokumenterer operationenerne der er udstillet af MinSpærring Verifikation. De vigtigste elementer i forespørgsel og svar er beskrevet i sektion 5.
Navn: <operation header> | |
---|---|
Beskrivelse | Beskriver operationens formål. |
Forespørgsel: | Parameter til input. |
Svar: | Parametre i svar. |
Fejlhåndtering: | Beskriver fejlhåndtering. Refererer typisk til den generelle beskrivelse af fejlhåndtering. |
Roller: | Beskriver krævede roller. |
Forudsætninger: | Beskriver forudsætninger der skal være opfyldt for at operationen kan udføres. |
Web Service - ConsentVerification
Nedenstående operationer udstullet af MinSpærring Verifikation.
Operation – ConsentForUserCheck
Navn: ConsentForUserCheck | |
---|---|
Beskrivelse: | Undersøger om en borger har oprettet generelt samtykke, spærring eller data specifik spærring for en bruger. |
Forespørgsel: | ConsentForUserCheckRequest består af: PatientPersonCivilRegistrationIdentifier Identifkation af den borger samtykke/spærring ønskes undersøgt. HealthcareProfessionalIdentifier HealthcareProfessionalIdentifierOnBehalfOf HealthcareProfessionalOrganization |
Svar: | ConsentForUserCheckResponse består af: ConsentIndication Samtykke, spærring eller dataspecifkt samtykke i nedenstående form: Positive – betyder at den sundhedsaglige har adgang til data. Negative – betyder at den sundhedsfaglige, eller dennes tilknyttede organisation, ikke har adgang til borgerens data. DataSpecificConsent - betyder at der er registreret dataspecikt samtykke eller spærring. Derfor er det ikke muligt at afgøre om den sundhedsfaglige har adgang til data. Derfor skal der laves opfølgende kald til operationen ConsentForDataCheck. |
Error handling: | Se afsnit 4.7. |
Roles: | Sundhedsffaglig. |
Prerequisites: | Både bruger og brugersystem skal godkendt som beskrevet i afsnitet Web Service Sikkerhed. |
Operation – ConsentForDataCheck
Navn: ConsentForDataCheck | |
---|---|
Beskrivelse: | Undersøger om en borger har oprettet data specifikke spærringer eller samtykker. |
Forespørgsel: | ConsentForDataCheckRequest består af: PatientPersonCivilRegistrationIdentifier Identifkation af den borger samtykke/spærring ønskes undersøgt. HealthcareProfessionalIdentifier HealthcareProfessionalIdentifierOnBehalfOf HealthcareProfessionalOrganization ConsentForDataRegistrations |
Svar: | ConsentForDataCheckResponse består af: PositiveConsentDataRegistrations Liste af dokument ID fra forespørgsel som den sundhedsfaglige har lov til at se. professional. |
Fejlhåndtering: | Se afsnit 4.7. |
Roller: | Sundhedsfaglig. |
Forudsætninger: | Både bruger og brugersystem skal godkendt som beskrevet i afsnitet Web Service Sikkerhed. |
Operation – ConsentForForeignersCheck
Navn: ConsentForForeignersCheck | |
---|---|
Beskrivelse: | Undersøger om en borger har givet samtykke til at en sundhedsfaglig i et andet land må tilgå borgerens data. |
Forespørgsel: | ConsentForForeignersCheckRequest består: PatientPersonCivilRegistrationIdentifier Identifkation af den borger samtykke/spærring ønskes undersøgt. |
Svar: | ConsentForForeignerCheckResponse består af: ConsentForForeigners om der er adgang til data. Positive – betyder at der er oprettet samtykke så den sundhedsfaglige må tilgå borgerens data. Negative - betyder at der ikke er adgang til borgerens data. |
Fejlhåndtering: | Se afsnit 4.7. |
Roller: | Sundhedsfaglig person |
Forudsætninger: | Både bruger og brugersystem skal godkendt som beskrevet i afsnit 4.2.1. |
MinSpærring Verifikation Web Service Semantiker
Besked format
Web servicen forventer SOAP beskeder. SOAP headeren indeholder sikkerheds header og Medcom header som krævet i DGWS 1.0.1. Udover dette skal der også være en HSUID header.
Figur 1 SOAP besked indeholdende sikkerhedsheader, Medcomheader samt HSUID header.
Formatet af sikkederhedsheader og Medcomheader er beskrevet i [DGWS 1.0] og [DGWS 1.0.1]. Formatet for HSUID-headeren er beskrevet i [HSUID-Header].
Attributter i HSUID headeren når bruger er sundhedsfaglig
Når brugere er en sundhedsfaglig person er det nedenstående attributter der skal være i HSUID headeren.
Element attribut | Underelement Attributværdi | |
---|---|---|
Attributnavn | AttributNavn format | - |
nsi:UserType | nsi:HealthcareProfessional | |
nsi:ActingUserCivilRegistrationNumber | Den sundhedsfaglige CPR nummer. | |
nsi:OrgUsingID | nsi:sor or nsi:skskode or nsi:ynumber | Identifikation af den organisation som den sundhedsfaglige er tilknyttet. Attributten skal være der mindst én gang og må maksimalt være angivet to tange. Hvis den er angivet to gange kan organisationen være identificeret ved en SOR kode og f.eks. en SHAK kode. |
nsi:ResponsibleUserCivilRegistrationNumber | CPR nummer på den sundhedsfaglige som brugeren agerer på vegne aaf. Hvis det er den samme person som brugeren er det samme CPR nummer angivet. | |
nsi:ResponsibleUserAuthorizationCode | Autorisationsnummer på den sundhedsfaglige som brugeren agerer på vegne af. Hvis brugeren er en sundhedsfaglig uden autorisationskode, arbejder på vegne af en sundhedsfaglig uden autorisationskode anvendes specialværdien '-'. | |
nsi:SystemOwnerName | Navn på systemejer af anvendersystemet. | |
nsi:SystemName | Navn på anvendersystem. | |
nsi:SystemVersion | Version af anvendersystem. | |
nsi:OrgResponsibleName | Navn på organisation ansvarlig for anvendersystem. |
Tabel 1 Attributer i HSUID-header når bruger sundhedsfaglig.
Identifikation af organisationen sundhedsfaglig er tilknyttet kan angives som en enkelt kode i form af f.eks. en SHAK-kode:
<hsuid:Attribute Name="nsi:OrgUsingID" NameFormat="nsi:skskode"> <hsuid:AttributeValue>6620151</hsuid:AttributeValue> </hsuid:Attribute>
Alternativt kan organisation angives med to værdier. Det kan f.eks. være en SOR kode og en SHAK kode:
<hsuid:Attribute Name="nsi:OrgUsingID" NameFormat="nsi:sor"> <hsuid:AttributeValue>440081000016006</hsuid:AttributeValue> </hsuid:Attribute> <hsuid:Attribute Name="nsi:OrgUsingID" NameFormat="nsi:skskode"> <hsuid:AttributeValue>6620151</hsuid:AttributeValue> </hsuid:Attribute>
Bemærk at det er anvendersystemets ansvar at sikre konsistes mellem de angive organisationer.
Web Service Sikkerhed
Sikkerheden er baseret på SOSI-integrationsmønstret i Den Gode WebService (DGWS). Godkendelse sker via STS på NSP'en og er baseret på OCES digitale certifikater. Som udgangspunkt kræves der et medarbejdercertifikat (MOCES). Initielt kan visse systemer, i en overgangsperiode, anvende et VOCES certifikat.
Yderligere sikkerhedsaspekter, herunder autorisation, integritet, fortrolighed, tilgængelighed og fortrolighedshensyn, håndhæves kun i nogen grad af den tekniske service. De aspekter, der i øjeblikket ikke håndteres af den tekniske tjeneste, håndteres i serviceaftalen, som specificeret af den dataansvarlige myndighed (SDS) som forbrugere af tjenesten skal acceptere.
Godkendelse
Godkendelse af anvendersystemer
Når STS'en signatur af ID korter er valideret med succes har anvenderen adgang.
Udover dette skal anvendersystemet være whitelisted baseret på system delen af ID-kortet.
Godkendelse af bruger
Når anvendersytemet er godkendt bliver brugeren godkendt via HSUID header attributen nsi:ActingUserCivilRegistrationNumber.
Om det er en borger eller sundhedsfaglig afgøres af HSUID header attributen nsi: UserType.
Web service opetaitoner hvor bruger er sundhedsfaglig
Servicen godkender all brugere der er sundhedsfaglige.
Udløb af ID-kort
En request med et ID-kort der er mere end 24 timer gammelt i forhold til udstedelsestidspunkt afvises.
Status koder og flow status
Som krævet i DGWS 1.0.1 anvendes kun HTTP status kode 200 og 500.
Ved HTTP status kode 200 er FlowStatus altid flow_finalized_succesfully.
Timeout ved web-service operationer
Timeout er det samme som standard timeout på NSP platformen.
Session
Alle kald håndteres i sin egen session.
Der forestages ikke check om et MessageId har været anvendt tidligere og der er ikke garanti for at samme svar returenres hvis MessageId anvendes igen.
Dette afviger fra DGWS 1.0.1 i forhold til håndtering af genfremsendelse.
Tildeling og genbrug af flow-ID
Hvis request indeholder et flow-ID bliver det genbrugt i svaret. Håndtering af flow-ID sker i henhold til DGWS 1.0.1.
Behandling af anmodning om Non-Repudiation
Digital signing of replies is not supported. On request for non-repudiation, a fault-error message is returned as described in [DGWS 1.0].
Digital signering af svar understøttes ikke. På anmodning om Non-Repudiation returneres en fejlfejlmeddelelse som beskrevet i [DGWS 1.0].
Fejlhåndtering
SOAP fejl
SOAP-fejl returneres som beskrevet nedenfor. Der er valgt en struktur, hvor både standardfejlkoder som beskrevet i [DGWS 1.0] og servicespecifikke fejlkoder kan returneres.
<soap:Body> <soap:Fault> <faultcode>soap:Server</faultcode> <faultstring>Description of the error</faultstring> <detail> <FaultInfo xsi:type="ns2:dgwsInfo" xmlns="urn:dk:nsi:consent:verification:service:1" xmlns:ns2="http://www.medcom.dk/dgws/2006/04/dgws-1.0.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"> <ns2:FaultCode>expired_idcard</ns2:FaultCode> </FaultInfo> </detail> </soap:Fault> </soap:Body>
Kodeliste 1 Struktur af SOAP-fejl returneret fra Web Service Operation. Eksemplet viser FaultCode, der bruges, når ID-kortet er udløbet.
SOAP Fault Status Koder
For alle web service operationer, der er beskrevet i afsnit 3, anvendes SOAP-fejl med FaultCode-værdier som anført i tabel 2, der stammer fra DGWS 1.0.1.
FaultCode | Beskrivelse |
---|---|
missing_required_header | En eller flere krævede DGWS headers mangler i request. F.eks. skal ID-kort altid være angivet. |
security_level_failed | Godkendelses fejl. Forkert id-kort niveau. |
invalid_idcard | Godkendelses fejl. Fejl i SOSI ID kort. |
invalid_certificate | Godkendelses fejl.. Certifikat er ikke OCES certifikat eller også er det udløbet. |
expired_idcard | Godkendelses fejl. SOSI ID kort er udløbet eller for gammel i forhold til kravet i servicen. |
not_authorized | Bruger har ikke ret til at anvende Web Service operationen. F.eks. cvr nummer der ikke er whitetlisted. |
nonrepudiation_not_supported | Service kan ikke signere svar da dette ikke er understøttet. |
Tabel 2 Anvendte Faultcode værdier stammende fra DGWS 1.0.1
Derudover anvendes tjenestespecifikke FaultCode værdier som anført i tabel 3.
FaultCode | Beskrivelse |
---|---|
consent_service.ConsentDatabase | En intern fejl i servicen i forbindelse med adgang til databasen. |
consent_service.SORLookup | En intern fejl i servicen i forbindelse med opslag i SOR data. |
consent_service.ServiceInvocation | Servicen blev kald med invalid parametre. |
invalid_date_timezone | En dato i request er i invalid format. De skal følge DGWS 1.0.1. |
consent_service.UnknownError | Ukendt fejl i servicen. |
Tabel 3 Anvendte servicespecifikke FaultCode værdier
WSDL'en tilhørende servicen specificerer ikke SOAP fejlkoder for hver operation.
Web Service Input Validering
Nedenstående valideres:
- Korrekt formateret HSUID-header er inkluderet i SOAP-headeren, inklusive de attributter, der henholdsvis kan og skal være til stede for en given brugertype som beskrevet i afsnit 4.1.1. Desuden valideres det, at attributværdier hører til etablerede værdisæt og ikke er null eller simpelthen mellemrum
ID kort i security header er valid og signeret af STS'en og yderlige krav i sektion 4.2 er opfyldt.
- CPR numre er valid og findes i autorisationsregistret.
- Organisations ID'er er valide. Valid betyder at det er en valid SOR, SHAK eller Yder nummer.
Nedenstående udføres IKKE:
XML skema validering.
Validering af, at de angivne autorisationsnumre er gyldige og findes i autorisationsregisteret
Validering af, at der er konsistens mellem sundhedspersonens organisations-id'er, når der gives flere ID- og klassificeringssystemer.
Validering af, at en sundhedsperson er tilknyttet den angivne organisation
Validering af, at brugeren handler på vegne af den erklærede sundhedsperson
Standarder
MinSpærring Verifikation er baseret på nedenstående standarder. :
SOAP version 1.1
Soap Fault version 1.1
WS-I Basic Profile 1.1
OIO navngivnings- og designregler
DGWS 1.0.1, med undtagelse af krav til videresendelse og kontrol af genbrug af meddelelses-ID som beskrevet i afsnit 4.5, og med undtagelse af struktur anvendt på fejl som beskrevet i afsnit 4.7.1.
MinSpærring Verifikation Web Service Skemaer
Dette afsnit giver en generel beskrivelse af nøgleelementerne i XML-skemaerne, som sammen med WSDL-filer definerer de webservicefunktioner, der er beskrevet i 3.2. Derudover gives kardinalitet, når et element ikke er obligatorisk.
HealthcareProfessionalIdentifierOnBehalfOf
Element-navn | Beskrivelse |
HeathcareProfessionalIdentifierOnBehalfOf | Identifikation af den sundhedsfaglige der arbejdes på vegne af. Feltet er optionelt og kan angives uden samtykke. |
ConsentForDataRegistrations
Element-navn | Beskrivelse |
ConsentDataRegistration[0..n] | Liste af data elementer der skal laves verifikation på. |
ConsentDataRegistration
Element-navn | Beksirvelse |
Identifier[1] | Unik identifikation af data element (nøgleværdi) som angivet af kalende system. |
Origin[1] | SOR, SHAK eller yder nummer der angiver hvilken organisation datalementet stammer fra. |
CreationDateTime[1] | Tidspunkt hvor dataelement blev oprettet. |
ConsentIndication
Element-navn | Beskrivelse |
ConsentIndication | Positim, negativ eller data specifikt. Nedenstående værdisæt anvendes: Positive, Negative, DataSpecificConsent |
ConsentForDataResponse
Element-navn | Beskrivelse |
DataIdentifiers[0..n] | Liste af unikke id af data element (nøgleværdi) som angivet af det kalende system. |
ConsentForForeigners
Element-navn | Beskrivelse |
ConsentForForeigners | Positiv eller negativ med nedenstående værdisæt: Positive, Negative |
Styring
Dokumentation
Til MinSpærring Verifikation er grænsefladen mellem anvendersystemerne og verifikation versioneret.
Snitfladebeskrivelsen udgør kontrakten, der definerer, hvordan de involverede systemer skal handle.
Snitfladebeksrivelsen består af:
- den tekniske specifikation af skemaer og servicebeskrivelser (dokumenteret som en WSDL-fil, se afsnit 7)
dokumentation for den semantiske og funktionelle betydning af data, der udveksles (dokumenteret i dette dokument).
Versionering
Som en del af WSDL for ConsentVerification er der headers der er definereret i andre standarder. Selve request til ConsentVerification følger nedenstående navngivning.
”urn:dk:nsi:consentservices:verification:service:<version>”
Bemærk dog at hvis der laves nye versioner af snitfladen skal versioneringen ske ved hjælp af en datoangivelse som det kan ses i nyeste version af MinSpærring Aministration snitfladen.
WSDL
WSDL til servicen kan tilgås ved at tilgå det endpoint servicen udstiller WSDL på. I test2 miljøet er det http://test2-cnsp.ekstern-test.nspop.dk:8080/consent-verification/service?wsdl. Hvis tjenesten på NSP miljøet ikke er tilgængeligt kan servicen startes op ved hjælp af de leverede docker-compose filer og WSDL kan tilgås der.