Page History
...
En grafisk præsentation af denne konfiguration af default validering kan ses i Design og arkitektur dokumentet.
Eksempel fra DROS
For at gøre brug af xdsValidation skal følgende dependencies tilføjes til maven pom fil:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>dk.nsp</groupId>
<artifactId>validation-xds</artifactId>
</dependency> |
Hvis man ikke allerede anvender IPF Open eHealth Integration Platform skal følgende dependency tilføjes
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-xds</artifactId>
<version>${openehealth.version}</version>
</dependency>
<!-- openehealth.version bør være samme version som XDSValidation anvender --> |
Følgende kode er taget fra DROS's validerings logik for ITI 41 kald.
Hvordan ændrer man default valideringen
Hvis man ønsker at ændre i den måde default valideringen er sat op i XdsValidation biblioteket, enten ved at fjerne valideringsregler eller udvide med sine egne, kan det gøres på følgende måde.
Man finder den validerings factory (default validering) der skal ændres på, og laver en kopi af denne. Fjerner eller sætter nye valideringer på. Og anvender så den istedet for default valideringen.
Et konkret eksempel kan være ændring af en ITI 41 kaldets validering, sådan at startTime for aftaler bliver mere specifik (F.eks at tiden skal være i "fremtiden"). Dette kunne gøres som følger:
- Udvikling af egen udvidede validering i klassen Apd2StartStopTimeSpecifikValueValidator (en almindelig validator vil her være passende som som skabelon)
- Lave en kopi af klassen Iti41ValidationFactory som Iti41ValidationFactoryExtended
- Tilføj egen validering (se eksemplet ovenfor i afsnit 2.1 for "fremtidigt eksempel med yderligere validering"
- Der hvor man normalt vile bruge default konfigurationen anvender man så sin egen.
En kopi af klassen Iti41ValidationFactory.
Code Block | ||||||||
---|---|---|---|---|---|---|---|---|
| ||||||||
<dependency>
<groupId>dk.nsp</groupId>
<artifactId>validation-xds</artifactId>
</dependency> |
Eksempel fra DROS
For at gøre brug af xdsValidation skal følgende dependencies tilføjes til maven pom fil:
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>dk.nsp</groupId>
<artifactId>validation-xds</artifactId>
</dependency> |
Hvis man ikke allerede anvender IPF Open eHealth Integration Platform skal følgende dependency tilføjes
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
<dependency>
<groupId>org.openehealth.ipf.commons</groupId>
<artifactId>ipf-commons-ihe-xds</artifactId>
<version>${openehealth.version}</version>
</dependency>
<!-- openehealth.version bør være samme version som XDSValidation anvender --> |
Følgende kode er taget fra DROS's validerings logik for ITI 41 kald.
Code Block | ||||||
---|---|---|---|---|---|---|
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(provideAndRegisterDocumentSet, xdsValidatorFactory.buildIti41Validator(), xdsValidationLevel);
// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(ProvideAndRegisterDocumentSet request, ProvideAndRegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel);
}
private List<ErrorInfo> getXdsValidationErrors(Supplier<ValidationResultSet> validator, XdsValidationLevel xdsValidationLevel) {
if(xdsValidationLevel == XdsValidationLevel.OFF) {
return new ArrayList<>();
}
List<ErrorInfo> errors = new ArrayList<>();
// Perform the validation
ValidationResultSet resultSet = validator.get();
// Construct the result
if(resultSet.hasErrors()) {
// Based on the validation level, either return a warning or an error.
Severity severity = getSeverity(xdsValidationLevel); | ||||||
Code Block | ||||||
| ||||||
// Fra klassen Iti41ValidationImpl metode validateAndTransform List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(provideAndRegisterDocumentSet, xdsValidatorFactory.buildIti41Validator(), xdsValidationLevel); // Fra klassen RegistryItiValidationImpl protected List<ErrorInfo> getXdsValidationErrors(ProvideAndRegisterDocumentSet request, ProvideAndRegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) { return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); } private List<ErrorInfo> getXdsValidationErrors(Supplier<ValidationResultSet> validator, XdsValidationLevel xdsValidationLevel) { if(xdsValidationLevel == XdsValidationLevel.OFF) { return new ArrayList<>(); } for(ValidationError ve : resultSet.getErrors()) { List<ErrorInfo>ErrorInfo errorserrorInfo = new ArrayList<>ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, ve.getErrorMessage(); , severity, "", // Perform the validation ValidationResultSet resultSet = validator.get(""); errors.add(errorInfo); // Construct the result} if(resultSet.hasErrors()) {} return errors; } //Klassen BasedXdsValidatorFactory public onclass the validation level, either return a warning or an error. XdsValidatorFactory { public ProvideAndRegisterDocumentSetStarter buildIti41Validator() { Severity severity = getSeverity(xdsValidationLevelreturn Iti41ValidationFactory.createIti41Validator(); } for(ValidationErrorpublic ve : resultSet.getErrorsRegisterDocumentSetStarter buildIti42Validator()) { ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, ve.getErrorMessage(), severity, "", ""); errors.add(errorInfo); } } return Iti42ValidationFactory.createIti42Validator(); } public RegisterDocumentSetStarter buildIti57Validator() { return Iti57ValidationFactory.createIti57Validator(); } public RegisterDocumentSetStarter buildIti61Validator() { return errorsIti61ValidationFactory.createIti61Validator(); } } |
Dvs ønsker man benytte default valideringen for ITI 41 kaldet gøres det ved at:
...