Indhold

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:

Løsningens overordnede opbygning

Nedenstående diagram viser opbygningen af DDTV services: 

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-model)

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

OIOIDWS og DGWS servicen udstilles gennem DCC på cNSP instanser og bør kun anvendes gennem DCC.

Services og jobs anvender i varierende grad CPR og SOR oplysninger til dels at validere eksistens af borger/organisation, søge status på borger/organisation og finde oplysninger knyttet til borger/organisation. Det sker udelukkende gennem anvendelse af services på NSP (PersonInformationService for CPR og SORES for SOR).

Digital Post sendes gennem Digital Post Adapteren.

EDI sendes gennem EDI-portalens API.

For yderligere indflyvning, sekvensdiagrammer, state-diagrammer mv. henvises til Arkitektur og design.

Moduler og driftsarkitektur

De tre services er 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 tre services har tilsammen følgende moduler i maven:

ModulnavnBeskrivelse
ddtv-schemas   Dette modul definerer API'en for de 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.
ddtv-common

Fælles kode for de services, primært utility-funktioner, bl.a. til logning, samt DAO-klasser.

ddtv-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 eksternt.

Driftsarkitektur

I praksis er de alle services installeret i BackOffice. Det er også her at alle ændringer bliver persisteret til databasen.

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 IdsasActor" kan man se, hvordan værdierne bliver gemt i selve IdsasActor-klassen i Java-koden.

Brugertypen: BorgerVerifikationMapning til IdsasActor
SecurityContextTicketAudienceVerificeres ikke - må gerne være der 


ValidityEr valid

Message
Verificeres ikke - må gerne være der

ActingUserUserTypeSkal være HealthcareProfessionalactorType


IdentifierFormatSkal være CPRactorIdType


IdentifierSkal være satactorId


GivenNameVerificeres ikke - må gerne være der


SurNameVerificeres ikke - må gerne være der


CredentialsVerificeres ikke - må gerne være der

PrincipalUser
Må ikke være der

OrganisationIdentifierSkal være der


IdentifierFormatSkal være der og skal være CVR

Client
Verificeres ikke - må gerne være der
Brugertypen: SystemVerifikationMapning til IdsasActor
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

OrganisationIdentifierSkal være deractorId


IdentifierFormatSkal være der og skal være CVRactorIdType

Clientname

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.

clientSystemName


persistentUniqueKeySkal 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 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.

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.