Class ValidationEngine
- java.lang.Object
-
- org.hl7.fhir.validation.ValidationEngine
-
- All Implemented Interfaces:
org.hl7.fhir.r5.utils.validation.IValidationPolicyAdvisor,org.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher,IPackageInstaller
public class ValidationEngine extends Object implements org.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher, org.hl7.fhir.r5.utils.validation.IValidationPolicyAdvisor, IPackageInstaller
This is just a wrapper around the InstanceValidator class for convenient useThe following resource formats are supported: XML, JSON, Turtle The following versions are supported: 1.0.2, 1.4.0, 3.0.2, 4.0.1, and current
Note: the validation engine is intended to be threadsafe To Use:
1/ Initialize ValidationEngine validator = new ValidationEngine(src); - this must be the packageId of the relevant core specification for the version you want to validate against (e.g. hl7.fhir.r4.core)
validator.connectToTSServer(txServer); - this is optional; in the absence of a terminology service, snomed, loinc etc will not be validated
validator.loadIg(src); - call this any number of times for the Implementation Guide(s) of interest. - See https://confluence.hl7.org/display/FHIR/Using+the+FHIR+Validator for documentation about the src parameter (-ig parameter)
validator.loadQuestionnaire(src) - url or filename of a questionnaire to load. Any loaded questionnaires will be used while validating
validator.setNative(doNative); - whether to do xml/json/rdf schema validation as well
You only need to do this initialization once. You can validate as many times as you like
2. validate validator.validate(src, profiles); - source (as stream, byte[]), or url or filename of a resource to validate. Also validate against any profiles (as canonical URLS, equivalent to listing them in Resource.meta.profile)
if the source is provided as byte[] or stream, you need to provide a format too, though you can leave that as null, and the validator will guess
3. Or, instead of validating, transform (see documentation and use in Validator.java)
- Author:
- Grahame Grieve
-
-
Nested Class Summary
Nested Classes Modifier and Type Class Description static classValidationEngine.ValidationEngineBuilder
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<org.hl7.fhir.r5.model.StructureDefinition>asSdList(List<String> profiles)org.hl7.fhir.r5.model.StructureMapcompile(String mapUri)StringconnectToTSServer(String url, String log, String txCachePath, org.hl7.fhir.r5.model.FhirPublication version)StringconnectToTSServer(String url, String log, org.hl7.fhir.r5.model.FhirPublication version)voidconvert(String source, String output)voiddropResource(String type, String id)StringevaluateFhirPath(String source, String expression)org.hl7.fhir.r5.elementmodel.Elementfetch(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String url)org.hl7.fhir.r5.model.CanonicalResourcefetchCanonicalResource(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, String url)booleanfetchesCanonicalResource(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, String url)byte[]fetchRaw(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, String source)org.hl7.fhir.r5.model.Resourcegenerate(String source, String version)voidgenResource(org.hl7.fhir.r5.model.Resource res, org.hl7.fhir.r5.renderers.utils.RenderingContext rc)org.hl7.fhir.utilities.npm.FilesystemPackageCacheManagergetPcm()InstanceValidatorgetValidator(org.hl7.fhir.r5.elementmodel.Manager.FhirFormat format)voidhandleOutput(org.hl7.fhir.r5.model.Resource r, String output, String version)protected voidinitContext(org.hl7.fhir.utilities.TimeTracker tt)org.hl7.fhir.r5.model.CanonicalResourceloadCanonicalResource(String source, String version)voidloadPackage(String id, String ver)voidloadProfile(String src)booleanpackageExists(String id, String ver)org.hl7.fhir.r5.utils.validation.constants.CodedContentValidationPolicypolicyForCodedContent(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String stackPath, org.hl7.fhir.r5.model.ElementDefinition definition, org.hl7.fhir.r5.model.StructureDefinition structure, org.hl7.fhir.r5.utils.validation.constants.BindingKind kind, org.hl7.fhir.r5.model.ValueSet valueSet, List<String> systems)org.hl7.fhir.r5.utils.validation.constants.ContainedReferenceValidationPolicypolicyForContained(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String containerType, String containerId, org.hl7.fhir.r5.elementmodel.Element.SpecialElement containingResourceType, String path, String url)org.hl7.fhir.r5.utils.validation.constants.ReferenceValidationPolicypolicyForReference(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String path, String url)voidprepare()booleanresolveURL(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String path, String url, String type)voidseeResource(org.hl7.fhir.r5.model.Resource r)ValidationEnginesetMapLog(String mapLog)ValidationEnginesetSnomedExtension(String sct)StringsetTerminologyServer(String src, String log, org.hl7.fhir.r5.model.FhirPublication version)org.hl7.fhir.r5.model.StructureDefinitionsnapshot(String source, String version)org.hl7.fhir.r5.elementmodel.Elementtransform(byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, String mapUri)org.hl7.fhir.r5.elementmodel.Elementtransform(String source, String map)byte[]transformVersion(String source, String targetVer, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat format, Boolean canDoNative)org.hl7.fhir.r5.model.OperationOutcomevalidate(byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, List<String> profiles, List<org.hl7.fhir.utilities.validation.ValidationMessage> messages)org.hl7.fhir.r5.model.OperationOutcomevalidate(String location, byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, List<String> profiles, List<ValidationRecord> record)org.hl7.fhir.r5.model.OperationOutcomevalidate(String location, byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, List<String> profiles, org.hl7.fhir.r5.utils.validation.constants.IdStatus resourceIdRule, boolean anyExtensionsAllowed, org.hl7.fhir.r5.utils.validation.constants.BestPracticeWarningLevel bpWarnings, org.hl7.fhir.r5.utils.validation.constants.CheckDisplayOption displayOption)org.hl7.fhir.r5.model.OperationOutcomevalidate(String source, List<String> profiles)org.hl7.fhir.r5.model.Resourcevalidate(List<String> sources, List<String> profiles, List<ValidationRecord> record)org.hl7.fhir.r5.model.OperationOutcomevalidate(org.hl7.fhir.r5.elementmodel.Manager.FhirFormat format, InputStream stream, List<String> profiles)
-
-
-
Method Detail
-
initContext
protected void initContext(org.hl7.fhir.utilities.TimeTracker tt) throws IOException
- Throws:
IOException
-
connectToTSServer
public String connectToTSServer(String url, String log, org.hl7.fhir.r5.model.FhirPublication version) throws URISyntaxException, IOException, org.hl7.fhir.exceptions.FHIRException
- Throws:
URISyntaxExceptionIOExceptionorg.hl7.fhir.exceptions.FHIRException
-
connectToTSServer
public String connectToTSServer(String url, String log, String txCachePath, org.hl7.fhir.r5.model.FhirPublication version) throws URISyntaxException, IOException, org.hl7.fhir.exceptions.FHIRException
- Throws:
URISyntaxExceptionIOExceptionorg.hl7.fhir.exceptions.FHIRException
-
loadProfile
public void loadProfile(String src) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
validate
public org.hl7.fhir.r5.model.OperationOutcome validate(org.hl7.fhir.r5.elementmodel.Manager.FhirFormat format, InputStream stream, List<String> profiles) throws org.hl7.fhir.exceptions.FHIRException, IOException, org.hl7.fhir.r5.utils.EOperationOutcome
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionorg.hl7.fhir.r5.utils.EOperationOutcome
-
asSdList
public List<org.hl7.fhir.r5.model.StructureDefinition> asSdList(List<String> profiles) throws Error
- Throws:
Error
-
validate
public org.hl7.fhir.r5.model.OperationOutcome validate(String source, List<String> profiles) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
validate
public org.hl7.fhir.r5.model.Resource validate(List<String> sources, List<String> profiles, List<ValidationRecord> record) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
validate
public org.hl7.fhir.r5.model.OperationOutcome validate(byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, List<String> profiles, List<org.hl7.fhir.utilities.validation.ValidationMessage> messages) throws org.hl7.fhir.exceptions.FHIRException, IOException, org.hl7.fhir.r5.utils.EOperationOutcome
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionorg.hl7.fhir.r5.utils.EOperationOutcome
-
validate
public org.hl7.fhir.r5.model.OperationOutcome validate(String location, byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, List<String> profiles, List<ValidationRecord> record) throws org.hl7.fhir.exceptions.FHIRException, IOException, org.hl7.fhir.r5.utils.EOperationOutcome, SAXException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionorg.hl7.fhir.r5.utils.EOperationOutcomeSAXException
-
validate
public org.hl7.fhir.r5.model.OperationOutcome validate(String location, byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, List<String> profiles, org.hl7.fhir.r5.utils.validation.constants.IdStatus resourceIdRule, boolean anyExtensionsAllowed, org.hl7.fhir.r5.utils.validation.constants.BestPracticeWarningLevel bpWarnings, org.hl7.fhir.r5.utils.validation.constants.CheckDisplayOption displayOption) throws org.hl7.fhir.exceptions.FHIRException, IOException, org.hl7.fhir.r5.utils.EOperationOutcome, SAXException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionorg.hl7.fhir.r5.utils.EOperationOutcomeSAXException
-
transform
public org.hl7.fhir.r5.elementmodel.Element transform(String source, String map) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
compile
public org.hl7.fhir.r5.model.StructureMap compile(String mapUri) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
transform
public org.hl7.fhir.r5.elementmodel.Element transform(byte[] source, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat cntType, String mapUri) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
generate
public org.hl7.fhir.r5.model.Resource generate(String source, String version) throws org.hl7.fhir.exceptions.FHIRException, IOException, org.hl7.fhir.r5.utils.EOperationOutcome
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionorg.hl7.fhir.r5.utils.EOperationOutcome
-
genResource
public void genResource(org.hl7.fhir.r5.model.Resource res, org.hl7.fhir.r5.renderers.utils.RenderingContext rc) throws IOException, org.hl7.fhir.r5.utils.EOperationOutcome
- Throws:
IOExceptionorg.hl7.fhir.r5.utils.EOperationOutcome
-
convert
public void convert(String source, String output) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
evaluateFhirPath
public String evaluateFhirPath(String source, String expression) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
snapshot
public org.hl7.fhir.r5.model.StructureDefinition snapshot(String source, String version) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
loadCanonicalResource
public org.hl7.fhir.r5.model.CanonicalResource loadCanonicalResource(String source, String version) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
seeResource
public void seeResource(org.hl7.fhir.r5.model.Resource r) throws org.hl7.fhir.exceptions.FHIRException
- Throws:
org.hl7.fhir.exceptions.FHIRException
-
dropResource
public void dropResource(String type, String id)
-
getValidator
public InstanceValidator getValidator(org.hl7.fhir.r5.elementmodel.Manager.FhirFormat format) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
prepare
public void prepare()
-
handleOutput
public void handleOutput(org.hl7.fhir.r5.model.Resource r, String output, String version) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
transformVersion
public byte[] transformVersion(String source, String targetVer, org.hl7.fhir.r5.elementmodel.Manager.FhirFormat format, Boolean canDoNative) throws org.hl7.fhir.exceptions.FHIRException, IOException, Exception
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionException
-
setTerminologyServer
public String setTerminologyServer(String src, String log, org.hl7.fhir.r5.model.FhirPublication version) throws org.hl7.fhir.exceptions.FHIRException, URISyntaxException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionURISyntaxExceptionIOException
-
setMapLog
public ValidationEngine setMapLog(String mapLog) throws FileNotFoundException
- Throws:
FileNotFoundException
-
setSnomedExtension
public ValidationEngine setSnomedExtension(String sct)
-
getPcm
public org.hl7.fhir.utilities.npm.FilesystemPackageCacheManager getPcm() throws IOException
- Throws:
IOException
-
fetchRaw
public byte[] fetchRaw(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, String source) throws IOException
- Specified by:
fetchRawin interfaceorg.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher- Throws:
IOException
-
packageExists
public boolean packageExists(String id, String ver) throws IOException, org.hl7.fhir.exceptions.FHIRException
- Specified by:
packageExistsin interfaceIPackageInstaller- Throws:
IOExceptionorg.hl7.fhir.exceptions.FHIRException
-
loadPackage
public void loadPackage(String id, String ver) throws IOException, org.hl7.fhir.exceptions.FHIRException
- Specified by:
loadPackagein interfaceIPackageInstaller- Throws:
IOExceptionorg.hl7.fhir.exceptions.FHIRException
-
fetch
public org.hl7.fhir.r5.elementmodel.Element fetch(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String url) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Specified by:
fetchin interfaceorg.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
policyForReference
public org.hl7.fhir.r5.utils.validation.constants.ReferenceValidationPolicy policyForReference(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String path, String url)
- Specified by:
policyForReferencein interfaceorg.hl7.fhir.r5.utils.validation.IValidationPolicyAdvisor
-
policyForContained
public org.hl7.fhir.r5.utils.validation.constants.ContainedReferenceValidationPolicy policyForContained(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String containerType, String containerId, org.hl7.fhir.r5.elementmodel.Element.SpecialElement containingResourceType, String path, String url)
- Specified by:
policyForContainedin interfaceorg.hl7.fhir.r5.utils.validation.IValidationPolicyAdvisor
-
policyForCodedContent
public org.hl7.fhir.r5.utils.validation.constants.CodedContentValidationPolicy policyForCodedContent(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String stackPath, org.hl7.fhir.r5.model.ElementDefinition definition, org.hl7.fhir.r5.model.StructureDefinition structure, org.hl7.fhir.r5.utils.validation.constants.BindingKind kind, org.hl7.fhir.r5.model.ValueSet valueSet, List<String> systems)
- Specified by:
policyForCodedContentin interfaceorg.hl7.fhir.r5.utils.validation.IValidationPolicyAdvisor
-
resolveURL
public boolean resolveURL(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, Object appContext, String path, String url, String type) throws org.hl7.fhir.exceptions.FHIRException
- Specified by:
resolveURLin interfaceorg.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher- Throws:
org.hl7.fhir.exceptions.FHIRException
-
fetchCanonicalResource
public org.hl7.fhir.r5.model.CanonicalResource fetchCanonicalResource(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, String url) throws URISyntaxException
- Specified by:
fetchCanonicalResourcein interfaceorg.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher- Throws:
URISyntaxException
-
fetchesCanonicalResource
public boolean fetchesCanonicalResource(org.hl7.fhir.r5.utils.validation.IResourceValidator validator, String url)
- Specified by:
fetchesCanonicalResourcein interfaceorg.hl7.fhir.r5.utils.validation.IValidatorResourceFetcher
-
-