Skip to content
This repository was archived by the owner on Dec 21, 2022. It is now read-only.

Conversation

@vitorpamplona
Copy link
Contributor

@vitorpamplona vitorpamplona commented Jun 28, 2022

Merge after: #581

This PR splits the engine in Jackson and JAXB flavors. It copies the structure from cqframework/clinical_quality_language#760

engine.jackson: ElmLibraryReader implementations using Jackson
engine.jaxb: ElmLibraryReader implementations using JAXB

Both Jackson and JAXB modules can deserialize XML and JSON into Executable ELM.

Since the current engine requires reloading a compiled ELM into executable ELM through JSON, all CQL tests were moved to the Jackson module until a better solution is found for https://github.com/DBCG/cql_engine/issues/586

…ically create new tests based on the number of files in the directory.
# Conflicts:
#	engine.fhir/pom.xml
#	engine.jaxb/pom.xml
#	engine/pom.xml
#	pom.xml
# Conflicts:
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/model/TestDstu2ModelResolver.java
# Conflicts:
#	engine.fhir/pom.xml
#	engine.fhir/src/main/java/org/opencds/cqf/cql/engine/fhir/model/Dstu2FhirModelResolver.java
#	engine.fhir/src/main/java/org/opencds/cqf/cql/engine/fhir/model/Dstu3FhirModelResolver.java
#	engine.fhir/src/main/java/org/opencds/cqf/cql/engine/fhir/model/R4FhirModelResolver.java
#	engine.fhir/src/test/java/org/hl7/fhirpath/CQLOperationsDstu3Test.java
#	engine.fhir/src/test/java/org/hl7/fhirpath/CQLOperationsR4Test.java
#	engine.fhir/src/test/java/org/hl7/fhirpath/TestLibraryLoader.java
#	engine.fhir/src/test/java/org/hl7/fhirpath/TranslatorHelper.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/data/FhirExecutionTestBase.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/data/TestFhirDataProviderDstu3.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/model/TestDstu2ModelResolver.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/retrieve/TestDstu3FhirQueryGenerator.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/retrieve/TestR4FhirQueryGenerator.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/retrieve/TestRestFhirRetrieveProvider.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlExecutionTestBase.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlPerformanceIT.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TestLibraryLoader.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TranslatingTestBase.java
#	engine.jaxb/pom.xml
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ANCFHIRTests.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/CMS53Tests.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmRegressionTests.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmTests.java
#	engine/pom.xml
#	engine/src/main/java/org/opencds/cqf/cql/engine/execution/JsonCqlLibraryReader.java
#	engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java
#	engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlTestSuite.java
#	pom.xml
# Conflicts:
#	engine.fhir/pom.xml
#	engine.fhir/src/test/java/org/hl7/fhirpath/TestLibraryLoader.java
#	engine.fhir/src/test/java/org/hl7/fhirpath/TranslatorHelper.java
#	engine.fhir/src/test/java/org/opencds/cqf/cql/engine/fhir/data/FhirExecutionTestBase.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlEngineTests.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlExecutionTestBase.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/CqlPerformanceIT.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TestLibraryLoader.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TranslatingTestBase.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ANCFHIRTests.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/CMS53Tests.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmRegressionTests.java
#	engine.jaxb/src/test/java/org/opencds/cqf/cql/engine/execution/ElmTests.java
#	engine/pom.xml
#	engine/src/main/java/org/opencds/cqf/cql/engine/execution/JsonCqlLibraryReader.java
#	engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlInternalTypeRepresentationSuiteTest.java
#	engine/src/test/java/org/opencds/cqf/cql/engine/execution/CqlTestSuite.java
@vitorpamplona vitorpamplona marked this pull request as ready for review August 8, 2022 19:06
Copy link
Contributor

@JPercival JPercival left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Got about half-way through the review, but there's a ton of noise due to different import ordering. Can you take a look at that and see if you can match the current pattern?

# Conflicts:
#	engine.fhir/src/test/java/org/hl7/fhirpath/TestLibraryLoader.java
#	engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/CqlToElmBaseMixIn.java
#	engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ElementMixin.java
#	engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ExpressionDefMixin.java
#	engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/ExpressionMixin.java
#	engine.jackson/src/main/java/org/opencds/cqf/cql/engine/serializing/jackson/mixins/TypeSpecifierMixin.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TestLibraryLoader.java
#	engine.jackson/src/test/java/org/opencds/cqf/cql/engine/execution/TranslatingTestBase.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/ElementMixin.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/Executable.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/ExpressionMixin.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/execution/TypeSpecifierMixin.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/serialization/ElementMixin.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/serialization/ExpressionMixin.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/elm/serialization/TypeSpecifierMixin.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/execution/JsonCqlLibraryReader.java
#	engine/src/main/java/org/opencds/cqf/cql/engine/serializing/LibraryWrapper.java
@vitorpamplona
Copy link
Contributor Author

@JPercival ready for you again.


public String convertToJson(org.hl7.elm.r1.Library library) throws IOException {
StringWriter writer = new StringWriter();
ElmLibraryWriterFactory.getWriter("application/elm+json").write(library, writer);
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

There's an enum for this now: LibraryContentType.XML.mimeType()

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Only available in the 2.1.0 release :)

<counter>LINE</counter>
<value>COVEREDRATIO</value>
<minimum>0.50</minimum>
<minimum>0.02</minimum>
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

This does raise the question of how to best get coverage in the engine itself. There's not much in the way of unit tests for individual Evaluators.

Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Because most of the tests uses jackson to convert to json back and forth, I moved them to the jackson branch, which reduces the coverage ratio of the main engine module. It would be nice for organizational purposes if we had the evaluator's mapper in the engine's test cases.

@JPercival JPercival merged commit b31601c into cqframework:master Aug 23, 2022
@vitorpamplona vitorpamplona deleted the jackson-module branch August 23, 2022 15:27
Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants