Introduktion

Formål

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

Læsevejledning

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

Definitioner og referencer

NSPNational Service Platform
DROSDokumentregistrings- og opdateringsservice
DGWSDen Gode WebService

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)

<iframe src="https://archi.nspop.dk/NSP/570928ca/views/id-6a5cebb5-c103-4f88-bfc3-0e96ed8049b4.html" name="test" height="450" width="800">You need a Frames Capable browser to view this content.</iframe>   

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

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:

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.

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:

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.

Validering i DROS

DROS validerer de indkommende requests.

Whitelisting

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

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:

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.

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:

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. 

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: