Page History
...
Afsnit 4 (Konfiguration) beskriver aktuelle konfigurationsparametre for DDS Registry henholdsvis Repository, samt eksempler på konfigurationsparameter-filer.
Afsnit 5 .1, 5.2 og 5.3 (Overvågning) beskriver hvorledes DDS Registry og Repository komponenterne overvåges.
I afsnit 5.4 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.
...
nsp-role-mapping.properties
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 | 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. |
backendsores.errorcount.duration | x | x | Specificering af hvor lang tid tilbage der skal tælles fejl fra backends (registry og repository) (Sores servicen (ifm. /alarm endpointet). Angives som duration i ISO-8601 formattet. Default PT10M (10 minutter) |
*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.
...
x
...
x
...
Kafka klient id anvendt til MinLog registrering.
...
x
...
Angiver, om DDS skal minlogge, når der kaldes med SOSI Idkort niveau 3
Skal sættes: true, false
...
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.name | x | x | Indsættes som ’ServiceProvider/name’ 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.acceptable.relations.hospital | x | x | Kommasepareret liste af kategorier, der indsættes som |
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). |
...
|
Eksempel på ”DDSRepository.properties” fil (bemærk at alle ”client.*.properties” udpeger filen selv, og at klient properties derfor er defineret i samme fil):
|
Konfiguration af indeks for DDS registry
...
Kombinationen oid og unique_id_type skal være unik.
Monitorering
Til statuscheck af DDS Registry og Repository findes til hver en servicecheck servlet der kalder servicens afhængigheder, samt en statuscheck servlet der monitorerer de kald der foretages fra DDS Registry og Repository. Alle servlets udstiller http-snitflader som melder 500 ved fejl.
Test af versionsnummer
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.
Overvågning
DDS registry og repository har følgende endpoints til overvågningEfter konfiguration og deploy af DDS Registry og Repository kan versionsnummeret hentes med følgende kommandoer:
curl localhost:9090/ddsregistry/
...
status
- curl localhost:9090/ddsregistry/alarm
curl localhost:9091/ddsrepository/
...
hvilket hver giver output i stil med:
|
I eksemplet kørte servicen på en lokal maskine konfigureret til port 9090.
Specielt vedrørende testConnection på JBoss
På grund af en kendt fejl i JBoss 6, logges en række exceptions i server loggen, hvis følgende filer ikke findes (de må gerne være tomme):
|
Konfiguration af databasemonitorering
Databasemonitoreringen laver en simpel query mod databasen. Denne query er justbar og kan ændres i servicenes property filer.
DDSRegistry.properties:
|
DDSRepository.properties:
|
Test af monitorering af afhængigheder
Til Monitorering af afhængigheder til egen propertyfil, trådmanager, document registry (for DDS registry) og egen database findes en servlet i DDS Registry og Repository. Bemærk at denne snitflade laver kald til databasen og healthshare registry.Efter konfiguration og deploy af komponenterne kan det testes med:
|
Servicen returnerer følgende http koder:
- Der returneres http kode 200 ved normal situation.
- http fejlkode 404 returneres hvis servicen ikke er deployeret
- Hvis en eller flere af afhængighederne mangler eller ved intern fejl i WildFly returneres kode 500. Fejlbeskeden vil kunne ses i ddsregistry-servicecheck.log eller ddsrepository-servicecheck.log. Såfremt der ikke er nogen fejlbeskeder i loggen bør property-filen undersøges som det første, da det er herigennem logindstillingerne bestemmes.
Test af monitorering af status
Til Monitorering af forbindelser til BRS, MinLog, SamtykkeVerifikationsservice, PersonInformation, registries (DDS registry), repositories (DDS Repository), egen database og længde på konfigurerede minlog tekster findes en servlet i DDS Registry og Repository. Disse services opsamler f.eks. data på hvor mange kald til de forskellige andre services der er fejlet, og melder fejl hvis det overstiger de threshold-værdier der er defineret i property-filen.
...
|
Servicen returnerer følgende http koder:
- Der returneres http kode 200 ved normal situation.
- http fejlkode 404 returneres hvis servicen ikke er deployeret
- Hvis en eller flere af interne afhængighederne har fejlet nok gange til at nå deres grænseværdi returneres kode 203.
- Hvis en eller flere af ekserne afhængighederne (minlog osv) har fejlet nok gange til at nå deres grænseværdi returneres kode 500.
- Bemærk at
- DDS Registry anvender ”documentregistryfriendlyname” kombineret med ”documentregistryititransaction” (se afsnit 4.1.1.1) til identifikation af de forskellige indekser.
DDS Repository anvender ”service_endpoint” til identifikation af de forskellige repositories.
Fejlbeskeder vil kunne ses i ddsregistry-status.log henholdsvis ddsrepository-status.log
Opsamlingen af kald til en service der fejler nulstilles automatisk efter et antal sekunder. Dette styrres med en properti, servicestatuscheck.unlockdelay.
Nulstilling af opsamling af kald
Opsamlingen af kald der benyttes til monitoring af status kan nustilles. Servicen resetstatuscounters nulstiller alle de opsamlede data omkring fejlkald der har været siden sidste nulstilling.
...
Nulstil status for DDS Registry:
|
Nulstil status for DDS Repository:
|
Servicen returnerer følgende http koder:
- Der returneres http kode 200 ved normal situation.
Overvågning
DDS Registry og Repository overvåges hver af en servicespecifik servicechecksnitflade, samt en statussnitflade. Disse to snitfladers url’er kan aflæses i afsnit 2.
Placering af HTML overvågningsside
Under listen af komponenter først i dette dokument, er der henvisninger til overvågningssiderne.
Fortolkning af HTML overvågningsside
Alle overvågningssider returnerer enten status 200 hvis de i øjeblikket kører fint, status 404 hvis servicen ikke er deployeret, 203 mange fejl fra intern dds kald (DDS registry) og status 500, hvis der er opstået en fejl, og komponenten derfor ikke virker korrekt.
Overvågningstype
Simpel webside deployeret på serveren. Som udgangspunkt overvåges følgende:
- Tilstedeværelse og indhold af propertyfil
- Forbindelse til datasources via JNDI opslag
- Forbindelse til document registry for DDS registry
- Konfiguration af trådmanager
Logfiler og fortolkning af disse
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.
SLA log
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:
- DocumentRegistry_RegistryStoredQuery
SLA-logpunkter for udgående kald fra DDS Registry:
...
Kaldte service
...
LogPoint
...
TargetSOAPOperation
...
Behandlings-relations-service
...
DocumentRegistry_RegistryStoredQuery.TreatmentRelation
...
http://nsi.dk/fmki20110601#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:
- logges i feltet GenericCallParms desuden det konfigurerede navn for XDS Registry under parameternavnet registryFriendlyName.
- 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
- XDSRegistryBusy
- XDSRegistryError, medmindre der er tale om advarsel om tilbageholdte oplysninger grundet samtykker
- XDSRegistryOutOfResources
- XDSUnavailableCommunity
- XDSUnknownCommunity
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
...
http://nsi.dk/fmki20110601#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
Audit log
Auditlogning foretages med det officielle NSP Audit Log modul.
De forskellige ITI-håndtag logges på følgende måde.
DDS Registry
ITI-18 søgninger logger patient-id, bruger-id, på-vegne-af-id 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:
|
DDS Repository
De forskellige ITI-43 operationer logger patient-id, bruger-id, på-vegne-af-id 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.
Eksempel:
{ "time": "2018-09-27T19:28:53.476Z", "category": "dk.sds.nsp.audit.log.dds", "audit": { "timestamp": "2018-09-27T21:28:52.996+02:00", "components": [ { "component": "DDS", "contexts": [ { "context": "documentRepositoryRetrieveDocumentSet", "information": [ { "key": "patient-cpr", "type": "SPI", "value": "2110979420" }, { "key": "bruger-cpr", "type": "SPI", "value": "0101584160" }, { "key": "on-behalf-of-cpr", "type": "SPI", "value": "0101584160" },
...
status
- curl localhost:9091/ddsrepository/alarm
Generelt omkring status endpointet:
- Returnerer status HTTP 200, hvis DDS'en kan modtage forespørgsler, og 500 hvis den ikke er i stand til det.
- Returnerer tekst i json format
- Eksempel på status check er adgang til database og gyldig certifkat for kald til backends
- Eksempel på relevant driftinformation information, der returneres er f.eks. servicens version og tidspunkt for certifikat udløb
Status omkring alarm endpoint:
- Returnerer HTTP 500, hvis der er aktive alarmer og ellers HTTP 200.
- Returnerer tekst i text/plan format.
- Der returneres kun tekst, hvis der en alarm. Hver alarm skrives på sin egen linie.
- En klassisk alarm holder øje med kald til ekstern service i et givet tidsrum og melder fejl, hvis antal fejl bliver for højt.
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 |
HealthIndictors
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: navn på healthIndicator. Dette er også navnet på klassen i sourcekoden
- Udførsel: det tjek der udføres ved health checket
- Status 200: Den tekst status og/eller alarm returnerer ved kald når tjekket går godt
- Status 500: Den tekst status og/eller alarm returnerer ved kald når tjekket fejler
- Konfiguration (property) er den opsætning, der kan påvirke healthindicatoren. Typisk properties (default værdi står efter ":") og i enkelte tilfælde database opsætning.
| 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. |
DatasourceHealthIndicator - konfiguration af databasemonitorering
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; |
HealthIndicatorer, der overvåger fejlkald over tid
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.
Logfiler og fortolkning af disse
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. |
SLA log
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:
- DocumentRegistry_RegistryStoredQuery
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:
- logges i feltet GenericCallParms desuden det konfigurerede navn for XDS Registry under parameternavnet registryFriendlyName.
- 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
- XDSRegistryBusy
- XDSRegistryError, medmindre der er tale om advarsel om tilbageholdte oplysninger grundet samtykker
- XDSRegistryOutOfResources
- XDSUnavailableCommunity
- XDSUnknownCommunity
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
Audit log
Auditlogning foretages med det officielle NSP Audit Log modul.
De forskellige ITI-håndtag logges på følgende måde.
DDS Registry
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:
| Code Block | ||
|---|---|---|
| ||
{
"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"
}
}
|
DDS Repository
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:
| Code Block | ||
|---|---|---|
| ||
{
"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"
}
}
|
...
Standard fejlsøgning
- Ved problemer med indlæsning af servicens konfigurationsfiler (DDSRegistry.properties og DDSRepository.properties) bør man verificere at filen er volume-mappet korrekt. Vær opmærksom på at filen ikke læses hvis den ikke er til stede ved opstart af WildFly serveren.
- Ved manglende logning hvor der forventes fejlbeskeder bør konfigurationsfilen (DDSRegistry.properties og DDSRepository.properties) checkes, da logindstillingerne sættes herigennem.
- En service eller et job kan stoppes og startes gennem docker.
...