Versions Compared

Key

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

...

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
languagexml
titleMaven pom fil
linenumberstrue
<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
languagexml
titleMaven pom fil
linenumberstrue
<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
languagejava
titleIti41ValidationFactoryAdjusted
linenumberstrue
collapsetrue
<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
languagexml
titleMaven pom fil
linenumberstrue
<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
languagexml
titleMaven pom fil
linenumberstrue
<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
languagejava
titleIti41ValidationImpl - anvendels af XdsValidation
linenumberstrue
// 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
languagejava
titleIti41ValidationImpl - anvendels af XdsValidation
linenumberstrue
// 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:

...