Versions Compared

Key

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

Introduktion

MinLogProvider XDS Validation er et simpelt Java API, der stiller registrering af MinLog2 data til rådighed for komponenter på NSP. Formålet med API'et er at anvendere ikke skal bekymre sig om at lave SOAP kald til registreringssnitfladen samt spare det overhead der er i at lave et SOAP/DGWS kald.

Overblik

Nedenstående skitserer arkitekturen i biblioteket.

Gliffy Diagram
macroId579f91e7-0472-4986-a1ed-1b6baa4d8366
displayNameOverblik
nameOverblik
pagePin2

  1. De(t) blå markerede er det som anvenderne har kendskab til.
  2. Det grå marterede er ikke en del af biblioteket, men er taget med for at illustrere hvad der sker i MinLog2.
  3. De hvide markerede er internt i biblioteket.

Instantiering

Instantiering af interfacet sker ved hjælp Javas ServiceLoader interface og sker konkret via klassen RegisterServiceProvider.

Valideringer

Biblioteket har de samme valideringer som MinLog2 registrerings DGWS snitfladen har. MinLog2 registreringssnitfladens valideringer beror til dels på skemavalidering og på valideringer i java kode.

Skemavalideringer

Det kan være svært og omstændigt at implementere ale skemavalideringerne i Java kode. Derfor er disse valideringer også lavet som skemavalideringer i biblioteket. Det vil sige at input mappes til det format skemaet dikterer og så forsøges der lavet skemavalidering på dette.

Valideringer i Java kode

validering af CDA dokumenter og kald til XDS til rådighed. Det kaldes fra DROS i forbindelse med registrering af dokumenter og metadata i XDS infrastrukturen.

For nuværende er der tale om APD v2, QRD og PHMR

Overblik

Biblioteket består en en række valideringsklasser, der kan sættes sammen i en factory til en specifik samling af regler for en given "ting", der skal valideres. F.eks. sætter Iti41ValidationFactory et antal regler sammen, sådan at et iti-41 kald valideres korrekt inkl. cda dokumentet, der sendes i kaldet.

  • En "ValidationFactory" består af en række validerings klasser.
  • I princippet en klasse per validerings regel.
  • En valideringsklasse består af en validering samt en liste af eventuelle under-valideringer.
  • En validering kan også være at forsøge at pakke et element ud, f.eks. at pakke et cda dokument ud af de bytes et kald har modtaget
  • Alle klasser (undtagen "starter") operer på det samme objekt (XDSDocument), der sendes rundt og eventuelt beriges undervejs
  • En valideringsklasse returner enten en fejlliste (med 0 eller flere fejl) eller null. Null returneres hvis validatorklassen ikke kunne udføre sin validering med hvad den modtog som input.

Typer

En valideringsklasse til en Factory, er en af følgende 4 typer (templates):

  1. Validator - har en validering og et gennemløb på sine under-validatorer
  2. ModelEnricher - valideringen består af udpakning af noget input. Denne "berigelse" sættes på det indkomne objekt (deraf ModelEnricher) og senere validatorer kan så arbejde herpå
  3. AtLeastOneValidator - adskiller sig fra en alminelig validator ved, at den kræver at mindst een af dens under-validatorer vil kendes ved input
  4. Starter - adskiller sig fra en ModelEnricher ved, at den ikke modtager det fælles objekt XDSDocument, men istedet en request type. Dette request pakkes ud i et eller flere XDSDocument objekter, og Starter kører så sine under-validatorer på hver af disse objekter.

Gliffy Diagram
displayNameValidator typer
nameValidator typer
pagePin4

Default validerings konfiguration

Følgende diagram viser, hvordan de forskellige factory klasser, der komponerer en validering, for nuværende er sat sammen.

Gliffy Diagram
displayNamevalidator overblik
nameoverblik2
pagePin20

* phad dokumenter bliver ikke enriched til XDSDocument.


Instantiering

Instantiering af biblioteket sker via en række factory klasser. Se guide til anvendereDe valideringer der er lavet i Java kode er flyttet fra MinLog projektet og til dette modul. Det betyder at evt. nye valideringer i Java kode ikke må laves i Minlog2 projektet men skal laves i dette modul og så skal dette modul opdateret i MinLog2 projektet.