Versions Compared

Key

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

...

Sundhedsfaglig >>

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






OrganizationCvrId fra actor


systemName


Verificeres ikke - må gerne være der

systemName fra actor mappes

systemName fra actor


systemVersion


Verificeres ikke - må gerne være der



userAuthorizationCode


Skal være sat og valideres med responsible user

onbehalfOf.AuthorizationCode





onbehalfOf.EducationCode fra autreg db tabel





EducationCode fra actor

AuthorizationCode (EducationCode sættes i forbindelse med valideringen)


Ikke-autoriseret bruger >>

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






OrganizationCvrId fra actor


systemName


Verificeres ikke - må gerne være der

systemName fra actor mappes

systemName fra actor


systemVersion


Verificeres ikke - må gerne være der



userAuthorizationCode


Skal være sat og valideres med responsible user

onbehalfOf.AuthorizationCode 





onbehalfOf.EducationCode fra autreg db tabel





NationalRole fra actor

AuthorizationCode (EducationCode sættes i forbindelse med valideringen)


Borger  >>

Brugertypen Borger på vegne af

VerifikationMapning til DDS ServiceActor

cprFromPayload

userType

Er givet fra securityContext pga. rollen borger

Brugertypen: Borger på vegne af





actingUser fra securityContext.


ActingUserCpr




cprFromPayload skal være sat og være  anderledes end actingUser.

ResponsibleUserCpr (fra payload)


systemName


systemName fra actor mappes

systemName fra actor







userAuthorizationCode


Verificeres ikke - må gerne være der



Forældremyndighed:


vha. actinguser fra security context og cprFromPayload findes en relation

Relation (childCustodyHolder, payloadCprValue)

...

De forskellige brugertyper bliver beriget med følgende:

  • Sundhedsfaglig alm og på vegne af:
    • organisationIdtype fra hsuid
    • organisationId fra hsuid
    • titel bliver sat til at være educationCode (anvendes i forbindelse med MinLog)
  • Ikke-autoriseret bruger
    • organisationIdtype fra hsuid
    • organisationId fra hsuid
    • hvis ingen national rolle sættes rollen "ingen_idkort_rolle"
    • titel bliver sat til at være national rolle - ellers anvendes konfigurerbar default værdi (anvendes i forbindelse med MinLog)værd
  • Sundhedsfaglig på vegne af:
    • organisationIdtype fra hsuid
    • organisationId fra hsuid
    • titel bliver sat til at være educationCode eller national rolle afhængig af den brugertype man arbejder på vegne af har
    • onbehalfof titel bliver sat til educationCode
  • Borger
    • titel bliver sat med konfigurerbar default værdi (anvendes i forbindelse med MinLog)


Titel anvendes i forbindelse med MinLog, og bliver i forbindelse med berigelsen konverteret til en mere sigende tekst end educationCode/national rolle.


Brugertyperne bliver til Brugertyperne bliver til sidst valideret for:

  • 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
    • hsuid OrganizationId valideres mod Sores, hvis organizationIdSource er SOR
  • Ikke-autoriseret bruger
    • hsuid OrganizationId valideres mod Sores, hvis organizationIdSource er SOR
  • Den endelige brugertype må ikke være af typen System

...

ITI-18: foretag auditlogning af patient-id, bruger-id, på-vegne-af-id samt hsuid-header og for hver DocumentEntry (DE) i returneret svar (der kan være frafiltreret metadata pga. samtykker): DE.uniqueId, DE.repositoryUniqueId, DE.homeCommunityId, DE.typeCode.

ITI-43: foretag auditlogning af patient-id, bruger-id, på-vegne-af-id samt huisd-header og for hver DocumentResponse (DR) i returneret svar (der kan være frafiltreret metadata pga. samtykker): DR.uniqueId, DR.repositoryUniqueId, DR.homeCommunityId.

...

  • Validering af forespørgsel: valideres på vej ind i servicen og anvender får en fejl uden der faktisk foretaget søgning. Undtagelse: frabedelsescheck effektueres først efter fremsøgning.
  • Opsæt af muligheder: fremfinding af det grundlag, som dokumenterne skal søges i
  • Filtering af muligheder: filtrering/begrænsning af det datagrundlag, som søges i.
  • Filtrering af dokumenter: når søgningen er foretaget, kan dokumenter, som ikke må returneres blive filtreret fra


Gliffy Diagram
displayNamekonfigurationsoverblik
namekonfigurationsoverblik
pagePin14

Figur: konfigurationsoverblik

...

  • Id: id og navn som konfigurationen er kendt under
  • Formål: formålet med konfigurationen.
  • Brugertype: hvilke brugertyper gælder konfigurationen for. Der anvendes brugertyperne fra sourcekoden, som kan mappes som følger
    • Citizen - Borger
    • CitizenOnBehalfOf - BorgerPåVegneAf med undertyperne
      • proxyHolder - fuldmagtshaver
      • childCustodyHolder - forældremyndighedshaver
    • HealthCareProfessionalWithAuthorization - Sundshedsfaglig med authorisation
    • HealthCareProfessionalWithoutAuthorization - Sundshedsfaglig uden authorisation
    • HealthCareProfessionalOnBehalfOf - Sundhedsfaglig på vegne af
  • Aktivering: hvor "møder" anvenderen begrænsningen. Mulighederne er som angivet i ovenstående figur.
  • Kald: Er der tale om fremsøgning i registry (iti18) eller hentning i repository (iti43)
  • Muligheder: hvilke konfigurationsmuligheder er der, og hvor er det defineret.
  • Udtryk: hvordan kommer begrænsningen til udtryk? Fejlbesked, filtrering etc
    • SoapFault: bruger får en "hård" fejl (intet ihe svar og dermed ingen dokumenter)
    • Fejl: brugeren får en fejl i ihe svaret og 0 eller flere dokumenter
    • Advarsel: brugeren får en eller flere advarsler i ihe svaret og 0 eller flere dokumenter
    • Alt ok: brugeren får 0 eller flere dokumenter
  • Faktisk konfiguration: link til hvordan drift faktisk er sat op


IdFormål BrugertypeAktiveringKaldMulighederUdtrykFaktisk konfiguration








DDK10 Aktør modellering og andet "teknisk" request validering:

Kontrol  af brugertyper og deres indhold.

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization

HealthCareProfessionalWithoutAuthorization

Citizen

CitizenOnBehalfOf variant

  • proxyHolder - vha. fuldmagtsstreng
  • childCustodyHolder
Validering af forespørgsel

ITI18

ITI43

Fast defineret i Aktørmodelleringen  (ServiceActorProvider) i servicen

SoapFault med fejlbeskeden

  • flere forskellige fejlbeskeder afhængig af problemet
Se DDS - Brugerhistorier
DDK11 Aktør søge parameter validering:

At begrænse specifikke brugertyper fra specifikke søge værdier.

CitizenOnBehalfOf variant

  • proxyHolder - vha. fuldmagtsstreng
  • childCustodyHolder
Validering af forespørgselITI18

I klassen DDSRegistryQueryImpl kaldes  DDSActorQueryParameterValidator der undersøger om en given brugertype, anvender lovlige værdier i søgeparametrene.

Ved opslag i db tabel actor_query_parameter_configuration:

  • typecode fra req skal matche db
  • formatcode fra req skal matche hvis udfyldt i db

For Fuldmagt gælder yderligere:

  • fuldmagtssteng fra req skal matche db privilege

SoapFault, med en af følgende fejlbeskeder:

  • En borger med fuldmagt skal angive typecode som søgeparameter
  • De(n) anvendte fuldmagtstreng(e) tillader ikke de anvendte søgeparametre værdier for typecode og formatcode

  • En borger med forældremyndighed skal angive typecode som søgeparameter
  • En borger med forældremyndighed må ikke søge med de anvendte søgeparametre værdier for typecode og formatcode
Se DDS - Brugerhistorier
DDK12 Frabedelser - userCheck:

Kontrol af dataadgang

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization

HealthCareProfessionalWithoutAuthorization

Validering af forespørgsel

ITI18

ITI43

I klasserne DDSRegistryQueryLogic og DDSRetrieveDocumentLogic laves der kald til samtykke servicen, hvis der ikke er anvendt værdispring.

Fejl i almindeligt response med fejlbeskeden:

  • urn:dk:nsi:Consent Filter Applied
DDK20 Backend registries:Opsæt af registriesnaOpsæt af mulighederITI18
Afhængig af den enkelte borgeres person (who) frabedelser. Disse kan ses på Sundhed.dk for den pågælende borger, i NADM eller via DRG (kun testmijøer)








DDK20 Backend registries:

Opsæt af registriesnaOpsæt af mulighederITI18I klassen DocumentRegistryFinderImpl findes de registries, det er muligt at lave søgninger i. Dette gøres ved at hente de registries i db tabel documentregistry hvor documentregistryactive er truenaSe Dokumenttyper interne og eksterne
DDK21 Backend repositories:

Opsæt af repositoriesnaOpsæt af mulighederITI43Fremfinder alle repositories i db
tabeldocumentsource
tabel documentsource som er relevante for de dokumenter, som ønskes hentet.naSe Dokumenttyper interne og eksterne








DDK30 Forespørge dokumenttype relevante registries:

Begrænsning i opslag pga performance og fejlmulighedernaFiltrering af mulighederITI18

I klassen DocumentRegistryFinderImpl hentes registries fra db documentregistry og DocumentTypeConfiguration kaldes

DocumentTypeConfiguration

, som ved opslag i db tabel documenttype_configuration

tjekkes

tjekker hvert registry om relevant:

  • documentregistryid fra db documentregistry skal matche
  • typecode fra req skal matche
  • Hvis ingen typecode i req eller ingen records fundet for registry
tillades
  • medtages registry i søgningen

Hvis filtrering giver en tom liste af registries så SoapFault med fejlbeskeden

  • "Ingen aktive registries"
Se Dokumenttyper interne og eksterne
DDK31 Forespørge querytype relevante registries:

Begrænsning
i
forskellige måder at lave  opslag pga. performance og fejlmuligheder.naFiltrering af mulighederITI18

I klassen DocumentRegistryFinderImpl hentes registries fra db documentregistry og RegistryFeatureConfiguration kaldes

RegistryFeatureConfiguration

, som ved opslag i db tabel feature_configuration 

tjekkes

tjekker hvert registry om relevant:

  • documentregistryid fra db documentregistry skal matche
  • featurename quertytype fra request skal matche
  • enabled skal være 1
  • Hvis ingen match fravælges registry

Hvis et registry fravælges så en advarsel i almindeligt response med advarselsteksten:

  • i søgningen

Tabellen fortæller om en eller flere af nedenstående queries understøttes: 

FIND_DOCUMENTS_QRY, 

GET_DOCUMENTS_QRY,

FIND_DOCUMENTS_BY_REFERENCE_QRY

Der henvises til https://profiles.ihe.net/ITI/TF/Volume2/ITI-18.html#3.18 for en beskrivelse af de forskellige queries

Hvis et registry fravælges så en advarsel i almindeligt response med advarselsteksten:

  • Registryname
Registryname
  • og XDSUnknownStoredQuery

Hvis filtrering giver en tom liste af registries så SoapFault med fejlbeskeden

  • "Ingen aktive registries"
DDK40 Frabedelser - datacheck:Kontrol af dataadgang

Afhænger af hvor registry befinder sig. Som udgangspunkt understøtter alle NSP registries alle de tre nævnte queries, NSP registries er dem som er markeret med NXRG i listen: Dokumenttyper interne og eksterne

Øvrige registries understøtter kun: 

FIND_DOCUMENTS_QRY









DDK42 Nationale rolle check:

Kontrol af dataadgang

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization
HealthCareProfessionalWithoutAuthorizationFiltrering af dokumenterITI18
I klassen DDSRegistryQueryLogic  kaldes ConsentFilterImpl som laver kald til samtykke servicen, hvis der ikke er anvendt værdispring.

Klassen DDSRegistryQueryLogic kalder TrustedRoleFilter, som tjekker brugerens rolle mod filen trusted_roles.txt

Der gives kun adgang til de typecodes er angivet for rolle

Er typecode "*" tillades alle typecodes

Fejl

Advarsel

i almindeligt response med

advarselstekten

fejlbeskeden:

  • urn:dk:nsi:
Consent Filter Applied
  • Unauthorized Role
  • Dokumenter
der er frabedelser på
  • er filtreret fra
Filtrering i dokumentITI43I klassen DDSRetrieveDocumentLogic laver kald til samtykke servicen, hvis der ikke er anvendt værdispring.

Fejl i almindeligt response med fejlbeskeden:

  • urn:dk:nsi:Consent Filter Applied
  • Dokumentindhold der er frabedelser på er filtreret fra
Se DDS - Brugerhistorier
DDK43 Whitelist af cvr/system:

Kontrol af dataadgang

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization

DDK41 Frabedelser - datacheck udvidet:Kontrol af dataadgang

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization

HealthCareProfessionalWithoutAuthorization

Filtrering af dokumenterITI18

Klassen DDSRegistryQueryLogic

kalder PrecautionaryFilter

kalder  WhitelistBasedOnMetadataFilter, som hvis

der bare er een frabedelse. Her spærres for alle dokumenter med typecodes konfigureret i filen precautionary_filter.txt

Advarsel i almindeligt response med advarselsteksten:

  • urn:dk:nsi:Consent Filter Applied
  • Dokumenter er filtreret fra
DDK42 Nationale rolle check:Kontrol af dataadgangHealthCareProfessionalWithoutAuthorizationFiltrering af dokumenterITI18

Klassen DDSRegistryQueryLogic kalder TrustedRoleFilter, som tjekker brugerens rolle mod filen trusted_roles.txt

Der gives kun adgang til de typecodes er angivet for rolle

Er typecode "*" tillades alle typecodes

whitelisting er slået til (whitelisted.document.metadata.active) og der ikke er lavet værdispring udføre følgende logik:

Ved opslag i db tabellerne, whitelist_config_documentmetadata,  whitelist_config_documentmetadata_typecode, whitelist_config_documentmetadata_eventcode og whitelist_config_documentmetadata_practicesettingcode tjekkes de fremfundne dokumenters metadata for, om de er whitelistet  med

  • cvr fra request* skal matche
  • systemnavn fra request* skal matche
  • typecode fra request skal matche, er udfyldt i db
  • eventcode fra request skal matche hvis udfyldt i db
  • practicesettingcode fra request skal matche hvis udfyldt i db


*cvr: securityContext.getOrganisation().get().getIdentifier(), hvis formatet er CVR
*systemnavn: securityContext.getClient().get().getName().get()


2025-07-02: ikke merget ind på main branch i skrivende stund

Fejl i almindelig

Fejl i almindeligt

response med fejlbeskeden:

  • urn:dk:nsi:
Unauthorized Role
  • Metadata Whitelist Filter Applied
  • Dokumenter er filtreret fra
Endnu ikke defineret
DDK40 Frabedelser - datacheck
DDK43 Whitelist af cvr/system
:

Kontrol af dataadgang

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization

HealthCareProfessionalWithoutAuthorization

Filtrering af dokumenterITI18
Klassen DDSRegistryQueryLogic kalder  WhitelistBasedOnMetadataFilter, som hvis whitelisting er slået til (whitelisted.document.metadata.active) og
I klassen DDSRegistryQueryLogic  kaldes ConsentFilterImpl som laver kald til samtykke servicen, hvis der ikke er
lavet værdispring udføre følgende logik:

Ved opslag i db tabellerne, whitelist_config_documentmetadata,  whitelist_config_documentmetadata_typecode, whitelist_config_documentmetadata_eventcode og whitelist_config_documentmetadata_practicesettingcode tjekkes de fremfundne dokumenters metadata for, om de er whitelistet  med

  • cvr fra request* skal matche
  • systemnavn fra request* skal matche
  • typecode fra request skal matche, er udfyldt i db
  • eventcode fra request skal matche hvis udfyldt i db
  • practicesettingcode fra request skal matche hvis udfyldt i db

*cvr: securityContext.getOrganisation().get().getIdentifier(), hvis formatet er CVR
*systemnavn: securityContext.getClient().get().getName().get()

2025-07-02: ikke merget ind på main branch i skrivende stund

anvendt værdispring.

Advarsel i almindeligt response med advarselstekten:

  • urn:dk:nsi:Consent Filter Applied
  • Dokumenter der er frabedelser på er filtreret fra
Afhængig af den enkelte borgeres data (what) frabedelser. Disse kan ses på Sundhed.dk for den pågælende borger, i NADM eller via DRG (kun testmijøer)
Filtrering i dokumentITI43I klassen DDSRetrieveDocumentLogic laver kald til samtykke servicen, hvis der ikke er anvendt værdispring.

Fejl i almindeligt response med fejlbeskeden:

  • urn:dk:nsi:Consent Filter Applied
  • Dokumentindhold der er frabedelser på er filtreret fra
Afhængig af den enkelte borgeres data (what) frabedelser. Disse kan ses på Sundhed.dk for den pågælende borger, i NADM eller via DRG (kun testmijøer)
DDK41 Frabedelser - datacheck udvidet:

Kontrol af dataadgang

HealthCareProfessionalOnBehalfOf

HealthCareProfessionalWithAuthorization

HealthCareProfessionalWithoutAuthorization

Filtrering af dokumenterITI18Klassen DDSRegistryQueryLogic kalder PrecautionaryFilter, hvis der bare er een frabedelse. Her spærres for alle dokumenter med typecodes konfigureret i filen precautionary_filter.txt

Advarsel i almindeligt response med advarselsteksten

Fejl i almindelig response med fejlbeskeden

:

  • urn:dk:nsi:
Metadata Whitelist
  • Consent Filter Applied
  • Dokumenter er filtreret fra
Afventer afklaring












Generel struktur af invoker

...