Indhold
Komponenter
Dette dokument dækker FGVHR-servicen. Der udstilles et enkelt komponent af typen SOAP Webservice og en af typen REST-service.
Type: SOAP Webservice
Filnavn: fgvhr.war
Url: <serverurl>/fgvhr
Status-url: <serverurl>/fgvhr/status
- DKS-config: <serverurl>/fgvhr/20230601/dksconfig
- Type: Webservlet
- Filnavn: fgvhr-operations.war
- Url: <serverurl>/fgvhr-operations
Status-url: <serverurl>/fgvhr-operations/status
Version-url: <serverurl>/fgvhr-operations/version
Konfiguration
Servicekonfiguration
Grundlæggende konfiguration foregår ved redigering i filen fgvhr.properties. Den skal placeres i WildFly modul:
/pack/wildfly8/modules/dk/nsp/fgvhr/main/
Moduldefinitionen findes i kildekoden under:
/fgvhr-war/etc/modules/dk/nsp/fgvhr/configuration/main/module.xml
I fgvhr.properties kan følgende properties defineres:
Property | Beskrivelse | Påkrævet | Default værdi |
|---|---|---|---|
| fgvhr.go.live.date | Dato for hvornår systemet går i drift. Før denne dato, er det ikke muligt at oprette fravalg igennem snitfladerne. | Ja | |
| dk.nsp.fgvhr.national.rolle | National rolle bruger skal have når der kaldes på admin-service. | Ja | |
| dk.nsp.fgvhr.whitelisted.clientkey | Serialnumber fra det certifikat der benyttes ved kald til FSK snitflade. | Ja | |
| dk.nsp.fgvhr.datasource.jndi | Navn på jboss datasource (defineret i fgvhr-ds.xml) | Ja | |
| dk.nsp.fgvhr.validfrom.period.days | Hvornår er registrering af fravalg gyldig fra (antal dage) | Nej | 7 |
| dk.nsp.fgvhr.minimum.age | Minimumssalderen (år) for hvornår man kan registrere fravalg | Nej | 60 |
| dk.nsp.fgvhr.httpclient.pooling.totalconnections | Totale antal HttpClients forbindelser der kan åbnes | Ja | 200 |
| dk.nsp.fgvhr.httpclient.pooling.maxconnections.pr.route | Antal HttpClients forbindelser der kan åbnes pr. rute | Ja | 20 |
| personinformation.url | URL til PersonInformation servicen | Ja | |
| 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. | Nej | PT10M (10 minutter) |
| personinformation.error.tolerance | Antal fejl der tolereres fra PersonInformation servicen før /status endpointet angiver servicen som ikke tilgængelig. | Nej | 0 |
| dcc.endpoint.citizen | Angiver det endpoint, som DCC'en skal kalde for at ramme citizen-service. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. | Ja | |
| minlog.get-activity-text | Tekst i Minlog ved læsning af fravalg | Ja | Læsning af Fravalg af genoplivning ved hjertestop register |
| minlog.register-activity-text | Tekst i Minlog ved oprettelse af fravalg | Ja | Oprettelse af Fravalg af genoplivning ved hjertestop register |
| minlog.delete-activity-text | Tekst i Minlog ved sletning af fravalg | Ja | Sletning af Fravalg af genoplivning ved hjertestop register |
| minlog.update-activity-text | Tekst i Minlog ved opdatering af fravalg | Ja | Opdatering af Fravalg af genoplivning ved hjertestop register |
| fgvhr.nas.notification.job.max.duration | Den tilladte varighed af jobbet. Angives som duration i ISO-8601 formattet; dog bør kun sekunder angives. | Nej | PT15S |
| fgvhr.nas.notification.job.nas.bundle.size | Antallet af adviseringer der sendes til NAS af gangen per SOAP request. | Nej | 50 |
| fgvhr.nas.notification.job.batch.size | Antallet af adviseringer der hentes fra tabellen af gangen. | Nej | 500 |
| nas.sts.endpoint | Endpointet, hvor NAS-integrationen skal trække et idkort på baggrund af sts.keystore | Ja | |
| nas.sts.keystore | Keystore der indeholder funktionscertifikatet | Ja | |
| nas.sts.keystore.password | Password til at åbne keystore | Ja | |
| nas.endpoint | Endpointet hvor NAS skal kaldes | Ja | |
| nas.idcard.subject.name | Subject name på idkortet | Ja | |
| nas.idcard.subject.id | Subject Id på idkortet | Ja | |
| nas.idcard.system.name | Systemnavn på idkortet | Ja | |
| nas.topic | Det topic der skrives til på NAS | Ja | |
deletion.fgvhr.batchsize | Tilhører slettejobbet. Angiver den maksimale antal cpr numre, som behandles per gang | Ja | |
| deletion.desired.execution.duration | Tilhører slettejobbet. Angiver den maksimale udførelsestid for baggrundsjobbet. Angives som Duration i ISO-8601 formattet. | Ja | |
deletion.save.deceased | Tilhører slettejobbet. Angiver periode på, hvor længe en person minimum skal være død for at blive slettet. | Ja | |
deletion.save.deceased.digital.post | Tilhører slettejobbet. Angiver periode på, hvor længe en person minimum skal være død for at vedkommendes digital post skal slettes. Man vil typisk sætte den til 0 dage, da man ikke ønsker at sende digital post ud til afdøde personer. | ja | |
deletion.patient.id.source.cpr | Tilhører slettejobbet. Angiver den patient id source, som cpr numre gemmes med i databasen. | Ja | |
digitalpost.fgvhr.schedule.period | Tilhører digital post integrationen. Angiver, hvor lang tid scheduleret letter skal ligge inden det sendes som påmindelse. Formattet er D for dage, M for måneder og Y for år. Nogle eksempler: 2Y er 2 år, 12M er 12 måneder og 60D er 60 dage. | ja | 1Y |
digitalpost.fgvhr.url | Tilhører digital post integrationen. Dette er det endpoint, som Triforks mail komponent skal nåes på. !! For at anvende komponenten skal man være ip whitelistet og tilgå komponenten vha. 2-vejs TLS | Ja | |
digitalpost.fgvhr.schedule.error.period | Tilhører digital post afsendelses baggrundsjobbet. Angiver, hvor lang tid, der lægges til afsendelsesperioden for et letter, hvis der skulle opstår en fejl i forbindelse med en afsendelse. Dvs. hvor længe der skal gå indtil letter skal forsøges afsendt igen. Formattet er D for dage, M for måneder og Y for år. | Ja | 2D |
digitalpost.fgvhr.unsent.error.period | Tilhører digital post afsendelses baggrundsjobbet. Angiver, hvor lang tid et brev, som er nået tidspunkt for afsendelse, må ligge uden at blive sendt. Dette sker, når baggrundsjobbet ikke kører eller aldrig når til brevet. Formattet er D for dage, M for måneder og Y for år. | Ja | |
digitalpost.fgvhr.send.limit | Tilhører digital post afsendelses baggrundsjobbet. Angiver det maksimale antal records, det hentes ud fra databasen fra letter tabellen ad gangen. | Ja | 100 |
digitalpost.fgvhr.send.desired.execution.duration | Tilhører digital post afsendelses baggrundsjobbet. Angiver den maksimale udførelsestid for baggrundsjobbet. Angives som Duration i ISO-8601 formattet. | Ja | PT20S |
digitalpost.fgvhr.error.tolerance | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver hvor mange letters der må ligge i databasen med fejl, før det meldes som en alarm. | Nej | 0 |
digitalpost.fgvhr.confirm.register.consent.digital.template | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver den digitale brevskabelon der anvendes for at bekræfte registrering af fravalg. | Ja | http://pdf.nspop.dk/fgvhr/20241001/digital/BekraeftelseRegistreringFravalg |
digitalpost.fgvhr.confirm.register.consent.physical.template | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver den fysiske brevskabelon der anvendes for at bekræfte registrering af fravalg. | Ja | http://pdf.nspop.dk/fgvhr/20241001/physical/BekraeftelseRegistreringFravalg |
digitalpost.fgvhr.confirm.delete.consent.digital.template | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver den digitale brevskabelon der anvendes for at bekræfte sletning af fravalg. | Ja | http://pdf.nspop.dk/fgvhr/20241001/digital/BekraeftelseFortrydelseFravalg |
digitalpost.fgvhr.confirm.delete.consent.physical.template | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver den fysiske brevskabelon der anvendes for at bekræfte sletning af fravalg. | Ja | http://pdf.nspop.dk/fgvhr/20241001/physical/BekraeftelseFortrydelseFravalg |
digitalpost.fgvhr.reminder.digital.template | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver den digitale brevskabelon der anvendes til den årlige påmindelse om, at man har registreret et fravalg. | Ja | http://pdf.nspop.dk/fgvhr/20241001/digital/PaamindelseRegistreringFravalg |
digitalpost.fgvhr.reminder.physical.template | Tilhører digital post afsendelsesbaggrundsjobbet. Angiver den fysiske brevskabelon der anvendes til den årlige påmindelse om, at man har registreret et fravalg. | Ja | http://pdf.nspop.dk/fgvhr/20241001/physical/PaamindelseRegistreringFravalg |
minlogclient.properties
FGVHR anvender MinLogProvider til at registrere logninger i MinLog, og i den forbindelse skal Kafka properties for MinLog konfigureres.
| Property | Beskrivelse | Default værdi |
|---|---|---|
| kafka.producer.bootstrap.servers | Url til Kafka bootstrap-server. | kafka:9092 |
| kafka.producer.client.id | Id der anvendes af Kafka producere i løsningen. | FGVHRMinLog2-producer |
| kafka.producer.key.serializer | Serializer key for Kafka producer | org.apache.kafka.common.serialization.StringSerializer |
| kafka.producer.value.serializer | Serializer value for Kafka producer | org.apache.kafka.common.serialization.StringSerializer |
| kafka.topic | Navn på Kafka topic | FGVHR_TOPIC |
log4j konfiguration
Log4j konfiguration for begge services findes i samme wildfly modul som servicekonfigurationen
Se yderligere opsætning i installationsvejledningen.
Overvågning
Der udstilles statussider, som kan tilgås fra adresserne i afsnittet Komponenter
Fortolkning af statussider
Statussiderne 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 | Type | Nøgle | Information |
|---|---|---|---|---|
| FGVHR | registerConsent | Personlig | patient-id | Borgerens id |
| FGVHR | registerConsent | Personlig | patient-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | registerConsent | Ikke personlig | actor-role | Aktørens rolle |
| FGVHR | registerConsent | Ikke personlig | actor-id | Aktørens id. Vil i praksis være det samme some patient-id. |
| FGVHR | registerConsent | Ikke personlig | actor-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | registerConsent | Følsom | consent-status | Status på samtykke. Kan være "ACTIVE", "INACTIVE" eller "ENTERED-IN-ERROR". |
| FGVHR | registerConsent | Personlig | valid-from | Antal dage til hvornår samtykke træder i kraft |
| FGVHR | registerConsent | Personlig | citizen-created-date | Hvornår borgeren har underskrevet blanketten, hvis registreringen kommer fra blanket. |
| FGVHR | deleteConsent | Personlig | patient-id | Borgerens id |
| FGVHR | deleteConsent | Personlig | patient-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | deleteConsent | Ikke personlig | actor-role | Aktørens rolle |
| FGVHR | deleteConsent | Ikke personlig | actor-id | Aktørens id. Vil i praksis være det samme some patient-id. |
| FGVHR | deleteConsent | Ikke personlig | actor-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | deleteConsent | Følsom | consent-status | Status på samtykke. Kan være "ACTIVE", "INACTIVE" eller "ENTERED-IN-ERROR". |
| FGVHR | getConsent | Personlig | patient-id | Borgerens id |
| FGVHR | getConsent | Personlig | patient-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | updateConsent | Personlig | patient-id | Borgerens id |
| FGVHR | updateConsent | Personlig | patient-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | updateConsent | Ikke personlig | actor-role | Aktørens rolle |
| FGVHR | updateConsent | Ikke personlig | actor-id | Aktørens id. Vil i praksis være det samme some patient-id. |
| FGVHR | updateConsent | Ikke personlig | actor-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | updateConsent | Følsom | consent-status | Status på samtykke. Kan være "ACTIVE", "INACTIVE" eller "ENTERED-IN-ERROR". |
| FGVHR | updateConsent | Personlig | valid-from | Antal dage til hvornår samtykke træder i kraft |
| FGVHR | digitalPostSent | Personlig | patient-id | Borgerens id |
| FGVHR | digitalPostSent | Personlig | patient-id-source | Id'ens kilde, fx "CPR" |
| FGVHR | digitalPostSent | NonPersonalInformation | digital-post-uuid | Uuid der blev returneret fra Digital Post komponenten |
Baggrundsjobs
NAS adviseringsjob
Baggrundsjobbet har til formål at sende alle ikke-afsendte NAS-adviseringer, der er oprettet på baggrund af ændring i borgeres fravalg. Adviseringer lagres i tabellen "unsent_notifications".
Baggrundsjobbet startes med et HTTP GET kald til
<serverurl>/fgvhr-operations/nas-notification-job
Jobbet konfigureres med parametrene beskrevet i afsnittet "Servicekonfiguration".
Jobbets seneste status kan aflæses på komponentens statusside. Detaljer om de enkelte kørsler (antal rækker behandlet mm.) skrives direkte til komponentens log-fil.
Slettejob
Detaljer omkring de forskellige trin slettejobbet har, kan findes i FGVHR Design og arkitektur dokumentet.
Servicens slettejob bliver afviklet vha. en udstillet RestController, som kaldes vha. simpelt HTTP GET kald til:
<serverurl>/fgvhr-operations/cleanup-fgvhr/start
Driften vedligeholder en cron, som kalder slettejobbets url i et fast mønster vha. curl.
Slettejobbet status kan ses, vha. HTTP GET kald til:
<serverurl>/fgvhr-operations/cleanup-fgvhr/status
Endpointet kan svare følgende
- Httpkode 200 og Database: OK
- Httpkode 500 og Database: Unavailable
Slettejobbets alarmer kan ses, vha. HTTP GET kald til:
<serverurl>/fgvhr-operations/cleanup-fgvhr/alarm
Er servicens sund returneres httpkode 200 ellers 500 og en eller flere alarm linier:
- Person Information servicen har fejlet flere gange end tilladt i en given periode.
- Baggrundsjobbet FGVHR Cleanup fejlede sidst det blev kørt. Problemet var: <reason>.
- Der er ingen forbindelse til databasen med JNDI navnet <name of jndi>
Man kan ændre styring af slettejobbet ved at ændre følgende parametre:
- deletion.desired.execution.duration=PT20S
Det er en max grænse for hvor lang tid jobbet må køre pr. gang. Når jobbet har kørt den tid der er angivet, så stopper udførslen. Her efter kan jobbet kaldes igen og den vil fortsætte med processeringen hvor jobbet stoppede sidst.
Parameteren angives som en Duration i ISO-8601 format. Dvs. eksemplet viser 20 sekunder. - deletion.fgvhr.batchsize=1000
Det er en max grænse for, hvor mange cpr numre, der håndteres af gangen. Blandt andet i forbindelse med kald til PersonInformation deceased og den videre sletning af fgvhr. - deletion.save.deceased=12M
Angiver hvor lang tid en person skal være død for at vedkommenens fravalg bliver slettet - deletion.save.deceased.digital.post=0D
Angiver hvor lang tid en person skal være død for at vedkommenens digital post bliver slettet. Typisk skal det slettes med det samme. - deletion.patient.id.source.cpr=urn:oid:1.2.208.176.1.2
Anvendes til at finde de records ud, som skal kontrolleres vha. PatientInformationService om personerne er afdøde. Der skal kun undersøges af de records, som er cpr numre.
Digital post afsendelse
Detaljer omkring de forskellige trin baggrundsjobbet har, kan findes i FGVHR Design og arkitektur dokumentet.
Servicens slettejob bliver afviklet vha. en udstillet RestController, som kaldes vha. simpelt HTTP GET kald til:
<serverurl>/fgvhr-operations/fgvhr-send-digitalpost/start
Driften vedligeholder en cron, som kalder jobbets url i et fast mønster vha. curl.
Ved aktivering er en del af handlingen at kalde over til digital post komponent.
Denne komponent anvender brevskabeloner, som skal være synkroniseret mellem de 2 komponenter.
Ved kald til den Digitale Post Komponent, er der adgangskontrol. Det sker via 2-vejs TLS samt en IP-whitelisting, som skal ske afkoblet i NSP miljøerne via netværksinfrastrukturen.
Returnerer kaldet til Digital Post Komponent en fejl opdateres letter tabellen i databasen i dens error_counter og last_error. Returnerer kaldet til Digital Post Komponent fejl, kan detaljer omkring disse ses som error log i applikationsloggen.. Returnerer kaldet til Digital Post Komponent warnings, kan disse ses som warning log i applikationsloggen.
Jobbets status kan ses, vha. HTTP GET kald til:
<serverurl>/fgvhr-operations/fgvhr-send-digitalpost/status
Endpointet kan svare følgende
- Httpkode 200 og Database: OK
- Httpkode 500 og Database: Unavailable
Jobbets alarmer kan ses, vha. HTTP GET kald til:
<serverurl>/fgvhr-operations/fgvhr-send-digitalpost/alarm
Er servicens sund returneres httpkode 200 ellers 500 og en eller flere alarm linier:
- Person Information servicen har fejlet flere gange end tilladt i en given periode.
- Baggrundsjobbet FGVHR Digital Post forsendelse fejlede sidst det blev kørt. Problemet var <reason>
- Der er ingen forbindelse til databasen med JNDI navnet <name of jndi>
- Database tabellen letter har flere records med error_counter højere end tilladt. Det nuværende antal er <count>.
- Database tabellen letter har breve som er usendte i en længere periode en tilladt. Perioden er: <period>. Det nuværende antal er: <count>
- Følgende fejl er forekommet for letter <uuid>: <error>
- Følgende fejl er forekommet for letter <uuid> og <count> andre: <error>*
*) hvis flere uuid'er skrives alle uuid'er til applikationsloggen.
Man kan ændre styring af jobbet ved at ændre følgende parametre:
- digitalpost.fgvhr.schedule.error.period=2D
Hvis der ved afsendelse af et letter opstår en fejl, rescheduleres letter med denne periode. Eksemplet viser 2 dage - digitalpost.fgvhr.send.limit=100
Det antal af letters, som hentes ud af databasen ad gangen. Eksemplet henter 100. - digitalpost.fgvhr.send.desired.execution.duration=PT20S
Det er en max grænse for hvor lang tid jobbet må køre pr. gang. Når jobbet har kørt den tid der er angivet, så stopper udførslen. Her efter kan jobbet kaldes igen og den vil fortsætte med processeringen hvor jobbet stoppede sidst.
Parameteren angives som en Duration i ISO-8601 format. Dvs. eksemplet viser 20 sekunder. - digitalpost.fgvhr.error.tolerance=0
Angiver hvor mange letters der må ligge i databasen med fejl, før det meldes som en alarm. Eksemplet viser, at er der bare een letter med fejl, skal der rejses en alarm - digitalpost.fgvhr.unsent.error.period=1D
Angiver hvor gamle (målt på sendAt) letters må være i databasen, før det meldes som en alarm. Eksemplet viser, at et letter må ligge een dag - deletion.desired.execution.duration=PT20S
Det er en max grænse for hvor lang tid jobbet må køre pr. gang. Når jobbet har kørt den tid der er angivet, så stopper udførslen. Her efter kan jobbet kaldes igen og den vil fortsætte med processeringen hvor jobbet stoppede sidst.
Parameteren angives som en Duration i ISO-8601 format. Dvs. eksemplet viser 20 sekunder. - deletion.fgvhr.batchsize=1000
Det er en max grænse for, hvor mange cpr numre, der håndteres af gangen. Blandt andet i forbindelse med kald til PersonInformation deceased og den videre sletning af fgvhr. - deletion.save.deceased=12M
Angiver hvor lang tid en person skal være død for at vedkommenens fravalg bliver slettet - deletion.patient.id.source.cpr=urn:oid:1.2.208.176.1.2
Anvendes til at finde de records ud, som skal kontrolleres vha. PatientInformationService om personerne er afdøde. Der skal kun undersøges af de records, som er cpr numre.