DDS Repository
Installationsvejledning




Indhold
1 Introduktion
1.1 Formål
1.2 Læsevejledning
1.3 Dokumenthistorik
1.4 Definitioner og referencer
2 Krav til miljø
2.1 Krav til applikationsservere
2.2 Krav til operativsystem
2.3 Krav til database
2.4 Krav til adgang til andre services
2.5 Krav til datahåndtering
2.6 Krav til hardware
3 Oprettelse/konfiguration af databaser og tabeller
3.1 Generering af installationspakke
3.2 Installation af datasource
3.3 Oprettelse af whitelist skema
3.4 Oprettelse af adgang til data i autorisationsregister
3.5 Oprettelse af adgang til SOR-registerdata
3.6 Oprettelse af documentsources skema
4 Deployment på WildFly 8.2
4.1 Deployment af komponenter
4.2 Konfiguration af komponenterne
4.2.1 Deployment af Modul
4.2.2 DDSRepository.properties
4.2.3 ddsrepository.log4j.properties
4.2.4 Konfiguration af managed executor service
4.2.5 Konfiguration af NSP SLA log
4.2.6 Whitelisting af services
4.2.7 Konfiguration af DKS
4.3 Start/genstart af service
4.4 Logfiler
4.5 Opgradering af komponenter
5 Afinstallation af servicen

Introduktion

Formål

Vejledning til installation og konfiguration af DDS Repository.
Afsnit 2 indeholder servicekrav til det omliggende miljø, herunder krav til operativsystem og standardapplikationer, som f.eks. applikationsservere, databaseservere, Java og/eller Net versioner mm., angivet på version og service pack niveau.
Afsnittene 3 og 4.2 indeholder information om konfiguration af applikationsserveren og databasen, herunder oprettelse af databaseskemaer.
Afsnit 4 beskriver hvorledes services deployeres, herunder om der er krav om evt. genstart af server eller andre applikationer. Ved opgradering af komponenten beskrives desuden tilstanden, systemet skal være i for at opgraderingen kan finde sted, f.eks. om applikationsserver og/eller databaseserver skal være stoppet.

Læsevejledning

Læseren forventes at have kendskab til National Sundheds-IT's platform NSP, samt generelt kendskab til WildFly applikation server, MySQL, samt Ubuntu Linux operativ system.
Dokumentet beskriver ikke forhold der berører konfiguration på DoDi, NSP eller centrale 'NSP-lignende miljøer' eller etablering og konfiguration af distribution af data fra DoDi til øvrige platforme.
Dokumentet er etableret på baggrund af testinstallation på NIAB (NSP in a box) testserver version 2.35.
Hvor der i teksten er angivet <packing> refereres til topniveaufolderen for release-pakken med kildekode. Folderens navngivning afhænger af versionen på releaset.

Dokumenthistorik

Version

Dato

Ansvarlig

Beskrivelse

1.0

22.01.2013

Systematic

Første udgave

1.0a

19.04.2013

Systematic

Udgave til Release Candidate 1

1.1

19.06.2013

Systematic

Kvalitetssikret

1.2

22.05.2014

Systematic

Generering af installationspakke beskrevet i afsnit 3.1 og refereret i kapitel 3 og 4.

1.3

28.11.2014

Systematic

Nationalt Patientindeks (NPI) erstattet med Dokumentdelingsservice (DDS)

1.4

05.05.2015

Systematic

Kodereferencer er opdaterede pga. navneskifte fra NPI til DDS

1.5

18.03.2016

Systematic

Opgradering til WildFly
Tilføjet: konfiguration af managed executor service

1.6

31.08.2016

Systematic

Tilføjet timeout-værdi i oprettelse af dokumentsources skema.
Tilføjet opsætning af konfigurationsfiler til DCC Konfigurations Service (DKS).
Fjernet afsnit med kendt begrænsning i JBoss, da der nu kun understøttes Wildfly.

1.7

17.12.2016

Systematic

Fjernet beskrivelse om brugen af log-profiler i standalone.xml i afsnit 4.3.4.
Fjernet afsnit om VOCES-certifikat.
Fjernet Jboss patch-beskrivelse da jboss ikke længere anvendes


Definitioner og referencer

Definition

Beskrivelse

DDS

Dokumentdelingsservice

NSI

National Sundheds-IT

NSP

Den nationale service platform (inden for sundheds-IT)

SHAK

Sygehusafdelingsklassifikation

SOR

Sundhedsvæsenets organisationsregister

STS

Security Token Service

DODI

NSI platform til data opsamling og distribution

SOSI-seal

Et kodebibliotek der stilles til rådighed til implementering af sikkerhed for Web service klienter og service provides


Alias

Beskrivelse

Driftsvejledning

Driftsvejledning DDS Repository (SSE/11734/OHB/0011)

Krav til miljø

Krav til applikationsservere

Komponenterne er udviklet og testet under WildFly-8.2.0.Final på udviklingsplatformen og mod WildFly 8.2 på NIAB (version 2.35). Service kan deployeres i produktion på WildFly 8.2 applikationsservere.
Applikationsserveren kræver SUN/Oracle Java 6.0.

Krav til operativsystem

Der stilles ingen krav til operativsystemet, ud over krav om, at Java er understøttet på operativsystemet.
Ubuntu Linux bruges som operativsystem på NSP'en, men udviklingen af komponenten er foretaget på Windows 7/8, og disse platforme kan ligeledes afvikle komponenterne.

Krav til database

Komponenten er testet mod MySQL version 5.5.21 på Windows 7/8 og testet mod MySQL version 5.5.38 på NIAB (version 2.35).

Krav til adgang til andre services

DDS Repository kalder følgende services og skal være godkendt på whiteliste til at kalde disse services. Disse services kan være installeret lokalt på NSP eller eksternt.
Behandlingsrelation (BRS): BRS giver mulighed for at forespørge om en given sundhedsperson har en behandlingsrelation til en given borger. Aktivering af kald er konfigurerbart via properties-filen for DDS Repository.
Samtykkeverifikation: Samtykkeverifikationsservicen kaldes for at filtrere de dokumenter fra, som sundhedspersonen ikke har samtykke til at se. Listen af dokumenter fremsøges i DDS-document registry. Filtreringen er baseret på de positive/negative samtykker borgeren har oprettet.
MinLogRegistration: En sundhedspersons adgang, eller forsøg på adgang, til borgers oplysninger via DDS Repository, registreres i MinLogRegistration-servicen.

Krav til datahåndtering

DDS Repository foretager udtræk af dokumenter fra andre services. DDS Repository gemmer ikke disse dokumenter, men sender dem direkte videre til kalderen.
DDS Repository foretager også registrering af data via andre services.

Krav til hardware

DDS Repository's ressourceforbrug vil afhænge af flere parametre:


Oprettelse/konfiguration af databaser og tabeller

Følgende databasekomponenter er tilknyttet servicen:
whitelist: whitelist der indeholder godkendte CVR numre, som skal have adgang til servicen.Alle CVR-numre i databasen, der skal gælde for DDS Repository, skal have 'service key' sat til 'dk.nsi.ddsrepository'.
autorisation: Anvender stamdata-tabellen autreg, der indeholder CPR-nummer og autorisationsnummer for sundhedspersoner med gyldige og gældende dansk autorisation opført i Sundhedsstyrelsens autorisationsregister.
sor: Mapning mellem SOR-koder og SHAK-koder/ydernumre, som anvendes til opslag i forbindelse med samtykkeverifikationer
documentsources: Mapning mellem angivet OID i udtræk til aktuelt service endpoint for XDS dokument kilde

Generering af installationspakke

Installationspakken indeholder, når genereret, filer, der kan anvendes som skabeloner med henblik på at understøtte:

  1. Oprettelse af database-skemaer
  2. Konfiguration af datasources til disse database-skemaer

Installationspakken genereres ud fra byggemiljøet med følgende kommando udført fra folderen <packing>/ddsservices:
mvn -Dinstallation-package-folder=<installationspakke> -Pgenerate-install-package initialize
Derved kopieres sql-scripts og konfigurationsfiler til folderen udpeget som <installationspakke>. Disse filer kan anvendes som skabeloner og tilpasses som beskrevet i det efterfølgende.

Installation af datasource

Alle datasource filer nævnt i afsnittene fra 3.3 og efter, bør ikke deployeres i deployments folderen på WildFly, da dette vil føre til manglende kontrol fra WildFly Administration Console.
Indholdet af datasource filerne bør kopieres ind i Standalone.xml under:
/server/ profile/subsystem\[xmlns="urn:jboss:domain:datasources:2.0"\]/datasources

Oprettelse af whitelist skema

Skema oprettes ved afvikling af SQL script fra mysql:
<installationspakke>/createWhitelistSchema.sql
Data source ændres til at pege på whitelist-skema ved at opdatere filen:
<installationspakke>/whitelist-wildfly-ds.xml
Test note:
I testkonfiguration kan whitelist-databasen opdateres med SQL insert.
INSERT INTO whitelist.whitelist_config ( service_key, service_type, cvr ) VALUES ( 'dk.nsi.ddsrepository', '', 'some-cvr-number-here' );
I testsetup skal brugeren whitelistuser/password have de nødvendige privileges til whitelist databasen.

Oprettelse af adgang til data i autorisationsregister

DDS Repository anvender opslag i autorisations register data, der skal være tilgængeligt i stamdata i følgende tabel:
autreg
Data source ændres til at pege på stamdata skema ved at opdatere filen:
<installationspakke>/auth-ds.xml
Test note:
I testsetup skal brugeren stamdatauser/password have læse adgang til autreg tabellen i stamdata.

Oprettelse af adgang til SOR-registerdata

DDS Repository anvender SOR data, der skal være tilgængeligt i stamdata i følgende tabeller:
SORRelationer
SORYderSHAKRelationer
Indlæsning og synkronisering af SOR databasen sker fra central NSP komponent.
Data source ændres til at pege på stamdata skema ved at opdatere filen:
<installationspakke>/sor-ds.xml
Test note:
Note: I test setup skal brugeren stamdatauser/password have læseadgang til SOR tabellerne i stamdata.

Oprettelse af documentsources skema

Skema oprettes ved afvikling af SQL script fra mysql:  
<installationspakke>/createDocumentSourcesSchema.sql
Data source ændres til at pege på documentsource-skema ved at opdatere filen:  
<installationspakke>/documentsources-ds.xml
Test note: 
I testkonfiguration kan documentsource-databasen opdateres med SQL insert.
INSERT INTO `documentsource` (`oid`, `type`, `service_endpoint`, `soap_version`, `timeout`) 
VALUES ('{*}some_unique_id{*}','\[{*}unique_id_type\]{*}','{*}some_endpoint{*}','\[{*}SOAP_version{*}\]',\[{*}timeout{*}\]);


\['{*}repository_unique_id'{*}|'{*}home_community_id{*}'\]

\['{*}1.1{*}'|'{*}1.2{*}'\]
Kombinationen af *oid* og *unique_id_type* skal være unik.
I testsetup skal brugeren dsuser/password have de nødvendige privileges til documentsource databasen.

Deployment på WildFly 8.2

Dette afsnit beskriver deploymentprocessen på WildFly 8.2

Deployment af komponenter

OBS! Inden opstart af WildFly skal det sikres at properties og modul filer til servicen ligger i de applikationsspecifikke modul foldere på WildFly. Se afsnit 4.2.
Folderen <installationspakke> forudsættes genereret og indeholdte filer potentielt tilpasset som beskrevet i afsnit 3.1.
<packing>/ddsservices/ddsrepository/war/target/ddsrepository.war
<installationspakke>/auth-ds.xml
<installationspakke>/whitelist-wildfly-ds.xml
<installationspakke>/sor-ds.xml
<installationspakke>/documentsources-ds.xml
Konfiguration af adgang til stamdata-databasen sker i auth-ds.xml, adgang til whitelist-databasen i whitelist-wildfly-ds.xml og adgang til SOR-databasen i sor-ds.xml.
Servicekomponenter der skal deployes til WildFly, skal kopieres til mappen "deployments". Hvis WildFly kører normalt starter den selv komponenten op. Er dette ikke tilfældet skal WildFly genstartes – se afsnit 4.2.8.
Yderligere information vil findes i driftsvejledningen.

Konfiguration af komponenterne

<ac:structured-macro ac:name="anchor" ac:schema-version="1" ac:macro-id="1bb292dd-2be2-48cf-8e6a-001814aed3c4"><ac:parameter ac:name="">_Toc327955608</ac:parameter></ac:structured-macro>Al konfiguration foregår ved redigering af de relevante properties filer i deres modul folder under WildFly modules. Ved konfigurationsændringer bør servicen/WildFly genstartes.
Indholdet af de enkelte konfigurationsfiler, er beskrevet og forklaret i \[Driftsvejledning\]. 
Følgende filer kan tilpasses:

Deployment af Modul

WildFly DDSRepository modul sættes op ved at kopiere filen:
<packing>/ddsservices/ddsrepository/war/src/test/conf/module.xml
Til:
/pack/wildfly8/modules/nsi/ddsrepository/config/main

DDSRepository.properties

Konfigurerer opsætning af DDS Repository og hvorledes den benytter sig af eksterne services.
En skabelon for denne fil findes i:
<packing>/ddsservices/ddsrepository/war/src/test/conf/DDSRepository.properties
Filen redigeres inden den placeres på WildFly i:
/pack/wildfly8/modules/nsi/ddsrepository/config/main
Yderligere information kan findes i driftsvejledningen.

ddsrepository.log4j.properties

Konfigurerer logopsætningen for DDS Repository.
En skabelon for log4j konfiguration findes i:
<packing>/ddsservices/ddsrepository/war/src/test/conf/ddsrepository.log4j.properties
Filen redigeres inden den placeres på WildFly i:
/pack/wildfly8/modules/nsi/ddsrepository/config/main
Bemærk at Wildfly ikke benytter sig af log4j til logning, hvilket betyder at log4j specifikke egenskaber ikke kan anvendes som brugen af ISO8601 formatet.

Konfiguration af managed executor service

DDS bruger en managed executor service til at foretage samtidige kald af eksterne services, hvilket gælder interne NSP services (minlog, samtykke osv.).
DDS bruger sin egen instans af en managed executor service, som sættes op ved følgende i standalone.xml i WildFly:
...
<subsystem xmlns="urn:jboss:domain:ee:2.0">
<spec-descriptor-property-replacement>false</spec-descriptor-property-replacement>
<concurrent>
<context-services>
<context-service name="default" jndi-name="java:jboss/ee/concurrency/context/default" use-transaction-setup-provider="true"/>
</context-services>
<managed-thread-factories>
<managed-thread-factory name="default" jndi-name="java:jboss/ee/concurrency/factory/default" context-service="default"/>
</managed-thread-factories>
<managed-executor-services>
<managed-executor-service name="default" jndi-name="java:jboss/ee/concurrency/executor/default" context-service="default" hung-task-threshold="600000" core-threads="5" max-threads="25" keepalive-time="5000" queue-length="10000"/>
<managed-executor-service name="dds" jndi-name="java:jboss/ee/concurrency/executor/dds" context-service="default" hung-task-threshold="600000" core-threads="10" max-threads="1000" keepalive-time="5000" queue-length="100000"/>
</managed-executor-services>
<managed-scheduled-executor-services>
<managed-scheduled-executor-service name="default" jndi-name="java:jboss/ee/concurrency/scheduler/default" context-service="default" hung-task-threshold="60000" core-threads="2" keepalive-time="3000"/>
</managed-scheduled-executor-services>
</concurrent>
<default-bindings context-service="java:jboss/ee/concurrency/context/default" datasource="java:jboss/datasources/ExampleDS" jms-connection-factory="java:jboss/DefaultJMSConnectionFactory" managed-executor-service="java:jboss/ee/concurrency/executor/default" managed-scheduled-executor-service="java:jboss/ee/concurrency/scheduler/default" managed-thread-factory="java:jboss/ee/concurrency/factory/default"/>
</subsystem>
...
Udsnittet viser en standard WildFly opsætning, hvor det markerede er specifikt for DDS og skal indsættes i standalone.xml. Bemærk at der er flere parametre, hvor der er indsat default værdier, der kan fintunes under drift. For yderligere beskrivelse af parametrene for managed executor services henvises til JBoss dokumentationen (https://docs.jboss.org/author/display/WFLY8/EE+Subsystem+Configuration).
Den markerede managed executor service benyttes både af DDSRegistry og DDSRepository.

Konfiguration af NSP SLA log

NSP-util anvendes som en del af servicen og skal konfigureres. Eksempel på konfiguration fil findes i
<packing>/ddsservices/ddsrepository/war/src/test/conf/log4j-nspslalog-ddsrepository.properties
<packing>/ddsservices/ddsrepository/war/src/test/conf/nspslalog-ddsrepository.properties
Filen redigeres inden den placeres på WildFly i:
/pack/wildfly8/modules/nsi/ddsrepository/config/main
Yderligere information kan findes i driftsvejledningen.

Whitelisting af services

Adgang til DDS Repository styres på CVR-niveau via konfigurationen i whitelist.whitelist_config tabellen. Se også afsnit 3.1.

Konfiguration af DKS

Konfigurationsfil til det svar, DDS Repository returnerer ved forespørgsel mod dens DKS-snitflade opsættes ved at kopierere:
<packing>/ddsservices/ddsrepository/war/src/test/conf/dksConfiguration.xml
til:
/pack/wildfly8/modules/nsi/ddsrepository/config/main

Start/genstart af service

Komponenten kan genstartes ved "touch" af war-filen på WildFly. Alternativt skal WildFly genstartes ved at køre kommandoen
/etc/init.d/wildfly8 restart

Logfiler

DDS Repository kan logge kald til følgende logs: En NSP-SLA-log, en audit-log, en applikations log og en performance log.
nsputil-sla-ddsrepository.logddsrepository-audit.log ddsrepository.log ddsrepository-performance.log
I default opsætningen logges der udelukkende fejl til applikationsloggen.
Kald til DDS Repository, hvor værdispringsreglen anvendes, logges til log filen: ddsrepository-consentoverride.log
ddsrepository-consentoverride.log
Det er muligt at konfigurere placeringen af filerne, samt hvilket niveau de logger på, ved at redigere i ddsrepository.log4j.properties.
Alle logs er beskrevet i driftsvejledningen.

Opgradering af komponenter

Når der kommer opgraderinger til en komponent, vil der medfølge en releasenote, der beskriver hvad opgraderingen består af, samt hvilke handlinger der er nødvendige for at opgradere den deployede komponent.

Afinstallation af servicen

Fjern service komponenter under WildFly' deployments/ folder:
ddsrepository.war
Følgende datasources fjernes fra <wildfly>/standalone/configuration/standalone.xml:

Fjern properties filer under DDSRepository modules folder:
/pack/wildfly8/modules/nsi/ddsrepository/config/main/
Oprydning i MySQL database:
Whiteliste:
DELETE FROM whitelist.whitelist_config WHERE service = 'dk.nsi.ddsrepository'
Documentsources:
DROP SCHEMA documentsources;
Fjern eventuelt logfiler – se afsnit 4.4