Formålet med dette dokument er at beskrive systemarkitekturen for SFSK.
Nærværende dokument er tiltænkt udviklere og IT-arkitekter med interesse i SFSK og dens opbygning.
NSP | National Service Platform |
SFSK | Synkroniseringsservice til Fælles Stamkort |
DGWS | Den Gode WebService |
SFSK er en service til at gøre det muligt at fremsøge og hente Fælles Stamkort via snitflader, som de kendes fra Dokumentdelingsservice Registry og Repository (se DDS - Design- og Arkitekturbeskrivelse (Registry) og DDS - Design- og Arkitekturbeskrivelse (Repository)).
I modsætning til DDS, så er SFSK målrettet systembrugere og dækker det behov, der kan være for synkronisering af Fælles Stamkort i anvendernes fagsystemer.
I de følgende afsnit kigger vi på SFSK og dens afhængigheder til andre NSP services og i form af tredjepartsbiblioteker.
SFSK kan opfattes som en alternativ DDS, som har til formål at udstille data for anvenderne i forbindelse med Fælles Stamkort.
SFKS har til ansvar at:
SFSK indgår i samspil med de øvrige NSP services på følgende måde:
SFSK betjener sig af tredjeparts biblioteker fra IPF Open eHealth Integration Platform til implementations- og hjælpeklasser, der har med XDS IHE at gøre.
SFSK anvender følgende NSP libraries:
Nedenstående diagram viser den interne opbygningen af SFSK.
I designet er der lagt vægt på at definere en fornuftig struktur, hvor begge SFSK services er opbygget på en ensartet måde.
Ovenstående diagram viser, hvorledes en SFSK ITI-18 og ITI-43 services er opbygget.
Selve service interface og implementation er placeret i pakkerne dk.nsp.sfsk.ws(.impl). Klasserne i disse pakker er ansvarlige for at modtage requests fra anvenderne på de for SFKS definerede snitflader. Ved at anvende klasser i pakken dk.nsp.sfsk.security valideres det, at den indkommende sikkerhedsbillet er valid og overholder de for SFKS definerede krav (se sikkerhedshåndtering i SFSK nedenfor).
Klasserne i pakkerne dk.nsp.sfsk.ws(.impl) indeholder funktionalitet der har til formål at:
Hvis sikkerhedsvalideringen eller konverteringen i SFSK ikke er succesfuld, så returnerer SFSK passende fejlbesked til den kaldende anvender.
Ellers sendes kaldet videre til SFSKs forretningslag.
Klasserne i pakkerne dk.nsp.sfsk.serivce(.impl) indeholder forretningsfunktionaliteten (se de to afsnit ved Forretningsregler nedenfor)
Integrationerne til hhv MinLog2 og MinSpærring er implementeret i seperate moduler og anvendelsen af disse er afkoblet fra forretningslaget ved hjælp af interfaces (se dk.nsp.sfsk.components).
Kaldende fra SFSK proxy'es videre til backends ved implementation i pakken dk.nsp.sfsk.backend(.impl).
Implementationsklasser til kommunikation med backends, MinLog2 og MinSpærring kan alle trække på moduler til håndtering af SFSKs eget SOSI Idkort i pakken dk.nsp.sfks.security.
I det følgende beskrives sikkerhedshåndteringen og forretningsreglerne i SFKS. Først beskrives sikkerhedsprotokollen.
Dernæst beskrives forretningsreglerne for de to services til hhv fremsøgning og hentning af dokumenter.
SFSK anvender det på platformen udstillede security-api til at validere de indkommende requests. Alle kald til SFKS skal være lovlige DGWS kald. Det tjekkes at:
Når SFSK kalder videre til de bagvedliggende services sker dette også vha DGWS. Dog trækker SFSK sit eget niveau 3 SOSI Idkort i den videre kommunikation med de bagvedliggende services. Identiteten af kaldet skifter således til at være et kald udført af SFSK, hvilket betyder at der kan udføres whitelisting i FSK til at tillade niveau 3 idkort fra det CVR nummer, som er identificeret i SFSKs Idkort.
Når et kald er blevet sikkerhedsvalideret sker der en validerering af det indkommende request. Der tale om en simpel validering, der tjekker, om det indkommende ITI-18 request er lovligt i henhold til standarden IHE XDS.
Sekvensdiagrammerne nedenfor beskriver forretningsreglerne i forbindelse med "søg dokumenter". Flowet minder om det tilsvarende flow i Dokumentdelingsservicen, men er simplere, da der ikke tjekkes for spærringer mod enkeltpersoner ligesom kaldet til Behandlingsrelationservice udelades.