Page History
...
| Table of Contents |
|---|
Komponenter
Dette dokument dækker følgende komponenter på NSP:
Din Digitale Tandlægevælger (DDTV)
...
Konfiguration
Servicekonfiguration
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 |
| digital.post.template.informationsbrev | Skabelon-navn for brev der udsendes når borgeren skal informeres om at der skal vælges tandlæge | Ja | DDTV/20250910/informationsbrev |
| digital.post.template.bekraeftelsesbrev | Skabelon-navn for brev der udsendes når tandlægen har bekræftet borgerens valg | Ja | DDTV/20250910/bekraeftelsesbrev |
| digital.post.template.paamindelsesbrev | Skabelon-navn for brev der udsendes når borgeren ikke har foretaget et valg længe nok | Ja | DDTV/20250910/paamindelsesbrev |
| digital.post.template.afvistbrev | Skabelon-navn for brev der udsendes når tandlægen har afvist borgerens valg | Ja | DDTV/20250910/afvisningsbrev_t1 |
| digital.post.template.timeoutbrev | Skabelon-navn for brev der udsendes når tandlægen har været for længe om at svare på borgerens valg | Ja | DDTV/20250910/afvisningsbrev_t2 |
| digital.post.template.kommunikationsfejlbrev | Skabelon-navn for brev der udsendes når EDI-portalen giver fejl | Ja | DDTV/20250910/afvisningsbrev_t3 |
| 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) |
| edi.message.tokenuri | URL til EDI-portalens JWT token service | Ja | https://tst-identity.nasure.dk/auth/realms/Nasure/protocol/openid-connect/token |
| edi.message.apiuri | URL til EDI-portalens dentist API | Ja | https://tst-api.ediportalen.dk/api/ddtvRequestDentist |
| edi.message.clientid | ID på klient, dvs. på DDTV | Ja | sds-ddtv |
| edi.message.clientsecret | Client secret til udstedelse af JWT token | Ja | (skjult) |
| 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.edi.status.retention.days | Hvor gamle EDIStatus records må blive (i dage), før de automatisk slettes | Ja | 30 |
| 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
Log4j konfiguration for alle services findes i samme bibliotek som servicekonfigurationen
Se yderligere opsætning i installationsvejledningen.
Overvågning
Alle DDTV services udstiller en overvågningsside, som findes i listen af komponenter.
Fortolkning af overvågningsside
Overvågningssiderne returnerer enten:
- HTTP 200, hvis servicen i øjeblikket kører fint.
- HTTP 503, hvis der er opstået en fejl der kræver indgriben.
Audit-logning
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) |
...
| Code Block | ||||||
|---|---|---|---|---|---|---|
| ||||||
{
"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
}
}
} |
Baggrundsjobs
Overvågning af baggrundsjobs
Der findes et status og et alarm-endpoint for hver baggrundsjob. De har følgende url'er:
- <serverurl>/batch-service/status
- <serverurl>/batch-service/alarm
De to status-endpoints kan svare følgende
- Http-kode 200 og Database: OK
- Http-kode 500 og Database: Unavailable
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.
Job til identifikation af borgere, der fylder 22 år
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.
Job 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
Job til påmindelse af borger
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
- Status = NO_DENTIST (der er ikke valgt tandlæge)
- dpStatus = SENT (der er sendt digital post)
- Der er sendt digital post eller reminder for et stykke tid siden (konfigurerbart)
- Maksimalt antal reminders endnu ikke er sendt.
- Reminders er ikke fravalgt
For disse sendes ny Digital Post i form af et påmindelsesbrev. Digital Post sendes i praksis via NSP-komponenten Digital Post Adapter.
Job til afsendelse af EDI-beskeder
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
- Status = DENTIST_CHOSEN (der er valgt tandlæge)
- Der er ikke en nyere record for samme borger
- ddtvMayContactDentist er true (det er ikke fravalgt at kontakte tandlægen)
For disse sendes en EDI-besked om, at en 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.
Job til afsendelse af "se bort fra tidligere EDI"-beskeder
Jobbet startes via et HTTP GET kald til <serverurl>/batch-service/ignore-previous-edi-job/start
Jobbet fremsøger records fra EDIStatus-tabellen databasen. For hver afgøres om en af følgende gælder.
- Der er ikke nogle data for borgeren (opt out)
- Det er længere samme tandlæge, der er valgt (borgeren har valgt om i mellemtiden)
...
EDI-beskeder sendes i praksis via EDI-portalen med en snitflade til formålet udviklet af Nasure.
Job til sletning af data for afdøde borgere, samt borgere, der aldrig svarede
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:
- Data for afdøde borgere. Alle registrerede data slettes 1 år efter borgeren personerne er afgået ved døden (konfigurerbart)
- Data for borgere, der har fået tilsendt Digital Post, men stadig ikke har reageret efter 2 år (konfigurerbart)