Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

Navitabs
rootDin digitale tandlægevælger (DDTV) - Leverancebeskrivelse
includeroottrue



Indhold

Table of Contents

Introduktion

Formål

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

Læsevejledning

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

Overblik over DDTV

Løsningens afhængigheder

DDTV anvender NSP libraries:

...

Øvrige afhængigheder:

  • EDI Portal API

Løsningens overordnede opbygning

Nedenstående diagram viser opbygningen af DDTV services: 

Image Modified

Den aktive del af DDTV lever udelukkende i NSP backend, og alle oplysninger opbevares i én simpel database (DDTV DB, se 5. Udkast til ER-diagram på DDTV projektområdetmodel)

Der er i praksis er tale om 3 typer af services:

...

For yderligere indflyvning, sekvensdiagrammer, state-diagrammer mv. henvises til Din digitale tandlægevælger projektområdet.===== Ole tager over herfra :) =======Arkitektur og design.

Moduler og driftsarkitektur

De tre services er ret forholdsvis ens opbygget, og har en del fælles kode som de deles om via et maven-modul, har samme programstruktur og bruger samme database-modul.

De fire tre services har tilsammen følgende moduler i maven:

ModulnavnBeskrivelse
idsasddtv-apischemas   Dette modul definerer Selve API'en , for de tre eksterne services, defineres i dette modul som WSDL-filer. Modules to services, der kan kaldes ekternt, hhv. en OIO-IDWS WSDL fil for den borgervendte service DDTV-citizen, samt en DGWS WSDL fil for DDTV-dentist-servicen. Modulets primære formål er at generere Java-kode ud fra WSDL'erne, som kan bruges i de andre moduler.
idsasddtv-common

Fælles kode for de

to moduler

services, primært utility-funktioner

og

, bl.a. til logning, samt DAO-klasser.

idsasddtv-integration-testsEn modul som indeholder alle integrationstests for begge services.
idsas-integrationsEt modul som indeholder integrationer, pt. kun "personinformation". Anvendes af "idsas-services".
idsas-servicesForretningslogik til alle services findes i dette modul, samt forretningslogik til de to batchjobs i "idsas-operations-web".
idsas-lookup-webWeb-modulet til Opslag, som håndterer opstart af service og producerer den war-fil, der skal deployes.
idsas-registration-webWeb-modulet til Slørring, som håndterer opstart af service og producerer den war-fil, der skal deployes.
idsas-salt-webWeb-modulet til hentning af salt, som håndterer opstart af service og producerer den war-fil, der skal deployes.
integrations

Modul som indeholder integrationer:

  • PersonInformation til CPR-opslag
  • SORES til opslag af tandlæger i SOR
  • DigitalPost til afsendelse af digital post til borgere
  • EDIMessage til afsendelse af EDI beskeder til tandlæger
ddtv-citizen-serviceModul, som implementerer den borgervendte OIO-IDWS webservice.
ddtv-dentist-serviceModul, som implementerer den DGWS webservicen til brug for tandlæger.
ddtv-batch-serviceModul, som implementerer de 5 batchjobs nævnt ovenfor.
ddtv-integrationtestModul som indeholder integrationstests for de services, der kan kaldes eksterntidsas-operations-webWeb-modulet med endpoints til automatiske jobs: Fornyelse af salt, sletning af inaktive sløringer.

Driftsarkitektur

I praksis er de forskellige alle services fordelt på BackOffice og en eller flere Frontend-miljøer. Registration, Lookup og Salt kører alle på et NSP Frontend-miljø, og via en Kafka-kø, bliver alle ændringer sendt igennem MirrorMaker til Operations-servicen på NSP BackOffice. Det er her installeret i BackOffice. Det er også her at alle ændringer bliver persisteret til databasen.

Dog vil der i en overgangsperiode også være en Registration-service kørende på NSP BackOffice, som skriver direkte til databasen, når den bliver kaldt. Dette er for er være bagudkompatibel med de anvendere, som tog IDSAS i brug, før der blev omlagt til at sende alle ændringer igennem en Kafka-kø.

...

Sikkerhed

Brugertyper

De enkelte brugertyper bestemmes ud fra modellen, der udstilles i Security API. Disse regler er opsummeret i skemaerne herunder. Sikkerhedsmodellen tager udgangspunkt i Security API - Guide til anvendere.

I kolonnen "Mapning til IdsasActorDdtvActor" kan man se, hvordan værdierne bliver gemt i selve IdsasActorDdtvActor-klassen i Java-koden. 

Må ikke være derSkal Skal og skal være CVR
Brugertypen: HealthcareProfessionalBorgerVerifikationMapning til IdsasActorDdtvActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være derSkal matche audience for IDWS servicen, defineret i property ddtv.audience i application.properties  


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthcareProfessionalCitizenactorType


IdentifierFormatIdentifierSkal være CPRderactorIdType


IdentifierIdentifierFormatSkal være satderactorId


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


CredentialsVerificeres ikke - må gerne være der

PrincipalUserIdentifierHvis angivet, skal der være givet fuldmagt (PowerOfAttorneyPrivileges)
procurationGiverId

OrganisationIdentifierMå ikke være der


IdentifierFormatMå ikke være der

Client
Verificeres ikke - må gerne være der
Brugertypen: SystemVerifikationMapning til IdsasActorDdtvActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUser
Må ikke være der

PrincipalUser
Må ikke være der

OrganisationIdentifier

Skal være der

actorId

.

Hvis der i property'en whitelisted.cvrs i application.properties er angivet en ikke-tom kommasepareret liste af cvr-numre skal actorId kunne findes i listen.

actorId


IdentifierFormatSkal være deractorIdTypeIdentifierFormatSkal være der og skal være CVRactorIdTypeClientname

Skal være der ved kald til GetBlurredOrganisations, og må også gerne være der ellers (men verificeres ikke).
Bruges aktuelt til at tjekke at det er STS'en der kalder, og ingen andre.

clientSystemNamepersistentUniqueKeySkal være der ved kald til GetCurrentSalt, og må også gerne være der ellers (men verificeres ikke)
Bruges til whitelisting af de anvendersystemer der skal hente salt til pseudoanonymisering.
clientKey

Beslutninger

På NSP har man flere brugertyper, herunder følgende, som er relevante for DDTV:

  • Citizen er en borger
  • System er en systembruger

Servicen DDTV-Citizen skelner man imellem brugertyperne HealthcareProfessional (sundhedsfaglig person) og Citizen (borger). IDSAS kan kun anvendes af HealthcareProfessional. Alle HealthcareProfessional har adgang til at kalde IDSAS, uanset om de har en gyldig autorisation eller ej.Citizen med OIOIDWS-kald. En borger kan selv anvende servicen, eller den kan anvendes af en fuldmagtshaver.

Servicen DDTV-Dentist kan kun anvendes af System, dvs. der kaldes med DGWS systemkald.Som det ses i skemaet under sikkerhed, skelnes der i praksis på, om der er tale om en systembruger eller ej. Ved systembrugere må der ikke angives en ActingUser, og derfor heller ingen UserType. Kaldende til getCurrentSalt (pt. kun fra MinLog) og lookup (kun STS) må kun være systembrugerkald.