{ |
Dette dokument dækker følgende komponenter på NSP:
Din Digitale Tandlægevælger (DDTV)
Komponenten dækker 3 services som følger
Type: IDWS SOAP Webservice
Filnavn: ddtv-citizen-service.war
Url: <serverurl>/ddtv-citizen-service/2025/05/01
Status-url: <serverurl>/ddtv-citizen-service/status
Type: DGWS SOAP Webservice
Filnavn: ddtv-dentist-service.war
Url: <serverurl>/ddtv-dentist-service/2025/05/01
Status-url: <serverurl>/ddtv-dentist-service/status
Status-url: <serverurl>/ddtv-batch-service/status
Alarm-url: <serverurl>/ddtv-batch-service/alarm
Grundlæggende konfiguration af alle services foregår ved redigering i filen application.properties. For den enkelte service placeres filen i følgende WildFly modul:
/pack/wildfly8/modules/dk/nsp/ddtv/main/
Moduldefinition, som kan anvendes for alle services, findes i kildekoden under:
/etc/wildfly/modules/dk/nsp/ddtv/main/module.xml
I application.properties for DDTV-Citizen servicen kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| datasource.ddtv.jndi-name | Navn på jboss datasource (defineret i ddtv-ds.xml) | Ja | java:jboss/datasources/ddtv-ds |
| dcc.endpoint | Angiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. | Ja | http://test1-cnsp.ekstern-test.nspop.dk:8080/ddtv-citizen-service/2025/05/01/ |
| sores.url | URL til SORES servicen | Ja | http://test1.ekstern-test.nspop.dk:8080/sores/ |
| sores.connectTimeout | Connection timeout i millisekunder for SORES integrationen | Ja | 10000 |
| personinformation.url | URL til PersonInformation servicen | Ja | http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1 |
| personinformation.connectionTimeout | Connection timeout i millisekunder for PersonInformation integrationen | Ja | 10000 |
| personinformation.errorcount.duration | Specificering af hvor lang tid tilbage der skal tælles fejl fra PersonInformation servicen (ifm /status endpointet). Angives som duration i ISO-8601 formattet. | Ja | PT10M (10 minutter) |
| personinformation.cprstatuscodes | Kommasepareret liste af statuskoder i CPR stamdata, der anses som ACTIVE | Ja | 1,3,70 |
| httpclient.pooling.totalconnections | Totale antal HttpClients forbindelser der kan åbnes | Nej | 200 |
| httpclient.pooling.maxconnections.pr.route | Antal HttpClients forbindelser der kan åbnes pr. rute | Nej | 20 |
| ddtv.audience | Audience for IDWS kald | Ja | https://audience.nspop.dk/ddtv |
| ddtv.powerOfAttorney.read | Fuldmagt læserettighed | Ja | minlog |
| ddtv.powerOfAttorney.write | Fuldmagt skriverettighed | Ja | minlog |
I application.properties for DDTV-Dentist servicen kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.datasource.jndi | Navn på jboss datasource (defineret i ddtv-ds.xml) | Ja | java:jboss/datasources/ddtv-ds |
| dcc.endpoint | Angiver det endpoint, som DCC'en skal kalde. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. | Ja | http://test1-cnsp.ekstern-test.nspop.dk:8080/ddtv-dentist-service/2025/05/01/ |
| whitelisted.cvrs | Kommasepareret liste af whitelistede CVR-numre. Såfremt listen er blank er der ingen CVR-begrænsning. | Nej | 33257872 |
I application.properties for DDTV-Batch servicen kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| idsas.datasource.jndi | Navn på jboss datasource (defineret i idsas-ds.xml) | Ja |
|
| idsas.allowed.client.system.name | Navnet på de systemer, som må kalde "getCurrentSalt" i "idsas-salt". | Nej | http://system.nspop.dk/sts,DRG
|
I idsas-operations.properties kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| datasource.ddtv.jndi-name | Navn på jboss datasource (defineret i ddtv-ds.xml) | Ja | java:jboss/datasources/ddtv-ds |
| sores.url | URL til SORES servicen | Ja | http://test1.ekstern-test.nspop.dk:8080/sores/ |
| sores.connectTimeout | Connection timeout i millisekunder for SORES integrationen | Ja | 10000 |
| personinformation.url | URL til PersonInformation servicen | Ja | http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-personinformation/v1 |
| personinformation.connectionTimeout | Connection timeout i millisekunder for PersonInformation integrationen | Ja | 10000 |
| personinformation.errorcount.duration | Specificering af hvor lang tid tilbage der skal tælles fejl fra PersonInformation servicen (ifm /status endpointet). Angives som duration i ISO-8601 formattet. | Ja | PT10M (10 minutter) |
| personinformation.cprstatuscodes | Kommasepareret liste af statuskoder i CPR stamdata, der anses som ACTIVE | Ja | 1,3,70 |
| httpclient.pooling.totalconnections | Totale antal HttpClients forbindelser der kan åbnes | Nej | 200 |
| httpclient.pooling.maxconnections.pr.route | Antal HttpClients forbindelser der kan åbnes pr. rute | Nej | 20 |
| scan.citizens.target.age | Alder i år for automatisk tilmelding af borgere | Ja | 22 |
| scan.citizens.days.before | Antal dage før fødselsdag for automatisk tilmelding af borgere | Ja | 7 |
| scan.citizens.execution.duration | Hvor længe skal scan citizens jobbet køre | Ja | PT10M (10 minutter) |
| scan.citizens.abort.duration | Hvor længe skal der gå fra sidste afvikling af scan citizens jobbet før det afbrydes og et nyt kan starte | Ja | PT30M (30 minutter) |
| remind.citizens.batchsize | Hvor mange personer skal påmindelsesjobbet maksimalt fremsøge fra databasen ad gangen | Ja | 10 |
| remind.citizens.delay.duration | Hvor lang tid skal der gå fra første digital post eller sidste påmindelse til en ny påmindelse sendes | Ja | P10D (10 dage) |
| remind.citizens.execution.duration | Hvor længe skal påmindelsesjobbet køre | Ja | PT10M (10 minutter) |
| remind.citizens.reminder.limit | Hvor mange reminders må der sendes til samme borger | Ja | 1 |
| remind.citizens.abort.duration | Hvor længe skal der gå fra sidste afvikling af påmindelsesjobbet før det afbrydes og et nyt kan starte | Ja | PT30M (30 minutter) |
| digital.post.batchsize | Hvor mange personer skal digital post jobbet maksimalt fremsøge fra databasen ad gangen | Ja | 10 |
| digital.post.execution.duration | Hvor længe skal digital post jobbet køre | Ja | PT10M (10 minutter) |
| digital.post.endpoint | URL til Digital Post Adapter send servicen | Ja | http://test1-cnsp.ekstern-test.nspop.dk:8080/digitalpost/2024/05/29/send |
| edi.message.batchsize | Hvor mange personer skal EDI jobbet maksimalt fremsøge fra databasen ad gangen | Ja | 10 |
| edi.message.execution.duration | Hvor længe skal EDI jobbet køre | Ja | PT10M (10 minutter) |
| edi.message.abort.duration | Hvor længe skal der gå fra sidste afvikling af EDI jobbet før det afbrydes og et nyt kan starte | Ja | PT30M (30 minutter) |
| cleanup.batchsize | Hvor mange borgere skal oprydningsjobbet maksimalt rydde op ad gangen | Ja | 20 |
| cleanup.deceased.retention.days | Hvor mange dage skal en person være afdød før data fjernes fra databasen | Ja | 365 |
| cleanup.unresponsive.retention.days | Hvor mange dage der gå før data slettes for en person, der har modtaget digital post, uden at reagere på det | Ja | 730 |
| cleanup.execution.duration | Hvor længe skal cleanup jobbet køre | Ja | PT10M (10 minutter) |
| cleanup.abort.duration | Hvor længe skal der gå fra sidste afvikling af cleanup jobbet før det afbrydes og et nyt kan starte | Ja | PT30M (30 minutter) |
| sts.endpoint | Endpoint for STS'en. Anvendes i forbindelse med DGWS kald til Digital Post Adapteren | Ja | http://test1-cnsp.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService |
| sts.keystore | Keystore med certifikat til DGWS kald | Ja | NSP_Test_Service_Consumer_sds.p12 |
| sts.keystore.password | Password til keystore med certifikat til DGWS kald | Ja | Test1234 |
| idcard.subject.name | Organisation som certifikat er udstedt til | Ja | Sundhedsdatastyrelsen |
| idcard.subject.id | CVR-nummer på organisation, som certifikat er udstedt til | Ja | 33257872 |
| idcard.system.name | Navn på system som foretager DGWS kald ti Digital Post Adapteren | Ja | DDTV |
Log4j konfiguration for alle services findes i samme bibliotek som servicekonfigurationen
Se yderligere opsætning i installationsvejledningen.
Alle DDTV services udstiller en overvågningsside, som findes i listen af komponenter.
Overvågningssiderne returnerer enten:
Hvert servicekald medfører en ny indgang i auditloggen, som kan være udfyldt med følgende komponenter, afhængig af konteksten:
Komponent | Kontekst | Nøgle | Information |
|---|---|---|---|
| DDTV-Citizen | applyForNewDentist disregardApplicationForNewDentist noMoreReminders newDentistFullStop optOut checkStatus | personID personIDClass actorID actorIDType actorRole | Id på borgeren Typen af id i form af OID, f.eks. "OID:1.2.208.176.1.6.1.1" for CPR Id på actor (borger eller fuldmægtig) Typen af id i form af OID, f.eks. "OID:1.2.208.176.1.6.1.1" for CPR "Borger" |
| DDTV-Dentist | dentistAccept dentistReject | (todo) | |
| DDTV-Dentist | (todo) |
{
"time": "2023-06-12T11:42:23.664Z",
"category": "dk.sds.nsp.audit.log.idsas",
"audit": {
"timestamp": "2023-06-12T13:42:22.972+02:00",
"components": [
{
"component": "IDSAS",
"contexts": [
{
"context": "createBlurring",
"information": [
{
"key": "cpr",
"type": "RPI",
"value": "1234567890"
},
{
"key": "cvr",
"type": "NPI",
"value": "33257872"
}
]
}
]
}
]
},
"access": {
"code": 200,
"duration": 95,
"httpHeaders": {
"Content-Type": "text/xml;charset=UTF-8",
"SOAPAction": "CreateBlurring"
},
"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": "SIjvZBkfZ1yAWSpYFcLpvw==",
"sosi:IDCardType": "user",
"sosi:IDCardVersion": "1.0.1"
},
"method": "POST",
"path": "/idsas/20230601/service",
"query": "",
"port": 8080,
"protocol": "http",
"reqSize": 7204,
"resSize": 211,
"soapHeaders": {
"FlowID": "72111931-fe3b-4956-bea3-20e8c5be9ce0",
"Issuer": "TEST1-NSP-STS",
"MessageID": "76315a15-0fb2-4df7-9e3e-53a3b28fb700",
"NameID": "urn:uuid:46559bb9-d720-48b7-b9bd-c280915768d0"
},
"threadId": "default task-1",
"time": "2023-06-12T13:42:22.968+02:00",
"stats": {
"handlerDuration": 583,
"RequestContentDuration": 41,
"ResponseContentDuration": 0,
"SecurityProtocolRequestDuration": 368,
"SecurityProtocolResponseDuration": 0,
"bufferAllocated": true,
"usedBuffers": 1,
"activeBuffersInPool": 1,
"idleBuffersInPool": 0
}
}
} |
Der findes et status og et alarm-endpoint for hver baggrundsjob. De har følgende url'er:
De to status-endpoints kan svare følgende
De to alarm-endpoints er som udgangspunkt tomme og returnerer 200, men kan give en alarm-besked og status 500, hvis jobbet er i problemer.
Oprydningsjobbet startes via et HTTP GET kald til <serverurl>/idsas-operations/cleanup-blurrings
Alarm-endpointet er som udgangspunkt tom og returnerer status 200, med mindre noget er gået galt. Status-siden rapporterer om komp
Jobbet kaldes for at påbegynde en oprydning af inaktive sløringer, og vil slette alle registrerede sløringer, som har være inaktive i mindst 5 år.
Jobbet køres i iterationer af en konfigureret størrelse, og terminerer enten når der ikke er flere inaktive sløringer der skal slettes, eller når jobbet har kørt i en konfigureret varighed.
Det vil fremgå af servicens overvågningsside om oprydningen blev færdig:
| Blurring Cleanup Job Status | NOT_STARTED, NOT_FINISHED, FINISHED |
Oprydningsjobbet startes via et HTTP GET kald til <serverurl>/idsas-operations/cleanup-blurrings-deceased
Jobbet kaldes for at påbegynde en oprydning af sløringer for afdøde personer, og vil slette alle registrerede sløringer 1 år efter personerne er afgået ved døden.
Jobbet køres i iterationer af en konfigureret størrelse, og terminerer enten når der ikke er flere sløringer for afdøde der skal slettes, eller når jobbet har kørt i en konfigureret varighed.
Det vil fremgå af servicens overvågningsside om oprydningen blev færdig:
| Blurring Cleanup Deceased Job Status | NOT_STARTED, NOT_FINISHED, FINISHED |
Jobbet startes via et HTTP GET kald til <serverurl>/idsas-operations/kafka-consume
Jobbet kaldes for at påbegynde læsning af beskeder fra Kafka-køen, og vil persistere de ændringer, der modtages.
Jobbet læser hvad der er tilgængeligt i køen med den angivne timeout (se konfigurationen), og committer nyt offset efter succesfuld persistering til databasen.
Det vil fremgå af servicens overvågningsside om jobbet kørende, er kørt færdigt eller om der er sket fejl:
| Kafka Consumer Job Status | NOT_STARTED, RUNNING, FINISHED, ERROR |