Versions Compared

Key

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

...

Code Block
languagejava
titleIti41ValidationFactory - validator eksempel
linenumberstrue
collapsetrue
//nuværende eksempel på almindelig felt validering:
Apd2StartStopTimeValidator apd2StartStopTimeValidator = new Apd2StartStopTimeValidator();

//fremtidigt eksempel med yderligere validering:
Apd2StartStopTimeValidator apd2StartStopTimeValidator = new Apd2StartStopTimeValidator(false);
Apd2StartStopTimeSpecifikValueValidator apd2StartStopTimeSpecifikValueValidator = new Apd2StartStopTimeSpecifikValueValidator();
apd2StartStopTimeValidator.appendValidator(apd2StartStopTimeSpecifikValueValidator);

...

Code Block
languagejava
titleIti41ValidationFactory - AtLeastOneValidator eksempel
linenumberstrue
collapsetrue
//validering hvor CdaDocumentTypeValidator forventer at ens af dens under-validatorer vil kendes ved input (dokumentet)

CdaDocumentTypeValidator cdaDocumentTypeValidator = new CdaDocumentTypeValidator();

CdaDocumentApdV2ModelEnricher cdaDocumentApdV2ModelEnricher = new CdaDocumentApdV2ModelEnricher();
cdaDocumentTypeValidator.appendValidator(cdaDocumentApdV2ModelEnricher);

Apd2StartStopTimeValidator apd2StartStopTimeValidator = new Apd2StartStopTimeValidator();
cdaDocumentApdV2ModelEnricher.appendValidator(apd2StartStopTimeValidator);

Apd2AppointmentIdValidator apd2AppointmentIdValidator  		

CdaDocumentPhmrModelEnricher cdaDocumentPhmrModelEnricher = new Apd2AppointmentIdValidatorCdaDocumentPhmrModelEnricher();
cdaDocumentApdV2ModelEnrichercdaDocumentTypeValidator.appendValidator(apd2AppointmentIdValidatorcdaDocumentPhmrModelEnricher);

Apd2CustodianIdValidatorCdaDocumentQrdModelEnricher apd2CustodianIdValidatorcdaDocumentQrdModelEnricher = new Apd2CustodianIdValidatorCdaDocumentQrdModelEnricher(organisationCodeValidation);
cdaDocumentApdV2ModelEnrichercdaDocumentTypeValidator.appendValidator(apd2CustodianIdValidatorcdaDocumentQrdModelEnricher);

Det som kendetegner en almindelig validator er extension af klassen AbstractAtLeastOneValidatorImpl.

...

Dette er ikke en egentlig validator. "Valideringen" består af udpakning af noget input.

- så en indirekte validering af, at input forståes og regning forbedring/berigelse af det data, der arbejdes på. Denne "berigelse" sættes på det indkomne objekt (deraf ModelEnricher) og senere validatorer kan så arbejde herpå.

Man kan på denne ModelEnricher også sættes "under-validatorer" på ligesom en almindelig validator.

Et eksempel på sådan en ModelEnricher er CdaDocumentApdV2ModelEnricher. Den er default konfigureret på CdaDocumentTypeValidator (se ovenfor for en AtLeastOneValidator) og modtager et CDA dokument, som den forsøger at pakke ud til et aftaledokument. Lykkedes dette kalder den sine "under-validatorer" som validerer aftale specikke regler.

Code Block
languagejava
titleIti41ValidationFactory - ModelEnricher eksempel
linenumberstrue
collapsetrue
//validering, hvor CdaDocumentApdV2ModelEnricher forventes at pakke input ud og forstå at det er et aftale dokument.

CdaDocumentApdV2ModelEnricher cdaDocumentApdV2ModelEnricher = new CdaDocumentApdV2ModelEnricher();

Apd2StartStopTimeValidator apd2StartStopTimeValidator = new Apd2StartStopTimeValidator();
cdaDocumentApdV2ModelEnricher.appendValidator(apd2StartStopTimeValidator);

Apd2AppointmentIdValidator apd2AppointmentIdValidator = new Apd2AppointmentIdValidator();
cdaDocumentApdV2ModelEnricher.appendValidator(apd2AppointmentIdValidator);

Apd2CustodianIdValidator apd2CustodianIdValidator = new Apd2CustodianIdValidator(organisationCodeValidation);
cdaDocumentApdV2ModelEnricher.appendValidator(apd2CustodianIdValidator);

Det som kendetegner en almindelig validator er extension af klassen AbstractModelEnricherImpl.

Starter

Denne minder om en ModelEnricher, men adskiller sig fra en ModelEnricher ved, at den ikke modtager det fælles objekt XDSDocument , men istedet som de andre validatorer arbejder med. Den modtager derimod en request type. Dette request , som pakkes ud i et eller flere XDSDocument objekter, og Starter kører så sine under-validatorer på hver af disse objekter.

Alle valideringer starter derfor med en Starter validering og al anden validering bygges herpå. Se eksempelvis ProvideAndRegisterDocumentSetStarter for et fuldt eksempel.

Code Block
languagejava
titleIti41ValidationFactory - Starter eksempel
linenumberstrue
collapsetrue
//validering, hvor det hele initiers med en Starter validering til et iti 41 kald

ProvideAndRegisterDocumentSetStarter provideAndRegisterDocumentSetStarter = new ProvideAndRegisterDocumentSetStarter(); 

Det som kendetegner en almindelig validator er extension af klassen AbstractStarterImpl.

Dem gode kombination

Alle ITI kald default valideringer konfigureret i XdsValidation biblioteket er sat op efter følgende princippet

  • Den tilhørende starter


En grafisk præsenation af dette for et ITI 41 kald ser ud på følgende måde

Eksempel fra DROS

Følgende kode, består af 3 trin.

...