1. Introduktion

1.1. Formål

Formålet med dette dokument er at beskrive systemarkitekturen for DROS.

1.2. Læsevejledning

Nærværende dokument er tiltænkt udviklere og IT-arkitekter med interesse i DROS og dens opbygning.

1.3. Definitioner og referencer

NSPNational Service Platform
DROSDokumentregistrings- og opdateringsservice
DGWSDen Gode WebService

2. Overblik over DROS

Dokumentregistrings- og opdateringsservice (DROS) håndterer oprettelsen af nye dokumenter. Servicen tager såldees imod registreringer til repository. Efterfølgende sørger det centrale XDS repository for at meta-data afleveres til registry, så dokumenterne kan fremsøges vha. Dokumentdelingsservice (DDS)

* Hver kasse i ovenstående diagram har en kort forklaring, som kommer frem i et nyt browservindue, når der klikkes på kassen.

2.1. Løsningens afhængigheder

DROS betjener sig af tredjeparts biblioteker fra IPF Open eHealth Integration Platform til implementations- og hjælpeklasser, der har med XDS IHE at gøre.

DROS anvender NSP libraries:

  • audit-api
  • security-api

2.2. Løsningens opbygning

Nedenstående diagram viser opbygningen af DROS.

I designet er der lagt vægt på at definere en fornuftig struktur, hvor hver af DROS services er opbygget på en ensartet måde.

DROS pakkeoverblik

Ovenstående diagram viser, hvorledes en DROS ITI-X service er opbygget.

Selve service interface og implementation er placeret i pakkerne dk.nsp.dros.service(.impl). Klasserne i disse pakker er ansvarlige for at modtage requests fra anvenderne på de for DROS definerede snitflader. Ved at anvende klasser i pakken dk.nsp.dros.security valideres det, at den indkommende sikkerhedsbillet er valid og overholder de for DROS definerede krav (se evt. DROS - Driftsvejledning for muligheder for opsætning).

Klasserne i pakkerne dk.nsp.dros.service.validation(.impl) indeholder funktionalitet der har til formål at:

  • Validere det indkommende request (se afsnit nedenfor vedr. validering)
  • Konvertere de indkommende requests til domæneklasser (som defineret i biblioteket openehealth) til brug for videre validering (se afsnit nedenfor vedr. validering).

Hvis valideringerne i DROS ikke er overholdt, så returnerer DROS passende fejlbesked til den kaldende anvender.

Hvis valideringerne er overholdt, så anvender DROS klasser i pakkerne dk.nsp.dros.backend(.impl) til at kalde den bagvedliggende XDS infrastruktur.

2.3. Validering i DROS

DROS validerer de indkommende requests.

2.3.1. Whitelisting

DROS har sin egen whitelistingtabel, hvor cvr eller UUID for det kaldende certifikat skal være whitelistet. Se DROS - Driftsvejledning for detaljer.

2.3.2. Håndterede type koder (type codes)

DROS kan konfigureres med en liste af type codes, sådan at en instans håndtere en eller flere type koder. Dette resulterer i følgende opførsel, hvis der kaldes med en ikke håndteret type:

  • ITI-41 Provide and Register document:  hvis typecode indgår i dokumentets metadata (documententry) og den ikke håndteres afvises kaldet med en fejl.
  • ITI-42 Register document set: hvis typecode indgår i dokumentets metadata (documententry) og den ikke håndteres afvises kaldet med en fejl.
  • ITI-61 Register on demand document:  hvis typecode indgår i dokumentets metadata (documententry) og den ikke håndteres afvises kaldet med en fejl.
  • ITI-57 Update metadata:  hvis typecode indgår i dokumentets metadata (documententry) og den ikke håndteres afvises kaldet med en fejl.
  • ITI-57 Deprecate: forventes at blive afvist af bagvedliggende registry, da target dokument forventes ikke at være tilgængeligt.

2.3.3. IHE validering

I det anvendte openhealth bibliotek findes en standard XDS validering. Dette anvendes til en simpel validering, som tjekker, at det indkommende request er lovligt i henhold til standarden IHE XDS.

Valideringspakkerne er struktureret, så disse senere kan udvides med NSP specifikke valideringer.

2.3.4. Validering af CPR nummer

Kalderen vil således altid få 0 eller flere Document Entry tilbage fra DROS, hvis der spørges på et lovligt CPR nummer og man ikke vha. søgekriterier har udeholdt formatcode og typecode. 

Til valideringen skal der opsættes en CPR validering, der anvender CPRExists service til verficering af CPR-numre. CPR valideringen kan køre i følgende tre modes:

  • OFF: Der foretages ikke yderligere verifikation af CPRnummeret udover den simple validering beskrevet ovenfor. CPRExists kaldes ikke
  • WARNING: CPRExists service kaldes. Hvis denne service svarer, at CPR nummeret ikke findes, så audit logges denne information. Der gives en warning tilbage til anvenderen (sammen med svaret i øvrigt).
  • REJECT: CPRExists service kaldes. Svaret fra denne er en hård validering dvs kaldet til DROS, hvis CPRExist service ikke kender CPR nummeret.

Hvis cpr-validering er slået til, udføres valideringen på ITI-41, ITI-42 og ITI-61, men ikke på ITI-57. Dvs. ved oprettelse og ændring foretages validering, men det er muligt at slette dokumentkilder uden fejl/warning. 

2.3.5. Validering af requests

Der er udviklet et bibliotek til validering af XDS dokumenter, XdsValidation. DROS kan konfigureres til at anvende dette bibliotek til at validere requests, inden de videresendes til det bagvedliggende registry (se Driftsvejledning for detaljer om hvordan dette gøres). Valideringen kan køre i fire modes:

  • OFF: Validering foretages ikke.
  • LOG: Validering foretages, men requestet videresendes alligevel. Eventuelle valideringsfejl bliver auditlogget (se driftsvejledning for detaljer om dette). Anvenderen ser ikke resultatet af validering.
  • WARNING: Validering foretages, men requestet videresendes alligevel. Eventuelle valideringsfejl bliver auditlogget (se driftsvejledning for detaljer om dette), og sendes tilbage til anvenderen som warnings.
  • REJECT: Validering foretages, og requestet afvises hvis valideringen mislykkes.
  • No labels