Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.
Navitabs
rootDin digitale tandlægevælger (DDTV) - Leverancebeskrivelse
includeroottrue


Indhold

Table of Contents

Komponenter

Dette dokument dækker følgende komponenter på NSP:

...

  • Type: Webservlet
  • Filnavn: ddtv-batch-service.war
  • Url: <serverurl>/ddtv-batch-service
  • Status-url: <serverurl>/ddtv-batch-service/status

  • Alarm-url: <serverurl>/ddtv-batch-service/alarm

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:

...

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.totalconnectionsTotale antal HttpClients forbindelser der kan åbnesNej200
httpclient.pooling.maxconnections.pr.routeAntal HttpClients forbindelser der kan åbnes pr. ruteNej20
scan.citizens.target.ageAlder i år for automatisk tilmelding af borgereJa22
scan.citizens.days.beforeAntal dage før fødselsdag for automatisk tilmelding af borgereJa7
scan.citizens.execution.durationHvor længe skal scan citizens jobbet køreJaPT10S (10 sekunder)
remind.citizens.batchsizeHvor mange personer skal påmindelsesjobbet maksimalt fremsøge fra databasen ad gangenJa10
remind.citizens.delay.durationHvor lang tid skal der gå fra første digital post eller sidste påmindelse til en ny påmindelse sendesJaP10D (10 dage)
remind.citizens.execution.durationHvor længe skal påmindelsesjobbet køreJaPT10S (10 sekunder)
remind.citizens.reminder.limitHvor mange reminders må der sendes til samme borgerJa1
digital.post.batchsizeHvor mange personer skal digital post jobbet maksimalt fremsøge fra databasen ad gangenJa10
digital.post.execution.durationHvor længe skal digital post jobbet køreJaPT10S (10 sekunder)
digital.post.endpointURL til Digital Post Adapter send servicenJahttp://test1-cnsp.ekstern-test.nspop.dk:8080/digitalpost/2024/05/29/send
digital.post.template.informationsbrevSkabelon-navn for brev der udsendes når borgeren skal informeres om at der skal vælges tandlægeJaDDTV/20250910/informationsbrev
digital.post.template.bekraeftelsesbrevSkabelon-navn for brev der udsendes når tandlægen har bekræftet borgerens valgJaDDTV/20250910/bekraeftelsesbrev
digital.post.template.paamindelsesbrevSkabelon-navn for brev der udsendes når borgeren ikke har foretaget et valg længe nokJaDDTV/20250910/paamindelsesbrev
digital.post.template.afvistbrevSkabelon-navn for brev der udsendes når tandlægen har afvist borgerens valgJaDDTV/20250910/afvisningsbrev_t1
digital.post.template.timeoutbrevSkabelon-navn for brev der udsendes når tandlægen har været for længe om at svare på borgerens valgJaDDTV/20250910/afvisningsbrev_t2
digital.post.template.kommunikationsfejlbrevSkabelon-navn for brev der udsendes når EDI-portalen giver fejlJaDDTV/20250910/afvisningsbrev_t3
edi.message.batchsizeHvor mange personer skal EDI jobbet maksimalt fremsøge fra databasen ad gangenJa10
edi.message.execution.durationHvor længe skal EDI jobbet køreJaPT10S (10 sekunder)
edi.message.tokenuriURL til EDI-portalens JWT token serviceJahttps://tst-identity.nasure.dk/auth/realms/Nasure/protocol/openid-connect/token
edi.message.apiuriURL til EDI-portalens dentist APIJahttps://tst-api.ediportalen.dk/api/ddtvRequestDentist
edi.message.clientidID på klient, dvs. på DDTVJasds-ddtv
edi.message.clientsecretClient secret til udstedelse af JWT tokenJa(skjult)
cleanup.batchsizeHvor mange borgere skal oprydningsjobbet maksimalt rydde op ad gangenJa20
cleanup.deceased.retention.daysHvor mange dage skal en person være afdød før data fjernes fra databasenJa365
cleanup.unresponsive.retention.daysHvor mange dage der gå før data slettes for en person, der har modtaget digital post, uden at reagere på detJa730
cleanup.edi.status.retention.daysHvor gamle EDIStatus records må blive (i dage), før de automatisk slettesJa30
cleanup.execution.durationHvor længe skal cleanup jobbet køreJaPT10S (10 sekunder)
sts.endpoint

Endpoint for STS'en. Anvendes i forbindelse med DGWS kald til Digital Post Adapteren

Jahttp://test1-cnsp.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService
sts.keystore

Keystore med certifikat til DGWS kald

JaNSP_Test_Service_Consumer_sds.p12
sts.keystore.password

Password til keystore med certifikat til DGWS kald

JaTest1234
idcard.subject.name

Organisation som certifikat er udstedt til

JaSundhedsdatastyrelsen
idcard.subject.id

CVR-nummer på organisation, som certifikat er udstedt til

Ja33257872
idcard.system.name

Navn på system som foretager DGWS kald ti Digital Post Adapteren

JaDDTV


log4j konfiguration

Log4j konfiguration for alle services findes i samme bibliotek som servicekonfigurationen

Se yderligere opsætning i installationsvejledningen.

Whitelisting

Der foretages whitelisting ved check mod databasen. En ny whitelisting kan tilføjes med følgende SQL insert:

Code Block
languagesql
INSERT INTO WHITELIST (cvr, comment)
VALUES ('some-cvr-here', 'some-reason-for-whitelisting-here');



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 500, 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:

...

Code Block
languagetext
titleapplyForNewDentist eksempel
collapsetrue
{
    "time": "2025-09-19T09:04:46.985764854Z",
    "category": "dk.sds.nsp.audit.log",
    "audit": {
        "timestamp": "2025-09-19T11:04:44.736968533+02:00",
        "components": [{
                "component": "DDTV",
                "contexts": [{
                        "context": "applyForNewDentist",
                        "information": [{
                                "key": "patient-id",
                                "type": "RPI",
                                "value": "1811804807"
                            }, {
                                "key": "patient-id-source",
                                "type": "RPI",
                                "value": "OID:1.2.208.176.1.6.1.1"
                            }, {
                                "key": "actor-role",
                                "type": "NPI",
                                "value": "CITIZEN"
                            }, {
                                "key": "actor-id",
                                "type": "NPI",
                                "value": "1811804807"
                            }, {
                                "key": "actor-id-source",
                                "type": "NPI",
                                "value": "CPR"
                            }
                        ]
                    }
                ]
            }
        ]
    },
    "access": {
        "code": 200,
        "duration": 2247,
        "httpHeaders": {
            "Content-Type": "text/xml;charset=UTF-8",
            "SOAPAction": "http://sundhedsdatastyrelsen.dk/ddtv/2025/05/01/#ddtvApplyForNewDentist"
        },
        "httpHost": "localhost",
        "idCardAttributes": {
            "X509Subject": "CN=NSP Test Service Consumer,SERIALNUMBER=UI:DK-O:G:8d3fa047-c77e-47e4-bdd2-e91488610ce6,O=Sundhedsdatastyrelsen,2.5.4.97=NTRDK-33257872,C=DK",
            "dk:gov:saml:attribute:AssuranceLevel": "3",
            "dk:gov:saml:attribute:CprNumberIdentifier": "1811804807",
            "dk:gov:saml:attribute:SpecVer": "DK-SAML-2.0"
        },
        "method": "POST",
        "path": "/ddtv-citizen-service/2025/05/01/",
        "query": "",
        "port": 8080,
        "protocol": "http",
        "reqSize": 12564,
        "resSize": 6493,
        "soapHeaders": {
            "Audience": "https://fsk",
            "Issuer": "TEST1-NSP-STS",
            "NameID": "dk:gov:saml:attribute:CprNumberIdentifier:1811804807",
            "w3Action": "http://sundhedsdatastyrelsen.dk/ddtv/2025/05/01/#ddtvApplyForNewDentist",
            "w3MessageID": "ae528b36-4715-470b-a603-bc4b150a028b"
        },
        "threadId": "default task-1",
        "time": "2025-09-19T11:04:44.736899022+02:00",
        "stats": {
            "handlerDuration": 42,
            "RequestContentDuration": 3,
            "ResponseContentDuration": 0,
            "SecurityProtocolRequestDuration": 17,
            "SecurityProtocolResponseDuration": 20,
            "bufferAllocated": false,
            "usedBuffers": 2,
            "activeBuffersInPool": 2,
            "idleBuffersInPool": 0
        },
        "reqUUID": "f6567a23-dc35-46f2-8ad9-01314fa47750"
    }
}


Baggrundsjobs

Overvågning af baggrundsjobs

Der findes et status og et alarm-endpoint for hver baggrundsjob. De har følgende url'er:

...

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

...

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

...

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

...

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

...

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

...