Overblik

Dette dokument beskriver en migreringsvejledning for Organdonorregister-servicen. Projektet indeholder en migreringskomponent, hvis formål er at importere data fra det eksisterende register til dette nye register.

Ændringslog

Version

Dato

Ændring

Ansvarlig

1.0.22018-08-31Ny releaseTrifork
1.0.42018-10-26Mindre rettelserTrifork

Installation

Se projektets installationsvejledning der også beskriver installation af migreringskomponenten odr-migration.

Funktionalitet

Komponenten udstiller en række endpoints, der kan anvendes til at styre funktionaliteten.


URL

HTTP metode

Funktionalitet

<server>/odr-migration/isAlive
GETStatus-side for servicen. Viser om servicen fungerer korrekt.
<server>/odr-migration/status
GET

Status-side for selve migreringsfunktionaliteten. Viser status før, under og efter kørsel af migrering.

<server>/odr-migration/start
PUTStarter migreringen.
<server>/odr-migration/stop
PUTStopper migreringen.

Til at kalde de forskellige endpoints kan man med fordel anvende curl.
Fx kan migreringen startes således: curl -sX PUT http://127.0.0.1:8080/odr-migration/start
Status kan eksempelvis ses således: curl -s http://127.0.0.1:8080/odr-migration/status

Status-siden kan løbende kaldes under kørslen for at holde øje med forløbet. Hvis det fx observeres at error count stiger højt, kan man afbryde migreringen vha. stop-funktionaliteten, i stedet for at køre hele datasættet igennem. Forventet throughput er ca. 500.000 rækker i minuttet, men det afhænger af mange faktorer.


Filformat

For migrering af Organdonorregistret er der påkrævet 2 filer, den ene indeholdende PersonData og den anden med data for eksisterende organdonorregistreringer.

Filformatet for begge filer skal være .csv med kommaseparerede værdier. Filerne skal indeholde en header med kolonnenavne i den første række, og dernæst data i alle øvrige rækker.

Der er herunder lavet eksempler på de 2 filer:

Dataformater

Tabellerne nedenunder angiver hvilke kolonner, der er påkrævet for hver af de nødvendige filer, derudover format, et eksempel samt eventuelle bemærkninger.

Kolonnenavne er baseret på tabeldokumentation for de eksisterende registre.

Encoding skal være i UTF-8 format og da migreringskørslen formodes at køre på et Unix miljø, er det anbefalet, at der anvendes Unix linjeskift (\n), dog kan migreringskoden også godt håndtere Windows linjeskift.

PersonData:

Kolonne Navn

Format

Eksempel

Bemærkninger

PersonID

String

215

Inkrementelt id

CivilRegistrationNumber

String

2201601234

CPR-nummer, uden bindestreg

Organdonordata:

Kolonne Navn

Format

Eksempel

Bemærkninger

PersonID

String

215

Reference til PersonID i PersonData

FullPermission

String (varchar(1))

J

Kun J eller N

Forbidden

String (varchar(1))

N

Kun J eller N

RelativeAccept

String (varchar(1))

N

Kun J eller N

PermissionForHeart

String (varchar(1))

N

Kun J eller N

PermissionForLung

String (varchar(1))

J

Kun J eller N

PermissionForLiver

String (varchar(1))

J

Kun J eller N

PermissionForPancreas

String (varchar(1))

N

Kun J eller N

PermissionForKidney

String (varchar(1))

J

Kun J eller N

PermissionForCornea

String (varchar(1))

J

Kun J eller N

PermissionForSmallIntestine

String (varchar(1))

N

Kun J eller N

PermissionForSkin

String (varchar(1))

N

Kun J eller N

ValidDate

Date, format: yyyy-MM-dd HH:mm:ss.SSS

2018-05-03 18:51:51.776

Dansk tid. Skal være mellemrum mellem dato og tidspunkt

DontKnow

String (varchar(1))

N

Kun J eller N

EditDate

Date, format: yyyy-MM-dd HH:mm:ss.SSS

2018-05-03 18:51:51.776

Dansk tid. Skal være mellemrum mellem dato og tidspunkt


Overvågning

IsAlive

Servicen udstiller en status-side (isAlive). På denne side fremgår servicens version, opstartstidspunkt mm.

Eksempel på et response fra status-siden:

200 OK

Title: odr-migration
Deployed: 2018-10-26T08:14:44.085Z
Build-Date: 2018-10-18T13:08:04Z
Build-Version: 1.0.4-SNAPSHOT
Builder: A robot
Display time: 2018-10-26T09:27:43.627Z

HTTP statuskode

Status-siden returnerer følgende HTTP statuskoder afhængig af servicens status:

  • 200: Applikationen kører i øjeblikket fint.
  • 500: Der er opstået en fejl, der kræver indgriben.

Fejlfinding

Følgende årsager kan resultere i en statuskode 500:

  • Hvis databasen ikke er tilgængelige. Der overvåges databaseadgang ved et simpelt "SELECT 1" statement. Denne query køres på alle datasources.
  • Andre ukendte årsager.

Hvis status-siden giver HTTP 500 bør man checke den servicens log, som burde indeholde en detaljeret fejlmeddelelse med stacktrace.

Alle komponenter kan genstartes ved at opdatere war-filens last access time med Unix-kommandoen touch, hvilket automatisk detekteres af Wildfly's deploynent scanner. Alternativt kan Wildfly genstartes.

Migreringsstatus

Yderligere indeholder servicen en status-side for migreringsprocessen. På denne side fremgår hvornår migrering er påbegyndt, om migrering er under afvikling, antallet af fejl der har været mm. 

Eksempel på response fra migreringsstatus-siden:

Display time: 2018-11-14T16:58:53.685Z
Migration start time: 2018-11-14T16:49:14.403Z
Is running: false
Number of rows inserted in database: 187083
Error count: 136

Logning

Følgende beskrivelse af logning i servicen tager udgangspunkt i standard-opsætningen. Logning konfigureres vha. konfigurationsfilerne beskrevet i installationsvejledningen.

Alle logfiler placeres i standalone/log i Wildfly.

Alle logninger er konfigureret med en rolling file appender, der indsætter et postfix i filnavnet på historiske logfiler ud fra følgende pattern:

  -%d{MM-dd-yyyy}-%i 

Der oprettes således en logfil pr. dag, og desuden oprettes endnu en logfil, når en logfil er blevet 10 MB stor.

Følgende tabel over logfiler beskriver, hvilke komponenter der skriver til dem:

Logfilnavn

Indhold

odr_migration.log

Applikationslog for migrering, som indeholder de vigtigste systemhændelser.

Yderligere indeholder denne alle fejl, der kan forekomme i selve migreringen. Dette inkluderer valideringsfejl, databasefejl, fejl ved læsning af csv-filerne, osv.

Root: WARN
org.springframework.boot: INFO
org.springframework.core: INFO
dk.sundhedsdatastyrelsen.organdonor: INFO

  • No labels