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
-
-
Constructor Summary
Constructors Constructor Description ValidationEngine()ValidationEngine(String src)ValidationEngine(String src, String txsrvr, String txLog, org.hl7.fhir.r5.model.FhirPublication version, boolean canRunWithoutTerminologyServer, String vString, String userAgent)ValidationEngine(String src, String txsrvr, String txLog, org.hl7.fhir.r5.model.FhirPublication version, String vString, String userAgent)ValidationEngine(String src, String vString, org.hl7.fhir.utilities.TimeTracker tt, String userAgent)
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description List<org.hl7.fhir.r5.model.StructureDefinition>asSdList(List<String> profiles)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)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)
-
-
-
Constructor Detail
-
ValidationEngine
public ValidationEngine() throws IOException
- Throws:
IOException
-
ValidationEngine
public ValidationEngine(String src) throws org.hl7.fhir.exceptions.FHIRException, IOException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOException
-
ValidationEngine
public ValidationEngine(String src, String txsrvr, String txLog, org.hl7.fhir.r5.model.FhirPublication version, boolean canRunWithoutTerminologyServer, String vString, String userAgent) throws org.hl7.fhir.exceptions.FHIRException, IOException, URISyntaxException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionURISyntaxException
-
ValidationEngine
public ValidationEngine(String src, String txsrvr, String txLog, org.hl7.fhir.r5.model.FhirPublication version, String vString, String userAgent) throws org.hl7.fhir.exceptions.FHIRException, IOException, URISyntaxException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionURISyntaxException
-
ValidationEngine
public ValidationEngine(String src, String vString, org.hl7.fhir.utilities.TimeTracker tt, String userAgent) throws org.hl7.fhir.exceptions.FHIRException, IOException, URISyntaxException
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionIOExceptionURISyntaxException
-
-
Method Detail
-
initContext
public 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, org.hl7.fhir.exceptions.FHIRException
- Throws:
URISyntaxExceptionorg.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
-
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
- Throws:
org.hl7.fhir.exceptions.FHIRExceptionURISyntaxException
-
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
-
-