Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootEHMI Message Handler (EMH)
includeroottrue


Indhold

Table of Contents

Komponenter

Dette dokument dækker følgende komponenter på NSP, som sammen med Domibus NSP, EMH, som  er en del af afEHMI MeddelelsesRegistrering(EMR)

  • MSH Adapter

Konfiguration

I folderen "compose/configuration" findes følgende relevante konfigurationsfiler, som indlæses når docker compose startes op:

adapter.propertiesProperties til MSH AdapterEMH.
log4j2.properties

Opsætning af logning i MSH Adapter

msh-adapter-ds.xml

DataSource

Properties i "adapter.properties"

Bemærk, nogle af default-værdierne herunder er forløbige indtil tingene falder mere på plads.

Properties til adapteren selv og Domibus-integrationen

Property

Beskrivelse

Default værdi

dk.nsp.msh.adapter.domibus.url.domibus.wspluginURL til Domibus WS pluginhttp://domibus-nsp:8080/domibus/services/wsplugin
dk.nsp.msh.adapter.domibus.usernameBrugernavn til Domibusadmin
dk.nsp.msh.adapter.domibus.passwordPassword til Domibus123456
dk.nsp.msh.adapter.domibus.mpcDomibus MPC (Message Partition Channel)http://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/defaultMPC
dk.nsp.msh.adapter.domibus.connectTimeoutHTTP connect timeout til Domibus (ms)60000

dk.nsp.msh.adapter.domibus.readTimeout
HTTP read timeout til Domibus (ms)60000
dk.nsp.msh.adapter.domibus.chunkSizeChunk-størrelse ved filoverførsel8192
dk.nsp.msh.adapter.domibus.profile.serviceTypeebMS Service type; bruges i PMode-matchtc1
dk.nsp.msh.adapter.domibus.profile.serviceValueebMS Service navn; bruges i PMode-matchbdx:noprocess
dk.nsp.msh.adapter.domibus.profile.actionebMS Action; identificerer message-flow i PModeTC1Leg1
dk.nsp.msh.adapter.domibus.profile.fromRoleRolle for afsender (From) i ebMS headerhttp://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/initiator
dk.nsp.msh.adapter.domibus.profile.toRoleRolle for modtager (To) i ebMS headerhttp://docs.oasis-open.org/ebxml-msg/ebms/v3.0/ns/core/200704/responder
dk.nsp.msh.adapter.domibus.profile.partyIdTypeIdentifier-scheme for PartyIdurn:oasis:names:tc:ebcore:partyid-type:unregistered
dk.nsp.msh.adapter.domibus.profile.originalSenderBusiness afsender (C1) i four-corner routingurn:oasis:names:tc:ebcore:partyid-type:unregistered:C1
dk.nsp.msh.adapter.domibus.profile.finalRecipientBusiness modtager (C4) i four-corner routingurn:oasis:names:tc:ebcore:partyid-type:unregistered:C4
dk.nsp.msh.adapter.datasource.jndiJNDI-navn på applikationens datasource
navn
java:jboss/datasources/emr

Properties til DROS-integrationen

Property

Beskrivelse

Default værdi

dk.nsp.msh.adapter.dros.client.endpointDROS ITI-41 endpoint
http
https://
dros:8080
test2-cnsp.ekstern-test.nspop.dk:8443/dros_emr/iti41
dk.nsp.msh.adapter.dros.sts.endpointSTS endpoint til token
http
https://
test1
test2-cnsp.ekstern-test.nspop.dk:
8080
8443/sts/services/NewSecurityTokenService
dk.nsp.msh.adapter.dros.sts.organizationNameOrganisation navn i STSSundhedsdatastyrelsen
dk.nsp.msh.adapter.dros.sts.organizationCodeOrganisation CVR33257872
dk.nsp.msh.adapter.dros.sts.keystorePathKeystore til STS autentificeringNSP_Test_Service_Consumer_sds.p12
dk.nsp.msh.adapter.dros.sts.keystorePasswordPassword til STS keystoreTest1234
dk.nsp.msh.adapter.dros.sts.systemNameSystemnavn i STSEMR DROS Client
dk.nsp.msh.adapter.dros.homeCommunityIdDROS XDS homeCommunityIdurn:oid:1.2.208.176.43210.8.
10
20
dk.nsp.msh.adapter.dros.httpclient.maxTotalConnectionsDROS Max samlede HTTP connections200
dk.nsp.msh.adapter.dros.httpclient.defaultMaxConnectionsPerRouteDROS Max connections pr. route20
dk.nsp.msh.adapter.dros.httpclient.connectionTimeoutMsDROS HTTP connect timeout (ms)2000
dk.nsp.msh.adapter.dros.httpclient.socketTimeoutMsDROS HTTP socket timeout (ms)5000

Properties til EDS-integrationen

Property

Beskrivelse

Default værdi

dk.nsp.msh.adapter.eds.authUrlEDS Keycloak token endpointhttps://keycloak-test.nspop.dk/auth/realms/ehmi/protocol/openid-connect/token
dk.nsp.msh.adapter.eds.clientIdEDS Keycloak client idfcf6f8a96c6969e9-81b11962-441b4e4b-9896804d-bb08631eade660ab60129ff7
dk.nsp.msh.adapter.eds.keystoreFileKeystore til EDS klientdk-ehmi-medcom-eds-testklient.p12NSP_Test_Service_Consumer_sds.p12 (bør hele kæden ikke være med i certifikatet til EDS?)
dk.nsp.msh.adapter.eds.keystorePasswordPassword til EDS keystoreWLKk,bp63QwKTest1234
dk.nsp.msh.adapter.eds.endpointEDS FHIR endpointhttps://dk-ehmi-eds-service.t0.hosting.kitkube.dk/fhir
dk.nsp.msh.adapter.eds.apinfo.apIdAccess Point IDKvalitetsItAPEMR-MSH-test-aarhusTEST2
dk.nsp.msh.adapter.eds.apinfo.apIdentifierAccess Point identifierEerDeviceEMR-KvalitetsItAPMSH-test-aarhusTEST2
dk.nsp.msh.adapter.eds.apinfo.apManufacturerProducent af APKvalitetsITSundhedsdatastyrelsen
dk.nsp.msh.adapter.eds.apinfo.apDeviceNameNavn på AP deviceNSP MSH integrationstestklientEMR-MSH-test-TEST2
dk.nsp.msh.adapter.eds.httpclient.maxTotalConnectionsEDS max HTTP connections200
dk.nsp.msh.adapter.eds.httpclient.defaultMaxConnectionsPerRouteEDS max connections pr. route20
dk.nsp.msh.adapter.eds.httpclient.connectionTimeoutMsEDS HTTP connect timeout (ms)2000
dk.nsp.msh.adapter.eds.httpclient.socketTimeoutMsEDS HTTP socket timeout (ms)5000

Properties til de enkelte baggrundsjobs

dk.nsp.msh.job.fetchjob.batchsizeAntal beskeder pr. fetch batch50
dk.nsp.msh.job.fetchjob.desired.execution.durationØnsket køretid pr. fetch jobPT20S
dk.nsp.msh.job.savejob.batchsizeAntal beskeder pr. save batch50
dk.nsp.msh.job.savejob.retryBatchSizeBatch størrelse ved retry500
dk.nsp.msh.job.savejob.desired.execution.durationØnsket køretid pr. save jobPT20S
dk.nsp.msh.job.savejob.max.retriesMax antal retries3
dk.nsp.msh.job.savejob.retry.backoff.delayDelay mellem retriesPT5M
dk.nsp.msh.job.sendjob.batchsizeAntal beskeder pr. send batch50
dk.nsp.msh.job.sendjob.retryBatchSizeBatch størrelse ved retry500
dk.nsp.msh.job.sendjob.max.retriesMax antal retries3
dk.nsp.msh.job.sendjob.retry.backoff.delayDelay mellem retriesPT5M
dk.nsp.msh.job.sendjob.desired.execution.durationØnsket køretid pr. send jobPT20S
dk.nsp.msh.job.sendjob.domibus.nspPartyIdDomibus partyId ved afsendelse af kvitteringerdomibus-nsp0088:5790002515798
dk.nsp.msh.job.cleanupjob.batchsizeAntal poster pr. cleanup batch500
dk.nsp.msh.job.cleanupjob.desired.execution.durationØnsket køretid pr. cleanup jobPT20S
dk.nsp.msh.job.cleanupjob.retentionPeriod

Hvor længe EHMI beskeder gemmes.

Der kan angives en periode i ISO-8601 Period-formatet P[n]Y[n]M[n]D (år, måneder og dage).

Eksempler: P1Y (1 år) eller P1Y2M10D (1 år, 2 måneder, 10 dage).

P1Y

Baggrundsjobs

MSH Adapter består i praksis af en håndfuld baggrundsjobs, som tilsammen tager beskeder fra Domibus'en og gemmer dem i en DROS. Undervejs kaldes EDS med "forsendelsestatus" på de enkelte beskeder.

...

NavnStart-endpointBeskrivelse
Hent beskeder<serverurl>/msh-adapter/fetch-job/startHenter beskeder fra den konfigurerede Domibus, gemmer dem lokalt i en database, og markerer dem herefter som "downloaded" i Domibus. Undervejs gemmes der status-beskeder som skal afsendes til EDS.
Gem beskeder<serverurl>/msh-adapter/save-job/startGennemgår beskeder, der er hentet, validerer dem og gemmer dem i DROS. Undervejs gemmes der status-beskeder som skal afsendes til EDS. Beskeder, der er fejlet pga. interne fejl, vil blive forsøgt igen senere, indtil "retry" er overskredet. Herefter vil de overgå til "manuel behandling".
Send beskeder<serverurl>/msh-adapter/send-job/startSender kvitteringer tilbage til Domibus for de beskeder, som er afleveret i DROS. Kvitteringerne oprettes under "Gem beskeder".
Cleanup Job<serverurl>/msh-adapter/cleanup-job/startSletter gamle beskeder som er færdigbehandlede.
EDS opdatering<serverurl>/msh-adapter/eds-update-job/start

Bemærk, stadig under udvikling!

Afvikler køen af beskeder der skal sendes til EDS.

Bemærk, bør kaldes med højest 10 sekunders mellemrum, da beskederne skal afspejle status med minimal forsinkelse (realtimereal-time).

Overvågning

Der findes status- og alarm-endpoints hvor man kan overvåge baggrundsjobbene. 

TypeEndpoint
Alarm<serverurl>/msh-adapter/<job-navn>/alarm
Status<serverurl>/msh-adapter/<job-navn>/status

Request/response-logning mod EDS

EMR kalder to eksterne EDS-endpoints som en del af track-and-trace-flowet:

  1. Token-servicen: Henter et JWT access token.
  2. FHIR-servicen: Sender AuditEvent-ressourcen til EDS.

For hvert af disse kald findes en dedikeret logger-kategori, som kan slås til og fra uafhængigt af den øvrige logning. Begge er slået fra per default og skal kun aktiveres midlertidigt ved fejlsøgning. Konfigurationen ligger i log4j2.properties.

Sådan slås en kategori til

I log4j2.properties ændres level for den relevante logger fra off til det ønskede niveau.

Code Block
languagenginx
# HAPI FHIR request/response logging
logger.hapiHttp.name = ca.uhn.fhir.rest.client.interceptor.LoggingInterceptor
logger.hapiHttp.level = info

# JWT request/response logging
logger.jwt.name = dk.nsp.msh.integrations.eds.service.EdsJwtService.wire
logger.jwt.level = debug

Begge loggere er sat op med additivity = false og skriver til samme rullende logfil som den øvrige adapter-logning, men dette kan selvfølgelig også ændres.

Personfølsomme data

Begge kategorier logger fulde request-/response-bodies. Det betyder:

  • FHIR-logningen kan indeholde indholdet af AuditEvent-ressourcen, herunder potentielt personfølsomme oplysninger.
  • JWT-logningen logger bl.a. det udstedte access_token.

Derfor bør de to logninger kun slås til midlertidigt ifm. fejlsøgning.