use of org.ehrbase.fhirbridge.FhirBridgeException in project fhir-bridge by ehrbase.
the class FhirValidationConfiguration method validationSupport.
public IValidationSupport validationSupport() {
ValidationSupportChain validationSupportChain = new ValidationSupportChain();
// Validates core structure definitions
DefaultProfileValidationSupport defaultProfileValidationSupport = new DefaultProfileValidationSupport(fhirContext);
defaultProfileValidationSupport.fetchAllStructureDefinitions();
defaultProfileValidationSupport.fetchCodeSystem("");
validationSupportChain.addValidationSupport(defaultProfileValidationSupport);
// Validates custom profiles (loaded from classpath)
PrePopulatedValidationSupport prePopulatedValidationSupport = new PrePopulatedValidationSupport(fhirContext);
IParser parser = fhirContext.newXmlParser();
try {
for (Resource resource : applicationContext.getResources("classpath:/profiles/*")) {
StructureDefinition profile = parser.parseResource(StructureDefinition.class, resource.getInputStream());
if (properties.isOptionalIdentifier()) {
modifyProfile(profile);
}
prePopulatedValidationSupport.addStructureDefinition(profile);
}
} catch (IOException e) {
throw new FhirBridgeException("An I/O exception occurred while loading custom profiles");
}
validationSupportChain.fetchAllStructureDefinitions();
defaultProfileValidationSupport.fetchCodeSystem("");
validationSupportChain.addValidationSupport(prePopulatedValidationSupport);
// Validates terminology: CodeSystems and ValueSets (using the internal and/or remote terminology service)
if (isTerminologyValidationEnabled()) {
TerminologyValidationMode mode = properties.getTerminology().getMode();
if (mode == TerminologyValidationMode.REMOTE || mode == TerminologyValidationMode.MIXED) {
RemoteTerminologyServiceValidationSupport remoteTerminologyServerValidationSupport = new RemoteTerminologyServiceValidationSupport(fhirContext);
remoteTerminologyServerValidationSupport.setBaseUrl(properties.getTerminology().getServerBaseUrl());
validationSupportChain.addValidationSupport(remoteTerminologyServerValidationSupport);
}
if (mode == TerminologyValidationMode.INTERNAL || mode == TerminologyValidationMode.MIXED) {
validationSupportChain.addValidationSupport(new InMemoryTerminologyServerValidationSupport(fhirContext));
validationSupportChain.addValidationSupport(new CommonCodeSystemsTerminologyService(fhirContext));
}
}
return new CachingValidationSupport(validationSupportChain);
}
use of org.ehrbase.fhirbridge.FhirBridgeException in project fhir-bridge by ehrbase.
the class ResourceTemplateProvider method afterPropertiesSet.
@Override
public void afterPropertiesSet() {
try {
Arrays.stream(resourceLoader.getResources(prefix + "*.opt")).forEach(resource -> {
OPERATIONALTEMPLATE template = parse(resource);
templates.put(template.getTemplateId().getValue(), resource.getFilename());
});
} catch (IOException e) {
throw new FhirBridgeException("An I/O exception occurred during initialization", e);
}
}
Aggregations