From f5afbfc17b5360689fd793704187f064c05240c4 Mon Sep 17 00:00:00 2001 From: Achraf <aai@kereval.com> Date: Wed, 1 Jun 2022 10:29:33 +0200 Subject: [PATCH] Choices initial solution structure --- hl7templates/goc-tests/.gitignore | 1 + .../interlay/GenerationConfiguration.java | 13 +- .../interlay/ValidatorGeneratorImpl.java | 3 +- .../main/resources/choice/decor_choice.xml | 73 +++++++ .../impl/ChoiceDefinitionProcessorImpl.java | 4 +- .../action/ChoiceDefinitionAnalyzer.java | 1 - .../gazelle/tempgen/action/OCLGenerator.java | 20 ++ .../action/RuleDefinitionAnalyzer.java | 22 +- .../RDMaximumMultiplicityAnalyzer.java | 18 +- .../RDMinimumMultiplicityAnalyzer.java | 13 ++ .../test/resources/processors/decor_name.xml | 195 ++++++++++++++++++ .../RuleDefinitionDistinguisherUtil.java | 16 +- .../art/utils/RuleDefinitionProblemUtil.java | 21 +- .../hl7templates-packager-jar/pom.xml | 4 +- .../peripherals/GOCExecutor.java | 12 +- .../peripherals/HL7Templates2GOC.java | 4 +- 16 files changed, 389 insertions(+), 31 deletions(-) create mode 100644 hl7templates/goc-tests/.gitignore create mode 100644 hl7templates/goc-tests/goc-tests-runner/src/main/resources/choice/decor_choice.xml create mode 100644 hl7templates/hl7templates-generator-jar/src/test/resources/processors/decor_name.xml diff --git a/hl7templates/goc-tests/.gitignore b/hl7templates/goc-tests/.gitignore new file mode 100644 index 0000000..42639b2 --- /dev/null +++ b/hl7templates/goc-tests/.gitignore @@ -0,0 +1 @@ +lab/ \ No newline at end of file diff --git a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java index 89646b4..0b63402 100644 --- a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java +++ b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/GenerationConfiguration.java @@ -20,6 +20,8 @@ public class GenerationConfiguration { private String versionLabel; + private String hl7Conf; + public GenerationConfiguration(URL bbrUrl, String outputFolder, String mvn) { this.bbrUrl = bbrUrl; @@ -28,7 +30,7 @@ public class GenerationConfiguration { } public GenerationConfiguration(URL bbrUrl, String outputFolder, String mvn, Boolean ignoreTemplateIdRequirements, - Boolean ignoreCdaBasicRequirements, Boolean ignoreChoicesPredicates, String serviceName) { + Boolean ignoreCdaBasicRequirements, Boolean ignoreChoicesPredicates, String serviceName, String hl7Conf) { this.bbrUrl = bbrUrl; this.outputFolder = outputFolder; this.mvn = mvn; @@ -36,6 +38,7 @@ public class GenerationConfiguration { this.ignoreCdaBasicRequirements = ignoreCdaBasicRequirements; this.ignoreChoicesPredicates = ignoreChoicesPredicates; this.serviceName = serviceName; + this.hl7Conf = hl7Conf; } public URL getBbrUrl() { @@ -101,4 +104,12 @@ public class GenerationConfiguration { public void setVersionLabel(String versionLabel) { this.versionLabel = versionLabel; } + + public String getHl7Conf() { + return hl7Conf; + } + + public void setHl7Conf(String hl7Conf) { + this.hl7Conf = hl7Conf; + } } diff --git a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java index 321225c..d785646 100644 --- a/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java +++ b/hl7templates/goc-tests/goc-tests-runner/src/main/java/net/ihe/gazelle/goctests/interlay/ValidatorGeneratorImpl.java @@ -33,11 +33,12 @@ public class ValidatorGeneratorImpl implements ValidatorGenerator { Boolean ignoreChoicesPredicates = generationConfiguration.isIgnoreChoicesPredicates(); String serviceName = generationConfiguration.getServiceName(); String versionLabel = generationConfiguration.getVersionLabel(); + String hl7Conf = generationConfiguration.getHl7Conf(); //Run GOC GOCExecutor gocExecutor = new GOCExecutor(outputFolder); ValidatorConfiguration validatorConfiguration = gocExecutor.execute(new StreamBBRResource(bbrUrl),mvn, - versionLabel, ignoreTemplateIdRequirements, ignoreCdaBasicRequirements, serviceName, ignoreChoicesPredicates); + versionLabel, ignoreTemplateIdRequirements, ignoreCdaBasicRequirements, serviceName, ignoreChoicesPredicates, hl7Conf); StringBuilder logPath = new StringBuilder(outputFolder) .append("/").append(GeneratedValidator.ROOT_LOG_DIRECTORY) diff --git a/hl7templates/goc-tests/goc-tests-runner/src/main/resources/choice/decor_choice.xml b/hl7templates/goc-tests/goc-tests-runner/src/main/resources/choice/decor_choice.xml new file mode 100644 index 0000000..375747a --- /dev/null +++ b/hl7templates/goc-tests/goc-tests-runner/src/main/resources/choice/decor_choice.xml @@ -0,0 +1,73 @@ +<decor> + + <project id="2.16.840.1.113883.2.4.3.11.60.22" prefix="card-" defaultLanguage="en-US"> + </project> + + <rules> + <template id="1.1.1.1.1.1.1.1" name="TestCardinality" displayName="Test Cardinality Template" effectiveDate="2022-01-01T00:00:00" statusCode="active" versionLabel="1.0"> + <context id="**"></context> + <element name="cda:section" id="2.16.840.1.113883.3.1937.99.3.9.5334"> + + <element name="cda:templateId" datatype="II" minimumMultiplicity="1" maximumMultiplicity="1" isMandatory="true"> + <item label="CONF:0001"></item> + <attribute name="root" value="1.1.1.1.1.1.1.1" datatype="uid"></attribute> + </element> + <element name="cda:code" datatype="CE" minimumMultiplicity="1" maximumMultiplicity="1" isMandatory="true" id="2.16.840.1.113883.3.1937.99.3.9.5338"> + <desc language="en-US">SHALL contain exactly one [1..1] code (CONF:0002).</desc> + <item label="CONF:0002"></item> + <vocabulary code="29545-1" codeSystem="2.11.111.1.111111.1.1"></vocabulary> + </element> + <element name="cda:title" datatype="ST" minimumMultiplicity="1" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.5339"> + <desc language="en-US">SHALL contain exactly one [1..1] title (CONF:0003).</desc> + <item label="CONF:0003"></item> + </element> + + <element name="cda:entry" minimumMultiplicity="1" maximumMultiplicity="*" id="2.16.840.1.113883.3.1937.99.3.9.5341"> + <element name="cda:substanceAdministration" minimumMultiplicity="1" maximumMultiplicity="*" id="2.16.840.1.113883.3.1937.99.3.9.5347"> + + <!-- Test element: NEED TO BE FALSE 1_1 --> + <element name="cda:realmCode" minimumMultiplicity="1" maximumMultiplicity="1"> + <item label="CONF:0004"></item> + </element> + +<!-- <choice minimumMultiplicity="1" maximumMultiplicity="1">--> +<!-- <element name="cda:effectiveTime">--> + +<!-- </element>--> +<!-- </choice>--> + + <choice minimumMultiplicity="6" maximumMultiplicity="*"> + <element name="cda:effectiveTime" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="2" conformance="C" id="2.16.840.1.113883.3.1937.99.3.9.5850"> + <attribute name="value" datatype="ts" isOptional="true" id="2.16.840.1.113883.3.1937.99.3.9.5851"></attribute> + </element> + <element name="cda:effectiveTime[not(@operator='A')]" datatype="IVL_TS" minimumMultiplicity="5" maximumMultiplicity="7" conformance="C" id="2.16.840.1.113883.3.1937.99.3.9.222"> + <element name="cda:low" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.223"> + </element> + <element name="cda:high" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.224"> + </element> + </element> + + <element name="cda:effectiveTime" datatype="IVL_TS" minimumMultiplicity="5" maximumMultiplicity="7" conformance="C" id="2.16.840.1.113883.3.1937.99.3.9.222"> + <element name="cda:low" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.223"> + </element> + <element name="cda:high" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.224"> + </element> + </element> + </choice> +<!-- <element name="cda:effectiveTime[@operator='A']" datatype="SXCM_TS" minimumMultiplicity="0" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.225">--> +<!-- <attribute name="operator" value="A" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.226">--> +<!-- </attribute>--> +<!-- <assert role="error" test="count(preceding-sibling::cda:effectiveTime) = 1 and .[@operator='A'][@xsi:type='PIVL_TS' or @xsi:type='EIVL_TS']">SHOULD contain zero or one [0..1] effectiveTime (CONF:7513) such that it</assert>--> +<!-- </element>--> +<!-- --> + <attribute name="classCode"/> + <attribute name="moodCode" /> + + </element> + <item label="CONF:0007"></item> + </element> + + </element> + </template> + </rules> +</decor> \ No newline at end of file diff --git a/hl7templates/hl7templates-api-jar/src/main/java/net/ihe/gazelle/tempapi/impl/ChoiceDefinitionProcessorImpl.java b/hl7templates/hl7templates-api-jar/src/main/java/net/ihe/gazelle/tempapi/impl/ChoiceDefinitionProcessorImpl.java index f59463c..275ee23 100644 --- a/hl7templates/hl7templates-api-jar/src/main/java/net/ihe/gazelle/tempapi/impl/ChoiceDefinitionProcessorImpl.java +++ b/hl7templates/hl7templates-api-jar/src/main/java/net/ihe/gazelle/tempapi/impl/ChoiceDefinitionProcessorImpl.java @@ -19,7 +19,7 @@ public abstract class ChoiceDefinitionProcessorImpl implements ChoiceDefinitionP this.processConstraints(ChoiceDefinitionUtil.getConstraints(t)); this.processDescs(t.getDesc()); //elements are processed according to the predicates type - //this.processElements(ChoiceDefinitionUtil.getElements(t)); + this.processElements(ChoiceDefinitionUtil.getElements(t)); this.processIncludes(ChoiceDefinitionUtil.getIncludes(t)); this.processMaximumMultiplicity(t.getMaximumMultiplicity()); this.processMinimumMultiplicity(t.getMinimumMultiplicity()); @@ -27,7 +27,7 @@ public abstract class ChoiceDefinitionProcessorImpl implements ChoiceDefinitionP this.processItem(t.getItem()); //Comment next line to disable processing of the unsported HL7 choices specs - this.processPredicates(ChoiceDefinitionUtil.getElements(t)); +// this.processPredicates(ChoiceDefinitionUtil.getElements(t)); } } diff --git a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/ChoiceDefinitionAnalyzer.java b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/ChoiceDefinitionAnalyzer.java index aa90417..6cb360a 100644 --- a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/ChoiceDefinitionAnalyzer.java +++ b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/ChoiceDefinitionAnalyzer.java @@ -6,7 +6,6 @@ import java.util.regex.Pattern; import gnu.trove.map.hash.THashMap; import net.ihe.gazelle.goc.uml.utils.OwnedRuleUtil; -import net.ihe.gazelle.goc.uml.utils.PackagedElementUtil; import net.ihe.gazelle.goc.xmm.OwnedRule; import net.ihe.gazelle.goc.xmm.OwnedRuleKind; import net.ihe.gazelle.goc.xmm.OwnedRuleType; diff --git a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/OCLGenerator.java b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/OCLGenerator.java index fb7841a..0658622 100644 --- a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/OCLGenerator.java +++ b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/OCLGenerator.java @@ -435,4 +435,24 @@ public class OCLGenerator { } return addNullFlavorChecks(rules); } + + + public String appendDTDistinguisher(RuleDefinition ruleDefinition, String constraint){ + if(constraint == null || ruleDefinition == null){ + return constraint; + } + String rdName = RuleDefinitionUtil.getRealNameOfRuleDefinition(ruleDefinition); + StringBuilder selectionRule = new StringBuilder(rdName); + String datatype = ruleDefinition.getDatatype().getLocalPart(); + if(datatype == null){ + return constraint; + } + String datatypeForOCL = datatype.replace("_",""); + selectionRule.append("->select(aa | CommonOperationsStatic::compareExactType(aa, '") + .append(datatypeForOCL) + .append("'))"); + ImportElementHandler.handleAddingElement("CommonOperationsStatic"); + return constraint.replace(rdName, selectionRule); + + } } diff --git a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/RuleDefinitionAnalyzer.java b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/RuleDefinitionAnalyzer.java index 973c24d..9a9e80c 100644 --- a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/RuleDefinitionAnalyzer.java +++ b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/action/RuleDefinitionAnalyzer.java @@ -44,6 +44,9 @@ public class RuleDefinitionAnalyzer extends RuleDefinitionProcessorImpl { private List<OwnedRule> listGeneratedOwnedRule = new ArrayList<>(); + private Boolean generateDTDistinguisher = Boolean.FALSE; + + private boolean containsError = false; protected static void updateListDistinguisherFollower(RuleDefinition ruleDefinition, Pair<String, String> pairDisting) { @@ -141,6 +144,10 @@ public class RuleDefinitionAnalyzer extends RuleDefinitionProcessorImpl { } this.currentPackagedElement = (PackagedElement) objects[0]; this.selectedRuleDefinition = ruleDefinition; + Object parentRule = this.selectedRuleDefinition.getParentObject(); + if(parentRule instanceof ChoiceDefinition){ + this.generateDTDistinguisher = (RuleDefinitionDistinguisherUtil.elementsShouldBeDistinguisedWithDT((ChoiceDefinition) parentRule)); + } if (objects.length > 1) { this.ignoreTemplateIdRequirements = (Boolean) objects[1]; } @@ -162,6 +169,9 @@ public class RuleDefinitionAnalyzer extends RuleDefinitionProcessorImpl { return; } updateDistinguisherFollowerIfNeeded(); + + // Add a method that adds and 'AND' constraint based on datatype to the processing + super.process(this.selectedRuleDefinition, objects); // -- still not done @@ -418,13 +428,13 @@ public class RuleDefinitionAnalyzer extends RuleDefinitionProcessorImpl { @Override public void processMinimumMultiplicity(Integer minimumMultiplicity) { // TODO: 23/12/2021 Highly need to be reviewed - if (this.ignoreMinCardinality()) { - // this is the case where the RuleDefinition is included in a choice - return; - } +// if (this.ignoreMinCardinality()) { +// // this is the case where the RuleDefinition is included in a choice +// return; +// } if (checkIfConstraintCanBeGeneratedForMinimumMultiplicity(minimumMultiplicity, this.selectedRuleDefinition)) { if (!(this.selectedRuleDefinition.getParentObject() instanceof TemplateDefinition)) { - fulfillOwnedRuleForConstraintGenerator((new RDMinimumMultiplicityAnalyzer()), this.currentPackagedElement, OwnedRuleKind.CARDINALITY, + fulfillOwnedRuleForConstraintGenerator((new RDMinimumMultiplicityAnalyzer(this.generateDTDistinguisher)), this.currentPackagedElement, OwnedRuleKind.CARDINALITY, (minimumMultiplicity.intValue() == 0 && selectedRuleDefinition.getConformance().equals(ConformanceType.R))? OwnedRuleType.WARNING: OwnedRuleType.ERROR); } else { @@ -458,7 +468,7 @@ public class RuleDefinitionAnalyzer extends RuleDefinitionProcessorImpl { boolean isPossibleToHaveConstraint = maximumMultiplicity.intValue() < elementMaxMultiplicity; if (isPossibleToHaveConstraint || (selectedRuleDefinition.getParentObject() instanceof RuleDefinition && ((RuleDefinition) selectedRuleDefinition.getParentObject()).getParentObject() instanceof ChoiceDefinition )) { - fulfillOwnedRuleForConstraintGenerator((new RDMaximumMultiplicityAnalyzer()), this.currentPackagedElement, OwnedRuleKind.CARDINALITY); + fulfillOwnedRuleForConstraintGenerator((new RDMaximumMultiplicityAnalyzer(this.generateDTDistinguisher)), this.currentPackagedElement, OwnedRuleKind.CARDINALITY); } } diff --git a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMaximumMultiplicityAnalyzer.java b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMaximumMultiplicityAnalyzer.java index 109226d..467d688 100644 --- a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMaximumMultiplicityAnalyzer.java +++ b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMaximumMultiplicityAnalyzer.java @@ -17,7 +17,17 @@ import net.ihe.gazelle.tempmodel.org.decor.art.utils.RuleDefinitionUtil; public class RDMaximumMultiplicityAnalyzer implements ConstraintGenerator{ static final int MAX_INTEGER = 1000000000; - + + private final Boolean generateDTDistinguisher; + + public RDMaximumMultiplicityAnalyzer(Boolean generateDTDistinguisher) { + this.generateDTDistinguisher = generateDTDistinguisher; + } + + public RDMaximumMultiplicityAnalyzer() { + this.generateDTDistinguisher = Boolean.FALSE; + } + @Override public String generateOCLConstraint(RuleDefinition ruleDefinition) { Integer maximumMultiplicity = null; @@ -30,7 +40,8 @@ public class RDMaximumMultiplicityAnalyzer implements ConstraintGenerator{ maximumMultiplicity = Integer.valueOf(maximumMultiplicityString); } } - String contextRule = (new OCLGenerator()).generateRuleToParentFromPath(ruleDefinition); + OCLGenerator generator = new OCLGenerator(); + String contextRule = generator.generateRuleToParentFromPath(ruleDefinition); String res = ""; if (contextRule.equals("self")){ res = contextRule + "." + RuleDefinitionUtil.getRealNameOfRuleDefinition(ruleDefinition) @@ -49,6 +60,9 @@ public class RDMaximumMultiplicityAnalyzer implements ConstraintGenerator{ + "->size()<" + + (maximumMultiplicity.intValue() +1) + ")"; } } + if(generateDTDistinguisher == Boolean.TRUE){ + return generator.appendDTDistinguisher(ruleDefinition, res); + } return res; } diff --git a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMinimumMultiplicityAnalyzer.java b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMinimumMultiplicityAnalyzer.java index 81db57b..056b87a 100644 --- a/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMinimumMultiplicityAnalyzer.java +++ b/hl7templates/hl7templates-generator-jar/src/main/java/net/ihe/gazelle/tempgen/rules/analyzer/RDMinimumMultiplicityAnalyzer.java @@ -15,6 +15,16 @@ import net.ihe.gazelle.tempmodel.org.decor.art.utils.RuleDefinitionUtil; */ public class RDMinimumMultiplicityAnalyzer implements ConstraintGenerator { + private final Boolean generateDTDistinguisher; + + public RDMinimumMultiplicityAnalyzer(Boolean generateDTDistinguisher) { + this.generateDTDistinguisher = generateDTDistinguisher; + } + + public RDMinimumMultiplicityAnalyzer(){ + this.generateDTDistinguisher = Boolean.FALSE; + } + @Override public String generateOCLConstraint(RuleDefinition ruleDefinition) { OCLGenerator generator = new OCLGenerator(); @@ -26,6 +36,9 @@ public class RDMinimumMultiplicityAnalyzer implements ConstraintGenerator { } else { constraint.append(generator.getMinimumMultiplicityRuleForRD(constraint.toString(), ruleDefinition)); } + if(this.generateDTDistinguisher == Boolean.TRUE){ + return generator.appendDTDistinguisher(ruleDefinition, constraint.toString()); + } return constraint.toString(); } diff --git a/hl7templates/hl7templates-generator-jar/src/test/resources/processors/decor_name.xml b/hl7templates/hl7templates-generator-jar/src/test/resources/processors/decor_name.xml new file mode 100644 index 0000000..a4c2c62 --- /dev/null +++ b/hl7templates/hl7templates-generator-jar/src/test/resources/processors/decor_name.xml @@ -0,0 +1,195 @@ +<?xml-model href="http://art-decor.org/ADAR/rv/DECOR.xsd" type="application/xml" schematypens="http://purl.oclc.org/dsdl/schematron"?> +<decor xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:epsos="urn:epSOS:ps:ps:2010" xsi:noNamespaceSchemaLocation="http://art-decor.org/ADAR/rv/DECOR.xsd" repository="true" epsos:dummy-1="urn:epSOS:ps:ps:2010" xsi:dummy-2="http://www.w3.org/2001/XMLSchema-instance" versionDate="2015-06-09T11:03:41" versionLabel="" compilationDate="2015-06-09T11:03:41" language="en-US" deeplinkprefix="http://decor.nictiz.nl/art-decor/" deeplinkprefixservices="http://decor.nictiz.nl/decor/services/"> + <project> + </project> + <rules> + <template id="2.16.840.1.113883.10.20.22.4.16" name="MedicationActivity" displayName="Medication Activity" effectiveDate="2013-01-31T00:00:00" statusCode="draft" versionLabel="1.1"> + <desc language="en-US">A medication activity describes substance administrations that have actually occurred (e.g. pills ingested or injections given) or are intended to occur (e.g. "take 2 tablets twice a day for the next 10 days"). Medication activities in "INT" mood are reflections of what a clinician intends a patient to be taking. Medication activities in "EVN" mood reflect actual + use. Medication timing is complex. This template requires that there be a substanceAdministration/effectiveTime valued with a time interval, representing the start and stop dates. Additional effectiveTime elements are optional, and can be used to represent frequency and other aspects of more detailed dosing regimens.</desc> + <classification type="cdaentrylevel"></classification> + <context id="**"></context> + <element name="cda:substanceAdministration" id="2.16.840.1.113883.3.1937.99.3.9.211"> + <desc language="en-US">Medication Activity SHOULD include doseQuantity OR rateQuantity</desc> + <attribute name="classCode" value="SBADM" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.212"> + <item label="conf-7496"></item> + </attribute> + <attribute name="moodCode" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.213"> + <item label="conf-7497"></item> + <vocabulary valueSet="2.16.840.1.113883.11.20.9.18"></vocabulary> + </attribute> + <element name="cda:templateId" datatype="II" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" isMandatory="true" id="2.16.840.1.113883.3.1937.99.3.9.214"> + <desc language="en-US">SHALL contain exactly one [1..1] templateId (CONF:7499) such that it</desc> + <item label="conf-7499"></item> + <attribute name="root" value="2.16.840.1.113883.10.20.22.4.16" datatype="uid" id="2.16.840.1.113883.3.1937.99.3.9.215"> + <item label="conf-10504"></item> + </attribute> + </element> + <element name="cda:id" datatype="II" minimumMultiplicity="1" maximumMultiplicity="*" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.216"> + <desc language="en-US">SHALL contain at least one [1..*] id (CONF:7500).</desc> + <item label="conf-7500"></item> + </element> + <element name="cda:code" datatype="CD" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.217"> + <desc language="en-US">MAY contain zero or one [0..1] code (CONF:7506).</desc> + <item label="conf-7506"></item> + </element> + <element name="cda:text" datatype="ED" minimumMultiplicity="0" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.218"> + <desc language="en-US">SHOULD contain zero or one [0..1] text (CONF:7501).</desc> + <item label="conf-7501"></item> + <element name="cda:reference" minimumMultiplicity="0" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.219"> + <desc language="en-US">The text, if present, SHOULD contain zero or one [0..1] reference (CONF:15977).<p></p>This reference/@value SHALL begin with a '#' and SHALL point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1)</desc> + <item label="conf-15977"></item> + <attribute name="value" isOptional="true" id="2.16.840.1.113883.3.1937.99.3.9.220"> + <item label="conf-15978"></item> + </attribute> + <assert role="error" test="not(@value) or starts-with(@value, '#')">This reference/@value SHALL begin with a '#' and SHALL point to its corresponding narrative (using the approach defined in CDA Release 2, section 4.3.5.1)</assert> + </element> + </element> + <element name="cda:statusCode" datatype="CS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.221"> + <desc language="en-US">SHALL contain exactly one [1..1] statusCode (CONF:7507).</desc> + <item label="conf-7507"></item> + </element> +<!-- <choice minimumMultiplicity="1" maximumMultiplicity="1">--> +<!-- <desc language="en-US">This effectiveTime SHALL contain either a low or a @value but not both (CONF:26528).<br clear="none" />--> +<!-- </desc>--> +<!-- <item label="conf-26528"></item>--> +<!-- <element name="cda:effectiveTime" datatype="TS" minimumMultiplicity="0" maximumMultiplicity="1" conformance="C" id="2.16.840.1.113883.3.1937.99.3.9.5850">--> +<!-- <desc language="en-US">Note: This effectiveTime represents either the medication duration (i.e., the time the medication was started and stopped) or the single-administration timestamp.<br clear="none" />--> +<!-- </desc>--> +<!-- <item label="conf-26525">--> +<!-- <desc language="en-US">Note: indicates a single-administration timestamp [CONF:26525]<br clear="none" />--> +<!-- </desc>--> +<!-- </item>--> +<!-- <attribute name="value" datatype="ts" isOptional="true" id="2.16.840.1.113883.3.1937.99.3.9.5851"></attribute>--> +<!-- </element>--> +<!-- <element name="cda:effectiveTime[not(@operator='A')]" datatype="IVL_TS" minimumMultiplicity="0" maximumMultiplicity="1" conformance="C" id="2.16.840.1.113883.3.1937.99.3.9.222">--> +<!-- <desc language="en-US">SHALL contain exactly one [1..1] effectiveTime (CONF:7508) such that it</desc>--> +<!-- <item label="conf-7508"></item>--> +<!-- <element name="cda:low" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.223">--> +<!-- <desc language="en-US">SHALL contain exactly one [1..1] low (CONF:26526).<br clear="none" />Note: indicates when medication started<br clear="none" />--> +<!-- </desc>--> +<!-- <item label="conf-26526"></item>--> +<!-- </element>--> +<!-- <element name="cda:high" datatype="TS" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.224">--> +<!-- <desc language="en-US">SHALL contain exactly one [1..1] high (CONF:26527).<br clear="none" />Note: indicates when medication stopped<br clear="none" />--> +<!-- </desc>--> +<!-- <item label="conf-26527"></item>--> +<!-- </element>--> +<!-- </element>--> +<!-- </choice>--> + <element name="cda:effectiveTime[@operator='A']" datatype="SXCM_TS" minimumMultiplicity="0" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.225"> + <desc language="en-US">SHOULD contain zero or one [0..1] effectiveTime (CONF:7513) such that it<p></p> SHALL contain exactly one [1..1] @xsi:type=â€PIVL_TS†or “EIVL_TSâ€</desc> + <item label="conf-7513"></item> + <attribute name="operator" value="A" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.226"> + <item label="conf-9106"></item> + </attribute> + <assert role="error" test="count(preceding-sibling::cda:effectiveTime) = 1 and .[@operator='A'][@xsi:type='PIVL_TS' or @xsi:type='EIVL_TS']">SHOULD contain zero or one [0..1] effectiveTime (CONF:7513) such that it</assert> + </element> + <element name="cda:repeatNumber" datatype="IVL_INT" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.227"> + <desc language="en-US">MAY contain zero or one [0..1] repeatNumber (CONF:7555).<p></p>In "INT" (intent) mood, the repeatNumber defines the number of allowed administrations. For example, a repeatNumber of "3" means that the substance can be administered up to 3 times. In "EVN" (event) mood, the repeatNumber is the number of occurrences. For example, a repeatNumber of "3" in a + substance administration event means that the current administration is the 3rd in a series.</desc> + <item label="conf-7555"></item> + </element> + <element name="cda:routeCode" datatype="CE" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.228"> + <desc language="en-US">MAY contain zero or one [0..1] routeCode, which SHALL be selected from ValueSet Medication Route FDA 2.16.840.1.113883.3.88.12.3221.8.7 DYNAMIC (CONF:7514).</desc> + <item label="conf-7514"></item> + <vocabulary valueSet="2.16.840.1.113883.3.88.12.3221.8.7"></vocabulary> + </element> + <element name="cda:approachSiteCode" datatype="CD" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.229"> + <desc language="en-US">MAY contain zero or one [0..1] approachSiteCode, where the code SHALL be selected from ValueSet Body Site 2.16.840.1.113883.3.88.12.3221.8.9 DYNAMIC (CONF:7515).</desc> + <item label="conf-7515"></item> + <vocabulary valueSet="2.16.840.1.113883.3.88.12.3221.8.9"></vocabulary> + </element> + <choice minimumMultiplicity="0"> + <desc language="nl-NL">Medication Activity SHOULD include doseQuantity OR rateQuantity</desc> + <element name="cda:doseQuantity" datatype="IVL_PQ" minimumMultiplicity="0" maximumMultiplicity="1" conformance="R" id="2.16.840.1.113883.3.1937.99.3.9.230"> + <desc language="en-US">SHOULD contain zero or one [0..1] doseQuantity (CONF:7516).<p></p>Pre-coordinated consumable: If the consumable code is a pre-coordinated unit dose (e.g. "metoprolol 25mg tablet") then doseQuantity is a unitless number that indicates the number of products given per administration (e.g. "2", meaning 2 x "metoprolol 25mg tablet").<p></p>Not pre-coordinated + consumable: If the consumable code is not pre-coordinated (e.g. is simply "metoprolol"), then doseQuantity must represent a physical quantity with @unit, e.g. "25" and "mg", specifying the amount of product given per administration.</desc> + <item label="conf-7516"></item> + <attribute name="unit" datatype="cs" isOptional="true" id="2.16.840.1.113883.3.1937.99.3.9.231"> + <item label="conf-7526"></item> + <vocabulary valueSet="2.16.840.1.113883.1.11.12839"></vocabulary> + </attribute> + </element> + <element name="cda:rateQuantity" datatype="IVL_PQ" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.232"> + <desc language="en-US">MAY contain zero or one [0..1] rateQuantity (CONF:7517).</desc> + <item label="conf-7517"></item> + <attribute name="unit" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.233"> + <item label="conf-7525"></item> + <vocabulary valueSet="2.16.840.1.113883.1.11.12839"></vocabulary> + </attribute> + </element> + </choice> + <element name="cda:maxDoseQuantity" datatype="RTO_PQ_PQ" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.234"> + <desc language="en-US">MAY contain zero or one [0..1] maxDoseQuantity (CONF:7518).</desc> + <item label="conf-7518"></item> + </element> + <element name="cda:administrationUnitCode" datatype="CE" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.235"> + <desc language="en-US"><span style="font-family: Arial, Helvetica, Geneva, sans-serif; font-size: 12px;">MAY contain zero or one [0..1] administrationUnitCode, which SHALL be selected from ValueSet AdministrationUnitDoseForm 2.16.840.1.113762.1.4.1021.30 DYNAMIC (CONF:7519).</span><br clear="none" /> + </desc> + <item label="conf-7519"></item> + <vocabulary valueSet="2.16.840.1.113762.1.4.1021.30" flexibility="dynamic"></vocabulary> + </element> + <element name="cda:consumable" contains="2.16.840.1.113883.10.20.22.4.23" flexibility="2013-01-31T00:00:00" minimumMultiplicity="1" maximumMultiplicity="1" conformance="R" isMandatory="false" id="2.16.840.1.113883.3.1937.99.3.9.236"> + <item label="conf-7520"></item> + </element> + <element name="cda:performer" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.237"> + <desc language="en-US">MAY contain zero or one [0..1] performer (CONF:7522).</desc> + <item label="conf-7522"></item> + </element> + <element name="cda:participant" contains="2.16.840.1.113883.10.20.22.4.24" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="*" id="2.16.840.1.113883.3.1937.99.3.9.238"> + <item label="conf-7523"></item> + <attribute name="typeCode" value="CSM" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.239"> + <item label="conf-7524"></item> + </attribute> + </element> + <element name="cda:entryRelationship" contains="2.16.840.1.113883.10.20.22.4.19" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="*" id="2.16.840.1.113883.3.1937.99.3.9.240"> + <item label="conf-7536"></item> + <attribute name="typeCode" value="RSON" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.241"> + <item label="conf-7537"></item> + </attribute> + </element> + <element name="cda:entryRelationship" contains="2.16.840.1.113883.10.20.22.4.20" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.242"> + <item label="conf-7539"></item> + <attribute name="typeCode" value="SUBJ" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.243"> + <item label="conf-7540"></item> + </attribute> + <attribute name="inversionInd" value="true" datatype="bl" id="2.16.840.1.113883.3.1937.99.3.9.244"> + <item label="conf-7542"></item> + </attribute> + </element> + <element name="cda:entryRelationship" contains="2.16.840.1.113883.10.20.22.4.17" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.245"> + <item label="conf-7543"></item> + <attribute name="typeCode" value="REFR" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.246"> + <item label="conf-7547"></item> + </attribute> + </element> + <element name="cda:entryRelationship" contains="2.16.840.1.113883.10.20.22.4.18" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="*" id="2.16.840.1.113883.3.1937.99.3.9.247"> + <item label="conf-7549"></item> + <attribute name="typeCode" value="REFR" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.248"> + <item label="conf-7553"></item> + </attribute> + </element> + <element name="cda:entryRelationship" contains="2.16.840.1.113883.10.20.22.4.9" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.249"> + <item label="conf-7552"></item> + <attribute name="typeCode" value="CAUS" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.250"> + <item label="conf-7544"></item> + </attribute> + </element> + <element name="cda:entryRelationship" contains="2.16.840.1.113883.10.20.22.4.147" flexibility="2015-08-13T00:00:00" minimumMultiplicity="0" maximumMultiplicity="1" id="2.16.840.1.113883.3.1937.99.3.9.5846"> + <attribute name="typeCode" value="COMP" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.5847"> + <item label="conf-32908"> + <desc language="en-US">SHALL contain exactly one [1..1] @typeCode="COMP" Has component (CodeSystem: HL7ActRelationshipType urn:oid:2.16.840.1.113883.5.1002) (CONF:32908).<br clear="none" /> + </desc> + </item> + </attribute> + </element> + <element name="cda:precondition" contains="2.16.840.1.113883.10.20.22.4.25" flexibility="2013-01-31T00:00:00" minimumMultiplicity="0" maximumMultiplicity="*" id="2.16.840.1.113883.3.1937.99.3.9.5848"> + <item label="conf-7546"></item> + <attribute name="typeCode" value="PRCN" datatype="cs" id="2.16.840.1.113883.3.1937.99.3.9.5849"> + <item label="conf-7550"></item> + </attribute> + </element> + </element> + </template> + </rules> +</decor> \ No newline at end of file diff --git a/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionDistinguisherUtil.java b/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionDistinguisherUtil.java index caec88c..0b64f69 100644 --- a/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionDistinguisherUtil.java +++ b/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionDistinguisherUtil.java @@ -10,10 +10,8 @@ import net.ihe.gazelle.tempmodel.org.decor.art.model.TemplateDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import java.util.ArrayList; -import java.util.LinkedHashMap; -import java.util.List; -import java.util.Map; +import javax.xml.namespace.QName; +import java.util.*; import java.util.Map.Entry; /** @@ -123,4 +121,14 @@ public class RuleDefinitionDistinguisherUtil { return null; } + public static Boolean elementsShouldBeDistinguisedWithDT(ChoiceDefinition choiceDefinition){ + Set<String> names = new HashSet<>(); + int count = 0; + for(RuleDefinition rd : ChoiceDefinitionUtil.getElements(choiceDefinition)){ + names.add(RuleDefinitionUtil.getRealNameOfRuleDefinition(rd)); + count++; + } + return Boolean.valueOf(names.size() != count); + } + } diff --git a/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionProblemUtil.java b/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionProblemUtil.java index 23ed812..8ac4639 100644 --- a/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionProblemUtil.java +++ b/hl7templates/hl7templates-model-jar/src/main/java/net/ihe/gazelle/tempmodel/org/decor/art/utils/RuleDefinitionProblemUtil.java @@ -9,9 +9,12 @@ import net.ihe.gazelle.tempmodel.org.decor.art.model.TemplateDefinition; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import javax.xml.namespace.QName; +import java.util.HashSet; import java.util.List; import java.util.Map; import java.util.Map.Entry; +import java.util.Set; /** * @author Abderrazek Boufahja @@ -89,19 +92,31 @@ public class RuleDefinitionProblemUtil { if (parent instanceof TemplateDefinition) { List<RuleDefinition> lrd = TemplateDefinitionUtil.getElementsByName((TemplateDefinition) parent, RuleDefinitionUtil.getRealNameOfRuleDefinition(ruleDefinition)); - return lrd.size() == 1; + Set<QName> datatypes = new HashSet<>(); + for(RuleDefinition rd : lrd){ + datatypes.add(rd.getDatatype()); + } + return lrd.size() == datatypes.size(); } else if (parent instanceof RuleDefinition) { RuleDefinition parentRD = (RuleDefinition) parent; List<RuleDefinition> lrd = RuleDefinitionUtil.getElementsByName(parentRD, RuleDefinitionUtil.getRealNameOfRuleDefinition(ruleDefinition)); - return lrd.size() == 1; + Set<QName> datatypes = new HashSet<>(); + for(RuleDefinition rd : lrd){ + datatypes.add(rd.getDatatype()); + } + return lrd.size() == datatypes.size(); } else if (parent instanceof ChoiceDefinition) { ChoiceDefinition choiceDefinition = (ChoiceDefinition) parent; if (choiceDefinition.getParentObject() instanceof RuleDefinition) { RuleDefinition parentOfChoice = (RuleDefinition) choiceDefinition.getParentObject(); List<RuleDefinition> lrd = RuleDefinitionUtil.getElementsByName(parentOfChoice, RuleDefinitionUtil.getRealNameOfRuleDefinition(ruleDefinition)); - return lrd.size() == 1; + Set<QName> datatypes = new HashSet<>(); + for(RuleDefinition rd : lrd){ + datatypes.add(rd.getDatatype()); + } + return lrd.size() == datatypes.size(); } } return false; diff --git a/hl7templates/hl7templates-packager-jar/pom.xml b/hl7templates/hl7templates-packager-jar/pom.xml index 652546f..eed4248 100644 --- a/hl7templates/hl7templates-packager-jar/pom.xml +++ b/hl7templates/hl7templates-packager-jar/pom.xml @@ -193,12 +193,12 @@ <dependency> <groupId>net.ihe.gazelle.model</groupId> <artifactId>cda-model</artifactId> - <version>3.0.0</version> + <version>3.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>net.ihe.gazelle.model</groupId> <artifactId>cdaepsos-model</artifactId> - <version>3.0.0</version> + <version>3.0.0-SNAPSHOT</version> </dependency> <dependency> <groupId>org.apache.logging.log4j</groupId> diff --git a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCExecutor.java b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCExecutor.java index a8b89d2..ca02c2b 100644 --- a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCExecutor.java +++ b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/GOCExecutor.java @@ -21,14 +21,12 @@ public class GOCExecutor { private String hl7Resources; - private String hl7Conf; private static final SimpleDateFormat formatter = new SimpleDateFormat("dd-MM-yyyy-HH-mm-ss"); - public GOCExecutor(String outputFile, String hl7Resources, String hl7Conf) { + public GOCExecutor(String outputFile, String hl7Resources) { this.outputFile = outputFile; this.hl7Resources = hl7Resources; - this.hl7Conf = hl7Conf; } public GOCExecutor(String outputFile){ @@ -36,12 +34,12 @@ public class GOCExecutor { } public ValidatorConfiguration execute(BBRResource bbrResource, String mvnExecPath){ - return execute(bbrResource,mvnExecPath,null,true,false,null,false); + return execute(bbrResource,mvnExecPath,null,true,false,null,false,null); } public ValidatorConfiguration execute(BBRResource bbrResource,String mvnExecPath, String versionLabel, Boolean ignoreTemplateIdRequirements, - Boolean ignoreCdaBasicRequirements, String serviceName,Boolean ignoreChoicesPredicates) { + Boolean ignoreCdaBasicRequirements, String serviceName,Boolean ignoreChoicesPredicates, String hl7Conf) { try{ addSubDirectoryToOutput("/validator"); @@ -61,9 +59,9 @@ public class GOCExecutor { this.hl7Resources = this.hl7Resources==null? getWorkspaceRoot()+"/hl7templates-resources":this.hl7Resources; - this.hl7Conf = this.hl7Conf == null ? "cdabasic":this.hl7Conf; + String HL7ConfFolder = (hl7Conf == null) ? "cdabasic":hl7Conf; - EnvironementConfiguration.setSystemVariables("HL7TEMP_CDACONFFOLDERNAME",hl7Conf, + EnvironementConfiguration.setSystemVariables("HL7TEMP_CDACONFFOLDERNAME",HL7ConfFolder, "HL7TEMP_RESOURCES_PATH",this.hl7Resources,"JAVA_EXEC",System.getProperty("java.home")+"/bin/java"); EnvironementConfiguration.configure(); diff --git a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/HL7Templates2GOC.java b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/HL7Templates2GOC.java index 19290a7..5c744d9 100644 --- a/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/HL7Templates2GOC.java +++ b/hl7templates/hl7templates-packager-jar/src/main/java/net/ihe/gazelle/lib/hl7templatespackager/peripherals/HL7Templates2GOC.java @@ -201,9 +201,9 @@ public class HL7Templates2GOC implements GOCEntry { try { parser.parseArgument(args); - GOCExecutor gocExecutor = new GOCExecutor(outputFile, HL7TEMP_RESOURCES_PATH,HL7TEMP_CDACONFFOLDERNAME); + GOCExecutor gocExecutor = new GOCExecutor(outputFile, HL7TEMP_RESOURCES_PATH); gocExecutor.execute(new PathBBRResource(bbr),mvnExecPath,versionLabel, - ignoreTemplateIdRequirements,ignoreCdaBasicRequirements, serviceName,ignoreChoicesPredicates); + ignoreTemplateIdRequirements,ignoreCdaBasicRequirements, serviceName,ignoreChoicesPredicates, HL7TEMP_CDACONFFOLDERNAME); } catch (CmdLineException e) { System.err.println("Exception in the execution of command line"); -- GitLab