Overblik

Driftsvejledningen indeholder information der er relevant for driften af Organdonorregister-servicen (ODR), herunder oplysninger om standard placering af log- og konfigurationsfiler, eksterne afhængigheder og fejlfinding.

I produktion består Organdonorregister-servicen af følgende to komponenter (war-arkiv) der er deployet på en Wildfly applikationsserver:

  • odr-service-wildfly: Selve Organdonorregister-servicen. Denne afhænger af adgang til 2 MariaDB datasources. Desuden afhænger den af at kunne kalde (skrive til) MinLog-servicen.
  • odr-operations: Baggrundsjob der hører til Organdonorregister-servicen. Denne afhænger også af adgang til 2 MariaDB datasources.

Ændringslog

Version

Dato

Ændring

Ansvarlig

1.0.1

2018-08-17

Initialt dokument

Trifork

1.0.22018-08-31Ny releaseTrifork
1.0.32018-11-23Tilføjet admin endpointsTrifork
1.0.132019-25-09AjourførtTrifork
1.0.162020-05-25Opdateret slettejobKIT
1.0.172021-12-07Opdateret ifm inaktive cpr numre afvisesKvalitetsIT
1.0.182023-09-26SDS-6386: ODR - oprydningsjob genbesøgKvalitetsIT

Funktionalitet

Servicen udstiller en række data som beskrevet i anvenderguiden. Komponenten kaldes af anvendere gennem NSP'ens DCC (afkoblingskomponenten), som viderestiller kaldet til servicens webservice-endpoint. Servicen udstiller derudover en række administrative og konfigurationsrelaterede funktionaliter.

Direkte kald på service-komponenten

URL

Funktionalitet

<server>/odr/isAlive

Status-side for servicen. Viser om servicen fungerer korrekt, se afsnittet Overvågning.

<server>/odr/odr
Webservice-endpoint
<server>/odr/odrAdmin
Webservice admin-endpoint (til brug for brugerflade)
<server>/odr/dksconfig
DCC auto-konfigurations API. Anvendes til konfiguration af NSP'ens DCC.
<server>/odr/wsdl
HTML-side med links til download af WSDL-filer i hhv. DGWS- og IDWS-udgave.
<server>/odr/wsdl/dgws
DGWS WSDL
<server>/odr/wsdl/idws
IDWS WSDL
<server>/odr-operations/odr-slettejob/start
Slettejob startes ved kald af denne url. Returnerer altid http status kode 200. Eventuelle fejl skrives i loggen.
<server>/odr-operations/odr-slettejob/status

Oplysninger om slettejob på den pågældende server. Oplysningerne gemmes i hukommelsen på serveren og forsvinder ved genstart.

Der kan returneres følgende fra statussnitfladen:

200: Komponenten fungerer og kan anvendes.
5xx: Komponenten melder at den ikke kan anvendes.

Der returneres desuden følgende oplysninger i JSON format:

  • Tidspunkt for sidste afvikling af slettejob på serveren (hvis værdien findes ellers tom værdi)
  • Status for sidste afvikling på serveren (true=ingen fejl, false=fejl, tom tekst=ikke afviklet) 
  • Evt. fejlbesked ved sidste afvikling (udeladt hvis kørslen er gået godt)

Daglig drift

Servicen kræver ingen daglig vedligeholdelse udover sædvanlig systemovervågning.

Alt data (inkl. historiske data) for en borger fjernes 1 år efter borgerens død ved hjælp af et slettejob.

Overvågning

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

Eksempel på et response fra status-siden:

200  OK

Title: odr-service-wildfly
Deployed: 2023-09-26T08:54:22.308Z
Build-Date: 2023-09-26T08:53:08Z
Build-Version: 1.0.46-SNAPSHOT
Builder: tkn
Display time: 2023-09-26T11:06:52.454Z


CprExistsServiceClient : "0 fejl"


Status for baggrundsjobbet fremgår af <server>/odr-operations/odr-slettejob/status. Eksempel på denne statusside hvor jobbet er fejlet:

{"lastException":"An error occurred querying v2_Person_Simplified between 2022-09-26T11:06:47Z and 2022-09-26T11:11:29Z","timeOfLastExecution":"2023-09-26 13:11:29","lastExecutionSucceeded":"false"}


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 mindst én databaserne 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.

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, og indeholder derfor et postfix i filnavnet, der ikke er præsenteret i nedenstående.

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

Logfilnavn

Indhold

Komponent

accesshandler.log

Log for accesshandler-biblioteket.

service / operations

access.log

Access-log. 

service

audit.log

Auditlog. Indeholder logning af, hvem der har kaldt, hvilken SOAP-action der blev kaldt, hvilken person der blev kaldt for, hvordan der blev kaldt (DGWS/IDWS) og hvornår der blev kaldt.service

odr.log

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

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

service / operations

nsp-kafka.log

Log for kafka-produceren, som står for skrivning til MinLog.

service

nsputil-sla-odr.logSLA-log. Indeholder SLA-logninger for alle kald på servicen. Indeholder desuden SLA-logninger for servicens kald til MinLog.service
server.logLog for Wildfly-serveren.

service / operations

Auditlog

Der er i ODR fire kategorier af audit logs; cpr, organdonor registrering, aktør og cpr validering

Følgende tabel viser hvilke kategorier der audit logges for hver operation i ODR.

OperationKontekstKategorier
CreateOrganDonorRegistrationcreateOrganDonorRegistrationorgandonor registrering, aktør, cpr validering
UpdateOrganDonorRegistrationupdateOrganDonorRegistrationorgandonor registrering, aktør, cpr validering
DeleteOrganDonorRegistrationdeleteOrganDonorRegistrationcpr, aktør, cpr validering
GetOrganDonorRegistrationgetOrganDonorRegistrationorgandonor registrering, aktør, cpr validering
HasOrganDonorRegistrationhasOrganDonorRegistrationcpr, aktør, cpr validering


Følgende tabeller viser hvad der audit logges for hver af de fire kategorier.

cpr

KomponentKontekstTypeNøgleInformation
ODR(afhængig af operation)FølsommecprCPR på borgeren

organdonor registrering

KomponentKontekstTypeNøgleInformation
ODR(afhængig af operation)Ikke PersonligpidID på registrering
ODR(afhængig af operation)FølsommecprCPR på borgeren
ODR(afhængig af operation)Ikke Personligversionversion feltet på registrering
ODR(afhængig af operation)Ikke Personligmodifiedmodified feltet på registrering
ODR(afhængig af operation)Ikke PersonligvalidFromvalidFrom feltet på registrering
ODR(afhængig af operation)Ikke PersonligvalidTovalidTo feltet på registrering
ODR(afhængig af operation)FølsommepermissionTypepermissionType feltet på registrering
ODR(afhængig af operation)Følsommeheartheart feltet på registrering
ODR(afhængig af operation)Følsommekidneyskidneys feltet på registrering
ODR(afhængig af operation)Følsommelungslungs feltet på registrering
ODR(afhængig af operation)Følsommecorneascorneas feltet på registrering
ODR(afhængig af operation)Følsommeliverliver feltet på registrering
ODR(afhængig af operation)FølsommesmallIntestinesmallIntestine feltet på registrering
ODR(afhængig af operation)Følsommepancreaspancreas feltet på registrering
ODR(afhængig af operation)Følsommeskinskin feltet på registrering
ODR(afhængig af operation)FølsommerelativeAcceptanceRequiredrelativeAcceptanceRequired feltet på registrering

aktør

KomponentKontekstTypeNøgleInformation
ODR(afhængig af operation)Følsommeactor-cprCPR på aktør
ODR(afhængig af operation)Personligactor-usertypeTypen af aktør

cpr validering

Følgende logges kun hvis validerings mode er sat til WARNING.

KomponentKontekstTypeNøgleInformation
ODRvalidateCprFølsommecpr-does-not-existMedsendt CPR nummer (hvis det ikke findes i CPR register)
ODRvalidateCprFølsommecpr-inactiveMedsendt CPR nummer (hvis det er inaktivt)

Minlog

Der er i ODR fire brugertyper: Borger, sundhedsfaglig, system bruger og admin bruger. 

Følgende tabel viser for hvilke operationer og brugertype kombinationer, der logges til minlog (x=der logges).

Operation / brugertypeBorgerSundhedsfagligSystem brugerAdmin bruger
CreateOrganDonorRegistrationxx
x
UpdateOrganDonorRegistrationxx
x
DeleteOrganDonorRegistrationxx
x
GetOrganDonorRegistration
x
x
HasOrganDonorRegistration



Slettejob

Servicens slettejob bliver afviklet vha. en udstillet RestController, som kaldes vha. simpelt HTTP GET kald.
Dette gøres for at sikre afviklingen af slettejob i flere-node drift, hvor en loadbalancer sørger for fordeling af kald til bagvedliggende servere.

Driften vedligeholder en cron, som kalder slettejobbets url i et fast mønster vha. curl.

Følgende parameter til styring af slettejobbet kan ændres i application.properties for ODR:

jobs.delete.max.time=PT20S

Der er en max grænse for hvor lang tid jobbet må køre pr. gang og det kan angives her. 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.

Kommando til kald af slettejob:

curl <server>/odr-operations/odr-slettejob/start

Slettejobbet skal aktiveres hver dag, hvert 15. minut mellem 8-16 - startende kl. 8

Med mindre ovenstående parametre ændres, så vil slettejobbet behandle op til 1550 sletninger om dagen. (I gennemsnit er der 150 døde pr. døgn).


Backup

Servicen indeholder ikke nogen backup-mekanismer, og dette skal derfor konfigureres på database-niveau. Der bør foretages backup af data på en forsvarlig måde, i tilfælde af behov for en genetablering af data. Disse data skal opbevares på en forsvarlig måde, jfr. regler om personhenførbare data.

  • No labels