Dette dokument er rettet mod systemadministratorer og driftspersoner, som skal kunne håndtere driftsmæssige aspekter af komponenten.
Driftsvejledningen indeholder information om DDS Registry og Repository med hensyn til eksterne afhængigheder, standard placering af logfiler og konfigurationsfiler, og evt. krav til genstart af applikationer hvis komponenten ikke er responsiv.
I afsnit 2 (Komponenter) er beskrevet hvilke komponenter, der indgår i DDS Registry og Repository og deres forventede placering med hensyn til platform.
Afsnit 4 (Konfiguration) beskriver aktuelle konfigurationsparametre for DDS Registry henholdsvis Repository, samt eksempler på konfigurationsparameter-filer.
Afsnit 5 (Overvågning) beskriver hvorledes DDS Registry og Repository komponenterne overvåges.
I afsnit 6 (Logfiler og fortolkning af disse) er DDS Registry og Repository-relaterede logfiler beskrevet, så disse evt. kan overvåges, og tillige danne baggrund for fejlsøgning.
Beskrivelse af standard fejlsøgning og start/stop vejledning for komponenterne er beskrevet i afsnit 6 (Standard fejlsøgning).
Specielle krav til backup er beskrevet i afsnit 7 (Krav til backup m.m.), ligesom procedure ved reetablering af komponenten ud fra backup beskrives.
Læseren forventes at have kendskab til National Sundheds-IT’s platform NSP, samt generelt kendskab til WildFly applikationsserver, MySQL, samt Ubuntu Linux operativ system.
Dokumentet er oprettet med udgangspunkt i 2 separate Driftsvejledninger for registry henholdsvis repository. Den videre redigeringshistorik efter dette tidspunkt fremgår af confluence "Page History".
Definition | Beskrivelse |
|---|---|
DCC | Dekoblingskomponenten på NSP |
DDS | Dokumentdelingsservice |
DKS | DCC Konfigurations Service |
ITI | IT Infrastructure, fra Integrating the Healthcare Enterprise (IHE). |
NSI | National Sundheds-IT |
NSP | Den nationale service platform (inden for sundheds-IT) |
SHAK | Sygehusafdelingsklassifikation |
SOR | Sundhedsvæsenets organisationsregister |
STS | Security Token Service |
| AP | Almen praksis |
Alias | Beskrivelse |
|---|---|
DKS-beskrivelse | https://www.nspop.dk/display/Web3/DKS+--+DCC+Konfiguration+Service, hentet 02.09.2016. |
Dette dokument dækker følgende dokument delings komponenten (DDS) på NSP. Den består af 2 logiske komponenter:
DDS Repository
Type: Webservice
Filnavn: ddsrepository.war
Url: <serverurl>/ddsrepository
Servicecheckurl: <serverurl>/ddsrepository/servicecheck
Statusurl: <serverurl>/ddsrepository/status
Versionurl: <serverurl>/ddsrepository/version
DDS komponenterne anvender desuden ConsentVerification-servicen, MinLog Registration-servicen, Behandlingsrelationsservicen samt STS’en.
DDS registry anvender også HealthShare Document Registry servicen. Mens DDS repository gør brug af nul, et eller flere XDS repositories.
Dette afsnit beskriver den daglige drift af systemet.
DDS Registry og Repository afhænger af tilstedeværelsen af en række andre services, og ved fejl i disse vil DDS fejle tilsvarende. Disse services er:
Desuden er DDS Registry og Repository afhængig af følgende services, hvor fejl ikke bevirker fejl af DDS:
DDS Registry og Registry logger brug af værdispring til consent override loggen (ddsregistry-consentoverride.log). Denne skal kunne indsamles og der skal foretages opfølgning på indholdet af dette. Den skal derfor være tilgængelig for indsamling, og må ikke fjernes andet end i denne forbindelse.
Tjek for adgang via Trust for ikke-autoriserede sundhedspersoner bliver aktiveret, hvis property trusted.roles.filename er angivet i DDSRegistry.properties.
Hvis man ønsker at aktivere eller de-aktivere tjekket, så kræver det ændring af DDSRegistry.properties og genstart af Wildfly.
For Trust konfigurationsfilerne gælder følgende:
Filen der indeholder listen af roller, som en ikke autoriseret sundhedsperson kan få adgang til DDS med, er angivet ved property trusted.roles.filename.
Trust rollen er angive som følgende:
ROLLETEKST¤ROLLEID¤POSITIVLISTE AF DOKUMENTTYPER[,]
Tegnet ¤ bruges til at opdele linier i 3 dele:
Eksempel på indhold i fil med Trust roller:
|
DDS Registry og Repository anvender denne property fil til at mappe hvilken rolle (role), der kommer ned i minlog registreringen.
Property filen vedligeholdes her: https://git.nspop.dk/projects/TOOL/repos/nsp-role-mapping/browse/nsp-role-mapping.properties
| Property | Beskrivelse |
|---|---|
| citizen.user | Bestemmer hvilken rolle står beskrevet i minlog ved kald til DDS for borger Eksempel på værdi: Borger |
| healthcareprofessional.unknown.user | Bestemmer hvilken rolle står beskrevet i minlog ved kald til DDS for sundhedfaglig, hvor der ikke kunne bestemmes en rolle. Eksempel på værdi: Unverified role |
| childcustodyholder.user | Bestemmer hvilken rolle står beskrevet i minlog ved kald til DDS for borger med forældremyndighed Eksempel på værdi:Forældremyndighed |
| proxyholder.user | Bestemmer hvilken rolle står beskrevet i minlog ved kald til DDS for borger med fuldmagt Eksempel på værdi: Fuldmagt |
<Uddannelseskoder> | Der angives en række uddannelseskoder med kode=læsbar tekst Eksempler er: C511=Ambulancebehandler Når der logges til minlog, og rollen er en uddannelseskode, laves der mapning mellem kode og læsbar tekst. Findes koden ikke som mapning anvendes den oprindelige kode. |
| <Nationale Roller (NSP)> | Der angives en række nationale roller med rolle=læsbar tekst Eksempler er: urn:dk:healthcare:national-federation-role:code:41001:value:SundAssistR1=Sundhedsstamkort-Læser Når der logges til minlog, og rollen er en national rolle, laves der mapning mellem rolle og læsbar tekst. Findes rollen ikke som mapning anvendes den oprindelige rolle. |
Hvis der er ændringer til konfigurationsfilerne for adgang via Trust, så skal WildFly genstartes før ændringerne er aktive.
Komponenterne afvikles i et docker-compose setup, som ligger under https://svn.nspop.dk/svn/components/dds/trunk/compose.
En række af DDS registry og DDS repositorys properties har samme navne og anvendelse. Derfor beskrives disse sammen nedenfor. Efterfølgende beskrives de properties, som adskiller sig for de 2 komponenter.
Grundlæggende konfiguration foregår ved redigering i filerne
I filerne skal følgende properties være definerede. Bemærk kolonnerne "Reg" og "Rep" der angiver med 'x' om propertien kan anvendes for registry henholdsvis repository properties filen.
Bemærk at overstregede properties ikke længere indlæses af DDS Registry, men er hardcodet som følge af ændring i DGWS håndtering. Værdierne skal stadig være tilgængelige i properties filen.
Property | Reg | Rep | Beskrivelse |
|---|---|---|---|
idcard.version | x | x | Servicen afviser kald, hvor ID-kort i Security-header ikke har versionsnummer opgivet som værdien af denne property. Angives til 1.0.1. |
sts.test.mode | x | x | Angiver med værdien true at servicen benytter test-STS. Værdien skal være ’false’ i drift, hvorved den rigtige SOSI-STS anvendes. |
log.config.file | x | x | Angiver placering af log4j properties.KIT |
client.consentverification.properties | x | x | Angiver placering af properties til kald af Samtykkeverifikationsservicen. |
client.minlogregistration.properties | x | x | Angiver placering af properties til kald af MinLog Registreringsservicen. |
client.treatment.relation.properties | x | x | Angiver placering af properties til kald af behandlingsrelationsservicen. |
treatment.relation.service.invoke | x | x | Angiver med værdien true, at behandlingsrelationsservicen skal kaldes. Værdien false bevirker, at behandlingsrelationsservicen ikke kaldes. |
sts.keystore | x | x | Keystore, der indeholder DDS Registrys/Repository funktionscertifikat |
sts.keystore.password | x | x | Password til sts.keystore |
sts.endpoint | x | x | Endpointet, hvor DDS Registry/Repository skal trække sit SOSI IDkort på baggrund af sts.keystore |
idcard.subject.id.type | x | x | Subjecttype for IDKortet |
idcard.subject.id | x | x | Subjectid for IDKortet |
idcard.subject.name | x | x | Subjectnavn for IDKortet |
idcard.level | x | x | Sikkerhedsniveau for IDkortet |
idcard.system.name | x | x | Systemnavn i IDkortet |
whitelisted.level3.cvrs | x | x | Liste (kommasepareret) af whitelistede CVR numre og certifikater som DDS'en tillader kald med niveau 3 Idkort fra (se afsnit nedenfor vedr. whitelisting for detaljer vedr. format) |
whitelisted.document.metadata.active | x | Angiver om whitelisting vha. metadata ser aktiveret. Se beskrivelse i senere afsnit. Default værdi er true | |
whitelisted.document.metadata.refresh.duration | x | Angiver hvor ofte whitelisting vha. metadata konfiguration skal indlæses fra databasen. Default værdi er PT60M | |
documenttype.configuration.refresh.duration | x | Angiver hvor ofte documenttype konfiguration skal indlæses fra databasen. Default værdi er PT60M | |
feature.configuration.refresh.duration | x | Angiver hvor ofte feature konfiguration skal indlæses fra databasen. Default værdi er PT60M | |
dds.citizen.powerofattorney.privileges | x | x | Det fuldmagtsprivilegie, der tillader at en borger tilgår en anden borgers data via DDS |
childCustody.age.limit | x | x | Angiver aldersgrænse for hvornår en borger ikke længere kan claime forældremyndighed på et barn Default værdi er 15 |
client.documentregistry.properties | x | Angiver placering af properties til kald af det nationale registry (NXRG) samt andre bagvedliggende registry services. | |
registry.invoker.use.fastinfoset | x | Angiver med værdien true, at servicen skal tilbyde anvendelse af Fast Infoset ved kommunikation med XDS Registries. Ved værdien false foregår kommunikationen med vanlig XML. | |
minlog.query.default | x | x | Teksten der sendes til MinLog registreringsservicen, når en sundhedsperson laver opslag/dataudtræk.*1 |
minlog.query.consentoverride | x | x | Teksten der sendes til MinLog registreringsservicen, når en sundhedsperson laver opslag/dataudtræk med tilsidesættelse af samtykketjek (værdispring).*1 |
minlog.query.childcustodyholder | x | x | Teksten der sendes til MinLog registreringsservicen, når en borger laver opslag/dataudtræk på vegne af en anden borger, hvor vedkommende er forældremyndighedsindehaver. *1 |
minlog.query.proxyholder | x | x | Teksten der sendes til MinLog registreringsservicen, når en borger laver opslag/dataudtræk på vegne af en anden borger, hvor vedkommende er fuldmagtshaver. *1 |
minlog.query.citizen | x | x | Teksten der sendes til MinLog registreringsservicen, når en borger laver opslag/dataudtræk *1 |
ap.assigning.authorities.filename | x | Angiver fil med liste af AP, der indgår i komplekseforløb pilotprojektet. | |
ap.patient.consent.filename | x | Angiver fil med liste af patienter, der har givet samtykke til AP. | |
validation.response.ydernummer | x | Valideringsniveau for ydernummer-validering. Eksempel: WARNING, OFF. Default: WARNING | |
oid.assignment.ydernummer | x | OID for ydernummer. Default: 1.2.208.176.1.4 | |
client.documentrepository.properties | x | Angiver placering af properties til kald af dokumentkilder, hvor snitfladen til indhentning af dokument benytter Den Gode Webservice. | |
repository.retrieve.documents.processing.timeout | x | Antal millisekunder, der afventes svar fra kaldt XDS Repository med henblik på at samle svar fra eventuelt flere kaldte XDS Repositories til videre processering. Dette er ikke en timeout på kaldet til XDS Repository, der i stedet er konfigureret i documentsource-tabellen i databasen jf. afsnit 4.1.5. | |
retrieved.documents.processing.timeout | x | Antal millisekunder, der afventes færdiggørelse af efterprocessering af svar med henblik på at samle efterprocesserede svar i det samlede svar. Dette er ikke en timeout, der bevirker udelukkelse af svar. | |
dds.minlog.on.idcard.level3.enabled | x | Angiver, om DDS skal minlogge, når der kaldes med SOSI Idkort niveau 3 | |
dcc.endpoint.registry | x | Angiver ddc endpoint til SDK for registry DGWS | |
dcc.endpoint.registry.idws | x | Angiver ddc endpoint til SDK for registry IDWS | |
dcc.endpoint.repository | x | Angiver ddc endpoint til SDK for repository DGWS | |
dcc.endpoint.repository.idws | x | Angiver ddc endpoint til SDK for repository IDWS | |
treatment.relation.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra BRS servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
treatment.relation.error.tolerance | x | x | Antal fejl der tolereres fra BRS servicen før /alarm endpointet angiver servicen som ikke tilgængelig. Default er 0, dvs overstiger antal 0 kommer der en alarm. |
verification.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra Samtykke servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
verification.error.tolerance | x | x | Antal fejl der tolereres fra Samtykke servicen før /alarm endpointet angiver servicen som ikke tilgængelig. Default er 0, dvs overstiger antal 0 kommer der en alarm. |
minlog.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra Minlog servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
minlog.error.tolerance | x | x | Antal fejl der tolereres fra Minlog servicen før /alarm endpointet angiver servicen som ikke tilgængelig. Default er 0, dvs overstiger antal 0 kommer der en alarm. |
sts.keystore.expiry.warning.duration | x | x | Specificering af hvor lang tid i forvejen, der skal gives en alarm i forbindelse med udløb af certifikatet, DDS anvender (ifm. /alarm endpointet). Eksempelvis P7D (7 dage) |
sts.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra STS servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
sts.error.tolerance | x | x | Antal fejl der tolereres fra STS servicen før /alarm endpointet angiver servicen som ikke tilgængelig. Default er 0, dvs overstiger antal 0 kommer der en alarm. |
personinformation.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra PersonInformation servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
personinformation.error.tolerance | x | x | Antal fejl der tolereres fra PersonInformation servicen før /alarm endpointet angiver servicen som ikke tilgængelig. Default er 0, dvs overstiger antal 0 kommer der en alarm. |
sores.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra Sores servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
sores.error.tolerance | x | x | Antal fejl der tolereres fra Sores servicen før /alarm endpointet angiver servicen som ikke tilgængelig. Default er 0, dvs overstiger antal 0 kommer der en alarm. |
backend.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra backends (registry og repository) (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
documentsourcesds.statement | x | x | Den SQL som /alarm og /status endpointene anvender for at tjekke adgang til documentsources databasen |
authds.statement | x | x | Den SQL som /alarm og /status endpointene anvender for at tjekke adgang til stamdata databasen |
whitelist.statement | x | x | Den SQL som /alarm og /status endpointene anvender for at tjekke adgang til whitelist databasen |
sores.url | x | x | Peger på endpointet for Sores Servicen. |
sores.cache.duration | x | x | Angiver en duration, hvor længe et Sores opslag skal gemmes i Sores cachen, inden man lavet et nyt opslag på et givet Sor nummer. Et fejlopslag (dvs SOR koden findes ikke) caches ikke. Eksempel: PT24H gemmer et Sores opslag 24 timer |
httpclient.pooling.totalconnections | Konfiguration af client pool til kald af Sores service Default er 200 | ||
httpclient.pooling.maxconnections.pr.route | Konfiguration af client pool til kald af Sores service Default er 20 | ||
httpclient.pooling.connection.timeout | Konfiguration af connection og connection request timeout (angives millisekunder) til kald af Sores service Default er 1000 | ||
httpclient.pooling.socket.timeout | Konfiguration af socket timeout (angivet i millisekunder) til kald af Sores service Default er 1000 |
*1: ved iti-18 kaldes anvendes disse tekster som default. Der kan være mere specifikke tekster der er konfigureret i database tabellerne minlog_text og minlog_usertype_text.
I den/de properties-filer, der udpeges af de forskellige ”client.*.properties” properties skal flg. properties defineres:
Property | Reg | Rep | Beskrivelse |
|---|---|---|---|
verification.wsdl.location | x | x | Angiver service endpoint for Samtykkeverifikationsservicen |
registration.log.organisation_name | x | x | Angiver standard organisationsnavnet, der bliver sendt til MinLog Registreringsservicen. |
treatment.relation.wsdl.location | x | x | Angiver service endpoint for behandlingsrelationsservicen |
treatment.relation.service.timeout | x | x | Timeout givet i millisekunder anvendt ved kald til behandlingsrelationsservicen |
verification.invoker.timeout | x | x | Timeout givet i millisekunder anvendt ved kald til samtykke verifikationsservicen. |
| minlog.producer.bootstrap.servers | x | x | Kafka bootstrap servers der anvendes til MinLog registrering. |
| minlog.producer.client.id | x | x | Kafka klient id anvendt til MinLog registrering. |
| minlog.producer.key.serializer | x | x | Kafka key serializer. Skal være "org.apache.kafka.common.serialization.StringSerializer" |
| minlog.producer.value.serializer | x | x | Kafka value serializer. Skal være "org.apache.kafka.common.serialization.StringSerializer" |
| minlog.topic | x | x | Kafka topic til MinLog registrering. |
| dds.minlog.on.idcard.level3.enabled | x | Angiver, om DDS skal minlogge, når der kaldes med SOSI Idkort niveau 3 Skal sættes: true, false | |
| personinformation.maxTotalConnections | x | x | Konfiguration af client pool til kald af PersonInformation service |
| personinformation.defaultMaxConnectionsPerRoute | x | x | Konfiguration af client pool til kald af PersonInformation service |
| personinformation.url | x | x | Peger på endpointet for PersonInformationServicen. |
Udover ovenstående skal følgende angives i den properties fil, der er udpeget i propertien ”client.treatment.relation.properties”. Disse forholder sig til værdier i SOAP requesten til behandlingsrelationsservicen og de følgende beskrivelser refererer til elementer i denne.
Property | Reg | Rep | Beskrivelse |
|---|---|---|---|
treatment.relation.serviceprovider.vendor | x | x | Indsættes som ’ServiceProvider/Vendor’ i behandlingsrelationsservicens treatmentRelationRequestBody |
treatment.relation.serviceprovider.version | x | x | Indsættes som ’ServiceProvider/Version’ i behandlingsrelationsservicens treatmentRelationRequestBody |
treatment.relation.lookup.timeinterval.start.offset | x | x | Angiver antallet af dage fra DDS-kaldtidspunktet, der skal indsættes som tidsstemplet ’RelationLookupTimeInterval/start’ i behandlingsrelationsservicens treatmentRelationRequestBody. Negativt fortegn angiver antal dage før DDS-kaldtidspunktet. |
treatment.relation.lookup.timeinterval.end.offset | x | x | Angiver antallet af dage fra DDS-kaldtidspunktet, der skal indsættes som tidsstemplet ’RelationLookupTimeInterval/end’ i behandlingsrelationsservicens treatmentRelationRequestBody. Negativt fortegn angiver antal dage før DDS-kaldtidspunktet. |
treatment.relation.timelimit.offset | x | x | Angiver antallet af dage fra DDS-kaldtidspunktet, der skal indsættes som tidsstemplet ’TimeLimit’ i behandlingsrelationsservicens treatmentRelationRequestBody. |
treatment.relation.queryable.cvr | x | x | Indsættes som ’QueryableCvr’ i behandlingsrelationsservicens treatmentRelationRequestBody |
treatment.relation.external.reference.id | x | x | Indsættes som ’ExternalReferenceId’ i behandlingsrelationsservicens treatmentRelationRequestBody |
treatment.relation.acceptable.relations.hospital | x | x | Kommasepareret liste af kategorier, der indsættes som ’AcceptableRelations/Relation’ i behandlingsrelationsservicens treatmentRelationRequestBody, når sundhedspersonens organisation er opført som hospital (ved SHAK-kode). |
treatment.relation.followup.relations.hospital | x | x | Kommasepareret liste af kategorier, der indsættes som ’FollowupRelations/Relation’ i behandlingsrelationsservicens treatmentRelationRequestBody, når sundhedspersonens organisation er opført som hospital (ved SHAK-kode). |
treatment.relation.acceptable.relations.doctor | x | x | Kommasepareret liste af kategorier, der indsættes som ’AcceptableRelations/Relation’ i behandlingsrelationsservicens treatmentRelationRequestBody, når sundhedspersonens organisation er opført som yder (ved ydernummer). |
treatment.relation.followup.relations.doctor | x | x | Kommasepareret liste af kategorier, der indsættes som ’FollowupRelations/Relation’ i behandlingsrelationsservicens treatmentRelationRequestBody, når sundhedspersonens organisation er opført som yder (ved ydernummer). |
treatment.relation.acceptable.relations.organization | x | x | Kommasepareret liste af kategorier, der indsættes som ’AcceptableRelations/Relation’ i behandlingsrelationsservicens treatmentRelationRequestBody, når sundhedspersonens organisation er opført som SOR (ved SOR-kode). |
treatment.relation.followup.relations.organization | x | x | Kommasepareret liste af kategorier, der indsættes som ’FollowupRelations/Relation’ i behandlingsrelationsservicens treatmentRelationRequestBody, når sundhedspersonens organisation er opført som SOR (ved SOR-kode). |
I metadata er identifikation af sundhedsorganisationer givet ved et id og anførelse af hvilken assigning authority, der har udstedt det id. I DDSRegistry.properties skal der ved properties givet i Tabel 1 være anført, hvilke object identifiers (OID), der anvendes for assigning authority for sundhedsorganisationers id.
Property | Beskrivelse |
|---|---|
consent.check.sor.assigning.authorities.oid | |
consent.check.shak.assigning.authorities.oid | |
consent.check.ynumber.assigning.authorities.oid | |
registering.allowed.sor.assigning.authorities.oid | |
registering.allowed.shak.assigning.authorities.oid | |
registering.allowed.ynumber.assigning.authorities.oid |
Tabel 1 OID for assigning authorities for sundhedsorganisationer
OID-værdier for assigning authorities givet i mønsteret properties consent.check.* (fx consent.check.sor.assigning.authorities.oid) er de, der anvendes ved samtykkekontrol ved opslag på eksisterende metadata. Disse lister af OID-værdier vil vokse over tid og afspejle også evt. historiske assigning authorities.
OID-værdier for assigning authorities givet i mønsteret properties registering.allowed.* (fx registering.allowed.sor.assigning.authorities.oid) er de, der tillades ved dokumentkilders registrering af dokumentmetadata. Disse lister af OID-værdier bør kun afspejle de assigning authorities, der er i anvendelse på registreringstidspunktet.
Eksempel på ”DDSRegistry.properties” fil (bemærk at alle ”client.*.properties” udpeger filen selv, og at klient properties derfor er defineret i samme fil):
|
Eksempel på ”DDSRepository.properties” fil (bemærk at alle ”client.*.properties” udpeger filen selv, og at klient properties derfor er defineret i samme fil):
|
ReposiDe dokumentindeks, hvortil DDSRegistry videresender opslag og registrering af dokumenter, er konfigureret i tabellen documentregistry i databasen documentsources.
Kolonne | Type | Beskrivelse |
|---|---|---|
documentregistryid | int | unikt id for rækken |
documentregistryserviceurl | streng | Adressen for indeksets webservice-endpoint givet som URI. |
documentregistryfriendlyname | streng | Et relativt brugervenligt navn for indekset, der indgår i fejlbeskeden, når indekset ikke svarer rettidigt eller ikke kan tilgås. |
documentregistryservicenamespace | streng | Namespace anvendt af indeksets webservice-endpoint. Standard-værdien er urn:ihe:iti:xds-b:2007. |
documentregistrylocal | boolsk værdi | Hvorvidt indekset er lokalt eller ej. Dokumentdelingsservicen skal have præcis et lokalt indeks, der benyttes ved registrering af dokumenter. Værdien 1 anfører lokalt indeks, 0 ellers. |
documentregistrytimeoutvalue | int | Timeout givet i millisekunder anvendt ved Dokumentdelingsservicens opslag mod indekset, dvs. timeout for kald af indeksets webservice. |
documentregistryactive | boolsk værdi | Hvorvidt indekset anvendes eller ej. Værdien 1 anfører, at indekset anvendes, 0 ellers. |
documentregistryservicename | streng | Navnet på service-gruppen for indeksets webservice. Standard-værdien er DocumentRegistry_Service. |
documentregistryfailurethreshold | int | Grænseværdi for hvor mange kald til indekset der må fejle før monitoreringssnitfladen melder fejl. |
documentregistrysoapversion | streng | Hvorvidt der skal anvendes headere af type HSUID, DGWS (Security og Medcom) og Medcom fra DGWS. |
documentregistryititransaction | streng | Beskrivelse af hvilken ITI transaction, der kan anvendes på dokumentindekset. Understøtter en dokumentindeks flere ITI transactions skal der laves en indgang per ITI transaction. Se Tabel 4 for lovlige værdier, hvoraf der skal anføres en enkelt. |
Tabel 2 Tabellen documentregistry i documentsources-databasen
Værdi | Benytter HSUID udgående | Benytter DGWS udgående | Note |
|---|---|---|---|
1.2 | ✓ | ÷ | |
1.2_NO_HSUID | ÷ | ÷ | |
1.2_DGWS | ✓ | ✓ | |
1.2_DGWS_NO_HSUID | ÷ | ✓ | |
1.2_MEDCOM_NO_HSUID | ÷ | (✓) Kun Medcom-header | |
| 1.2_NO_ADDR | ✓ | ÷ | Kalder uden addressing headers. |
Tabel 3 Værdier for documentregistrysoapversion, der anfører hvilke headere, der anvendes ved udgående kald fra DDS Registry mod XDS-komponenter.
Værdi | Beskrivelse |
|---|---|
ITI-18 | Benyttes til opslag på metadata via Registry Stored Query ITI-18 transaktionen. |
Tabel 4 Værdier for documentregistryititransaction, der anfører hvilken ITI transaction, den givne indgang kan anvendes med.
Følgende er et eksempel på konfigurering af et lokalt, aktivt indeks:
Kolonne | Værdi |
|---|---|
documentregistryid | 1 |
documentregistryserviceurl | http://sv-proj-093:57774/csp/public/hsbus/HS.IHE.XDSb.Registry.Services.cls |
documentregistryfriendlyname | DDS |
documentregistryservicenamespace | urn:ihe:iti:xds-b:2007 |
documentregistrylocal | 1 (true) |
documentregistrytimeoutvalue | 300000 |
documentregistryactive | 1 (true) |
documentregistryservicename | DocumentRegistry_Service |
documentregistryfailurethreshold | 5 |
documentregistrysoapversion | 1.2_MEDCOM_NO_HSUID |
documentregistryititransaction | ITI-18 |
Tabel 5 Eksempel på konfiguration af indeks
For at tilføje et indeks til konfigurationen, udføres et SQL-statement i stil med:
|
Når en post slettes fra documentregistry, slettes de relaterede poster i documenttype_configuration og feature_configuration automatisk.
Log4j konfiguration findes i (hvis ovenstående format anvendes):
Se yderligere opsætning i installationsvejledningen.
SLA-logning på DDS Registry og Repository udføres vha SLALoggingInterceptor. Konfiguration af SLA-log findes i filen:
Der foretages whitelisting på to niveauer. Først er der den whitelisting, der skal til for at anvende DDS Registry og Repository. Derudover findes en whitelisting, der afgør, hvorvidt en anvender må kalde DDS med et niveua 3 Idkort. De to whitelisting-mekanismer beskrives i det følgende.
For at tilføje et CVR-nummer til white-list databasen, bruges følgende SQL insert:
For DDS registry:
|
For DDS repository:
|
Da DDS Registry og Repository sender Id-kortet videre til samtykkeservice, behandlingsrelationsservice og minlog-registrationservice skal whitelisten også opdateres med følgende værdier:
|
Alle anvendere skal whitelistes som beskrevet ovenfor for at anvende DDS Registry og Repository. Derudover findes en ekstra whitelisting mekanisme, som gør det muligt for visse anvendere at kalde DDS Registry og Repository med et niveau 3 Idkort. Dette kræver en særlig whitelisting og kan sættes op ved at tilføje oplysninger om anvenderen i konfigurationsparameteren 'whitelisted.level3.cvrs'. På trods af navnet kan whitelisting til niveau 3 sættes op på to niveauer: CVR nummer eller et specifikt certifikat.
Værdien er en kommasepereret liste som vist i følgende eksempel:
Opsætning af niveau 3 whitelisting
|
Eksemplet viser de tre formater, der kan anvendes:
I forhold til anvenderne, så tjekkes det, om der er en whitelisting af anvenderens CVR nummer og hvis dette ikke er tilfældet, så tjekkes, om det specifikke certifikat, der anvendes er whitelistet. Alle andre forsøg på adgang med niveau 3 Idkort afvises.
For at konfigurere hvilke dokumenttyper, der er relevante for et givet registry, skal dette konfigureres manuelt af driften i documenttype_configuration databasen:
|
Hvis ikke man har angivet en unik documentregistryfriendlyname værdi i documentregistry, må man manuelt finde det givne documentregistryid man ønsker at konfigurere en dokumenttype for.
Hvis et givet documentregistry ikke har en opsætning i documenttype_configuration tabellen, er alle dokumenttyper tilladte.
Konfigurationen indlæses automatisk peridisk, som angivet i property documenttype.configuration.refresh.duration.
Når en post slettes fra documentregistry, slettes de relaterede poster i documenttype_configuration automatisk.
For at konfigurere hvilke feature, der er relevante for et givet registry, skal dette konfigureres manuelt af driften i feature_configuration databasen:
|
Hvis ikke man har angivet en unik documentregistryfriendlyname værdi i documentregistry, må man manuelt finde det givne documentregistryid man ønsker at konfigurere en feature for.
Pt er ovenstående 3 features mulige. De anvendes, når der laves en ITI-18 søgning (Registry Stored Query). Hvis det indkomne request ikke matcher opsætningen for et givet registry, søges der ikke ned i dette registry. Dvs. at har et registry ingen opsætning af query types, bliver det aldrig kaldt.
Konfigurationen indlæses automatisk peridisk, som angivet i property feature.configuration.refresh.duration.
Når en post slettes fra documentregistry, slettes de relaterede poster i feature_configuration automatisk.
For at konfigurere, hvordan dokumenternes metadata skal filtreres for den sundhedsfaglige, skal det konfigureres manuelt af driften i en række whitelist tabeller i databasen:
|
Ovenstående er eksempler på sql. Udskift værdierne med relevante værdier for at aktuelle miljø.
Som minimum skal der åbnes op for typecode i whitelist_config_documentmetadata_typecode tabellen. Derudover kan dokumenter returnering indsnævres ved yderligere at angive eventcode og practicesettingcode. Er der for et cvr/system angivet bare een værdi for eventcode, skal dokumentes metadata indeholde denne kode. Tilsvarerende for practicesettingcode. Ellers filtreres metadata fra, og anvenderen får en fejl i svaret.
Der filtreres kun, hvis funktionaliteten er aktiveret. Den kan slåes fra med property whitelisted.document.metadata.active.
Konfigurationen indlæses automatisk peridisk, som angivet i property whitelisted.document.metadata.refresh.duration.
Nogle actors har ikke love til at lave søgninger (ITI-18) på alle værdier i query parametrene. Dette konfigureret i manuelt af driften i en tabel i databasen.
INSERT INTO documentsources.actor_query_parameter_configuration (actor_query_type, typecode_codename, typecode_schemename, formatcode_codename, formatcode_schemename, privilege) VALUES ("CitizenUserOnBehalfAsProxyHolder","39289-4", "2.16.840.1.113883.6.1", "urn:ad:dk:medcom:apd-v2.0.1:full", "1.2.208.184.100.10", "urn:dk:nspop:sts:dds:read");INSERT INTO documentsources.actor_query_parameter_configuration (actor_query_type, typecode_codename, typecode_schemename, formatcode_codename, formatcode_schemename, privilege) VALUES ("CitizenUserOnBehalfAsChildCustodyHolder","39289-4", "2.16.840.1.113883.6.1", null, null, null); |
Ovenstående er eksempler på sql. Udskift værdierne med relevante værdier for at aktuelle miljø og anvendere.
For nuværende drejer det sig om følgende brugertyper og de skal konfigureres på følgende måde:
Hvis man ønsker at anvende en mere detaljeret opsætning af tekster, der sendes til minlog, gøres det ved at manuelt at indsætte records i tabellerne minlog_text og minlog_usertype_text. Findes der ikke matchende data heri anvendes de default værdier, der er sat op i servicens property fil.
INSERT INTO minlog_text (typecode_codename, typecode_schemename, formatcode_codename, formatcode_schemename, classcode_codename, classcode_schemename, text) VALUES ('11502-2', '2.16.840.1.113883.6.1', 'urn:ad:dk:medcom:labreports:svareksponeringsservice', '1.2.208.184.100.10', '001', '1.2.208.184.100.9', 'Opslag på labsvar fra %s'); INSERT INTO minlog_usertype_text (usertype, text) VALUES ('professionalUser', 'sundhedsfaglig'); |
For minlog_usertype_text skal de angivne usertype anvendes, da disse er kendt af komponenten.
En match ved søgning sker ved at kigge på typecode, classcode og formatcode fra requestet samt anvender rollen og med disse slå op i tabellerne. For en mere detaljeret beskrivelse af denne logik se dds design og arkitektur dokumentet.
Hvis der ikke kan findes en opsætning i databasen for en given typecode, classcode og formatcode kombination, skrives en warning til applikationsloggen, så man har mulighed for at holde øje med anvendte, men ikke konfigurerede kombinationer.
Ved hentning af dokumenter (iti-43) anvendes altid værdierne fra property filen.
Hvis den fremfundne minlog tekst overstiger den maksimale længde, som minlog kan modtage (pt 75 karakterer), afkortes teksten og en fejl skriver i applikationsloggen. For lange tekster fejlmeldes også i forbindelse med servicens status endpoint. Her vil det fremgå, hvis mindst en minlog tekst er for lang (kan være en kombinationer af tekst og den tilføjede brugertype tekst). Alle ugyldige tekster kan efter kald til status endpoint findes som fejl i applikationsloggen.
Efter konfiguration og deployering af DDS Registry og Repository servicene, kan DKS-snitfladerne testes med:
Succesfuldt svar giver indholdet svarende til filerne nævnt ovenfor.
Det er muligt at konfigurere registry og repository til at lede efter HTTP- og SOAP-headere, og videresende dem til bagvedliggende registries.
Videresendelse styres af databasetabellerne
Indholdet af tabel documentsources.documentregistry_forwarded_header er som følger:
Feltnavn | Indhold |
|---|---|
| headername | Navn på header, der ledes efter. Hvis headertype er 'HTTP', ledes i HTTP-headers i requestet. Hvis headertype er 'SOAP', ledes i headere i SOAP-envelopen i requestet. |
| headertype | Typen af header der ledes efter. Kan være 'HTTP' eller 'SOAP', skrevet med store bogstaver. |
| documentregistryid | Id på documentregistry, som header ønskes videresendt til. Der er opsat en foreign key-constraint, der sikrer at der refereres til et registry i documentregistry-tabellen. |
Indholdet af tabel documentsources.documentsource_forwarded_header er som følger:
Feltnavn | Indhold |
|---|---|
| headername | Navn på header, der ledes efter. Hvis headertype er 'HTTP', ledes i HTTP-headers i requestet. Hvis headertype er 'SOAP', ledes i headere i SOAP-envelopen i requestet. |
| headertype | Typen af header der ledes efter. Kan være 'HTTP' eller 'SOAP', skrevet med store bogstaver. |
| oid | oid på repository, som header ønskes videresendt til. Der er opsat en foreign key-constraint, der sikrer at der refereres til et registry i documentsource-tabellen. |
For at tilføje et kildesystem til documentsource databasen, bruges følgende SQL insert:
|
oid: OID værdien som for den pågældende XDS dokument kilde, som kan være at typen ’repository_unique_id’ eller ’home_community_id’
type: Angiver hvilken typen af OID der er angivet, og den skal have én af følgende værdier: [‘repository_unique_id’|’home_community_id’]
service_endpoint: Angiver URL til XDS dokument kilde
soap_version: Angiver XDS dokument kildens SOAP version og den skal have én af følgende værdier:
Værdi | Benytter HSUID udgående | Benytter DGWS udgående |
1.1 | + | ÷ |
1.2 | + | ÷ |
1.1_NO_HSUID | ÷ | ÷ |
1.2_NO_HSUID | ÷ | ÷ |
1.2_DGWS | + | + |
1.2_DGWS_NO_HSUID | ÷ | + |
1.2_DGWS_NO_ADDR | + | + |
1.2_MEDCOM_NO_HSUID | ÷ | (+) Kun Medcom-header |
Værdien 1.2_DGWS_NO_ADDR benyttes, når WS-Addressing ikke ønskes anvendt.
timeout: Angiver hvor lang tid DDS forsøger at hente dokumenter fra eksterne kilder inden forsøget opgives. Tiden angives i millisekunder.
failurethreshold: Angiver grænseværdi for hvor mange kald mod repositoriet der må fejle før monitoreringssnitfladen melder fejl. Angives som heltal.
Kombinationen oid og unique_id_type skal være unik.
Det er muligt at konfigurere grænser for tilladte fejl i et givet tidsrum for de alarm og status check, der findes i DDS'en health endpoints. Se afsnittet "Overvågning" nedenfor.
DDS registry og repository har følgende endpoints til overvågning:
curl localhost:9090/ddsregistry/status
curl localhost:9091/ddsrepository/status
Generelt omkring status endpointet:
Status omkring alarm endpoint:
Eksempel på status tekst, når alt er godt.
200 ok |
Eksempel på alarm tekst, når der har været for mange kald til person information uden svar:
500 Internal Server Error |
I den følgende tabel gives et overblik over de forskellige status og alarm check. Efterfølgende er enkelte af de forskellige check uddybet for relevant.
En Healthindicator kan være enten status- eller alarmindicator. Eller både og. Hvis tabellens celler er tomme for status eller alarm, betyder dette at den ikke er implementeret for den pågældende healthindicator.
Forklaring til tabellen:
| Healthindicator | Udførsel/resultat | StatusIndicator tekst | AlarmIndicator tekst | Konfiguration (property) |
|---|---|---|---|---|
| DatasourceHealthIndicator for WhitelistDataSource | Udførsel | Kalder datasource med den konfigurerede sql streng | Kalder datasource med den konfigurerede sql streng | whitelist.statement |
Status 200 | {"Database WhitelistDataSource":"OK"} | |||
Status 500 | {"Database WhitelistDataSource":"Ikke tilgængelig"} | Der er ingen forbindelse til databasen med navnetWhitelistDataSource. | ||
| DatasourceHealthIndicator for documentSourcesDS | Udførsel | Kalder datasource med den konfigurerede sql streng | Kalder datasource med den konfigurerede sql streng | documentsourcesds.statement |
Status 200 | {"Database DocumentSourcesDataSource":"OK"} | |||
Status 500 | {"Database DocumentSourcesDataSource":"Ikke tilgængelig"} | Der er ingen forbindelse til databasen med navnet DocumentSourcesDataSource. | ||
| DatasourceHealthIndicator for authDataSource | Udførsel | Kalder datasource med den konfigurerede sql streng | Kalder datasource med den konfigurerede sql streng | authds.statement |
Status 200 | {"Database AuthDataSource":"OK"} | |||
Status 500 | {"Database AuthDataSource":"Ikke tilgængelig"} | Der er ingen forbindelse til databasen med navnet AuthDataSource. | ||
| ConsentVerificationHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks | verification.errorcount.duration:PT10M verification.error.tolerance:0 | |
| Status 200 | ||||
| Status 500 | Samtykke servicen har fejlet <antal> gange. Den må ikke fejle mere end <tolerance> gange i en given periode. | |||
| TreatmentRelationHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks | treatment.relation.errorcount.duration:PT10M treatment.relation.error.tolerance:0 | |
| Status 200 | ||||
| Status 500 | Behandlerrelation servicen har fejlet <antal> gange. Den må ikke fejle mere end <tolerance> gange i en given periode. | |||
| PersonInformationHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks | personinformation.errorcount.duration:PT10M personinformation.error.tolerance:0 | |
| Status 200 | ||||
| Status 500 | Person Information servicen har fejlet <antal> gange. Den må ikke fejle mere end <tolerance> gange i en given periode. | |||
| MinlogQueryMessagesHealthIndicator | Udførsel | Tjekker alle minlog tekster (activity) ikke er længere end 75 karakterer | minlog.query.default minlog.query.consentoverride minlog.query.childcustodyholder minlog.query.proxyholder minlog.query.citizen Samt data i tabellerne minlog_text og minlog_usertype_text (se også her) | |
| Status 200 | ||||
| Status 500 | Der er fejl i MinlogQueryMessages fordi de konfigurerede tekster er for lange. Se log fil for detaljer. | |||
| MinLogHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks | minlog.errorcount.duration:PT10M minlog.error.tolerance:0 | |
| Status 200 | ||||
| Status 500 | MinLog servicen har fejlet flere gange end tilladt i en given periode. MinLog servicen har fejlet <antal> gange. Den må ikke fejle mere end <tolerance> gange i en given periode. | |||
VersionHealthIndicator | Udførsel | Henter versionen i pom.properties | ||
| Status 200 | {"Version":"<version>"} | |||
| Status 500 | na - svarer altid 200 | |||
| StsHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks | sts.errorcount.duration:PT10M sts.error.tolerance:0 | |
| Status 200 | ||||
| Status 500 | STS servicen har fejlet <antal> gange. Den må ikke fejle mere end <tolerance> gange i en given periode. | |||
| CertificateHealthIndicator | Udførsel | Tjekker om expiry date er indtruffet på det keystore angivet i property filen | Tjekker om expiry date indtræffer inden for given periode på det keystore angivet i property filen | sts.keystore sts.keystore.expiry.warning.duration |
| Status 200 | {"Servicens certifikat udløber den 2025-11-28T10:30:24.":"OK"} | |||
| Status 500 | {"Servicens certifikat udløber den 2024-11-28T10:30:24.":"Udløbet"} eller {"Servicens certifikat kunne ikke findes eller har ingen udløbsdato.":"Ikke tilgængelig"} | Servicens certifikat er ved at udløbe. Det udløber den 2025-11-28T10:30:24. eller Servicens certifikat er udløbet. Det udløb den 2025-11-28T10:30:24. eller Servicens certifikat kunne ikke findes eller har ingen udløbsdato. | ||
| BackendRegistryHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks for den enkelte registry der er konfigureret. | backend.errorcount.duration:PT10M database tabellen documentregistry.documentregistryfailurethreshold default failurethreshold er 5 | |
| Status 200 | ||||
| Status 500 | Registry (id=1) med endpoint <backend> har fejlet <antal> gange. Den må ikke fejle mere end <failurethreshold> gange i en given periode. | |||
| BackendRepositoryHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks for den enkelte repository der er konfigureret. | backend.errorcount.duration:PT10M database tabellen documentsource.failurethreshold default failurethreshold er 5 | |
| Status 200 | ||||
| Status 500 | Repository med endpoint <backend> og SoapVersion <verson> har fejlet <antal> gange. Den må ikke fejle mere end <failurethreshold> gange i en given periode. | |||
| SoresHealthIndicator | Udførsel | Tjekker antal fejl inden for en given periode ikke overstiger maks | sores.errorcount.duration:PT10M sores.error.tolerance=0 | |
| Status 200 | ||||
| Status 500 | Sores servicen har fejlet <antal> gange. Den må ikke fejle mere end <tolerance> gange i en given periode. |
Databasemonitorerings healthindicatorerne laver en simpel query mod databasen. Denne query er justerbar og kan ændres i servicenes property filer.
DDSRegistry.properties:
documentsourcesds.statement=SELECT * FROM documentsources.documentregistry LIMIT 1; |
DDSRepository.properties:
documentsourcesds.statement=SELECT * FROM documentsources. documentsource LIMIT 1; |
En række af healthindacatoerne har mulighed for konfiguration af tolerance og duration:
*.error.tolerance=0 |
Tolerance angiver, hvad grænsen for fejl er. Overstiger antal fejl det angivne, kommer der en alarm ved kald af alarm endpointet.
Duration angiver, hvor lang en periode, der skal kigges i efter antallet af fejl.
Specielt for BackendRegistryHealthIndicator og BackendRepositoryHealthIndicator er, at tolerance findes i databasetabellerne documentregistry henholdsvis documentsource.
Alle logfiler er at finde i log/ under WildFly. Herunder findes en liste over alle logfiler med en beskrivelse af hvilke komponenter der skriver til dem. Hvorvidt der anvendes disse default-logfilnavne eller skrives til andre, er afhængig af servicens konfiguration af log4j.
DDS Registry:
Logfilnavn | Komponenter der skriver til logfilen | Beskrivelse |
|---|---|---|
ddsregistry.log | DDS Registry | Generel applikationslog |
dds-audit.log | DDS Registry | Auditlog for indkommende kald af servicens operationer |
nsputil-sla-ddsregistry.log | DDS Registry | SLA-log |
ddsregistry-consentoverride.log | DDS Registry | Log over anvendelse af værdispring ved kald af servicens operationer |
ddsregistry-servicecheck.log | DDS Registry | Logfil for aktivt servicecheck |
ddsregistry-status.log | DDS Registry | Logfil for passivt opsamlet status på webservice- og database-kald. |
ddsregistry-xdserror.log | DDS Registry | Logfil for XDS-fejl indlejret i svar samt fejl ved kald af eksterne XDS-komponenter. |
DDS Repository:
Logfilnavn | Komponenter der skriver til logfilen | Beskrivelse |
ddsrepository.log | DDS Repository | Generel applikationslog |
dds-audit.log | DDS Repository | Auditlog for indkommende kald af servicens operationer |
nsputil-sla-ddsrepository.log | DDS Repository | SLA-log |
ddsrepository-consentoverride.log | DDS Repository | Log over anvendelse af værdispring ved kald af servicens operationer |
ddsrepository-servicecheck.log | DDS Repository | Logfil for aktivt servicecheck |
ddsrepository-status.log | DDS Repository | Logfil for passivt opsamlet status på webservice- og database-kald. |
ddsrepository-xdserror.log | DDS Repository | Logfil for XDS-fejl indlejret i svar samt fejl ved kald af eksterne XDS-komponenter. |
For alle webservices er der en tilhørende SLA-log, der sørger for at logge udvalgte elementer fra requests til webservicen. For DDS Registry og Repository logges alle kald til DDSRegistryWS henholdsvis DDSRepositoryWS, hvor loggen vil indeholde information om kald til webservicens forskellige serviceoperationer og behandlingstid for kaldet inklusiv kald til kontrolservices.
SLA-logpunkter for indkommende kald til DDS Registry:
SLA-logpunkter for udgående kald fra DDS Registry:
Kaldte service | LogPoint | TargetSOAPOperation |
|---|---|---|
Behandlings-relations-service | DocumentRegistry_RegistryStoredQuery.TreatmentRelation | |
MinLog | DocumentRegistry_RegistryStoredQuery.Minlog.LogDataAdd | LogDataAdd |
Samtykke | DocumentRegistry_RegistryStoredQuery.ConsentForUserCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForUserCheck |
Samtykke | DocumentRegistry_RegistryStoredQuery.ConsentForDataCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForDataCheck |
XDS Registry | DocumentRegistry_RegistryStoredQuery | urn:ihe:iti:2007:RegistryStoredQuery |
For SLA-logning af udgående kald til XDS Registry:
SLA-logpunkter for indkommende kald til DDS Repository:
DocumentRepository_RetrieveDocumentSet
SLA-logpunkter for udgående kald fra DDS Repository:
Kaldte service | LogPoint | TargetSOAPOperation |
Behandlings-relations-service | DocumentRepository_RetrieveDocumentSet.TreatmentRelation | |
MinLog | DocumentRepository_RetrieveDocumentSet.Minlog.LogDataAdd | LogDataAdd |
Samtykke | DocumentRepository_RetrieveDocumentSet.ConsentForUserCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForUserCheck |
Samtykke | DocumentRepository_RetrieveDocumentSet.ConsentForDataCheck | urn:dk:nsi:consentservices:verification:service:1#ConsentForDataCheck |
XDS Repository | DocumentRepository_RetrieveDocumentSet | urn:ihe:iti:2007:RetrieveDocumentSet |
For SLA-logning af udgående kald til XDS Repository:
logges i feltet GenericCallParms desuden det kaldte XDS Repository’s repositoryUniqueId under parameternavnet repositoryUniqueId.
logges fejlet kald, på trods af succesfuldt kald, når en eller flere af følgende XDS-fejl/advarsler er indlejret i XDS-fejlstrukturen i svaret:
XDSMissingHomeCommunityId
XDSRepositoryBusy
XDSRepositoryError, medmindre der er tale om advarsel om tilbageholdte oplysninger grundet samtykker
XDSRepositoryOutOfResources
XDSUnavailableCommunity
XDSUnknownCommunity
XDSUnknownRepositoryId
Auditlogning foretages med det officielle NSP Audit Log modul.
De forskellige ITI-håndtag logges på følgende måde.
ITI-18 søgninger logger 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.
Se eksempel nedenfor:
{
"time":"2025-09-10T12:08:32.78Z",
"category":"dk.sds.nsp.audit.log",
"audit":{
"timestamp":"2025-09-10T14:08:32.686+02:00",
"components":[
{
"component":"DDS",
"contexts":[
{
"context":"documentRegistryAdhocQuery",
"information":[
{
"key":"patient-cpr",
"type":"SPI",
"value":"0207761919"
},
{
"key":"bruger-cpr",
"type":"SPI",
"value":"0611809735"
},
{
"key":"queryTypecode",
"type":"NPI",
"value":"('39289-4^^2.16.840.1.113883.6.1')"
},
{
"key":"queryFormatcode",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"queryEventCode",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"queryStartTimeFrom",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"queryStartTimeTo",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"queryStopTimeFrom",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"queryStopTimeTo",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"queryAvailabilityStatus",
"type":"NPI",
"value":"('urn:oasis:names:tc:ebxml-regrep:StatusType:Approved')"
},
{
"key":"queryDocumententryType",
"type":"NPI",
"value":"('ondemand'), ('stable')"
},
{
"key":"queryReferenceIdList",
"type":"NPI",
"value":"EMPTY"
},
{
"key":"document_entry.0.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.0.documentid",
"type":"NPI",
"value":"0207761919.678401000016005.10001"
},
{
"key":"document_entry.0.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.1.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.1.documentid",
"type":"NPI",
"value":"5619531150207761919.6052203964123326052.1537974544003"
},
{
"key":"document_entry.1.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.2.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.2.documentid",
"type":"NPI",
"value":"5619531150207761919.7052203964123326052.1537974544003"
},
{
"key":"document_entry.2.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.3.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.3.documentid",
"type":"NPI",
"value":"0207761919.6052203964123326052.1537974544003"
},
{
"key":"document_entry.3.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.4.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.4.documentid",
"type":"NPI",
"value":"0207761919.7052203964123326052.1537974544003"
},
{
"key":"document_entry.4.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.5.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.5.documentid",
"type":"NPI",
"value":"0207761919.7152203964123326052.1537974544013"
},
{
"key":"document_entry.5.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.6.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.6.documentid",
"type":"NPI",
"value":"0207761919.7152203964123326052.1537974544113"
},
{
"key":"document_entry.6.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.7.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.7.documentid",
"type":"NPI",
"value":"0207761919.7152203964123326052.1537974544123"
},
{
"key":"document_entry.7.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.8.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.8.documentid",
"type":"NPI",
"value":"0207761919.7152203964123326052.1537974544213"
},
{
"key":"document_entry.8.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.9.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.9.documentid",
"type":"NPI",
"value":"0207761919.7152203964123326052.1537974544223"
},
{
"key":"document_entry.9.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"document_entry.10.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.10.documentid",
"type":"NPI",
"value":"5619531150207761919.6052203964123326052.1537974544003"
},
{
"key":"document_entry.10.typecode",
"type":"NPI",
"value":"39289-4"
},
{
"key":"hsuid-header",
"type":"SPI",
"value":{
"assertion":{
"issuer":"Aftale",
"attributeStatement":{
"attribute":[
{
"attributeValue":"0207761919",
"name":"NSI_CITIZEN_CIVIL_REGISTRATION_NUMBER",
"nameFormat":null
},
{
"attributeValue":"nsi:HealthcareProfessional",
"name":"NSI_USERTYPE",
"nameFormat":null
},
{
"attributeValue":"0611809735",
"name":"NSI_ACTING_USER_CIVIL_REGISTRATION_NUMBER",
"nameFormat":null
},
{
"attributeValue":"33257872",
"name":"NSI_ORG_USING_ID",
"nameFormat":"NSI_SORCODE"
},
{
"attributeValue":"system owner",
"name":"NSI_SYSTEM_OWNER_NAME",
"nameFormat":null
},
{
"attributeValue":"test aftaler",
"name":"NSI_SYSTEM_NAME",
"nameFormat":null
},
{
"attributeValue":"1.0",
"name":"NSI_SYSTEM_VERSION",
"nameFormat":null
},
{
"attributeValue":"MyOrganisation",
"name":"NSI_ORG_RESPONSIBLE_NAME",
"nameFormat":null
},
{
"attributeValue":"false",
"name":"NSI_CONSENT_OVERRIDE",
"nameFormat":null
},
{
"attributeValue":"0611809735",
"name":"NSI_RESPONSIBLE_USER_CIVIL_REGISTRATION_NUMBER",
"nameFormat":null
},
{
"attributeValue":"6QF17",
"name":"NSI_RESPONSIBLE_USER_AUTHORIZATION_CODE",
"nameFormat":null
}
],
"id":"HSUIDdata"
},
"issueInstant":1757506112543,
"version":2,
"id":"HSUID"
}
}
}
]
}
]
},
{
"component":"MinLog2",
"contexts":[
{
"context":"addRegistrations",
"information":[
{
"key":"added",
"type":"SPI",
"values":[
"0207761919"
]
},
{
"key":"failed",
"type":"SPI",
"values":[
]
}
]
}
]
}
]
},
"access":{
"code":200,
"duration":80,
"httpHeaders":{
"Content-Type":"text/xml;charset=UTF-8",
"SOAPAction":"urn:ihe:iti:2007:RegistryStoredQuery"
},
"httpHost":"localhost",
"idCardAttributes":{
"medcom:CareProviderID":"33257872",
"medcom:CareProviderName":"Sundhedsdatastyrelsen",
"medcom:ITSystemName":"Service Consumer Test",
"medcom:UserAuthorizationCode":"6QF17",
"medcom:UserRole":"7170",
"sosi:AuthenticationLevel":"4",
"sosi:IDCardID":"VhwRkWa9ZDJ2atk5igEBsA==",
"sosi:IDCardType":"user",
"sosi:IDCardVersion":"1.0.1"
},
"method":"POST",
"path":"/ddsregistry",
"query":"",
"port":9090,
"protocol":"http",
"reqSize":9424,
"resSize":57274,
"soapHeaders":{
"FlowID":"e4d2aa20-fcaf-44f5-be93-7e29d7acd3d7",
"Issuer":"TEST1-NSP-STS",
"MessageID":"AAABmTOHDKgwkxxDbSVdo1NPU0k=",
"NameID":"urn:uuid:46559bb9-d720-48b7-b9bd-c280915768d0"
},
"threadId":"default task-113",
"time":"2025-09-10T14:08:32.686+02:00",
"stats":{
"handlerDuration":10,
"RequestContentDuration":0,
"ResponseContentDuration":0,
"SecurityProtocolRequestDuration":6,
"SecurityProtocolResponseDuration":1,
"bufferAllocated":false,
"usedBuffers":2,
"activeBuffersInPool":2,
"idleBuffersInPool":28
},
"reqUUID":"1c00db04-3a73-4434-8e0e-9c26eb66930e"
}
}
|
De forskellige ITI-43 operationer logger patient-id, bruger-id, på-vegne-af-id samt hsuid-header og for hvert dokument i returneret svar (der kan være frafiltreret dokument(er) pga. samtykker, der kan være forespurgt dokumenter, der ikke er tilgængelige): requestens uniqueId, repositoryUniqueId, homeCommunityId.
Se eksempel nedenfor:
{
"time":"2025-09-10T12:08:33.026Z",
"category":"dk.sds.nsp.audit.log",
"audit":{
"timestamp":"2025-09-10T14:08:32.94+02:00",
"components":[
{
"component":"DDS",
"contexts":[
{
"context":"documentRepositoryRetrieveDocumentSet",
"information":[
{
"key":"patient-cpr",
"type":"SPI",
"value":"0207761919"
},
{
"key":"bruger-cpr",
"type":"SPI",
"value":"0611809735"
},
{
"key":"document_entry.0.homecommunityid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.0.repositoryid",
"type":"NPI",
"value":"1.3.6.1.4.1.21367.2010.1.2.1125"
},
{
"key":"document_entry.0.documentid",
"type":"NPI",
"value":"5619531150207761919.6052203964123326052.1537974544003"
},
{
"key":"hsuid-header",
"type":"SPI",
"value":{
"assertion":{
"issuer":"Aftale",
"attributeStatement":{
"attribute":[
{
"attributeValue":"0207761919",
"name":"NSI_CITIZEN_CIVIL_REGISTRATION_NUMBER",
"nameFormat":null
},
{
"attributeValue":"nsi:HealthcareProfessional",
"name":"NSI_USERTYPE",
"nameFormat":null
},
{
"attributeValue":"0611809735",
"name":"NSI_ACTING_USER_CIVIL_REGISTRATION_NUMBER",
"nameFormat":null
},
{
"attributeValue":"33257872",
"name":"NSI_ORG_USING_ID",
"nameFormat":"NSI_SORCODE"
},
{
"attributeValue":"system owner",
"name":"NSI_SYSTEM_OWNER_NAME",
"nameFormat":null
},
{
"attributeValue":"test aftaler",
"name":"NSI_SYSTEM_NAME",
"nameFormat":null
},
{
"attributeValue":"1.0",
"name":"NSI_SYSTEM_VERSION",
"nameFormat":null
},
{
"attributeValue":"MyOrganisation",
"name":"NSI_ORG_RESPONSIBLE_NAME",
"nameFormat":null
},
{
"attributeValue":"false",
"name":"NSI_CONSENT_OVERRIDE",
"nameFormat":null
},
{
"attributeValue":"0611809735",
"name":"NSI_RESPONSIBLE_USER_CIVIL_REGISTRATION_NUMBER",
"nameFormat":null
},
{
"attributeValue":"6QF17",
"name":"NSI_RESPONSIBLE_USER_AUTHORIZATION_CODE",
"nameFormat":null
}
],
"id":"HSUIDdata"
},
"issueInstant":1757506112831,
"version":2,
"id":"HSUID"
}
}
}
]
}
]
},
{
"component":"MinLog2",
"contexts":[
{
"context":"addRegistrations",
"information":[
{
"key":"added",
"type":"SPI",
"values":[
"0207761919"
]
},
{
"key":"failed",
"type":"SPI",
"values":[
]
}
]
}
]
}
]
},
"access":{
"code":200,
"duration":73,
"httpHeaders":{
"Content-Type":"text/xml;charset=UTF-8",
"SOAPAction":"urn:ihe:iti:2007:RetrieveDocumentSet"
},
"httpHost":"localhost",
"idCardAttributes":{
"medcom:CareProviderID":"33257872",
"medcom:CareProviderName":"Sundhedsdatastyrelsen",
"medcom:ITSystemName":"Service Consumer Test",
"medcom:UserAuthorizationCode":"6QF17",
"medcom:UserRole":"7170",
"sosi:AuthenticationLevel":"4",
"sosi:IDCardID":"YRKgDAkQUL4n2svL+G9JWA==",
"sosi:IDCardType":"user",
"sosi:IDCardVersion":"1.0.1"
},
"method":"POST",
"path":"/ddsrepository",
"query":"",
"port":9091,
"protocol":"http",
"reqSize":8747,
"resSize":12670,
"soapHeaders":{
"FlowID":"e7be2b98-212b-44a3-a2cd-8c9fc91cd103",
"Issuer":"TEST1-NSP-STS",
"MessageID":"AAABmTOHDamrJmpBR/TEJlNPU0k=",
"NameID":"urn:uuid:46559bb9-d720-48b7-b9bd-c280915768d0"
},
"threadId":"default task-65",
"time":"2025-09-10T14:08:32.94+02:00",
"stats":{
"handlerDuration":10,
"RequestContentDuration":0,
"ResponseContentDuration":0,
"SecurityProtocolRequestDuration":7,
"SecurityProtocolResponseDuration":1,
"bufferAllocated":false,
"usedBuffers":2,
"activeBuffersInPool":2,
"idleBuffersInPool":18
},
"reqUUID":"41dd9a97-0998-4cdb-91b7-e08be4a1d5bf"
}
}
|
Det anbefales at aktuelle konfigurationsfiler til DDS Registry og Repository er under versionskontrol og back up.