Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Dette dokument beskriver installation og konfiguration af Behandlingstestamenteregister-servicen (BTR) samt tilhørende migreringsværktøj. Konfiguration af tilhørende DGWS/IDWS Proxy er også beskrevet.

Behandlingstestamenteregister-servicen består af 3 komponenter følgende komponent (war-arkiverarkiv), der skal konfigureres og deployes på en applikationsserver:

  • ltr-btr-service-wildfly: Livs- og behandlingstestamenteregister-servicen. War-arkiv. Servlet-baseret webservice pakket specifikt til Wildfly.

  • ltr-migration: Komponent til migrering af data. Anvendes kun ved initial migrering af data fra den gamle løsning. War-arkiv. Servlet-baseret webservice pakket specifikt til Wildfly.
  • wsproxy: DGWS/IDWS Proxy. Er ikke inkluderet i dette projekts kildekode. War-arkiv. Servlet-baseret proxy-komponent til håndtering af DGWS/IDWS i requests og responses.

Projektet bygges med Maven og kræver Java 8 samt en MariaDB-installation for at kunne afvikle unit-tests.

Udover normalt tilgængelige Maven dependencies, afhænger projektet også af interne artefakter. Hvis disse artefakter ikke er udgivet (released) i den påkrævede version i NSP's Nexus repository, skal man selv udtjekke og bygge dem fra NSP's Subversion i den pågældende version. Artefakternes forskellige versioner vil være tilgængelige under et Subversion-tag. Disse artefakter er:

  • cpr-subscriber (Maven identifier: dk.sds:cprsubscriber)
  • dgws_idws_proxy (Maven identifier: dk.sds.dgws-idws-proxy:wsproxy-api)

For at bygge disse interne artefakter, henvises der til artefakternes dokumentation.

Info

Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe.

Ændringslog

...

Version

...

Dato

...

Ændring

...

Ansvarlig

...

1.0.1

...

2018-08-15

...

Initialt dokument

...

Trifork

...

Projektet bygges med Maven og kræver Java 8 samt en MariaDB-installation for at kunne afvikle unit-tests.


Info

Alle filer der refereres til ligger sammen med projektets kildekode i NSP's Subversion. Referencer til stier er relative med udgangspunkt i projektets rodmappe.

Ændringslog

Version

Dato

Ændring

Ansvarlig

1.0.1

2018-08-15

Initialt dokument

Trifork

1.0.22018-08-31Ny releaseTrifork
1.0.32018-09-06Endpoints ændret fra /ltr-btr til /btrTrifork
1.0.42018-09-11Ændret databasedriver til MySQLTrifork
1.0.62018-10-15Tilføjelse af tre SQL-scripterTrifork
1.0.122019-08-19Opdateret default value for property "minlog.read-activity-text.ltr" og "minlog.read-activity-text.btr". Tilføjet to SQL-scripter.Trifork
1.0.142019-25-09AjourførtTrifork
1.1.32020-05-26Opdateret properties til slettejobKvalitetsIT
1.1.72021-09-06Opdateret ifm. udfasning af dgws/idws-proxy.KvalitetsIT
1.1.82021-10-12Opdateret ifm. udfasning af btr-snitflade med accept fra pårørende, værge eller fremtidsfuldmægtig for uafvendeligt døendeKvalitetsIT
1.1.92021-10-25Opdateret ifm inaktive cpr numre afvisesKvalitetsIT
1.1.102022-10-18Tilføjet minlog.read-activity-text-with-only-forced-treatment.btrKvalitetsIT
1.1.112022-10-25TIlføjet cprexists.minageKvalitetsIT
1.1.332023-11-09SDS-6387: omlægning af slettejobKvalitetsIT

Byggevejledning

For at bygge projektet og dets deployables (war-filer) uden at køre unit-tests og integrationstests

Byggevejledning

For at bygge projektet og dets deployables (war-filer) uden at køre unit-tests og integrationstests, anvendes følgende Maven kommando:

...

Tilgang til database

Servicen kræver to databaser: en til Livstestamenteregistret og en til består af en database, der både indeholder data for Livstestamenteregistret og for Behandlingstestamenteregistret. Derudover afhænger den af adgang til et view i en (replikeret) stamdata-database.

Servicen konfigureres med 3 datasources1 datasource, som tilgår databaserne databasen vha. separat specificerede brugere.

To brugere En bruger skal henholdsvis give adgang til Livstestamenteregister-databasen og Behandlingstestamenteregister- databasen, og de den skal begge være tildelt følgende rettigheder på deres pågældende databasedatabasen:

  • Ved normal drift i produktion: SELECT, INSERT, UPDATE, DELETE
  • Yderligere nødvendige rettigheder ved databaseoprettelse og migreringer: CREATE, DROP, ALTER

...

Datamodellen styres vha. inkrementelle SQL-scripter, der kan findes under compose/database/db/migration. De er inddelt i 3 2 undermapper:

  • ltrbtr:  indeholder scripter indeholder scripts til at køre på servicens Livstestamenteregister-database btr: indeholder scripter til at køre på servicens og Behandlingstestamenteregister-database
  • stm: indeholder scripter scripts til at køre på en (replikeret) stamdata-database.


Info

Scripterne Scripts er udformet til at blive kørt med databasemigreringsværktøjet Flyway, men dette er kun aktiveret under afvikling af unit-tests, da dette ikke ønskes anvendt i produktion.

...

Ved initial installation af servicen vil det således være følgende scripter, der skal køres i den nedenstående rækkefølge:

Servicens

...

Behandlingstestamenteregister og Livstestamenteregister-database

  • ltrbtr/V1__create_LivingWill.sql
  • ltrbtr/V2__create_PropertiesLivingWill.sqlltr/V8__add_PersonIdentifier_index.sql

...

  • btr/V3__create_TreatmentWill.sql 
  • btr/V4__create_PropertiesTreatmentWill.sql
  • btr/V5__alter_add_NoForcedTreatmentIfIncapable.sql
  • btr/V6__migrate_RelativeAcceptanceRequired_to_AcceptanceNeeded.sql
  • btr/V7__add_AcceptanceNeeded_for_all.sql
  • btr/V8__add_PersonIdentifier_index.sql
  • btr/V9__add_PersonIdentifier_index.sql

...

  • stm/R__create_v2_Person_Simplified_view.sql

 

Info

Scriptet R__create_v2_Person_Simplified_view.sql opretter et view, som afhænger af eksistensen af tabellen v2_Person. Dette er tabellen, der indeholder CPR-ændringer, og den skal man selv stå for at levere. Under afvikling af unit-tests bliver en testudgave af denne tabel automatisk oprettet vha. et SQL-script i compose/database/db/test.

...

Komponenten deployes vha. NSP's platform Docker image og konfigurationsfiler mountes i containeren som angivet i projektets Compose-filer.

ltr-btr-service-wildfly og ltr-migration konfigureres ved hjælp hver deres Wildfly-modul, der indholder de nødvendige konfigurationsfiler til valg af datasourcesdatasource, brugerdefinerede parametre, logning, mm. Wildfly-modulet er integreret i komponentens Docker image.

...

Herunder beskrives properties i ltr-btr-service-wildfly komponentens konfigurationsfiler.

application.properties

Properties er her opdelt i to tabeller. Den første tabel indeholder anvendte Spring Boot-properties. Den anden tabel indeholder properties, der er specifikt defineret til brug i servicen. Begge typer af properties er defineret i samme konfigurationsfil.

Spring Boot-properties

Property
PropertyBeskrivelseDefault
spring
datasource.
active
btr.
profilesAktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment.productionspring.application.nameNavnet på applikationen. Skal ikke ændres.btrspring.jmx.enabledDisable Spring Boot JMX. Skal ikke ændres. Deaktiveret da vi ikke udstiller særlig JMX funktionalitet.falsespring.jta.enabled

JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false)

falsemanagement.server.portPort som Spring Boot management endpoints bind'er på. Endpoints deaktiveres ved at sætte værdien til -1.-1

Komponentspecifikke-properties

read læst L\u00e6sning
jndi-nameAngiver navnet på en JNDI datasource til Behandlingstestamenteregister-databasenjava:jboss/datasources/BTR-DS
datasource.stamdata.jndi-nameAngiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-databasejava:jboss/datasources/STM-DS
dcc.endpoint.ltrAngiver det endpoint, som DCC'en skal kalde for Livstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. Bør ændres før produktion.http://test1.fsk.netic.dk:8080/btr/ltr
dcc.endpoint.btrAngiver det endpoint, som DCC'en skal kalde for Behandlingstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig . Bør ændres før produktion.http://test1.fsk.netic.dk:8080/btr/btr
minlog.read-activity-text.ltrAngiver den tekst der registreres i MinLog, når der bliver læst Livstestamente-data for et CPR-nummer.L\u00e6sning af Livstestamente
minlog.read-activity-text.btrAngiver den tekst der registreres i MinLog, når der bliver læst Behandlingstestamente-data for et CPR-nummer.L\u00e6sning af Behandlingstestamente
minlog.read-activity-text-with-only-forced-treatment.btrAngiver den tekst der registreres i MinLog, når der bliver læst Behandlingstestamente-data som kun indeholder tvang ved somatisk behandling for et CPR-nummer.

minlog.create-activity-text.btr

Angiver den tekst der registreres i MinLog, når der bliver oprettet Behandlingstestamente-data for et CPR-nummer.Oprettelse af Behandlingstestamente

minlog.delete-activity-text.ltr

Angiver den tekst der registreres i MinLog, når der bliver slettet Livstestamente-data for et CPR-nummer.Sletning af Livstestamente

minlog.delete-activity-text.btr

Angiver den tekst der registreres i MinLog, når der bliver slettet Behandlingstestamente-data for et CPR-nummer.Sletning af Behandlingstestamente

minlog.update

PropertyBeskrivelseDefault
datasource.ltr.jndi-nameAngiver navnet på en JNDI datasource til Livstestamenteregister-databasenjava:jboss/datasources/LTR-DS
datasource.btr.jndi-nameAngiver navnet på en JNDI datasource til Behandlingstestamenteregister-databasenjava:jboss/datasources/BTR-DS
datasource.stamdata.jndi-nameAngiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-databasejava:jboss/datasources/STM-DS
dcc.endpoint.ltrAngiver det endpoint, som DCC'en skal kalde for Livstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig. Bør ændres før produktion.http://test1.fsk.netic.dk:8080/btr/ltr
dcc.endpoint.btrAngiver det endpoint, som DCC'en skal kalde for Behandlingstestamenteregistret. Dette kommer til at fremgå af den XML, der returneres i /dksconfig . Bør ændres før produktion.http://test1.fsk.netic.dk:8080/btr/btr
minlog.read

-activity-text.ltr


Angiver den tekst der registreres i MinLog, når der bliver læst opdateret Livstestamente-data for et CPR-nummer.L\u00e6sning Opdatering af Livstestamente

minlog.

update-activity-text.btr

Angiver den tekst der registreres i MinLog, når der bliver opdateret Behandlingstestamente-data for et CPR-nummer.Opdatering af Behandlingstestamente
schemavalidationbtr.validateopen-requestsdate

Angiver

om requests skal schema-valideres (true/false)
true
schemavalidation.validate-responses

Angiver om responses skal schema-valideres (true/false)

true
schemavalidation.fail-on-response-error

Angiver om et kald skal returnere fejl, hvis response ikke er schema-valid (true/false)

true
forward-only-filter.enabledAngiver om servicen kun skal kunne tilgås igennem DGWS/IDWS Proxyen (wsproxy komponenten). Bør altid være sat til true. (true/false)true
ltr.close-dateAngiver det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser deaktiveres for Livstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil oprettelser alligevel være muligt, og en advarsel vil blive logget ved opstart.2019-01-01T00:00:00+01:00
btr.open-date

Angiver det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser aktiveres for Behandlingstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil mulighed for oprettelse alligevel være muligt, og en advarsel vil blive logget ved opstart.

Hvis oprettelser og opdateringer deaktiveres for Behandlingstestamenteregistret, vil integrationstestene fejle.

2018-06-01T00:00:00+01:00
jobs.delete.cpr-max-results.ltrLivstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen25
jobs.delete.cpr-max-loops.ltrLivstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering

2

jobs.delete.cpr-max-results.btrBehandlingstestamenteregister-slettejob: Angiver maksimum antal rækker med opdateringer i cpr-registry der skal læses ad gangen25
jobs.delete.cpr-max-loops.btrBehandlingstestamenteregister-slettejob: Angiver maksimum antal batches der skal behandles pr. jobeksekvering2

log4j2.xml

Konfigurerer logning for servicen.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion. Se Driftsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

minlogclient.properties

Konfigurerer MinLog for servicen.

Standardværdierne indeholder konfiguration der skriver MinLog-logninger til test1-miljøet.

I produktion skal properties konfigureres som beskrevet i  MinLog Service - Guide til anvendere .

log4j-nspslalog.properties

Standardværdierne konfigurerer en Log4j-backend der logger med ISO 8601 timestamps.

Se  NSP-util - Designdokument.doc  eller den officielle Log4j 1 dokumentation for alternativ konfiguration.

Konfiguration af proxy-komponent

Wsproxy er en separat komponent og har derfor adskilte konfigurationsfiler ift. selve servicen. Bemærk at disse konfigurationsfiler ikke er placeret i et modul, men i stedet er mountet i Docker containeren under <wildfly-root>/ standalone/configuration.

Der henvises til  Installationsvejledning (DGWS/IDWS Proxy)  for nærmere beskrivelse af konfigurationen.

wsproxy-btr.properties

Konfigurerer wsproxy komponenten.

Standardværdierne indeholder konfiguration til test1-miljøet, der signerer IDWS-responses med det medfølgende testcertifikat.

proxyconfig-btr.xml

Konfigurerer mapning af requests til den interne forwarding fra wsproxy til selve servicen.

Standardværdierne angiver nogle brugbare konfigurationer af mapninger for anvendelse i produktion.

log4j2-wsproxy-btr.xml

Konfigurerer wsproxy komponentens egen logning. Komponenten har både service-logning og audit-logning.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion.

Konfiguration af migreringskomponent

application.properties

...

JTA transaktioner. Det er påkrævet at denne er false, således at Spring Boot i stedet anvender dens egen håndtering af transaktioner. (true/false)

...

det præcise tidspunkt (ISO 8601) fra hvornår mulighed for oprettelser aktiveres for Behandlingstestamenteregistret. Hvis denne er null eller ikke er mulig at parse som et tidspunkt, vil mulighed for oprettelse alligevel være muligt, og en advarsel vil blive logget ved opstart.

Hvis oprettelser og opdateringer deaktiveres for Behandlingstestamenteregistret, vil integrationstestene fejle.

2018-06-01T00:00:00+01:00
cprexists.validationlevel

Valideringsniveau for CPR validering

Eksempel: WARNING, REJECT, OFF


cprexists.url

URL for CPR exist service

Eksempel: http://test1-cnsp.ekstern-test.nspop.dk:8080/stamdata-cprexists

null
cprexists.maxTotalConnections

Konfiguration af client pool til kald af CPRExists service

200
cprexists.defaultMaxConnectionsPerRoute

Konfiguration af client pool til kald af CPRExists service

20
cprexists.inactive.statusKonfiguration af inaktive status, liste adskilt af komma30,50,60
cprexists.minageMinimum alder for oprettelse af behandlingstestamente18
whitelisted.level3.cvrsKomma separeret liste af cvr numre, der må kalde servicen med niveau 3 id kort
allowed.idws.audienceDet tilladte audience på indkommende idws requestshttps://fsk
nas.app.nameApplikationsnavn til sla-logning ved NAS-kaldtreatmentwillregister
nas.app.shortnameKort applikationsnavn til sla-logning ved NAS-kald.btr
nas.fail.thesholdGrænse for hvor mange gange NAS-kald må fejle i træk, før NAS opfattes som usund.1
nas.connect.timeout.millisGrænse for hvor lang tid det må tage at oprette forbindelse til NAS (i ms.).10000
nas.read.timeout.millisGrænse for hvor lang tid det må tage at modtage svar fra NAS (i ms.).10000
nas.max.total.connectionsMaksimalt antal samtidige NAS-forbindelser.200
nas.default.max.connections.per.routeMaksimalt antal NAS-forbindelser per rute.20
nas.service.urlNAS Endpointhttp://test1.ekstern-test.nspop.dk:8080/nas2/notificationbroker/service
nas.topic.livingwillnotificationNAS topic ved opdateringer af livstestamentehttp://sundhedsdatastyrelsen.dk/LivingWill/2022/05/05:LivingWillUpdated
nas.topic.treatmentwillnotificationNAS topic ved opdateringer af behandlingstestamentehttp://sundhedsdatastyrelsen.dk/TreatmentWill/2022/05/05:TreatmentWillUpdated
nas.idcard.subject.id.typeSubjecttype for IDKort til NAS-kald.medcom:cvrnumber
nas.idcard.subject.idSubjectId for IDKort til NAS-kald.46837428
nas.idcard.subject.nameSubjectname for IDKort til NAS-kald.Funktionssignatur til testmiljø (funktionscertifikat)
nas.idcard.levelSikkerhedsniveau for IDKort til NAS-kald.3
nas.idcard.system.nameSystemnavn i IDKort til NAS-kald.itsystem
nas.sts.endpointEndpointet, hvor Minspærring skal trække sit SOSI IDkort på baggrund af sts.keystorehttp://test2.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService
nas.sts.test.modeBoolsk værdi, der angiver om der anvendes test- eller produktions SOSIFederationtrue
nas.sts.keystoresti til keystore, der indeholder certifikat til at trække Idkort til NAS-kald.Statens_Serum_Institut_FOCES.jks
nas.sts.keystore.passwordPassword til sts.keystoren/a
jobs.delete.max.timeAngiver den maksimale udførelsestid for baggrundsjobbet. Angives som Duration i ISO-8601 formattet. Default værdien er på 20 sekunder.PT20S

log4j.xml

Konfigurerer logning for servicen.

Der benyttes en rolling file appender, hvor størrelsen af log filerne og antallet af gemte log filer konfigureres med de to environment variable: LOG_MAX_FILE_SIZE og LOG_MAX_BACKUP_INDEX.

Standardværdierne angiver nogle brugbare niveauer for anvendelse i produktion. Se Driftsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j dokumentation for alternativ konfiguration.

minlogclient.properties

BTR anvender MinLogProvider til at registrere logninger i MinLog2, og i den forbindelse skal Kafka properties for Min Log 2 konfigureres. 

Property

Beskrivelse

kafka.producer.bootstrap.serversKafka endpoint, som anvendes i forbindelse med kald til MinLog2
kafka.producer.client.idNavnet som BTR vil fremgå med i listen af Producers på et Kafka Cluster.
kafka.producer.key.serializerSerializer key for Kafka producer
kafka.producer.key.value.serializerSerializer value for Kafka producer
kafka.topic

Kafka topic som anvendes i forbindelse med kald til MinLog2

log4j-nspslalog.properties

Standardværdierne konfigurerer en Log4j-backend der logger med ISO 8601 timestamps.

Se  NSP-util - Designdokument.doc  eller den officielle Log4j 1 dokumentation for alternativ konfiguration.

accesshandler

security.properties

Konfigurerer security-api'et. Standardværdierne opsætter en keystore til signering af responses. Der henvises til accesshandlerens dokumentation for yderligere detaljer om konfiguration af security-api'et.

security.skip

Der henvises til accesshandlerens dokumentation for yderligere detaljer om konfiguration af security-api'et

log4j2.xml

Konfigurerer logning for migreringskomponenten.

Standardværdierne angiver nogle brugbare niveauer for anvendelse til migrering i produktion. Se migeringsvejledningen for uddybet beskrivelse af logning.

Se den officielle Log4j 2 dokumentation for alternativ konfiguration.

Konfiguration af datasources

ltr-btr-service-wildfly komponenten -komponenten kræver adgang til 2 en JNDI datasources-datakilde. Disse Det skal opsættes i Wildfly og refereres henvises til i servicens tjenestens application.properties.

Overblik over komponenter

Der følgende beskriver de forskellige deployables som komponenten indeholder.

Overblik over komponenter

btr.warltr-migration-<version>

Filnavn når deployet

Beskrivelse

Kilde

btr-service.war

LTR-BTR servicen

ltr-btr-service-wildfly-<version>.war

DGWS/IDWS Proxy. Se Installationsvejledning (DGWS/IDWS Proxy) for dokumentation. War-filen for wsproxy komponenten omdøbes til btr.war, hvilket bevirker at webservice context-path for wsproxy i dette tilfælde bliver /btr.

wsproxy-<version>.war (findes ikke i projektet)

btr-service.war

LTR-BTR servicen

ltr-btr-service-wildfly-<version>.war

ltr-btr-operations.war

LTR-BTR baggrundsjob

ltr-btr-operations

ltr-migration.warLTR migeringsværktøj. Deployes kun når migrering skal foretages.

.war

Se driftsvejledningen for yderligere information.

...