Versions Compared

Key

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

...

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, ProvideAndRegisterDocumentSetStarterList<ProvideAndRegisterDocumentSetStarter> starterstarterList, XdsValidationLevel xdsValidationLevel) {
     List<ErrorInfo> return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel);
}

private List<ErrorInfo> getXdsValidationErrors(Supplier<ValidationResultSet> validator, XdsValidationLevel xdsValidationLevel) {
     if(xdsValidationLevel == XdsValidationLevel.OFFerrors = new ArrayList<>();
     for (ProvideAndRegisterDocumentSetStarter starter : starterList) {
           List<ErrorInfo> returnvalidationErrors new= ArrayList<>(getXdsValidationErrors(request, starter, xdsValidationLevel);
     }
     List<ErrorInfo> errors = new ArrayList<>(   errors.addAll(validationErrors);
     // Perform the validation
    if (errors.size() > 0) {
        ValidationResultSet  resultSet  = validator.get() return errors;
     // Construct the  result }
     if(resultSet.hasErrors()) {}
       return errors;
}

private List<ErrorInfo> // Based on the validation level, either return a warning or an error.
          Severity severity = getSeverity(xdsValidationLevel);
    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) {
        for(ValidationErrorreturn ve : resultSet.getErrorsnew ArrayList<>()) {;
          }
    List<ErrorInfo> ErrorInfo errorInfoerrors = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, ve.getErrorMessage(), severity, "", "");
               errors.add(errorInfo);
          }ArrayList<>();
    // Based on the validation level, either return a warning or an error.
    Severity severity = getSeverity(xdsValidationLevel);

    try }{
      return errors;
}

  //Klassen XdsValidatorFactory
public class XdsValidatorFactory {
 Perform the validation
        ValidationResultSet publicresultSet ProvideAndRegisterDocumentSetStarter= buildIti41Validatorvalidator.get() {;
        return Iti41ValidationFactory.createIti41Validator();// Construct the result
    }

    public RegisterDocumentSetStarter buildIti42Validator(if(resultSet.getValidationResults().size() > 0) {
        return Iti42ValidationFactory.createIti42Validator();
   // }

Based on the validation publiclevel, RegisterDocumentSetStartereither buildIti57Validator() {
    return a warning or an error.
    return Iti57ValidationFactory.createIti57Validator();
    }

   for(ValidationResult publicvr RegisterDocumentSetStarter: buildIti61ValidatorresultSet.getValidationResults()) {
          return Iti61ValidationFactory.createIti61Validator();
      ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, vr.getValidationError().getErrorMessage(), severity, "", "");
                errors.add(errorInfo);
            }
        }
}

Dvs ønsker man benytte default valideringen for ITI 41 kaldet gøres det ved at:

  1. Oprette en instans af ProvideAndRegisterDocumentSetStarter (linie 2)
  2. Kalde metoden validate på denne med ITI 41 requested (ProvideAndRegisterDocumentSet) (linie 6)
  3. Retur får man en liste over de fejl XdsValidation fandt (linie 15)

På samme måde kan man få valideret de øvrige kald, ved at vælge den rette Starter og sende requsted ind til den.

Code Block
languagejava
titleIti42ValidationImpl - anvendels af XdsValidation
linenumberstrue
// Fra klassen Iti42ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti42Validator(), xdsValidationLevel);

// Fra klassen RegistryItiValidationImpl

protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
    return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
}
Code Block
languagejava
titleIti61ValidationImpl - anvendels af XdsValidation
linenumberstrue
// Fra klassen Iti57ValidationImpl metode validateAndTransform
List<ErrorInfo> xdsValidationErrors = getXdsValidationErrors(registerDocumentSet, xdsValidatorFactory.buildIti61Validator(), xdsValidationLevel);  

// Fra klassen RegistryItiValidationImpl
protected List<ErrorInfo> getXdsValidationErrors(RegisterDocumentSet request, RegisterDocumentSetStarter starter, XdsValidationLevel xdsValidationLevel) {
    return getXdsValidationErrors(() -> starter.validate(request), xdsValidationLevel); //for getXdsValidationErrors se ovenfor
}

...

languagejava
titleIti57ValidationImpl - anvendels af XdsValidation
linenumberstrue

...

    } catch (Exception e) {
        // Because validation depends on validation library and builder parsers handling of exceptions we need to make sure any unstable exception handling there will not get to the caller.
        String errorMessage = "Unhandled exception in validation library or its sub dependencies.";
        LOGGER.error(errorMessage, e);
        ErrorInfo errorInfo = new ErrorInfo(ErrorCode.REGISTRY_METADATA_ERROR, errorMessage, getSeverity(xdsValidationLevel), "", "");
        errors.add(errorInfo);
    }
    return errors;
}

//Klassen XdsValidatorFactory
public class XdsValidatorFactory {
 ...
    public List<ProvideAndRegisterDocumentSetStarter> buildIti41Validator() {
        return Arrays.asList(
                Iti41ValidationFactory.createIti41Validator(xdsConfigurationFactory.buildXDSConfiguration()),
                createItiProvideAndRegisterDocumentSetStarterDrosValidator());
    }
  ... 
}


Dvs ønsker man benytte default valideringen for ITI 41 kaldet gøres det ved at:

  1. Oprette en instans af ProvideAndRegisterDocumentSetStarter (linie 2)
  2. Kalde metoden validate på denne med ITI 41 requested (ProvideAndRegisterDocumentSet) (linie 18)
  3. Retur får man en liste over de fejl XdsValidation fandt (linie 31)

På samme måde kan man få valideret de øvrige kald, ved at vælge den rette Starter og sende requsted ind til den.


Se iøvrigt praktisk anvendelse i bibliotekets egne unit test. F.eks. CdaHeaderValidatorTest der viser CDA dokument validering og  ProvideAndRegisterDocumentSetValidatorTest, der viser en række kald for iti-41.

...