Versions Compared

Key

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

...

  • DDSRegistry
    • Type: Webservice
    • Filnavn: ddsregistry.war
    • Servicecheckurl: <serverurl>/ddsregistry/servicecheck
    • Statusurl: <serverurl>/ddsregistry/status
    • Versionurl: <serverurl>/ddsregistry/version
    • Endpoint for RegistryStoredQuery, RegisterDocumentSetB og RegisterOnDemandDocumentEntry:
      • Url: <serverurl>/ddsregistry
      • DKS-konfiguration: <serverurl>/ddsregistry/dccconfig/dks
      Endpoint for UpdateDocumentSet:
      • Url: <serverurl>/ddsregistry/metadataupdate
      • DKS-konfiguration: <serverurl>/ddsregistry/metadataupdate/dccconfig/dks

DDS Registry komponenten anvender desuden ConsentVerification-servicen, MinLog Registration-servicen, Behandlingsrelationsservicen, STS’en samt HealthShare Document Registry servicen.

...

DDS Registry afhænger af tilstedeværelsen af en række andre services, og ved fejl i disse vil DDS Registry fejle tilsvarende. Disse services er:

  • HealthShare Document RegistryNationale registry NXRG samt andre bagvedliggende registry services (som konfigureret i databasen)
  • STS
  • Samtykkeverifikationsservice

...

Liste (kommasepareret)dds.citizen.

Property

Beskrivelse

idcard.version

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

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

Angiver placering af log4j properties.

registry.invoker.use.fastinfoset

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. 

client.consentverification.properties

Angiver placering af properties til kald af Samtykkeverifikationsservicen.

client.minlogregistration.properties

Angiver placering af properties til kald af MinLog Registreringsservicen.

client.documentregistry.properties

Angiver placering af properties til kald af HS Document Registrydet nationale registry (NXRG) samt andre bagvedliggende registry services.

client.treatment.relation.properties

Angiver placering af properties til kald af behandlingsrelationsservicen.

treatment.relation.service.invoke

Angiver med værdien true, at behandlingsrelationsservicen skal kaldes. Værdien false bevirker, at behandlingsrelationsservicen ikke kaldes.

minlog.query.default

Teksten der sendes til MinLog registreringsservicen, når en sundhedsperson laver opslag.

minlog.query.consentoverride

Teksten der sendes til MinLog registreringsservicen, når en sundhedsperson laver opslag med tilsidesættelse af samtykketjek (værdispring).

servicestatuscheck.consentverification.failurethreshold

Antal kald til samtykkeverifikationsservicen der må fejle før der meldes 500 på statussnitfladen

servicestatuscheck.treatmentrelation.failurethreshold

Antal kald til BRS der må fejle før der meldes 500 på statussnitfladen

servicestatuscheck.minlog.failurethreshold

Antal kald til MinLog der må fejle før der meldes 500 på statussnitfladen

servicestatuscheck.database.failurethreshold

Antal kald til lokal database der må fejle før der meldes 500 på statussnitfladen

servicestatuscheck.unlockdelayAntal sekunder fra statussnitfladen melder 500 til at antal fejl kald nulstilles.

ap.assigning.authorities.filename

Angiver fil med liste af AP, der indgår i komplekseforløb pilotprojektet.

ap.patient.consent.filename

Angiver fil med liste af patienter, der har givet samtykke til AP.
sts.keystoreKeystore, der indeholder DDS Registrys funktionscertifikat
sts.keystore.passwordPassword til sts.keystore
sts.endpointEndpointet, hvor DDS Registry skal trække sit SOSI IDkort på baggrund af sts.keystore
idcard.subject.id.typeSubjecttype for IDKortet
idcard.subject.idSubjectid for IDKortet
idcard.subject.nameSubjectnavn for IDKortet
idcard.levelSikkerhedsniveau for IDkortet
idcard.system.nameSystemnavn i IDkortet

whitelisted.level3.cvrs

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)
dds.citizen.powerofattorney.privilegesDet fuldmagtsprivilegie, der tillader at en borger tilgår en anden borgers data via DDS
validation.response.ydernummerValideringsniveau for ydernummer-validering. Eksempel: WARNING, OFF. Default: WARNING
oid.assignment.ydernummerOID for ydernummer. Default: 1.2.208.176.1.4

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.

I den/de properties-filer, der udpeges af de forskellige ”client.*.properties” properties skal flg. properties defineres:

Property

Beskrivelse

Værdier

verification.wsdl.location

Angiver service endpoint for Samtykkeverifikationsservicen


registration.log.organisation_name

Angiver standard organisationsnavnet, der bliver sendt til MinLog Registreringsservicen.


treatment.relation.wsdl.location

Angiver service endpoint for behandlingsrelationsservicen


treatment.relation.service.timeout

Timeout givet i millisekunder anvendt ved kald til behandlingsrelationsservicen 


verification.invoker.timeout

Timeout givet i millisekunder anvendt ved kald til samtykke verifikationsservicen.


minlog.producer.bootstrap.serversKafka bootstrap servers der anvendes til MinLog registrering.
minlog.producer.client.id

Kafka klient id anvendt til MinLog registrering.


minlog.producer.key.serializerKafka key serializer. Skal være "org.apache.kafka.common.serialization.StringSerializer"
minlog.producer.value.serializerKafka value serializer. Skal være "org.apache.kafka.common.serialization.StringSerializer"
minlog.topicKafka topic til MinLog registrering.

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.


dds.minlog.on.idcard.level3.enabledAngiver, om DDS skal minlogge, når der kaldes med SOSI Idkort niveau 3Skal sættes: true, false
personinformation.maxTotalConnectionsKonfiguration af client pool til kald af CPRExists service
personinformation.defaultMaxConnectionsPerRouteKonfiguration af client pool til kald af CPRExists service
personinformation.urlPeger 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

Beskrivelse

treatment.relation.serviceprovider.vendor

Indsættes som ’ServiceProvider/Vendor’ i behandlingsrelationsservicens treatmentRelationRequestBody

treatment.relation.serviceprovider.version

Indsættes som ’ServiceProvider/Version’ i behandlingsrelationsservicens treatmentRelationRequestBody

treatment.relation.lookup.timeinterval.

Property

Beskrivelse

treatment.relation.serviceprovider.vendor

Indsættes som ’ServiceProvider/Vendor’ i behandlingsrelationsservicens treatmentRelationRequestBody

treatment.relation.serviceprovider.version

Indsættes som ’ServiceProvider/Version’ i behandlingsrelationsservicens treatmentRelationRequestBody

treatment.relation.lookup.timeinterval.start.offset

Angiver antallet af dage fra DDSRegistry-kaldtidspunktet, der skal indsættes som tidsstemplet ’RelationLookupTimeInterval/start’ i behandlingsrelationsservicens treatmentRelationRequestBody.

Negativt fortegn angiver antal dage før DDSRegistry-kaldtidspunktet.

treatment.relation.lookup.timeinterval.end.offset

Angiver antallet af dage fra DDSRegistry-kaldtidspunktet, der skal indsættes som tidsstemplet ’RelationLookupTimeInterval/end’ i behandlingsrelationsservicens treatmentRelationRequestBody.

Negativt fortegn angiver antal dage før DDSRegistry-kaldtidspunktet.

treatment.relation.timelimit.offset

Angiver antallet af dage fra DDSRegistry-kaldtidspunktet, der skal indsættes som tidsstemplet ’TimeLimit’ i behandlingsrelationsservicens treatmentRelationRequestBody.

treatment.relation.queryable.cvr

Indsættes som ’QueryableCvr’ i behandlingsrelationsservicens treatmentRelationRequestBody

treatment.relation.external.reference.id

Indsættes som ’ExternalReferenceId’ i behandlingsrelationsservicens treatmentRelationRequestBody

treatment.relation.acceptable.relations.hospital

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

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

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

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

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

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

...

Code Block
idcard.version = 1.0.1
sts.test.mode = true
log.config.file=ddsregistry.log4j.properties
client.consentverification.properties = DDSRegistry.properties
client.minlogregistration.properties = DDSRegistry.properties
client.documentregistry.properties = DDSRegistry.properties
client.treatment.relation.properties = DDSRegistry.properties
treatment.relation.service.invoke=true
treatment.relation.service.invoke=true
treatment.relation.service.timeout=3000
treatment.relation.wsdl.location = http://localhost:9090/ddsservices-brs-stub/BRSFacadeService/BRSFacadeStub?wsdl
verification.wsdl.location=http://localhost:9090/consent-verification/service?wsdl
verification.invoker.timeout=30000
treatment.relation.serviceprovider.vendor=vendor
treatment.relation.serviceprovider.version=version
treatment.relation.lookup.timeinterval.start.offset=-1
treatment.relation.lookup.timeinterval.end.offset=1
treatment.relation.timelimit.offset=90
treatment.relation.queryable.cvr=19343634
treatment.relation.external.reference.id=
treatment.relation.acceptable.relations.hospital=A,B,C
treatment.relation.followup.relations.hospital=All
treatment.relation.acceptable.relations.doctor=C,D,E
treatment.relation.followup.relations.doctor=All
treatment.relation.acceptable.relations.organization=A,B,C
treatment.relation.followup.relations.organization=All
consent.check.sor.assigning.authorities.oid=1.2.208.176.1.1,1.2.208.176.1
consent.check.shak.assigning.authorities.oid=
consent.check.ynumber.assigning.authorities.oid=
registering.allowed.sor.assigning.authorities.oid=1.2.208.176.1.1,1.2.208.176.1
registering.allowed.shak.assigning.authorities.oid=
registering.allowed.ynumber.assigning.authorities.oid=
servicestatuscheck.consentverification.failurethreshold = 1
servicestatuscheck.treatmentrelation.failurethreshold = 1
servicestatuscheck.minlog.failurethreshold = 1
servicestatuscheck.database.failurethreshold = 1
ap.assigning.authorities.filename=/pack/wildfly8/modules/nsi/ddsregistry/config/main/ap_authorities.txt
ap.patient.consent.filename=/pack/wildfly8/modules/nsi/ddsregistry/config/main/ap_patients.txt
idcard.subject.id.type=medcom:cvrnumber
idcard.subject.id=46837428
idcard.subject.name=NETS DANID A/S - TU VOCES gyldig
idcard.level=3
idcard.system.name=Dokumentdelingsservicen
sts.endpoint=http://test1-cnsp.ekstern-test.nspop.dk:8080/sts/services/SecurityTokenService
sts.keystore=Statens_Serum_Institut_VOCES.jks
sts.keystore.password=Test1234
minlog.producer.bootstrap.servers=kafka:9092
minlog.producer.client.id=DdsMinLog2-producer
minlog.producer.key.serializer=org.apache.kafka.common.serialization.StringSerializer
minlog.producer.value.serializer=org.apache.kafka.common.serialization.StringSerializer
minlog.topic=MINLOG_TOPIC

Konfiguration af indeks

De dokumentindeks, hvortil DDSRegistry videresender opslag og registrering af dokumenter, er konfigureret i tabellen documentregistry i databasen documentsources.


dds.minlog.on.idcard.level3.enabled=true
personinformation.maxTotalConnections=200
personinformation.defaultMaxConnectionsPerRoute=20
personinformation.url=http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1


Konfiguration af indeks

De dokumentindeks, hvortil DDSRegistry videresender opslag og registrering af dokumenter, er konfigureret i tabellen documentregistry i databasen documentsources.

Kolonne

Type

Beskrivelse

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.

...

Værdi

Beskrivelse

ITI-18

Benyttes til opslag på metadata via Registry Stored Query ITI-18 transaktionen.

ITI-42

Benyttes til registrering af metadata for dokument(er) med fast (Stable) indhold via Register Document Set-b ITI-42 transaktionen.

ITI-57

Benyttes til opdatering af registrerede metadata via Update Document Set ITI-57 transaktionen.

ITI-61

Benyttes til registrering af metadata for dokument(er) med dynamisk (On-demand) indhold via Register On-Demand Document Entry ITI-61 transaktionen.

Tabel 4 Værdier for documentregistryititransaction, der anfører hvilken ITI transaction, den givne indgang kan anvendes med.







Tabel 4 Værdier for documentregistryititransaction, der anfører hvilken ITI transaction, den givne indgang kan anvendes med.


Følgende er et 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-4218

Tabel 5 Eksempel på konfiguration af indeks

...

Code Block
INSERT INTO documentsource.documentregistry (documentregistryserviceurl, documentregistryfriendlyname, documentregistryservicenamespace, documentregistrylocal, documentregistryservicename, documentregistryfailurethreshold, documentregistryititransaction) VALUES (' http://sv-proj-093:57774/csp/public/hsbus/HS.IHE.XDSb.Registry.Services.cls', 'DDS', 'urn:ihe:iti:xds-b:2007', true, '300000', true, 'DocumentRegistry_Service', 5, '1.2_MEDCOM_NO_HSUID', 'ITI-4218');

log4j konfiguration

Log4j konfiguration findes i (hvis ovenstående format anvendes) compose/configuration/ddsregistry/ddsregistry.log4j.properties filen.

...

Konfiguration af SLA-log findes i filen compose/configuration/ddsregistry/nspslalog-ddsregistry.properties.

Whitelist konfiguration

Der foretages whitelisting på to niveauer. Først er der den whitelisting, der skal til for at anvende DDS Registry. Derudover findes en whitelisting, der afgør, hvorvidt en anvender må kalde DDS Registry med et niveua 3 Idkort. De to whitelisting-mekanismer beskrives i det følgende.

Whitelisting til anvendelse af DDS Registry

For at tilføje et CVR-nummer til white-list databasen, bruges følgende SQL insert:

...

Code Block
INSERT INTO whitelist.whitelist_config ( service_key, service_type, cvr ) VALUES ( 'dk.nsi.auth.brs.cvr.list', '', 'some-cvr-number-here' ); 
INSERT INTO whitelist.whitelist_config ( service_key, service_type, cvr ) VALUES ( 'dk.nsi.consent.verification', '', 'some-cvr-number-here' );
INSERT INTO whitelist.whitelist_config ( service_key, service_type, cvr ) VALUES ( 'dk.nsi.minlog.registration', '', 'some-cvr-number-here' );

DKS konfiguration

Indholdet, der returneres ved kald af DCC Konfiguration Service-snitfladen (DKS) for endpointet for RegistryStoredQuery, RegisterDocumentSetB og RegisterOnDemandDocumentEntry, indlæses af DDS Registry fra filen:

Code Block
/pack/wildfly8/modules/nsi/ddsregistry/config/main/dksConfiguration.xml

Indholdet, der returneres ved kald af DCC Konfiguration Service-snitfladen (DKS) for endpointet for UpdateDocumentSet, indlæses af DDS Registry fra filen:

Code Block
/pack/wildfly8/modules/nsi/ddsregistry/config/main/metadataUpdateDksConfiguration.xml

Filerne skal overholde DKS XML-skemaet og beskriver de webservice-operationer DDS Registry udstiller jf. [DKS-beskrivelse].

Test af DKS

Efter konfiguration og deployering af DDS Registry servicen, kan DKS-snitfladerne testes med:

Code Block
curl –i localhost:9090/ddsregistry/dccconfig/dks
curl –i localhost:9090/ddsregistry/metadataupdate/dccconfig/dks

Succesfuldt svar giver indholdet svarende til filerne nævnt ovenfor.

Header konfiguration

Det er muligt at konfigurere registry'et til at lede efter HTTP- og SOAP-headere, og videresende dem til bagvedliggende registries. Videresendelse styres af databasetabellen documentsources.documentregistry_forwarded_header. Indholdet af tabellen er som følger:

...

Monitorering af DDSRegistry

Til statuscheck af DDSRegistry findes en servicecheck servlet der kalder servicens afhængigheder, samt en statuscheck servlet der monitorerer de kald der foretages fra DDSRegistry. Begge servlets udstiller http-snitflader som melder 500 ved fejl.

Test af versionsnummer

Efter konfiguration og deploy af DDS Registry kan versionsnummeret hentes med følgende kommando:

Code Block
curl localhost:9090/ddsregistry/version

hvilket giver output i stil med:

Code Block
Version: 2.0.0

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

Code Block
/pack/jboss/server/default/conf/props/roles.properties

/pack/jboss/server/default/conf/props/users.properties

Konfiguration af databasemonitorering

Databasemonitoreringen laver en simpel query mod databasen. Denne query er justbar og kan ændres i DDSRegistry.properties

Code Block
documentsourcesds.statement=SELECT * FROM documentsources.documentregistry LIMIT 1;
sords.statement=SELECT * FROM stamdata.sorrelationer LIMIT 1;
authds.statement=SELECT * FROM stamdata.autreg LIMIT 1;
whitelistds.statement=SELECT * FROM whitelist.whitelist_config LIMIT 1;

Test af monitorering af afhængigheder

Til Monitorering af afhængigheder til egen propertyfil, trådmanager, document registry og egen database findes en servlet i DDSRegistry. Bemærk at denne snitflade laver kald til databasen og healthshare registry.Efter konfiguration og deploy af DDSRegistry, kan den testes med:

Code Block
curl –i localhost:9090/ddsregistry/servicecheck

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. 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, registries og egen database findes en servlet i DDSRegistry. Denne service opsamler 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.
Efter konfiguration og deploy af DDSRegistry, kan den testes med:

Code Block
curl –i localhost:9090/ddsregistry/status

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 har fejlet nok gange til at nå deres grænseværdi returneres kode 500. Fejlbeskeden vil kunne ses i ddsregistry-status.log. Såfremt der er blevet fjernet et indeks fra konfigurationen (se afsnit 4.1.1.1) mens dette var i en fejlende tilstand, vil det vedblive med at forårsage status 500. Dette kan afhjælpes ved at gendeployere servicen.
  • Bemærk at DDSRegistry anvender ”documentregistryfriendlyname” kombineret med ”documentregistryititransaction” (se afsnit 4.1.1.1) til identifikation af de forskellige indekser.

Overvågning

DDS Registry overvåges 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 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:

  1. Tilstedeværelse og indhold af propertyfil
  2. Forbindelse til datasources via JNDI opslag
  3. Forbindelse til document registry
  4. 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.

...

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.

...

SLA-logpunkter for indkommende kald til DDS Registry:

  • DocumentRegistry_RegistryStoredQuery
  • DocumentRegistry_RegisterDocumentSet-b
  • DocumentRegistry_RegisterOnDemandDocumentEntry
  • DocumentRegistry_UpdateDocumentSet

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

...

DocumentRegistry_RegisterDocumentSet-b

...

urn:ihe:iti:2007:RegisterDocumentSet-b

...

DocumentRegistry_RegisterOnDemandDocumentEntry

...

urn:ihe:iti:2010:RegisterOnDemandDocumentEntry

...

DocumentRegistry_UpdateDocumentSet

...

urn:ihe:iti:2010:UpdateDocumentSet

Whitelisting til kald med niveau 3 Idkort

Alle anvendere skal whitelistes som beskrevet ovenfor for at anvende DDS Registry. Derudover findes en ekstra whitelisting mekanisme, som gør det muligt for visse anvendere at kalde DDS Registry 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:

Code Block
titleOpsætning af niveau 3 whitelisting
whitelisted.level3.cvrs=31908574,CVR:46837428,CERT:CVR:33257872-FID:28250866

Eksemplet viser de tre formater, der kan anvendes:

  • Værdi uden type: I eksempelt ovenfor fortolkes værdien '31908574' som et CVR nummer. Dette sikrer bagudkompatibilietet med tidligere opsætninger
  • Værdier med typen CVR: I eksemplet ovenfor fortolkes 'CVR:46837428' som et CVR nummer med værdien 46837428
  • Værdier med typen CERT: I eksemplet ovenfor fortolkes 'CERT:CVR:33257872-FID:28250866' som whitelisting af certificatet med Subject Serial Number CVR:33257872-FID:28250866.

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.

DKS konfiguration

Indholdet, der returneres ved kald af DCC Konfiguration Service-snitfladen (DKS) for endpointet for RegistryStoredQuery, RegisterDocumentSetB og RegisterOnDemandDocumentEntry, indlæses af DDS Registry fra filen:

Code Block
/pack/wildfly8/modules/nsi/ddsregistry/config/main/dksConfiguration.xml

Indholdet, der returneres ved kald af DCC Konfiguration Service-snitfladen (DKS) for endpointet for UpdateDocumentSet, indlæses af DDS Registry fra filen:

Code Block
/pack/wildfly8/modules/nsi/ddsregistry/config/main/metadataUpdateDksConfiguration.xml

Filerne skal overholde DKS XML-skemaet og beskriver de webservice-operationer DDS Registry udstiller jf. [DKS-beskrivelse].

Test af DKS

Efter konfiguration og deployering af DDS Registry servicen, kan DKS-snitfladerne testes med:

Code Block
curl –i localhost:9090/ddsregistry/dccconfig/dks
curl –i localhost:9090/ddsregistry/metadataupdate/dccconfig/dks

Succesfuldt svar giver indholdet svarende til filerne nævnt ovenfor.

Header konfiguration

Det er muligt at konfigurere registry'et til at lede efter HTTP- og SOAP-headere, og videresende dem til bagvedliggende registries. Videresendelse styres af databasetabellen documentsources.documentregistry_forwarded_header. Indholdet af tabellen er som følger:

FeltnavnIndhold
headernameNavn 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.
headertypeTypen af header der ledes efter. Kan være 'HTTP' eller 'SOAP', skrevet med store bogstaver.
documentregistryidId 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.


Monitorering af DDSRegistry

Til statuscheck af DDSRegistry findes en servicecheck servlet der kalder servicens afhængigheder, samt en statuscheck servlet der monitorerer de kald der foretages fra DDSRegistry. Begge servlets udstiller http-snitflader som melder 500 ved fejl.

Test af versionsnummer

Efter konfiguration og deploy af DDS Registry kan versionsnummeret hentes med følgende kommando:

Code Block
curl localhost:9090/ddsregistry/version

hvilket giver output i stil med:

Code Block
Version: 2.0.0

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

Code Block
/pack/jboss/server/default/conf/props/roles.properties

/pack/jboss/server/default/conf/props/users.properties


Konfiguration af databasemonitorering

Databasemonitoreringen laver en simpel query mod databasen. Denne query er justbar og kan ændres i DDSRegistry.properties

Code Block
documentsourcesds.statement=SELECT * FROM documentsources.documentregistry LIMIT 1;
sords.statement=SELECT * FROM stamdata.sorrelationer LIMIT 1;
authds.statement=SELECT * FROM stamdata.autreg LIMIT 1;
whitelistds.statement=SELECT * FROM whitelist.whitelist_config LIMIT 1;

Test af monitorering af afhængigheder

Til Monitorering af afhængigheder til egen propertyfil, trådmanager, document registry og egen database findes en servlet i DDSRegistry. Bemærk at denne snitflade laver kald til databasen og healthshare registry.Efter konfiguration og deploy af DDSRegistry, kan den testes med:

Code Block
curl –i localhost:9090/ddsregistry/servicecheck

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. 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 og egen database findes en servlet i DDSRegistry. Denne service opsamler 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.
Efter konfiguration og deploy af DDSRegistry, kan den testes med:

Code Block
curl –i localhost:9090/ddsregistry/status

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 DDSRegistry anvender ”documentregistryfriendlyname” kombineret med ”documentregistryititransaction” (se afsnit 4.1.1.1) til identifikation af de forskellige indekser.

Fejlbeskeder vil kunne ses i ddsregistry-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.

Der skrives i statusloggen når denne service har været brugt.

Code Block
titleNulstil status
curl -i http://localhost:9090/ddsregistry/resetstatuscounters

Servicen returnerer følgende http koder:

  • Der returneres http kode 200 ved normal situation.

Overvågning

DDS Registry overvåges 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 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:

  1. Tilstedeværelse og indhold af propertyfil
  2. Forbindelse til datasources via JNDI opslag
  3. Forbindelse til document registry
  4. 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.

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.


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 logges alle kald til DDSRegistryWS 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

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 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": "2018-09-27T19:55:44.68Z",
   "category": "dk.sds.nsp.audit.log.dds",
   "audit": {
      "timestamp": "2018-09-27T21:55:42.745+02:00",
      "components": [
         

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

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 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": "2018-09-27T19:55:44.68Z",
   "category": "dk.sds.nsp.audit.log.dds",
   "audit": {
      "timestamp": "2018-09-27T21:55:42.745+02:00",
      "components": [
         {
            "component": "DDS",
            "contexts": [
               {
                  "context": "documentRegistryAdhocQuery",
                  "information": [
                     {
                        "key": "patient-cpr",
                        "type": "RPI",
                        "value": "2110979420"
                     },
                     {
                        "key": "bruger-cpr",
                        "type": "RPI",
                        "value": "0101584160"
                     },
                     {
                        "key": "on-behalf-of-cpr",
                        "type": "RPI",
                        "value": "0101584160"
                     },
                     {
                        "key": "queryTypecode",
                        "type": "NPI",
                        "values": [
                           "('53576-5^^2.16.840.1.113883.6.1')",
                           "('39289-4^^2.16.840.1.113883.6.1')"
                        ]
                     },
                     {
                        "key": "document_entry.0.homecommunityid",
                        "type": "SPI",
                        "value": ""
                     },
                     {
                        "key": "document_entry.0.repositoryid",
                        "type": "SPI",
                        "value": "1.3.6.1.4.1.21367.2010.1.2.1125"
                     },
                     {
                        "key"component": "document_entry.0.documentidDDS",
                "contexts": [
        "type": "SPI",
      {
                  "valuecontext": "8352061236760766124.2930903161888816635.1538046332405documentRegistryAdhocQuery",
                     },"information": [
                     {
                        "key": "document_entry.0.typecodepatient-cpr",
                        "type": "SPIRPI",
                        "value": "53576-52110979420"
                     },
                     {
                        "key": "document_entry.1.homecommunityidbruger-cpr",
                        "type": "SPIRPI",
                        "value": "0101584160"
                     },
                     {
                        "key": "document_entry.1.repositoryidon-behalf-of-cpr",
                        "type": "SPIRPI",
                        "value": "1.3.6.1.4.1.21367.2010.1.2.11250101584160"
                     },
                     {
                        "key": "document_entry.1.documentidcitizen-relation",
                        "type": "SPIRPI",
                        "value": "4869530052539485342.5952203964580776052.1537974946937guardian"
                     }, 
                        {"key": "queryTypecode",
                        "keytype": "document_entry.1.typecodeNPI",
                        "typevalues": [
   "SPI                        "('53576-5^^2.16.840.1.113883.6.1')",
                           "value": "53576-5('39289-4^^2.16.840.1.113883.6.1')"
                     }
   ]
               ]
      },
         }
            ]{
         }
      ]
   },
   "access": {
      "codekey": 200"document_entry.0.homecommunityid",
      "duration": 1826,
        "httpHeaders": {
         "Content-Typetype": "application/soap+xml; charset=UTF-8"
SPI",
        },
         "httpHost": "localhost",
      "idCardAttributesvalue": {""
         "medcom:CareProviderID": "30808460",
         "medcom:CareProviderName": "NETS DANID A/S" },
         "medcom:ITSystemName": "TRUST2408 Systemtest XIX CA",
            {
    "sosi:AuthenticationLevel": "3",
         "sosi:IDCardID": "RBW1ZXSm/btA4HnXsGvhpg==",
         "sosi:IDCardTypekey": "systemdocument_entry.0.repositoryid",
         "sosi:IDCardVersion": "1.0.1"
         },
      "methodtype": "POSTSPI",
                        "pathvalue": "/ddsregistry/service",1.3.6.1.4.1.21367.2010.1.2.1125"
      "query": "",
      "port": 9090,
      "protocol": "http" },
      "reqSize": 8754,
      "resSize": 16910,
      "soapHeaders": {
             "Issuer": "TEST1-NSP-STS",
           "MessageIDkey": "AAABZhyZvtFydsMAFNBBgFNPU0k=document_entry.0.documentid",
          "NameID": "SubjectDN={SERIALNUMBER=CVR:30808460-UID:25351738 + CN=NETS DANID A/S - TU VOCES gyldig, O=NETS DANID A/S // CVR"type":30808460, C=DK},IssuerDN={CN=TRUST2408 Systemtest XIX CA, O=TRUST2408, C=DK},CertSerial={1478025777}",
 "SPI",
              "w3Action": "urn:ihe:iti:2007:RegistryStoredQuery",
         "w3MessageIDvalue": "urn:uuid:9660068c-accb-425e-a350-2dd9cbfcf408",
8352061236760766124.2930903161888816635.1538046332405"
           "w3To": "http://localhost:9090/ddsregistry/service"
          },
      "threadId": "default task-1",
      "time": "2018-09-27T21:55:42.739+02:00",
      "stats": {
            "handlerDuration": 90,
            "bufferAllocatedkey": true"document_entry.0.typecode",
              "usedBuffers": 2,
         "activeBuffersInPooltype": 2"SPI",
         "idleBuffersInPool": 0
        }
   }
}

ITI-42, ITI-61, ITI-57: foretag auditlogning for hver DocumentEntry (DE) i request DE.uniqueId, DE.repositoryUniqueId, DE.homeCommunityId, DE.typeCode. Se eksempel for ITI-42 nedenfor:

Code Block
{
    "timevalue": "2018-09-27T19:35:31.637Z",53576-5"
   "category": "dk.sds.nsp.audit.log.dds",
          "audit": {
      "timestamp": "2018-09-27T21:35:00.127+02:00" },
      "components": [
               {
            "component            "key": "DDSdocument_entry.1.homecommunityid",
              "contexts": [
          "type": "SPI",
      {
                  "contextvalue": "documentRegistryRegisterDocumentSetB",
                    "information": [ },
                     {
                        "key": "document_entry.01.repositoryid",
                        "type": "SPI",
                        "value": "1.3.6.1.4.1.21367.2010.1.2.1125"
                     },
                     {
                        "key": "document_entry.01.documentid",
                        "type": "SPI",
                        "value": "84066976538820523014869530052539485342.91825221816098953185952203964580776052.15379762505091537974946937"
                     },
                     {
                        "key": "document_entry.01.typecode",
                        "type": "SPI",
                        "value": "7446553576-65"
                     }
                  ]
               }
            ]
         }
      ]
   },
   "access": {
      "code": 200,
      "duration": 315041826,
      "httpHeaders": {
         "Content-Type": "textapplication/soap+xml; charset=UTF-8"
      },
      "httpHost": "localhost",
      "idCardAttributes": {
         "medcom:CareProviderID": "30808460",
         "medcom:CareProviderName": "NETS DANID A/S",
         "medcom:ITSystemName": "TRUST2408 Systemtest XIX CA",
         "sosi:AuthenticationLevel": "3",
         "sosi:IDCardID": "0YlQSQCxdxK41NLE23AsZARBW1ZXSm/btA4HnXsGvhpg==",
         "sosi:IDCardType": "system",
         "sosi:IDCardVersion": "1.0.1"
      },
      "method": "POST",
      "path": "/ddsregistry/service",
      "query": "",
      "port": 9090,
      "protocol": "http",
      "reqSize": 207968754,
      "resSize": 241916910,
      "soapHeaders": {
         "Issuer": "TEST1-NSP-STS",
         "MessageID": "AAABZhrz9QPpy4eB02Sp+lNPU0kAAABZhyZvtFydsMAFNBBgFNPU0k=",
         "NameID": "SubjectDN={SERIALNUMBER=CVR:30808460-UID:25351738 + CN=NETS DANID A/S - TU VOCES gyldig, O=NETS DANID A/S // CVR:30808460, C=DK},IssuerDN={CN=TRUST2408 Systemtest XIX CA, O=TRUST2408, C=DK},CertSerial={1478025777}",
         "w3Action": "urn:ihe:iti:2007:RegisterDocumentSet-bRegistryStoredQuery",
         "w3MessageID": "urn:uuid:6dae669b9660068c-0757accb-4fe9425e-ac45a350-e0f3009c96432dd9cbfcf408",
         "w3To": "http://localhost:9090/ddsregistry/service"
      },
      "threadId": "default task-71",
      "time": "2018-09-27T21:3555:0042.127739+02:00",
      "stats": {
         "handlerDuration": 490,
         "bufferAllocated": true,
         "usedBuffers": 32,
         "activeBuffersInPool": 32,
         "idleBuffersInPool": 0
      }
   }
}

...