Page History
...
borgeren har muligheden for at se data fra de professionelle om sine undersøgelser og behandlinger
de sundhedsprofessionelle sundhedspersoner får mulighed for at se metadata og derigennem få adgang til yderligere data om en specifik patient fra andre organisationer, og vist eget system (via Sundhedsjournalen), f.eks. ved modtagelse af patienter som er enten akut syge, ambulante med komplekse forløb eller i øvrigt ukendte for behandleren
...
Endelig gennemgås adgangsscenarierne i forhold til den gældende sikkerhedsprotokol på DDS Registry: Den Gode Webservice (DGWS). Det gennemgåes, hvorledes adgangsscenarierne kan implementeres i autentifikations- og kaldkontekst for DGWS: Sosi Id-kort og HSUID header.
Brugertyper
...
DDS Registry understøtter følgende DDS brugertyper
...
med følgende overordnede muligheder:
- Borger: Borgere kan tilgå egne data, eller data på andre borgere, som de har en passende relation til (børn, fuldmagt)
- Sundhedsfaglig: Sundhedsfaglie kan tilgå data på borgere, hvis der er hjemmel til dette (behandlingsrelation, ikke-negativt samtykke, værdispring
...
- Borger (alm og på vegne af)
- Sundhedsfaglig (alm og på vegne af)
- Ikke-autoriseret bruger
- Systembruger
...
- : Myndighedspersoner uden lægefaglig autorisation, men som har brug for at tilgå data på borgere (f.eks. adgang til aftaler for kommunale medarbejdere)
- System bruger: er der kun således at systemer (i praksis sundhed.dk) kan anvende DDS og ved hjælp af en medsendt HSUID header kan opnå status som een rigtig brugertype.
...
De
...
forskellige DDS brugertyper giver anledning til en række adgangsscenarier dvs. måder, hvorpå disse kan tilgå DDS Registry for fremsøgning af dokumenter for et givent CPR nummer.
ID | Som en... | ønsker jeg at.. | ved anvendelse af værdispring | så jeg... |
|---|---|---|---|---|
| B1 | Borger | fremsøge dokumentreferencer til egne dokumenter | Nej | kan se mine egne data |
| B2 | Borger på vegne af | fremsøge dokumentreferencer til en anden borgers dokumenter | Nej | kan se data på denne person, som jeg har en relation til |
| S1 | Sundhedsfaglig med autorisationsid | fremsøge dokumentreferencer til en borgers data | Ja / Nej | kan se data på denne borger |
| S3 | Sundhedsfaglig på vegne af. F.eks en sekretær, der arbejder på vegne af en person med autorisation | fremsøge dokumentreferencer til en borgers data | Ja / Nej | kan se data på denne borger |
| IA-1 | Ikke-autoriseret bruger | fremsøge dokumentreferencer til en borgers data | Nej | kan se dokumenter for denne borger af de typer, som min rolle giver mig adgang til |
Bestemmelse og mapning til actor
De enkelte brugertyper bestemmes udfra modellen, der udstilles i Security API. Disse regler er opsummeret i tabellerne nedenfor.
| Brugertypen: Borger |
...
Matche audience som findes som konfiguration i DDS
Skal være Citizen
Skal være der og Skal være CPR
Skal være sat
Verificeres ikke - må gerne være der
| Verifikation | Mapning til MinSpærring ServiceActor | |||
| SecurityContext | Ticket | Audience | ||
Matche audience som findes som konfiguration i DDS | audience | |||
| Validity | Er valid | |||
| Message | Verificeres ikke - må gerne være der | |||
| ActingUser | UserType | Skal være |
Citizen | Brugertypen: |
| Borger | ||||
| IdentifierFormat | Skal være der og Skal være CPR | |||
| Identifier | Skal være sat | ActingUserCpr | ||
| GivenName | Verificeres ikke - må gerne være der | |||
| SurName | Verificeres ikke - må gerne være der | |||
| Credentials |
| Verificeres ikke - må gerne |
| være der |
| PersistentUniqueKey | Verificeres ikke - må gerne være der | |||
| PrincipalUser | Må ikke være der | |||
| Organisation |
Verificeres ikke - må gerne være der |
Skal være der og skal være CVR
Verificeres ikke - må gerne være der
| Client | Name | Verificeres ikke - må gerne være der | systemName |
| Brugertypen: |
| Sundhedsfaglig | Verifikation | Mapning til | ||
| MinSpærring ServiceActor | ||||
| SecurityContext | Ticket | Audience | Verificeres ikke - må gerne være der | |
| Validity | Er valid | |||
| Message | Verificeres ikke - må gerne være der | |||
| ActingUser | UserType | Skal være HealthCareProfessional | Brugertypen: Sundhedsfaglig | |
| IdentifierFormat | Skal være CPR | |||
| Identifier | Skal være sat | ActingUserCpr | ||
| GivenName | Verificeres ikke - må gerne være der | |||
| SurName | Verificeres ikke - må gerne være der | |||
| Credentials.NationalRole |
Verificeres ikke - må gerne være der |
| Credentials.AuthorizationCode |
| Skal være der | AuthorizationCode | |||
| PersistentUniqueKey | Verificeres ikke - må gerne være der | |||
| PrincipalUser | Må ikke være der | |||
| Organisation | Identifier | Verificeres ikke - må gerne være der | ||
| identifierFormat |
Verificeres ikke - må gerne være der | |||
| Client | Name | Verificeres ikke - må gerne være der | systemName |
| Brugertypen: SystemIkke-autoriseret bruger | Verifikation | Mapning til DDS ServiceActor | |||||
| SecurityContext | Ticket | Audience | Verificeres ikke - må gerne være der | ||||
| Validity | Er valid | ||||||
| Message | Verificeres ikke - må gerne være der | ||||||
| ActingUser | UserType | Må ikkeSkal være | derHealthCareProfessional | Brugertypen: System | PrincipalUser | Må ikkeSundhedsfaglig | |
| IdentifierFormat | Skal være CPR | ||||||
| Identifier | Skal være sat | ActingUserCpr | |||||
| GivenName | Verificeres ikke - må gerne være der | ||||||
| Organisation | IdentifierSurName | Verificeres ikke - må gerne være der | |||||
| Credentials.NationalRole | Må gerne være der, og anvendes hvis den er. Ellers anvendes "ingen rolle" | NationalRole | |||||
| Credentials.AuthorizationCode | Må ikke være der | ||||||
| PersistentUniqueKey | Verificeres ikke - må gerne være der | ||||||
| PrincipalUser | Må ikke være der | ||||||
| Organisation | Identifier | Verificeres ikke - må gerne være der | |||||
| identifierFormat | Verificeres ikke - må gerne være der | ||||||
| Client | Name | Verificeres ikke - må gerne være der | systemName | ||||
Transformation af brugertyper
En system bruger giver ikke mening i sig selv, og skal mappes over til en rigtig bruger. Andre brugertyper kan også mappes til andre typer på baggrund af hsuid header information. En borger kan mappes til en borger på vegne af hva. cprFromPayload. Der findes følgende tranformationer:
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
System >>
Brugertypen Sundhedsfaglig
HSUID Header
Brugertypen: Sundhedsfaglig
actingUserCivilRegistrationNumber
Skal være sat
ActingUserCpr
responsibleUserRegistrationNumber
Må ikke være sat eller hvis sat skal den være matche actingUserCivilRegistrationNumber
orgUsingIDType
| Brugertypen: System | Verifikation | Mapning til DDS ServiceActor | ||
| SecurityContext | Ticket | Audience | Verificeres ikke - må gerne være der | |
| Validity | Er valid | |||
| Message | Verificeres ikke - må gerne være der | |||
| ActingUser | UserType | Må ikke være der | Brugertypen: System | |
| PrincipalUser | Må ikke være der | |||
| Organisation | Identifier | |||
Verificeres ikke - må gerne være der |
orgUsingIDName
Verificeres ikke - må gerne være der
Hvis brugertypen transformeres til en anden type, tjekkes at dette cvr nummer er whitelistet sammen med subject serial number. | cvr | |
| identifierFormat |
Verificeres ikke - må gerne være der |
systemName fra actor mappes
| Client | Name | Verificeres ikke - må gerne være der |
userAuthorizationCode
Skal være sat og valideres med actingUser
| systemName |
Transformation af brugertyper
En system bruger giver ikke mening i sig selv, og skal mappes over til en rigtig bruger. Andre brugertyper kan også mappes til andre typer på baggrund af hsuid header information. En borger kan mappes til en borger på vegne af hva. cprFromPayload. Der findes følgende tranformationer:
| Gliffy Diagram | ||||||||
|---|---|---|---|---|---|---|---|---|
|
System >> Brugertypen Sundhedsfaglig på vegne af | Verifikation | Mapning til DDS ServiceActor | ||||
HSUID Header | userType | Skal være der og være HEALTHCAREPROFESSIONAL | Brugertypen: Sundhedsfaglig på vegne af | |||
actingUserCivilRegistrationNumber | Skal være sat | ActingUserCpr | ||||
responsibleUserRegistrationNumber | Skal Må ikke være sat eller hvis sat og skal den være anderledes end matche actingUserCivilRegistrationNumber | |||||
orgUsingIDType | Verificeres ikke - må gerne være der | |||||
orgUsingIDName | Verificeres ikke - må gerne være der | |||||
systemName | Verificeres ikke - må gerne være der systemName fra actor mappes | systemName | ||||
systemVersion | Verificeres ikke - må gerne være der | |||||
userAuthorizationCode | Skal være sat og | valideres valideres med | responsibleUseractingUser | AuthorizationCode | ||
Actor cvr skal være whitelisted | ||||||
Sundhedsfaglig System >> Brugertypen Sundhedsfaglig på vegne af | Verifikation | Mapning til DDS ServiceActor | |||
HSUID Header | userType | Skal være der og være HEALTHCAREPROFESSIONAL | Brugertypen: Sundhedsfaglig på vegne af | ||
actingUserCivilRegistrationNumber | Skal være sat | ActingUserCpr | |||
responsibleUserRegistrationNumber | Skal være sat og skal være anderledes end actingUserCivilRegistrationNumber | ||||
orgUsingIDType | Verificeres ikke - må gerne være der | ||||
orgUsingIDName | Verificeres ikke - må gerne være der | ||||
systemName | Verificeres ikke - må gerne være der systemName fra actor mappes | systemName | |||
systemVersion | Verificeres ikke - må gerne være der | ||||
userAuthorizationCode | Skal være sat og valideres med | responsible userresponsibleUser | AuthorizationCode | ||
Actor cvr skal være whitelisted | |||||
Sundhedsfaglig Ikke-autoriseret sundhedsprofessionel >> Brugertypen Sundhedsfaglig på vegne af | Verifikation | Mapning til DDS ServiceActor | ||
HSUID Header | userType | Skal være der og være HEALTHCAREPROFESSIONAL | Brugertypen: Sundhedsfaglig på vegne af | |
actingUserCivilRegistrationNumber | Skal være sat | ActingUserCpr | ||
responsibleUserRegistrationNumber | Skal være sat og skal være anderledes end actingUserCivilRegistrationNumber | |||
orgUsingIDType | Verificeres ikke - må gerne være der | |||
orgUsingIDName | Verificeres ikke - må gerne være der | |||
systemName | Verificeres ikke - må gerne være der systemName fra actor mappes | systemName | ||
systemVersion | Verificeres ikke - må gerne være der | |||
userAuthorizationCode | Skal være sat og valideres med responsible user | AuthorizationCode | ||
Borger Ikke-autoriseret bruger >> Brugertypen Borger Sundhedsfaglig på vegne af | Verifikation | Mapning til DDS ServiceActor | |||||||||
| cprFromPayload HSUID Header | userType | Er givet fra securityContext pga. rollen borgerSkal være der og være HEALTHCAREPROFESSIONAL | Brugertypen: Borger Sundhedsfaglig på vegne af | actingUser fra securityContext.||||||||
actingUserCivilRegistrationNumber | Skal være sat | ActingUserCpr | |||||||||
responsibleUserRegistrationNumber | Skal cprFromPayload skal være sat og være anderledes end actingUser. | ResponsibleUserCpr (fra payload) | skal være anderledes end actingUserCivilRegistrationNumber | ||||||||
orgUsingIDType | Verificeres ikke - må gerne være der | ||||||||||
orgUsingIDName | Verificeres ikke - må gerne være der | ||||||||||
systemName | systemName | systemName fra actor mappes | systemName | userAuthorizationCode | Verificeres ikke - må gerne være der | vha. actinguser fra security context og cprFromPayload findes en relation | relation | systemName fra actor mappes | systemName | ||
systemVersion | Verificeres ikke - må gerne være der | ||||||||||
userAuthorizationCode | Skal være sat og valideres med responsible user | AuthorizationCode | |||||||||
Borger System >> Brugertypen Borger på vegne af af | Verifikation | Mapning til DDS ServiceActor | |||||
HSUID HeadercprFromPayload | userType | Skal være der og skal være CITIZEN Er givet fra securityContext pga. rollen borger | Brugertypen: Borger på vegne af | actingUserCivilRegistrationNumber | Skal være der (valideres indirekte ved at relation med responsibleUser skal være tilstede) | ||
actingUser fra securityContext. | ActingUserCpr | ||||||
cprFromPayload skal være sat og være anderledes end actingUser. | ResponsibleUserCpr (fra payload) | ||||||
systemName | systemName fra actor mappes | systemName | |||||
userAuthorizationCode | Verificeres ikke - må gerne være der | ||||||
vha. actinguser fra security context og cprFromPayload findes en relation | relation | ||||||
System >> Brugertypen Borger på vegne af | Verifikation | Mapning til DDS ServiceActor | |||||
HSUID Header | userType | Skal være der og skal være CITIZEN | Brugertypen: Borger på vegne af | ||||
actingUserCivilRegistrationNumber | Skal være der (valideres indirekte ved at relation med responsibleUser skal være tilstede) | ActingUserCpr | |||||
responsibleUserRegistrationNumber | Skal være sat Skal være | ActingUserCpr | responsibleUserRegistrationNumber | Skal være sat Skal være forskellige fra actingUserCivilRegistrationNumber | ResponsibleUserCpr | ||
orgUsingIDType | Verificeres ikke - må gerne være der | ||||||
orgUsingIDName | Verificeres ikke - må gerne være der | ||||||
systemName | Verificeres ikke - må gerne være der systemName fra actor mappes | systemName | |||||
systemVersion | Verificeres ikke - må gerne være der | ||||||
userAuthorizationCode | Verificeres ikke - må gerne være der | ||||||
vha. actinguser fra hsuid og responsible user fra hsuid slåes den påstående hsuid relation op | relation | ||||||
Actor cvr skal være whitelisted | |||||||
...
- Alle roller, hvis hsuid header medsendt:
- hsuid rollen skal matche den på security context
- hsuid acting user cpr skal matche den aktøren
- Borger på vegne af
- Der skal være en relation
- Sundhedsfaglig og Sundhedsfaglig på vegne af
- hsuid authorisationkode skal matche den på aktøren
- Den endelige brugertype må ikke være af typen System
Brugertyper og adgangsscenarier
DDS Registry understøtter følgende DDS brugertyper med følgende overordnede muligheder:
- Borger: Borgere kan tilgå egne data, eller data på andre borgere, som de har en passende relation til (børn, fuldmagt)
- Sundhedsperson: Sundhedspersoner kan tilgå data på borgere, hvis der er hjemmel til dette (behandlingsrelation, ikke-negativt samtykke, værdispring)
- Ikke-autoriseret sundhedsprofessionel: Myndighedspersoner uden lægefaglig autorisation, men som har brug for at tilgå data på borgere (f.eks. adgang til aftaler for kommunale medarbejdere)
De forskellige DDS brugertyper giver anledning til en række adgangsscenarier dvs. måder, hvorpå disse kan tilgå DDS Registry for fremsøgning af dokumenter for et givent CPR nummer.
...
ID
...
Som en...
...
ønsker jeg at..
...
ved anvendelse af værdispring
...
så jeg...
...
Brug af eksterne services ved adgangsscenarier
De forskellige adgangsscenarier giver anledning til forskellige anvendelser af eksterne services. Disse anvendelser er opsummerert i nedenstående skema:
...
Samtykkeservice
...
MinLog Service
...
Behandlingsrelationservice
...
Kaldes for at se, om der skulle foreligge et negativt samtykke mod den sundhedspersonen eller den organisations, som vedkommende repræsenterer.
I tilfældet S3, hvor der arbejdes på vegne af en anden, så er det den sundhedsperson og organisation, der arbejdes på vegne af, der tjekkes.
Ved værdispring springes samtykketjek over
...
Ja
I tilfældet S3, hvor der arbejdes på vegne af en anden, så er det den sundhedsperson og organisation, der arbejdes på vegne af, der logges.
...
Ja
I tilfældet S3, hvor der arbejdes på vegne af en anden, så er det den sundhedsperson og organisation, der arbejdes på vegne af, der tjekkes.
...
Kaldes med USPECIFICERET. Samtykke tjekkes herved altid udfra forsigtighedsprincippet: Det tjekkes, om den relevante borger har givet negativt samtykke mod nogen person og eller organisation overhovedet (se SDS-2503 - Adgang for ikke aut. sundhedspersoner på DDS via trust ARKIVERET for detaljer)
...
Ja. Kaldes med '-' i stedet for autorisationskode. Se i øvrigt SDS-2990 - Ikke autoriserede brugere skal fremsende bindestreg til BRS som autorisationskode ARKIVERET for detaljer.
Brug af eksterne services ved adgangsscenarier
De forskellige adgangsscenarier giver anledning til forskellige anvendelser af eksterne services. Disse anvendelser er opsummerert i nedenstående skema:
Samtykkeservice | MinLog Service | Behandlingsrelationservice | |
|---|---|---|---|
| B1 + B2 | Ikke relevant (samtykkeservice omhandler kun samtykke i forhold til sundhedspersoner og disses organisationer) | Logges ikke | Ikke relevant |
| S1 + S3 | Kaldes for at se, om der skulle foreligge et negativt samtykke mod den sundhedspersonen eller den organisations, som vedkommende repræsenterer. I tilfældet S3, hvor der arbejdes på vegne af en anden, så er det den sundhedsperson og organisation, der arbejdes på vegne af, der tjekkes. Ved værdispring springes samtykketjek over | Ja I tilfældet S3, hvor der arbejdes på vegne af en anden, så er det den sundhedsperson og organisation, der arbejdes på vegne af, der logges. | Ja I tilfældet S3, hvor der arbejdes på vegne af en anden, så er det den sundhedsperson og organisation, der arbejdes på vegne af, der tjekkes. |
| IA-1 | Kaldes med USPECIFICERET. Samtykke tjekkes herved altid udfra forsigtighedsprincippet: Det tjekkes, om den relevante borger har givet negativt samtykke mod nogen person og eller organisation overhovedet (se SDS-2503 - Adgang for ikke aut. sundhedspersoner på DDS via trust ARKIVERET for detaljer) | Ja | Ja. Kaldes med '-' i stedet for autorisationskode. Se i øvrigt SDS-2990 - Ikke autoriserede brugere skal fremsende bindestreg til BRS som autorisationskode ARKIVERET for detaljer. |
Adgangsscenarier og DGWS
Ovenstående adgangsscenarier bestemmes i DDS Registry ud fra bruger- og kaldkonteksten i DGWS - nemlig SOSI Id-kort og HSUID headeren.
DDS Registry bestemmer DDS brugertypen udfra kaldkonteksten: Nærmere bestemt udfra HSUID-headerens attributter UserType samt ResponsibleUserAuthorizationCode. Disse kan antage een af følgende værdier brugertyper:
...
Hver brugertype kræver, at der i det indgående kald findes et gyldigt SOSI id-kort. I det nedenstående gennemgåes de forskellige krav til fremskaffelsen af SOSI-idkortet for de forskellige brugertyper.
Borger (B1+B2)
Sundhedsperson (S1+S3)
Ikke-autoriseret bruger (IA-1)
Borger (B1+B2)
Sundhedsperson (S1+S3)
Ikke-autoriseret bruger (IA-1)
Bestemmes i sikkerhedshandleren for komponenten. En OIO IDWS billet betyder, at brugeren er en borger.
Hvis SOSI Idkort benyttes, så bestemmes brugertypen udfra HSUID headers attribut nsi:UserType (værdi 'nsi:Citizen')
Niveau 3 (F/VOCES - dette kræver særskilt aftale om anvendelse, jf Dokumentdelingsservice (DDS))
Niveau 4 (MOCES)
Hvis OIO IDWS anvedes, så trækkes cpr nummeret ud af IDWS billetten.
Hvis DGWS benyttes, så bestemmes det udfra HSUID headers attribut nsi:ActingUserCivilRegistrationNumber
Bestemmes udfra HSUID headers attribut nsi:ActingUserCivilRegistrationNumber
For sekrætærer (S3) er det den person, der arbejdes på vegne af, der er relevant. Denne findes i HSUID headers attribut nsi:ResponsibleUserCivilRegistrationNumber
For scenariet S1 vil værdien af de to HSUID header attributter være ens.
Adgangsscenarier og tests
...
- Integrationstestene i DDS er delt ind i testklasser, der dækker de ovenstående scenarier. De er navngivet med scenariernes ID roller som prefix og en efterfølgende beskrivende tekst, så sammenhængen med dokumenationen bevares.
- Alle testcases i integrationstestene er implementeret som metodercucumber test, der har en titel, der i sin anvendelse forklarer intentionen med testen.
- Alle testcases er bygge op efter samme skabelon med kommentarer, der klart som klart definerer præconditions (Given), aktivering af funktion (When) og tjek af svar/postconditions (Then). Se f.eks. Martin Fowler: Given-When-Then
Således indeholder integrationstestsuiten følgende:
Således indeholder integrationstestsuiten følgende:
- b1: borger_soeg_egne.feature
- b2: borger_soeg_andre_fuldmagt.feature
- b2: borger_soeg_andre.feature
- S1: sf_soeg_aftaler.feature
- S1: sf_soeg_alle_dokumenttyper.feature
- S1: sf_soeg_labsvar.feature
- S3: <der findes ingen test>
- IA1: ia_ingen_national_rolle.feature
- IA1: ia_laege_sekraetaer.feature
- IA1: ia_sundhedsassistent.feature
- B1BorgerVocesIntegrationsTest
- B2BorgerPaaVegneAfVocesIntegrationsTest
- S1SundhedspersonMocesIntegrationTest
- S1SundhedspersonVocesIntegrationTest
- S3SundhedspersonPaaVegneAfMocesIntegrationsTest
- S3SundhedspersonPaaVegneAfVocesIntegrationsTest
- IA1IkkeAutoriseretBrugerLaegeSekretaerIntegrationsTest
- IA1IkkeAutoriseretBrugerSundhedsAssistentIntegrationsTest
- IA1IkkeAutoriseretBrugerUdenRollerIntegrationsTest
For afvikling af integrationstests henvises til dokumentet DDS - Testvejledning.
...