AuthorizationCodeService Sammenhængende Digital Sundhed i Danmark, version 1.1 W 1
AuthorizationCodeService Sammenhængende Digital Sundhed i Danmark version 1.1 Kåre Kjelstrøm Formål... 3 Introduktion... 3 Autorisationsregisteret... 3 Services... 4 GetAuthorizationCode... 4 IsPersonAuthorized... 5 Bilag A: Forudsætninger... 7 Profilversion... 7 Netværk... 7 Id-kort attributter... 7 Kommunikationsmodel... 7 Kuvert attributter... 7 Logning... 8 Ændringslog... 9 Referencer... 10 Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 2
Formål Introduktion Sundhedsstyrelsen varetager ved lov [AUTLOV] autorisationen af personer med relevant uddannelse til at agere i sundhedssektoren. Det samlede sæt af sådanne autoriserede sundhedspersoner gemmes i autorisationsregisteret, så det til enhver tid er muligt at checke om en given person vitterlig har ret til at agere i en bestemt sundhedsfaglig rolle. Autorisationsregisteret udstilles i dag via FTP til autoriserede parter f.eks. Sundhed.dk og værdierne fra registeret anvendes aktivt når det skal afgøres om en bestemt person har ret til at se bestemte data. Fremover vil det dog være hensigtsmæssigt at kunne tilgå registeret via web services. Dette dokument specificerer snitfladen til en sådan service. Autorisationsregisteret Fra autorisationsregisteret udstilles følgende oplysinger for hver person via denne webservice: CPR-Nummer: Personens id fra CPR-registeret. Kommunikationsformatet er 10 cifre uden - Fornavn: Personens fornavn som en tekststreng af længde 50 Efternavn: Personens efternavn som en tekststreng af længde 40 Autorisationskode: En 5 cifret kode bestående af 4 tal (0-9) efterfulgt af et bogstav (B-Z) Uddannelseskode: En 4 cifret kode bestående af 4 tal. Følgende kombinationer er valide: 4498 - Optikere 5151 - Fysioterapeuter 5152 - Social- og sundhedsassistenter 5153 - Ergoterapeuter 5155 - Fodterapeuter 5158 - Radiografer 5159 - Bioanalytikere 5166 - Sygeplejersker 5175 - Jordemødre 5265 - Kiropraktorer 5431 - Tandplejere 5432 - Kliniske tandteknikere 5433 - Tandlæger 5451 - Kliniske diætister 7170 - Læger 9495 - Bandagister Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 3
Services Web service snitfladen, AuthorizationCodeService, anvender Den Gode Webservice 1.0.1 på niveau 3 dvs. med virksomhedscertifikat. Snitfladen udstiller i denne version to kald: GetAuthorizationCode: Hent på baggrund af CPR-nummer oplysninger om den sundhedsfaglige person herunder autorisationsnumre, uddannelseskoder, fornavn og efternavn. Bemærk: en sundhedsfaglig kan have flere autorisationer. IsPersonAuthorized: Check på baggrund af CPR-nummer om personen er sundhedsfaglig, dvs. forekommer i registeret, (true) eller ej (false). GetAuthorizationCode Dette kald forventer et CPR nummer på den sundhedsfaglige person som input og returnerer alle registeroplysinger om personen som output. Forespørgsel En forespørgsel angives med strukturen GetAuthorizationCodeRequestStructure som har følgende opbygning: Eksempel: <?xml version="1.0" encoding="utf-8"?> <GetAuthorizationCodeRequestStructure xmlns="http://www.sdsd.dk/authorizationservice/xml.schema/2008/11/07" xmlns:cpr="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <cpr:personcivilregistrationidentifier>0101991234</cpr:personcivilregistrationidentifier> </GetAuthorizationCodeRequestStructure> Svar En forespørgsel angives med strukturen GetAuthorizationCodeResponseStructure som har følgende opbygning: Typen AutorizationRegisterEntryCollection gør det muligt at returnere flere autorisationskoder for den samme person og har følgende detaljerede struktur, hvor alle de basale datatype er af typen xsd:string. Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 4
Eksempel: <?xml version="1.0" encoding="utf-8"?> <GetAuthorizationCodeResponseStructure xmlns="http://www.sdsd.dk/authorizationservice/xml.schema/2008/11/07" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns:dkcc="http://rep.oio.dk/ebxml/xml/schemas/dkcc/2003/02/13/" xmlns:autcode=" http://www.sdsd.dk/authorizationservice/xml.schema/2008/11/07" xmlns:medicinkort="http://www.dkma.dk/medicinecard/xml.schema/2008/06/01"> <autcode:authorizationregisterentrycollection> <autcode:authorizationregisterentry> <medicinkort:authorisationidentifier>1234c</medicinkort:authorisationidentifier> <dkcc:simplepersonnamestructure> <dkcc:persongivenname>palle</dkcc:persongivenname> <dkcc:personsurnamename>hansen</dkcc:personsurnamename> </dkcc:simplepersonnamestructure> <EducationIdentifier>1234</EducationIdentifier> </autcode:authorizationregisterentry> </autcode:authorizationregisterentrycollection> </GetAuthorizationCodeResponseStructure> Fejl InvalidCivilPersonRegistrationIdentifier Hvis det angivne CPR nummer ikke er validt. IsPersonAuthorized Dette kald forventer et CPR nummer på den sundhedsfaglige person som input og returnerer True hvis personen findes i registeret eller False hvis personen ikke findes i registeret. Forespørgsel Forespørgslen angives med IsPersonAuthorizedRequestStructure på følgende form: Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 5
Eksempel: <?xml version="1.0" encoding="utf-8"?> <IsPersonAuthorizedRequestStructure xmlns="http://www.sdsd.dk/authorizationservice/xml.schema/2008/11/07" xmlns:cpr="http://rep.oio.dk/cpr.dk/xml/schemas/core/2005/03/18/" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <cpr:personcivilregistrationidentifier>0101991234</cpr:personcivilregistrationidentifier> </IsPersonAuthorizedRequestStructure> Svar Svaret angives med IsPersonAuthorizedResponseStructure som har følgende form: Eksempel: <?xml version="1.0" encoding="utf-8"?> <IsPersonAuthorizedResponseStructure xmlns="http://www.sdsd.dk/authorizationservice/xml.schema/2008/11/07" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance"> <IsPersonAuthorized>True</IsPersonAuthorized> </IsPersonAuthorizedResponseStructure> Fejl InvalidCivilPersonRegistrationIdentifier Hvis det angivne CPR nummer ikke er validt. Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 6
Bilag A: Forudsætninger Profilversion Denne specifikation anvender Den Gode Webservice 1.0.1 [DGWS] Netværk DGWS kræver et krypteret transportlag og aftaler mellem de udvekslende parter for at sikre konfidentialitet af data. AuthorizationCodeService kan tilgås via følgende netværkstyper: Netværk Sundhedsdatanettet (VPN) Andet VPN SSL Anvendt? Id-kort attributter Oplysninger om afsenderens identitet lagres i id-kortet. Hvis det afsenderen identificerer en bruger er id-kortet af typen USER og SYSTEM hvis det udelukkende identificerer et it-system. Id-kortets versionsnummer referer til den tilhørende DGWS specifikation og autentifikationsniveauet angiver hvilke typer af akkreditiver der er medsendt. På det laveste niveau, 1 medsendes ingen akkreditiver, mens niveau 2 tillader brugernavn og password. På niveau 3 medsendes en digital signatur foretaget med et OCES virksomhedscertifikat (VOCES) og niveau 4 tillader alene medarbejder OCES signaturer (MOCES). Id-kort attribut Værdi Type SYSTEM Version 1.0.1 Autentifikationsniveau 3 - VOCES signatur Kommunikationsmodel Den Gode Webservice definerer to overordnede kommunikationsmodeller: Sign On (SO) og Single Sign On (SSO). I et SO scenarium kommunikerer klient og serviceudbyder alene med hinanden, mens SSO scenariet introducerer en betroet tredjepart, Identitetsudbyderen (IdP) til at varetage autentifikationen. Service der kan håndtere SSO siges at indgå i SOSI føderationen. Id-kort attribut Sign On Single Sign On Anvendt? Kuvert attributter I DGWS SOAP kuverters headere findes en række meta-oplysninger om de enkelte servicekald, hvoraf nogle udtrykker forventninger til serviceudbyderen. Selvom Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 7
forventningerne i princippet kan variere fra operation til operation, idet der kan være forskel på hvor sensitive data der udveksles, ensretter denne specifikation attributterne på tværs af operationer aht. simpliciteten. En serviceudbyder skal således tage stilling til hvor lang tid der maksimalt må være gået siden brugeren blev autentificeret til et servicekald udføres. Dette Timeout implementeres af serviceudbyderen og kan medsendes i DGWS kuverter som et hint om hvad klienten forventer. DGWS definerer muligheden for at signere hele kuverten som sikkerhedsniveau 5. Klienter kan hvis serviceudbyderen understøtter det bede om at få en digital signatur på svaret i f.eks. indberetningssituationer og endelig kan en klient angive sit ønske til behandlingsprioritet og serviceudbyderen kan hvis det er muligt derpå vælge at opprioritere behandlingen af kaldet. Kuvert attribut Timeout Sikkerhedsniveau Uafviselig kvittering Tilladt? 24 timer 3 - VOCES signatur Nej Logning Persondataloven [PERSLOV] og Sundhedsloven [SUNDLOV] udstikker retningslinjer for hvornår det påkrævet at logge hvem der har haft adgang til data. Dette fortolkes i bredeste forstand som at have set eller opdateret personfølsom information om en anden person. Logning udføres af bade klient og serviceudbyder. Kontrol Logning af adgang til personfølsomme data påkrævet? Påkrævet? Ja Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 8
Ændringslog Dato Ændret af Kommentar 17/11-08 KKJ Oprettet 11/2-10 KKJ Opdateret med WSDL ændringer fra implementation (flere autorisationsid er kan nu returneres) Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 9
Referencer [DGWS] Den Gode Webservice, Version 1.0.1, MedCom 2007, http://www.medcom.dk/wm110731 [PERSLOV] Persondataloven, Datatilsynet, Lov nr. 429 af 31 maj 2000, http://www.datatilsynet.dk/publikationer/pjece/persondataloven.htm [SUNDLOV] Sundhedsloven, Lov nr 546 af 24 juni 2005, http://www.retsinfo.dk/_link_0/0&accn/a20050054630 [AUTLOV] Lov nr. 451 af 22.05.2006. Lov om autorisation af sundhedspersoner og om sundhedsfaglig virksomhed, http://www.sundhedsjura.dk/lovsamling/autorisationsloven.pdf Sammenhængende Digital Sundhed i Danmark. AuthorizationCodeService version 1.1. 10