Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  • 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...

B1Borgerfremsøge dokumentreferencer til egne dokumenterNejkan se mine egne data
B2Borger på vegne affremsøge dokumentreferencer til en anden borgers dokumenterNejkan se data på denne person, som jeg har en relation til
S1Sundhedsfaglig med autorisationsidfremsøge dokumentreferencer til en borgers dataJa / Nejkan 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 dataJa / Nejkan se data på denne borger
IA-1Ikke-autoriseret brugerfremsøge dokumentreferencer til en borgers dataNejkan 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

...

Brugertypen: BorgerVerifikationMapning til MinSpærring ServiceActorSecurityContextTicketAudience

Matche audience som findes som konfiguration i DDS

audienceValidityEr validMessageVerificeres ikke - må gerne være derActingUserUserType

Skal være Citizen

Brugertypen: BorgerIdentifierFormat

Skal være der og Skal være CPR

Identifier

Skal være sat

ActingUserCprGivenNameVerificeres ikke - må gerne være derSurNameVerificeres ikke - må gerne være derCredentialsVerificeres ikke - må gerne være derPersistentUniqueKeyVerificeres ikke - må gerne være derPrincipalUserMå ikke være derOrganisation

Verificeres ikke - må gerne være der

ClientNameVerificeres ikke - må gerne være dersystemNameBrugertypen: Sundhedsfaglig
VerifikationMapning til MinSpærring ServiceActor
SecurityContextTicketAudience
Verificeres ikke - må gerne være der 

Matche audience som findes som konfiguration i DDS

audience


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserType

Skal være

HealthCareProfessional

Citizen

Brugertypen:
Sundhedsfaglig
Borger


IdentifierFormat

Skal være der og Skal være CPR




Identifier

Skal være sat

ActingUserCpr


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


Credentials
.NationalRole
Verificeres ikke - må gerne
være derCredentials.AuthorizationCodeSkal
være der
AuthorizationCode



PersistentUniqueKeyVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

Organisation
Identifier

Verificeres ikke - må gerne være der

identifierFormat

Skal være der og skal være CVR

Verificeres ikke - må gerne være der



ClientNameVerificeres ikke - må gerne være dersystemName


Brugertypen:
Ikke-autoriseret bruger
SundhedsfagligVerifikationMapning til
DDS
MinSpærring ServiceActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthCareProfessionalBrugertypen: Sundhedsfaglig


IdentifierFormat

Skal være CPR




Identifier

Skal være sat

ActingUserCpr


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


Credentials.NationalRole

Verificeres ikke - må gerne være der

, og anvendes hvis den er. Ellers anvendes "ingen rolle"NationalRole




Credentials.AuthorizationCode
Må ikke
Skal være derAuthorizationCode


PersistentUniqueKeyVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

OrganisationIdentifier

Verificeres ikke - må gerne være der




identifierFormat

Skal være der og skal være CVR

Verificeres ikke - må gerne være der



ClientNameVerificeres ikke - må gerne være dersystemName


Må ikke derMå ikke

Hvis brugertypen transformeres til en anden type, tjekkes at dette cvr nummer er whitelistet sammen med subject serial number.

cvr
Brugertypen: SystemIkke-autoriseret brugerVerifikationMapning til DDS ServiceActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthCareProfessionalBrugertypen: SystemPrincipalUserSundhedsfaglig


IdentifierFormat

Skal være CPR




Identifier

Skal være sat

ActingUserCpr


GivenNameVerificeres ikke - må gerne være der


OrganisationIdentifierSurNameVerificeres ikke - må gerne være der


Credentials.NationalRoleMå gerne være der, og anvendes hvis den er. Ellers anvendes "ingen rolle"NationalRole


Credentials.AuthorizationCodeMå ikke være der


PersistentUniqueKeyVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

OrganisationIdentifier

Verificeres ikke - må gerne være der




identifierFormat

Verificeres ikke - må gerne være der



ClientNameVerificeres ikke - må gerne være dersystemName
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
macroId5bb5c4e2-da64-4477-8e65-7aebeae8e0c8
displayNamerolletransformering
namerolletransformering
pagePin4


System >>

Brugertypen Sundhedsfaglig

VerifikationMapning til DDS ServiceActor

HSUID Header

userTypeSkal være der og være HEALTHCAREPROFESSIONAL

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: SystemVerifikationMapning til DDS ServiceActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeMå ikke være derBrugertypen: System

PrincipalUser
Må ikke være der

OrganisationIdentifier

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
systemName

Verificeres ikke - må gerne være der

systemName fra actor mappes

systemNamesystemVersion


ClientNameVerificeres ikke - må gerne være der

userAuthorizationCode

Skal være sat og valideres  med actingUser

AuthorizationCodeActor cvr skal være whitelisted
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
macroId5bb5c4e2-da64-4477-8e65-7aebeae8e0c8
displayNamerolletransformering
namerolletransformering
pagePin4



valideres responsibleUser

System >>

Brugertypen Sundhedsfaglig på vegne af

VerifikationMapning 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  med

actingUser

AuthorizationCode




Actor cvr skal være whitelisted



responsible user

Sundhedsfaglig System >>

Brugertypen Sundhedsfaglig på vegne af

VerifikationMapning 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

responsibleUser

AuthorizationCode




Actor cvr skal være whitelisted



Sundhedsfaglig Ikke-autoriseret sundhedsprofessionel >>

Brugertypen Sundhedsfaglig på vegne af

VerifikationMapning 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


actingUser fra securityContext.

Borger  Ikke-autoriseret bruger >>

Brugertypen Borger Sundhedsfaglig på vegne af

VerifikationMapning 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


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

VerifikationMapning 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 

VerifikationMapning 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
(kun værge/forældremyndighed, ikke fuldmagt)

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 Image RemovedSDS-2503 - Adgang for ikke aut. sundhedspersoner på DDS via trust ARKIVERET for detaljer)

...

Ja. Kaldes med '-' i stedet for autorisationskode. Se i øvrigt Image RemovedSDS-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 + B2Ikke relevant (samtykkeservice omhandler kun samtykke i forhold til sundhedspersoner og disses organisationer)Logges ikkeIkke 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 Image AddedSDS-2503 - Adgang for ikke aut. sundhedspersoner på DDS via trust ARKIVERET for detaljer)

Ja

Ja. Kaldes med '-' i stedet for autorisationskode. Se i øvrigt Image AddedSDS-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)

Brugertypen

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')

Bestemmes udfra HSUID headers attribut nsi:UserType (værdi 'nsi:HealthcareProfessional')Bestemmes udfra HSUID headers attribut nsi:UserType (værdi 'nsi:HealthcareProfessional' men uden autorisationsid)SOSI id-kort

Niveau 3 (F/VOCES - dette kræver særskilt aftale om anvendelse, jf Dokumentdelingsservice (DDS))

Niveau 4 (MOCES) 

Niveau 4 (MOCES)OIO IDWSUnderstøttetIkke understøttetIkke understøttetBrugerens cpr nummer

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.

Bestemmes udfra HSUID headers attribut nsi:ActingUserCivilRegistrationNumberBrugerens autorisationskodeIkke relevantBestemmes udfra HSUID headers attribut nsi:ResponsibleUserAuthorizationCodeIkke relevantBrugerens rolleIkke releavntIkke relevantBestemmes ud fra national SEB rolle og læses i SOSI Id-kortet under attributten 'nsi:UserRole'

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.

...