Overblik

Dette dokument beskriver installation og konfiguration af Det Fælles Stamkort-servicen (FSK) samt den tilhørende konfiguration af dokumentdelingsservicen (DDS).

FSK-servicen består af én komponent (war-arkiv), der skal konfigureres og deployes på en applikationsserver:

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:

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


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

2.0.0

2018-08-16

Initialt dokument

Trifork

2.0.82019-08-16Opdateret properties med konfiguration af Spring Boot Actuator. Opdateret default value for property "minLog.readActivity.text".Trifork
2.0.92019-25-09AjourførtTrifork
2.0.112019-12-16AjourførtTrifork

Byggevejledning

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

mvn clean install -DskipTests

Projektets deployables ender i target-mappen under de respektive moduler.

Afvikling af unit-tests

For at afvikle projektets unit-tests, skal en MariaDB-database-server være tilgængelig.

I udviklingssammenhæng kan man oprette de nødvendige database-schemas vha. scriptet compose/database/db/create_db.sql. I application.properties-filen i projektet er datasources som default sat til at anvende root-user med tomt password. Database-strukturen bliver automatisk oprettet vha. Flyway SQL-scripter, når unit-testene afvikles.

Unit-testene i projektet kan afvikles med følgende Maven-kommando:

mvn clean test

Alternativt kan også samtidigt bygge projektet ved at anvende Maven-kommandoen:

mvn clean install

Krav til miljø

Komponenten er tilpasset at kunne indgå i det aktuelt gældende CI-miljø på NSP. Det tager aktuelt udgangspunkt i version 1 af NSP's platform Docker image.

Specialhensyn i miljøer med flere app-servere

I miljøer med flere app-servere er det vigtigt at servicens interne job ikke kører i flere inkarnationer, da der så kan opstå "race conditions". Derfor bør det sikres at synkroniseringsjobbet kun kaldes fra een server.

Krav til database

Servicen er testet mod MariaDB version 10.1, som bliver brugt på NSP platformen.

Krav til hardware

Der stilles ikke nogle særlige minimumskrav til hardware, men man skal forvente at bruge high-end hardware (både cpu, ram, netkort og diske) for at kunne opfylde de gældende svartidskrav på NSP.

Oprettelse af databaser og tabeller

Herunder beskrives servicens tilgang til database samt oprettelse af tabeller og views.

Tilgang til database

Servicen kræver en enkelt database til dens egen data. Derudover afhænger den af adgang til et view i en (replikeret) stamdata-database.

Servicen konfigureres med 2 datasources, som tilgår databaserne vha. separat specificerede brugere.

Databasebrugeren, der tilgår servicens egen database, skal være tildelt følgende rettigheder:

Databasebrugeren, der tilgår stamdata-view'et, skal være tildelt følgende rettigheder:

Oprettelse af database og tabeller

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


Scripterne er udformet til at blive kørt med databasemigreringsværktøjet Flyway, og afvikles automatisk under Maven-byg.

I produktion anvendes scripterne manuelt og skal køres på databasen i inkrementel rækkefølge baseret på versionsnummeret i filnavnet (først V1__(...).sql, dernæst V2__(...).sql, osv.). Hvert script må aldrig køres mere end én gang; der gælder dog en undtagelse for ikke-versionerede scripter, hvis filnavne begynder med R, som står for Repeatable. Disse Repeatable scripter skal køres hver gang deres indhold (checksum) er blevet ændret, men de må først køres efter alle versionerede scripter er blevet kørt.

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 database

(Replikeret) Stamdata-database


Scripterne R__create_v2_Person_Simplified_view.sql og R__create_Yderregister_v3_Simplified_view.sql opretter views, som afhænger af eksistensen af tabellerne v2_Person og Yderregister_v3. Disse tabeller 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.


Deployment

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

fsk-service konfigureres ved hjælp af et Wildfly-modul, der indholder de nødvendige konfigurationsfiler til valg af datasources, brugerdefinerede parametre, logning, mm. Wildfly-modulet er integreret i komponentens Docker image.


Alle konfigurerbare properties bør gennemgås inden idriftsættelse, men standardværdierne er tiltænkt anvendelse i produktion medmindre andet er angivet.


Konfiguration af servicen

Herunder beskrives properties i fsk-service 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

PropertyBeskrivelseDefault
spring.active.profilesAktiv profil i Spring Boot. Skal ikke ændres. Anvendes til at styre forskellige databasekonfigurationer ved henholdsvis unit-tests og deployment.production
spring.jmx.enabledJMX. Denne feature anvendes ikke.false
management.endpoints.enabled-by-defaultAngiver hvorvidt standard Actuator endpoints skal aktiveres.false
management.health.status.orderRækkefølge der angiver prioritet for Actuator Health statusser. Der er udover standard statusser tilføjet statussen "NEEDS_ATTENTION".DOWN, OUT_OF_SERVICE, NEEDS_ATTENTION, UNKNOWN, UP
management.health.status.http-mapping.NEEDS_ATTENTIONMapper Actuator Health statussen "NEEDS_ATTENTION" til HTTP statuskode "202 Accepted".202
management.health.defaults.enabledAngiver hvorvidt standard Actuator Health indikatorer skal aktiveres.false
management.health.db.enabledAngiver hvorvidt Actuator Health indikator for databasetilgang/datasources skal aktiveres.true
management.endpoint.health.enabledAngiver hvorvidt Actuator endpoint for Health skal aktiveres.true
management.endpoint.health.show-detailsAngiver hvorvidt Actuator Health indikatorer eksponerer detaljer om deres status.always
management.endpoint.info.enabledAngiver hvorvidt Actuator endpoint for Info skal aktiveres.true

Komponentspecifikke-properties

PropertyBeskrivelseDefault
server.servlet.context-pathContext path på servicen. Bør altid være “/fsk", og matche den on-demand-service endpoint, der er konfigureret i Dokumentdelingsservicen./fsk
whitelisted.level3.cvrsEn komma-separeret liste af CVR-numre, som tillades at kalde FSKs DocumentProviderWS service med et level 3 ID-kort. Denne løsning findes af hensyn til sundhed.dk's kald gennem DDS. Sundhed.dk kalder igennem med CVR-nr. 31908574. På testmiljøer vil der (af testhensyn) typisk også være åbent for Trifork's CVR-nr. 20921897.31908574
health.certificate-expires-warningAngiver antal dage, inden anvendte certifikater udløber, hvorfra komponentens statusside vil begynde at vise en advarsel.30
datasource-fsk.jndi-nameAngiver navnet på den primære JNDI datasourcejava:jboss/datasources/FSK-DS
datasource-stamdata.jndi-nameAngiver navnet på den JNDI datasource der giver adgang til en (replikeret) stamdata-databasejava:jboss/datasources/STM-DS
spring.flyway.enabledAngiver om servicen selv sørger for opgradering af databasen (hvilket kræver at “fsk-service”-brugeren har privilegier til DDL, samt at inkrementelle SQL-scripts er tilgængelige i WAR-filen). Bør være false.false
sts.endpointAdresse på NSP'ens SecurityTokenService.http://test1.ekstern-test.nspop.dk:8080/sts/services/NewSecurityTokenService
client.keystore.filesystem.pathAngiver hvilken keystore, ser anvendes til DGWS kald til SCES og DDS.test1/Statens_Serum_Institut_FOCES.jks
client.keystore.passwordPassword til ovennævnte keystore.Test1234
client.org.idOrganisationsid i form af CVR-nummer.46837428
client.org.nameOrganisationsnavn. Dette skal være navnet på den organisation, der matcher CVR nummeret angivet i client.org.idStatens Serum Institut
minLog.readActivity.text

Angiver den tekst der registreres i MinLog, når DDS'en henter et dokument et kald til On-Demand-webservicen

Opslag i Stamkort
sces.enableEnable/disable SCES integrationtrue
sces.endpointEndpoint til CPR-Enkeltopslaghttp://test1.ekstern-test.nspop.dk:8080/stamdata-cpr-ws/service/DetGodeCPROpslag-1.0.4
sces.connect.timeout.millisConnect-timeout mod CPR-enkeltopslag (ms)2000
sces.read.timeout.millisRead-timeout mod CPR-enkeltopslag (ms)7000
odr.enableEnable/disable integration til organdonorregistrettrue
odr.endpointEndpoint til organdonorregisterhttp://localhost:8080/odr/odr
odr.connect.timeout.millisConnect-timeout mod organdonorregistret (ms)2000
odr.read.timeout.millisRead-timeout mod organdonorregistret (ms)7000
ltr.enableEnable/disable integration til livstestamenteregistrettrue
ltr.endpointEndpoint til livstestamenteregisterhttp://localhost:8080/ltr-btr/ltr
ltr.connect.timeout.millisConnect-timeout mod livstestamenteregistret (ms)2000
ltr.read.timeout.millisRead-timeout mod livstestamenteregistret (ms)7000
btr.startdatetime

Tidspunkt for, hvornår FSK servicen begynder at foretage kald til behandlingstestamenteregisterservicen (såfremt integrationen er enabled).

Dette angives som et dato/klokkeslæt i lokal tid på format yyyy-MM-dd HH:mm:ss.

2019-01-01 00:00:00
btr.enableEnable/disable integration til behandlingstestamenteregistrettrue
btr.endpointEndpoint til behandlingstestamenteregisterhttp://localhost:8080/ltr-btr/btr
btr.connect.timeout.millisConnect-timeout mod behandlingstestamenteregistret (ms)2000
btr.read.timeout.millisRead-timeout mod behandlingstestamenteregister (ms)7000
skr.enableEnable/disable integration til stamkortregistrettrue
skr.endpointEndpoint til stamkortregisterhttp://localhost:8080/skr/skr
skr.connect.timeout.millisConnect-timeout mod stamkortregistret (ms)2000
skr.read.timeout.millisRead-timeout mod stamkortregistret (ms)7000
dds.registry.endpoint.prefixURL der benyttes som præfix for DDS registry endpoints, således at denne ikke behøver gentagelse for hvert registry endpoint (se fx dds.registryupdate.service.endpoint). Udpeger ikke DDS, men dens bagved liggende OpenText registry, som normalt ikke er åbent tilgængeligt som DDShttps://test1-cnsp.ekstern-test.nspop.dk:8443/registry/services
dds.registerondemand.service.endpointURL til dokumentdelingsservicens registrering af "on demand"-dokumenterhttp://test1-cnsp.ekstern-test.nspop.dk:8080/ddsregistry
dds.registryupdate.service.endpointURL til OpenText registry's opdateringsservice. Benytter dds.registry.endpoint.prefix, så URL ikke gentages i flere properties${dds.registry.endpoint.prefix}/xds-iti57
dds.registrystoredquery.service.endpointURL til OpenText registry's søgeservice. Benytter dds.registry.endpoint.prefix, så URL ikke gentages i flere properties${dds.registry.endpoint.prefix}/xds-iti18
dds.repository.unique.id

FSK's "RepositoryUniqueId" som konfigureret i DDS. Er miljøafhængig på følgende måde:

TEST1: 1.2.208.176.43210.8.10.12
TEST2: 1.2.208.176.43210.8.20.12
UDDANNELSE: 1.2.208.176.43210.8.40.12
PRODTEST: 1.2.208.176.43210.8.30.12
PROD: 1.2.208.176.8.1.12

Se oversigt til venstre
dds.home.community.idFSK's "HomeCommunityId" som konfigureret i DDS. Samme værdi på alle miljøer.1.2.208.176.8.1.12
dds.type.codeLOINC "type code" for FSKs dokumenter. Sættes til 52460-3 (LOINC "Patient Information", se evt. https://s.details.loinc.org/LOINC/52460-3.html?sections=Comprehensive)52460-3
dds.connect.timeout.millisConnect-timeout mod dokumentdelingsservicen (ms)2000
dds.read.timeout.millisRead-timeout mod dokumentdelingsservicen (ms)7000
jobs.ddssync.max.errorsDet maksimale antal fejl SyncJob'et må støde på før det standser udførsel. Bemærk: forbigående fejl ignoreres automatisk; antallet går udelukkende på logiske fejl fra DDS. Hvis SyncJob flere gange støder på samme fejl, kan man overveje at justere denne property til '1', så jobbet kan passere den fejlende besked og fortsætte den videre behandling.0
jobs.ddssync.cpr.max.resultsAngiver hvor mange cprnumre jobbet til løbende opdatering af DDS registry max. må behandle i en batch.1000
dgwsclient.pool.sizeAntal parallelle kald, der kan maksimalt anvendes til kald til de underliggende services SCES, SKR, LTR, BTR og ODR.50
dgwsclient.timeout.millisTimeout (ms) for tråde, der anvendes til kald til de underliggende services SCES, SKR, LTR, BTR og ODR.
Bør være større end de read-timeout-millis, der kan angives for de enkelte services.
10000
isProductionAngiver om denne service er til test eller produktionfalse
ignoreInvalidIdcardInTestModeAngiver denne om DGWS certifikater afvises hvis de er udløbet. Denne property anvendes kun når isProduction er falsetrue
call.sces.status.30Fejl der returneres når CPR-nummeret har status 30Det er ikke muligt at hente stamkortet, da CPR-nummeret er inaktivt
call.sces.status.50Fejl der returneres når CPR-nummeret har status 50Det er ikke muligt at hente stamkortet, da CPR-nummeret er inaktivt
call.sces.status.60Fejl der returneres når CPR-nummeret har status 60Det er ikke muligt at hente stamkortet, da CPR-nummeret er inaktivt
call.sces.status.90Fejl der returneres når CPR-nummeret har status 90Det er ikke muligt at hente stamkortet, da borgeren er afgået ved døden for mere end 1 år siden

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 datasources

fsk-service komponenten kræver adgang til 2 JNDI datasources. Disse skal opsættes i Wildfly og refereres til i servicens application.properties.

Overblik over komponenter

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

Filnavn når deployet

Beskrivelse

Kilde

fsk-service.war

FSK servicen

fsk-service-<version>.war

Se driftsvejledningen for yderligere information.

Opgradering af komponenter

Når der kommer opgraderinger til en komponent, vil der medfølge release notes, der beskriver opgradering, fallback, osv. for den enkelte komponent.


Konfiguration af DDS

OBS: Den følgende konfiguration er udfaset, da denne funktionalitet er blevet erstattet af FSK Registry Adapter komponenten.

Der skal konfigureres 2 ting på DDS:

1. Der skal laves konfiguration, så DDS ved hvilket "home community id" og "repository unique id" der hører til FSK, så DDS ved hvilken URL der skal kaldes når en klient beder om et dokument fra et bestemt repository.

FSK-servicen der skal kaldes fra DDS befinder sig på http://<fsk appserver host>:<port>/fsk/services/fsk (som skal kunne nåes fra DDS).

På alle miljøer skal "home community id" være "1.2.208.176.8.1.12", men "repository unique id" er forskellig afhængig af miljøet. Der skal angives følgende værdier på de forskellige miljøer:

MiljøVærdi
TEST11.2.208.176.43210.8.10.12
TEST21.2.208.176.43210.8.20.12
UDDANNELSE1.2.208.176.43210.8.40.12
PRODTEST1.2.208.176.43210.8.30.12
PROD1.2.208.176.8.1.12


2. I DDS registry skal det også konfigureres at FSK har adgang til visse typer opslag. Det drejer sig om typerne ITI-18, ITI-42, ITI-57 og ITI-61.

Se evt. denne sag, hvor konfigurationen blev udført på test1:

https://jira.nspop.dk/browse/FSK-7