FHIR Chat · Schematrom validation · social

Stream: social

Topic: Schematrom validation


view this post on Zulip Kunal Dangi (Feb 22 2019 at 07:06):

Hi,

I have Normal java program for schematronBase validation.(Some code snippet as shown below:)

Patient p = new Patient();
p.setActive(true);
HumanNameDt name = new HumanNameDt();
name.addFamily("family");
p.addName(name);

FhirValidator val = ctx.newValidator();
IValidatorModule module1 = new SchemaBaseValidator(ctx);
IValidatorModule module2 = new SchematronBaseValidator(ctx);
val.registerValidatorModule(module1);
val.registerValidatorModule(module2);

ValidationResult result = val.validateWithResult(p);
if (result.isSuccessful()) {

System.out.println("Validation passed");

} else {
// We failed validation!
System.out.println("Validation failed");
}

This is working fine, and below are logs for this:

15:56:13.979 [main] INFO ca.uhn.fhir.util.VersionUtil - HAPI FHIR version is: 3.3.0
15:56:14.008 [main] INFO ca.uhn.fhir.context.FhirContext - Creating new FHIR context for FHIR version [DSTU2]
15:56:14.849 [main] DEBUG ca.uhn.fhir.util.XmlUtil - FHIR XML procesing will use StAX implementation at jar:file:/C:/Program%20Files/Java/jre1.8.0_121/lib/rt.jar!/
Title: Java Runtime Environment
Symbolic name: null
Vendor: Oracle Corporation
Version: 1.8.0_121
15:56:14.850 [main] DEBUG ca.uhn.fhir.util.XmlUtil - WstxOutputFactory (Woodstox) not found on classpath
15:56:14.890 [main] DEBUG c.u.f.validation.SchemaBaseValidator - Going to load resource: /org/hl7/fhir/instance/model/schema/fhir-single.xsd
15:56:15.273 [main] DEBUG c.u.f.validation.SchemaBaseValidator - Loading referenced schema file: /org/hl7/fhir/instance/model/schema/xml.xsd
15:56:15.311 [main] DEBUG c.u.f.validation.SchemaBaseValidator - Loading referenced schema file: /org/hl7/fhir/instance/model/schema/fhir-xhtml.xsd
15:56:15.811 [main] DEBUG ca.uhn.fhir.util.XmlUtil - WstxOutputFactory (Woodstox) not found on classpath
15:56:17.537 [main] DEBUG c.p.c.x.ls.SimpleLSResourceResolver - Trying to resolve resource iso_schematron_skeleton_for_saxon.xsl from base jar:file:/D:/pluginrepo/lib/phloc-schematron-2.7.1.jar!/schematron/20100414-xslt2/iso_svrl_for_xslt2.xsl
15:56:18.323 [main] DEBUG c.p.commons.lang.ServiceLoaderUtils - Trying to load all SPI implementations of interface com.phloc.commons.hash.IHashCodeImplementationRegistrarSPI
15:56:18.326 [main] DEBUG c.p.commons.lang.ServiceLoaderUtils - Finished loading all SPI implementations of interface com.phloc.commons.hash.IHashCodeImplementationRegistrarSPI --> returning 2 instances
15:56:18.337 [main] DEBUG c.p.c.h.HashCodeImplementationRegistry - Found no hashCode implementation for class java.lang.String
Validation passed
15:56:18.347 [main] DEBUG ca.uhn.fhir.context.ModelScanner - Scanning resource class: ca.uhn.fhir.model.dstu2.resource.OperationOutcome
15:56:18.348 [main] DEBUG ca.uhn.fhir.context.ModelScanner - Scanning resource block class: ca.uhn.fhir.model.dstu2.resource.OperationOutcome$Issue
15:56:18.352 [main] DEBUG ca.uhn.fhir.context.ModelScanner - Done scanning FHIR library, found 2 model entries in 6ms
{
"resourceType": "OperationOutcome",
"issue": [
{
"severity": "information",
"code": "informational",
"diagnostics": "No issues detected during validation"
}
]
}

But when I am trying to execute same code from my plugin project, it gives error as highlighted below:

javax.xml.transform.TransformerConfigurationException: Syntax error in 'not(descendant-or-self::*[not(local-name(.)=('a', 'abbr', 'acronym', 'b', 'big', 'blockquote', 'br', 'caption', 'cite', 'code', 'colgroup', 'dd', 'dfn', 'div', 'dl', 'dt', 'em', 'h1', 'h2', 'h3', 'h4', 'h5', 'h6', 'hr', 'i', 'img', 'li', 'ol', 'p', 'pre', 'q', 'samp', 'small', 'span', 'strong', 'table', 'tbody', 'td', 'tfoot', 'th', 'thead', 'tr', 'tt', 'ul', 'var'))])'.
at com.sun.org.apache.xalan.internal.xsltc.trax.TransformerFactoryImpl.newTemplates(TransformerFactoryImpl.java:990) ~[na:1.8.0_171]
at com.helger.xml.transform.XMLTransformerFactory.newTemplates(XMLTransformerFactory.java:300) ~[ph-xml-9.2.0.jar:9.2.0]
at com.helger.schematron.xslt.SchematronProviderXSLTFromSCH.<init>(SchematronProviderXSLTFromSCH.java:223) [ph-schematron-5.0.8.jar:5.0.8]
at com.helger.schematron.xslt.SchematronResourceSCHCache.createSchematronXSLTProvider(SchematronResourceSCHCache.java:69) [ph-schematron-5.0.8.jar:5.0.8]
at com.helger.schematron.xslt.SchematronResourceSCHCache.getSchematronXSLTProvider(SchematronResourceSCHCache.java:145) [ph-schematron-5.0.8.jar:5.0.8]
at com.helger.schematron.xslt.SchematronResourceSCH.getXSLTProvider(SchematronResourceSCH.java:92) [ph-schematron-5.0.8.jar:5.0.8]
at com.helger.schematron.xslt.AbstractSchematronXSLTBasedResource.isValidSchematron(AbstractSchematronXSLTBasedResource.java:194) [ph-schematron-5.0.8.jar:5.0.8]
at com.helger.schematron.AbstractSchematronResource.applySchematronValidationToSVRL(AbstractSchematronResource.java:262) [ph-schematron-5.0.8.jar:5.0.8]
at com.helger.schematron.SchematronHelper.applySchematron(SchematronHelper.java:132) [ph-schematron-5.0.8.jar:5.0.8]
at ca.uhn.fhir.validation.schematron.SchematronBaseValidator.validateResource(SchematronBaseValidator.java:85) [hapi-fhir-base-3.7.0.jar:na]
at ca.uhn.fhir.validation.FhirValidator.validateWithResult(FhirValidator.java:213) [hapi-fhir-base-3.7.0.jar:na]
at com.tibco.bw.palette.fhir.runtime.validator.helper.ResourceValidatorHelper.performValidation(ResourceValidatorHelper.java:174) [com.tibco.bw.palette.fhir.runtime/:na]
at com.tibco.bw.palette.fhir.runtime.validator.helper.ResourceValidatorHelper.resourceValidation(ResourceValidatorHelper.java:110) [com.tibco.bw.palette.fhir.runtime/:na]
at com.tibco.bw.palette.fhir.runtime.validator.FhirValidatorActivity.execute(FhirValidatorActivity.java:65) [com.tibco.bw.palette.fhir.runtime/:na]
at com.tibco.bw.core.runtime.bx.BWBxActivityBridgeImpl.doEval(BWBxActivityBridgeImpl.java:833) [com.tibco.bw.core.runtime_6.3.800.012.jar:na]
at com.tibco.bw.core.runtime.bx.BWBxActivityBridgeImpl.eval(BWBxActivityBridgeImpl.java:695) [com.tibco.bw.core.runtime_6.3.800.012.jar:na]
at com.tibco.bx.core.behaviors.activity.BxExtensionBehavior.doEval(BxExtensionBehavior.java:162) [com.tibco.bx.core_2.1.200.011.jar:na]
at com.tibco.bx.core.behaviors.activity.BxActivityBaseBehavior.eval(BxActivityBaseBehavior.java:817) [com.tibco.bx.core_2.1.200.011.jar:na]
at com.tibco.bx.core.behaviors.activity.BxActivityBaseBehavior.eval(BxActivityBaseBehavior.java:1) [com.tibco.bx.core_2.1.200.011.jar:na]
at com.tibco.pvm.infra.api.impl.util.director.IpmEventDirectorBase.handleModelEvent(IpmEventDirectorBase.java:195) [com.tibco.pvm.core.infra_4.1.200.007.jar:na]
at com.tibco.pvm.infra.api.impl.util.director.IpmEventDirectorBase.handleEvent(IpmEventDirectorBase.java:111) [com.tibco.pvm.core.infra_4.1.200.007.jar:na]
at com.tibco.pvm.infra.support.work.impl.WorkItemAbstract.execute(WorkItemAbstract.java:177) [com.tibco.pvm.core.infra_4.1.200.007.jar:na]
at com.tibco.pvm.im.rt.xm.util.work.ImxSTWorkRunnable.doWorkBlock(ImxSTWorkRunnable.java:170) [com.tibco.pvm.im.rt.xm_4.1.200.004.jar:na]
at com.tibco.pvm.infra.services.engine.impl.STWorkRunnable.run(STWorkRunnable.java:50) [com.tibco.pvm.core.infra_4.1.200.007.jar:na]
at com.tibco.pvm.im.rt.xm.util.work.ImxSTWorkRunnable.run(ImxSTWorkRunnable.java:62) [com.tibco.pvm.im.rt.xm_4.1.200.004.jar:na]
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149) [na:1.8.0_171]
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624) [na:1.8.0_171]
at java.lang.Thread.run(Thread.java:748) [na:1.8.0_171]

view this post on Zulip Lloyd McKenzie (Feb 22 2019 at 07:32):

Your plug-in is probably not using an XSLT engine that supports XPath 2.0. All of the FHIR Schematron rules are coded using XPath 2.0, so you need an engine like Saxon that can run those.


Last updated: Apr 12 2022 at 19:14 UTC