Indholdsfortegnelse

Arkitekturoverblik

SOR Opdatering Servicen (SORUS) er en del af en række opdateringer vedrørende Sundhedsvæsenets Organisationsregister (SOR). 

SOR interne services eksisterer allerede, men kan ikke udstilles direkte til brug for regioner, kommuner, og andre interessenter. Derfor bliver der udstillet en Opdater Webservice i SOR miljøet, som kan nås fra NSP, og ligeledes bliver der udstillet en service i NSP, som kan nås udefra.

SORUS' primære funktionalitet er derfor at håndtere autentificering af brugerne af systemet, og tillade gennemstilling af opdateringsforespørgsler til SOR miljøet. Opdater Webservicen i SOR miljøet sørger så for adgangskontrol til den/de specifikke ressource(r) som bliver berørt af forespørgslen, samt transformationen af forespørgslerne til interne formater.

Design

SORUS forbedrer server-to-server integration med SOR registeret, og gør det lettere at automatisere opdateringer.


<iframe src="https://archi.nspop.dk/NSP/570928ca/views/d3405ceb-bae0-4abf-a73b-36edb3d49c35.html" name="test" height="670" 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.

Dynamisk konfiguration i database

SORUS bruger kun dynamisk konfiguration et enkelt sted, og det er i forbindelse af autorisering af forespørgsler. CVR numre skal kunne tilføjes og fjernes løbende imens at servicen kører, uden at en genstart er nødvendig. Denne database bliver udelukkende brugt til CVR whitelisting af forespørgsler.

Servicen forventer at datasource til denne database er sat op igennem Wildfly, og er tilgængelig via Java Naming and Directory Interface (JNDI).


<iframe src="https://archi.nspop.dk/NSP/570928ca/views/id-253dbdc0-bcfa-475e-b8b5-478ae14236e2.html" name="test" height="180" 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.


Statisk konfiguration i property fil

Servicen bruger to konfigurations filer, en til applikationen og en til logning. Fælles for de to konfigurations filer er, at det forventes de ligger i mappen system variablen jboss.server.config.dir peger på. Fælles for konfigurations filerne er også, at servicen skal genstartes, hvis den skal opfange ændringer i disse.

Applikation konfigurationen indeholder alle de parametre servicen har brug for, for at kunne operere. Indlæsningen af konfigurationen er konstrueret på en måde, således at de kan overskrives af andre sat via system variable. Dette kan være praktisk i forhold til eksekvering af integration tests, og eksempel på hvordan det kan gøres kan ses her: Integration tests. Selve de værdier man kan finde i applikation konfiguration filen, inklusiv deres standard værdier, kan findes her: sorus.properties.

Logning konfigurationen sørger for alt fejl- og info-logning kommer ned i en enkelt fil.

Der benyttes biblioteket Log4J til logning, og er indstillet ud fra version 2.1 af Husregler for udvikling til NSP.

Audit logning

For audit logning bliver følgende logget specifikt:

Yderligere logges for ikke-systembrugere:


Brug af Docker under udvikling

NSP har et fremtidig ønske om, at kunne benytte Docker til fremtidige deployments af services på platformen. Der er allerede udstillet nogle images, således at serviceudviklere kan opstille et miljø der ligner produktion, til test og udvikling af deres services. For at understøtte denne retning, så er der blevet lavet et Docker image af SORUS, baseret på images leveret af NSP.

Adgang

Servicen tillader niveau 3 og 4 forespørgsler for både OCES2 og OCES3. 'På vegne af' for MOCES tillades ikke adgang.

Flowchart

Nedenfor ses et succesfuldt kald igennem servicen for operationen CreateSorEntity. Flowet vil være det samme for alle operationer, hvor udelukkende kald og svar for SORUpdateServiceClient er anderledes.

Klasserne SorDBClient og SORUpdateServiceClient begge laver kald til eksterne systemer, som ikke er tegnet med.