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 |
|---|---|---|---|
| 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 | PT10S (10 sekunder) |
| 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 | PT10S (10 sekunder) |
| remind.citizens.reminder.limit | Hvor mange reminders må der sendes til samme borger | Ja | 1 |
| 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 | PT10S (10 sekunder) |
| 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 | PT10S (10 sekunder) |
| 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 | PT10S (10 sekunder) |
| 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.
Jobbet startes via et HTTP GET kald til <serverurl>/batch-service/scan-citizens-job/start
Jobbet foretager et kald til PersonInformation, som returnerer borgere med den relevante fødselsdato. For hver identificeret borger oprettes en record bor borgeen i databasen med status NO_DENTIST (hvis ikke der allerede findes data for borgeren) samt dpStatus READY,som signalerer klar til afsendelse af digital post.
Jobbet startes via et HTTP GET kald til <serverurl>/batch-service/digital-post-job/start
Jobbet fremsøger records fra i databasen med dpStatus = READY. Der afsendes forskellige digital post breve afhængigt af status:
| Status | Digital Post |
|---|---|
| NO_DENTIST | Indledende brev til borger med information om ordning og link til Sundhed.dk |
| DENTIST_ACCEPTED | Brev til borger med information om, at valgt tandlæge har accepteret |
| DENTIST_REJECTED | Brev til borger med information om, at valgt tandlæge har afvist, samt evt. årsag |
Digital Post sendes i praksis via NSP-komponenten Digital Post Adapter
Jobbet startes via et HTTP GET kald til <serverurl>/batch-service/remind-citizens-job/start
Jobbet fremsøger records fra i databasen, hvor følgende gælder
For disse sendes ny Digital Post i form af et påmindelsesbrev. Digital Post sendes i praksis via NSP-komponenten Digital Post Adapter.
Jobbet startes via et HTTP GET kald til <serverurl>/batch-service/edi-job/start
Jobbet fremsøger records fra i databasen, hvor følgende gælder
For disse sendes en EDI-besked om, at en specifik borger har valgt en specifik tandlæge. I kaldet indgår en RequestID, som genereres i forbindelse med at EDI-beskeden sendes, og lagres i databasen. Når der senere bekræftes eller afvises via DGWS-servicen til tandlæger, vi denne RequestID blive anvendt til at slå op hvem borgeren var.
EDI-beskeder sendes i praksis via EDI-portalen med en snitflade til formålet udviklet af Nasure.
Oprydningsjobbet startes via et HTTP GET kald til <serverurl>/batch-service/cleanup-job/start
Jobbet kaldes for at påbegynde en oprydning af følgende:
TODO: Det vil fremgå af servicens overvågningsside om oprydningen blev færdig:
| Blurring Cleanup Deceased Job Status | NOT_STARTED, NOT_FINISHED, FINISHED |