From 963dd1280510b3375df63adcd169d51e8a4e4412 Mon Sep 17 00:00:00 2001 From: Anton Vasetenkov Date: Sun, 2 Feb 2025 13:24:21 +1300 Subject: [PATCH 01/11] Convert cql-to-elm to Kotlin Multiplatform --- ...otlin-multiplatform-conventions.gradle.kts | 41 +- ...n-multiplatform-gen-conventions.gradle.kts | 14 - Src/java/cql-to-elm/build.gradle.kts | 35 +- .../cql/cql2elm/CompilerOptions.kt | 8 +- .../cqframework/cql/cql2elm/Cql2ElmVisitor.kt | 146 ++- .../cqframework/cql/cql2elm/CqlCapability.kt | 106 +++ .../cqframework/cql/cql2elm/CqlCompiler.kt | 28 +- .../cql/cql2elm/CqlCompilerException.kt | 6 +- .../cql/cql2elm/CqlCompilerOptions.kt | 4 +- .../cql/cql2elm/CqlIncludeException.kt | 0 .../cql/cql2elm/CqlInternalException.kt | 0 .../cql/cql2elm/CqlSemanticException.kt | 0 .../cql/cql2elm/CqlSyntaxException.kt | 0 .../cqframework/cql/cql2elm/CqlTranslator.kt | 98 ++ .../cql/cql2elm/CqlTranslatorOptions.kt | 5 +- .../org/cqframework/cql/cql2elm/DataTypes.kt | 0 .../cql/cql2elm/IdentifierContext.kt | 16 +- .../cqframework/cql/cql2elm/LibraryBuilder.kt | 85 +- .../cql/cql2elm/LibraryContentType.kt | 0 .../cqframework/cql/cql2elm/LibraryManager.kt | 57 +- .../cql/cql2elm/LibrarySourceLoader.kt} | 9 +- .../org/cqframework/cql/cql2elm/MimeType.kt | 0 .../cqframework/cql/cql2elm/ModelManager.kt | 28 + .../cqframework/cql/cql2elm/ModelResolver.kt | 0 .../cql/cql2elm/ResultWithPossibleError.kt | 0 .../cql/cql2elm/SimpleCqlTranslator.kt | 92 ++ .../cql/cql2elm/StringEscapeUtils.kt | 2 + .../cql/cql2elm/SystemFunctionResolver.kt | 25 +- .../cql/cql2elm/SystemMethodResolver.kt | 7 +- .../cqframework/cql/cql2elm/TypeBuilder.kt | 10 +- .../cqframework/cql/cql2elm/elm/ElmEdit.kt | 0 .../cqframework/cql/cql2elm/elm/ElmEditor.kt | 0 .../cqframework/cql/cql2elm/elm/IElmEdit.kt | 0 .../cql/cql2elm/model/CallContext.kt | 0 .../cqframework/cql/cql2elm/model/Chunk.kt | 0 .../cql/cql2elm/model/CompiledLibrary.kt | 23 +- .../cql/cql2elm/model/Conversion.kt | 0 .../cql/cql2elm/model/ConversionMap.kt | 5 +- .../cql/cql2elm/model/FunctionHeader.kt | 9 +- .../cql/cql2elm/model/GenericOperator.kt | 1 - .../cql2elm/model/InstantiationContextImpl.kt | 0 .../cql/cql2elm/model/InstantiationResult.kt | 0 .../cql/cql2elm/model/Invocation.kt | 1 + .../cql/cql2elm/model/LibraryRef.kt | 0 .../cqframework/cql/cql2elm/model/Model.kt | 8 +- .../cql/cql2elm/model/ModelImporter.kt | 11 +- .../cqframework/cql/cql2elm/model/Operator.kt | 0 .../cql/cql2elm/model/OperatorEntry.kt | 0 .../cql/cql2elm/model/OperatorMap.kt | 2 +- .../cql/cql2elm/model/OperatorResolution.kt | 0 .../cql/cql2elm/model/PropertyResolution.kt | 1 + .../cql/cql2elm/model/QueryContext.kt | 0 .../model/ResolvedIdentifierContext.kt | 13 +- .../cql/cql2elm/model/Signature.kt | 0 .../cql/cql2elm/model/SystemLibraryHelper.kt | 1 + .../cql/cql2elm/model/SystemModel.kt | 0 .../cql2elm/model/TimingOperatorContext.kt | 0 .../cqframework/cql/cql2elm/model/Version.kt | 7 +- .../AbstractExpressionInvocation.kt | 0 .../AggregateExpressionInvocation.kt | 0 .../invocation/AnyInCodeSystemInvocation.kt | 0 .../invocation/AnyInValueSetInvocation.kt | 0 .../invocation/BinaryExpressionInvocation.kt | 0 .../model/invocation/CombineInvocation.kt | 0 .../model/invocation/ConvertInvocation.kt | 0 .../model/invocation/DateInvocation.kt | 1 + .../model/invocation/DateTimeInvocation.kt | 1 + .../model/invocation/FirstInvocation.kt | 0 .../model/invocation/FunctionRefInvocation.kt | 0 .../invocation/InCodeSystemInvocation.kt | 0 .../model/invocation/InValueSetInvocation.kt | 0 .../model/invocation/IndexOfInvocation.kt | 0 .../model/invocation/LastInvocation.kt | 0 .../invocation/LastPositionOfInvocation.kt | 0 .../model/invocation/MessageInvocation.kt | 0 .../invocation/NaryExpressionInvocation.kt | 0 .../OperatorExpressionInvocation.kt | 1 + .../model/invocation/PositionOfInvocation.kt | 0 .../model/invocation/RoundInvocation.kt | 0 .../model/invocation/SkipInvocation.kt | 0 .../model/invocation/SplitInvocation.kt | 0 .../invocation/SplitOnMatchesInvocation.kt | 0 .../model/invocation/SubstringInvocation.kt | 0 .../model/invocation/TailInvocation.kt | 0 .../model/invocation/TakeInvocation.kt | 0 .../invocation/TernaryExpressionInvocation.kt | 0 .../model/invocation/TimeInvocation.kt | 1 + .../invocation/UnaryExpressionInvocation.kt | 0 .../ZeroOperandExpressionInvocation.kt | 0 .../cql/cql2elm/preprocessor/BaseInfo.kt | 0 .../preprocessor/CodeDefinitionInfo.kt | 0 .../preprocessor/CodesystemDefinitionInfo.kt | 0 .../preprocessor/ConceptDefinitionInfo.kt | 0 .../preprocessor/ContextDefinitionInfo.kt | 0 .../cql2elm/preprocessor/CqlPreprocessor.kt | 3 +- .../CqlPreprocessorElmCommonVisitor.kt | 26 +- .../preprocessor/ExpressionDefinitionInfo.kt | 0 .../preprocessor/FunctionDefinitionInfo.kt | 0 .../preprocessor/IncludeDefinitionInfo.kt | 0 .../cql/cql2elm/preprocessor/LibraryInfo.kt | 0 .../preprocessor/ParameterDefinitionInfo.kt | 0 .../preprocessor/UsingDefinitionInfo.kt | 0 .../preprocessor/ValuesetDefinitionInfo.kt | 0 .../cql/cql2elm/tracking/TrackBack.kt | 0 .../cql/cql2elm/tracking/Trackable.kt | 11 +- .../cql2elm/tracking/WeakIdentityHashMap.kt | 5 +- .../cql/cql2elm/ucum/UcumService.kt | 3 +- .../cqframework/cql/cql2elm/utils/Calendar.kt | 5 + .../cql/cql2elm/utils/Characters.kt | 5 + .../org/cqframework/cql/cql2elm/utils/Log.kt | 5 + .../cqframework/cql/cql2elm/utils/Source.kt | 11 + .../cqframework/cql/cql2elm/utils/Stack.kt | 37 + .../cql/cql2elm/utils/TranslatorVersion.kt | 3 + .../cql/cql2elm/utils/WeakReference.kt | 5 + .../cql/cql2elm/utils/TranslatorVersionJs.kt | 6 + .../cql/cql2elm/utils/WeakReferenceJs.kt | 7 + .../src/jsMain/resources/index.html | 10 + .../src/jsMain/resources/system-modelinfo.xml | 1 + .../cqframework/cql/cql2elm/CqlCompilerJvm.kt | 32 + .../cql/cql2elm/CqlTranslatorJvm.kt} | 97 +- .../cql/cql2elm/DefaultLibrarySourceLoader.kt | 13 +- .../cql2elm/DefaultLibrarySourceProvider.kt | 2 +- .../cql/cql2elm/DefaultModelInfoProvider.kt | 2 +- .../cql/cql2elm/LibraryManagerJvm.kt | 24 + .../cql/cql2elm/LibrarySourceLoaderJvm.kt | 8 + .../cql/cql2elm/LibrarySourceProvider.kt} | 20 +- .../cql/cql2elm/ModelInfoLoader.kt | 2 +- .../cql/cql2elm/ModelInfoProvider.kt | 12 + .../cql/cql2elm/ModelManagerJvm.kt} | 13 +- .../org/cqframework/cql/cql2elm/PathAware.kt | 0 .../cql2elm/PriorityLibrarySourceLoader.kt | 15 +- .../cql2elm/StringLibrarySourceProvider.kt | 4 +- .../cql/cql2elm/ucum/UcumService.kt} | 14 +- .../cql/cql2elm/utils/TranslatorVersionJvm.kt | 7 + .../cql/cql2elm/utils/WeakReferenceJvm.kt | 3 + .../cql/cql2elm/ArchitectureTest.java | 0 .../cql/cql2elm/CMS146ElmTest.java | 0 .../cql/cql2elm/CMS146SignatureTest.java | 0 .../cqframework/cql/cql2elm/CommentTests.java | 0 .../cql/cql2elm/Cql2ElmVisitorTest.java | 0 .../cql/cql2elm/ElmSupportTest.java | 0 .../cql/cql2elm/EscapeSequenceTests.java | 0 .../EscapeSequenceWithBacktickTests.java | 0 .../cql/cql2elm/GenericOverloadsTests.java | 0 .../cqframework/cql/cql2elm/HidingTests.java | 0 .../cql2elm/IncludedSignatureOutputTests.java | 0 ...IncludedSignatureWithAliasOutputTests.java | 0 .../cql/cql2elm/LibraryManagerTests.java | 0 .../cqframework/cql/cql2elm/LibraryTests.java | 0 .../cqframework/cql/cql2elm/LiteralTests.java | 0 .../cqframework/cql/cql2elm/ModelTests.java | 0 .../ModelWithoutDefaultLoadersTests.java | 0 .../cql/cql2elm/NamespaceTests.java | 2 + .../cql/cql2elm/SemanticTests.java | 0 .../cql/cql2elm/SignatureOutputTests.java | 0 .../cql/cql2elm/StringEscapeUtilsTest.java | 0 .../StringLibrarySourceProviderTest.java | 0 .../cql2elm/TestFhirModelInfoProvider.java | 0 .../cql2elm/TestLibrarySourceProvider.java | 0 .../cqframework/cql/cql2elm/TestLocalId.java | 0 .../cql/cql2elm/TestModelInfoProvider.java | 0 .../cql2elm/TestPointIntervalSignatures.java | 0 .../cqframework/cql/cql2elm/TestUtils.java | 0 .../cql/cql2elm/TranslationTests.java | 0 .../cql/cql2elm/elm/ElmEditorTest.java | 0 .../cql/cql2elm/fhir/dstu2/BaseTest.java | 0 .../cql/cql2elm/fhir/r4/BaseTest.java | 0 .../cql/cql2elm/fhir/r401/BaseTest.java | 0 .../cql/cql2elm/fhir/stu3/BaseTest.java | 0 .../cql/cql2elm/fhir/stu301/BaseTest.java | 0 .../cql/cql2elm/fhir/v14/BaseTest.java | 0 .../cql/cql2elm/fhir/v16/BaseTest.java | 0 .../cql/cql2elm/fhir/v18/BaseTest.java | 0 .../cql/cql2elm/fhir/v18/PathTests.java | 0 .../cql/cql2elm/fhir/v32/BaseTest.java | 0 .../matchers/ConvertsToDecimalFrom.java | 0 .../cql2elm/matchers/HasTypeAndResult.java | 0 .../cql/cql2elm/matchers/ListOfLiterals.java | 0 .../cql/cql2elm/matchers/LiteralFor.java | 0 .../cql/cql2elm/matchers/QdmDataType.java | 0 .../cql/cql2elm/matchers/Quick2DataType.java | 0 .../cql/cql2elm/matchers/QuickDataType.java | 0 .../model/GentestModelInfoProvider.java | 0 .../model/GentestModelInfoProviderSad1.java | 0 .../cql/cql2elm/model/ModelImporterTest.java | 0 .../cql/cql2elm/model/VersionTest.java | 0 .../cql2elm/operators/AgeOperatorsTest.java | 0 .../operators/AggregateOperatorsTest.java | 6 +- .../cql/cql2elm/operators/AggregateTest.java | 0 .../operators/ArithmeticOperatorsTest.java | 6 +- .../operators/CqlComparisonOperatorsTest.java | 0 .../operators/CqlIntervalOperatorsTest.java | 0 .../operators/CqlListOperatorsTest.java | 0 .../operators/DateTimeOperatorsTest.java | 6 +- .../cql2elm/operators/ListOperatorsTest.java | 6 +- .../operators/NullologicalOperatorsTest.java | 0 .../cql/cql2elm/operators/QueryTest.java | 0 .../cql/cql2elm/operators/SortingTest.java | 0 .../operators/StringOperatorsTest.java | 6 +- .../cql2elm/operators/TimeOperatorsTest.java | 0 .../cql2elm/operators/TypeOperatorsTest.java | 0 .../cql/cql2elm/qdm/v54/BaseTest.java | 0 .../cql/cql2elm/qdm/v55/BaseTest.java | 0 .../cql/cql2elm/qdm/v56/BaseTest.java | 0 .../cql/cql2elm/qicore/v410/BaseTest.java | 0 .../cql/cql2elm/qicore/v411/BaseTest.java | 0 .../cql/cql2elm/qicore/v500/BaseTest.java | 0 .../cql/cql2elm/qicore/v600/BaseTest.java | 0 .../cql/cql2elm/quick/v330/BaseTest.java | 0 .../cql/cql2elm/uscore/v310/BaseTest.java | 0 .../cql/cql2elm/uscore/v311/BaseTest.java | 0 .../cql/cql2elm/uscore/v610/BaseTest.java | 0 .../cql/cql2elm/validation/LocalIdTests.java | 4 +- .../cqframework/cql/cql2elm/who/BaseTest.java | 0 .../cql/cql2elm/Arithmetic_Mixed.cql | 0 .../cql/cql2elm/Arithmetic_Parenthetical.cql | 0 .../cql/cql2elm/CMS146v2_Test_CQM.cql | 0 .../cql/cql2elm/CodeAndConceptTest.cql | 0 .../cqframework/cql/cql2elm/ConvertTest.cql | 0 .../cqframework/cql/cql2elm/CqlAllInOne-1.cql | 0 .../cql/cql2elm/DateTimeLiteralTest.cql | 0 .../cql/cql2elm/DefaultContext.cql | 0 .../cql/cql2elm/DivideMultiple.cql | 0 .../cql/cql2elm/DivideVariables.cql | 0 .../cql/cql2elm/EscapeSequenceTests.cql | 0 .../EscapeSequenceWithBacktickTests.cql | 0 .../cql/cql2elm/GeometricMean_Zero.cql | 0 .../TestHiddenIdentifierArgumentToAlias.cql | 0 .../TestHiddenIdentifierFromReturn.cql | 0 .../TestHidingCaseInsensitiveWarning.cql | 0 ...stHidingCommaMissingInListConstruction.cql | 0 ...tHidingFunctionDefinitionWithOverloads.cql | 0 .../TestHidingIncludeDefinition.cql | 0 .../HidingTests/TestHidingLetAlias.cql | 0 .../TestHidingParameterDefinition.cql | 0 ...nArgumentNotConsideredHiddenIdentifier.cql | 0 .../TestHidingSoMuchNestingHidingComplex.cql | 0 .../TestHidingSoMuchNestingHidingSimple.cql | 0 .../TestHidingSoMuchNestingNormal.cql | 0 .../HidingTests/TestHidingStringLiteral.cql | 0 .../HidingTests/TestHidingUnionSameAlias.cql | 0 .../TestHidingUnionSameAliasEachHides.cql | 0 .../HidingTests/TestHidingVariousUseCases.cql | 0 ...veCaseMismatchExistIdentifier_Issue598.cql | 0 .../cql/cql2elm/InCodeSystemTest.cql | 0 .../org/cqframework/cql/cql2elm/InTest.cql | 0 .../cql/cql2elm/InValueSetTest.cql | 0 .../cql/cql2elm/InvalidEquality.cql | 0 .../org/cqframework/cql/cql2elm/Issue395.cql | 0 .../org/cqframework/cql/cql2elm/Issue405.cql | 0 .../org/cqframework/cql/cql2elm/Issue435.cql | 0 .../org/cqframework/cql/cql2elm/Issue547.cql | 0 .../org/cqframework/cql/cql2elm/Issue558.cql | 0 .../org/cqframework/cql/cql2elm/Issue581.cql | 0 .../org/cqframework/cql/cql2elm/Issue587.cql | 0 .../org/cqframework/cql/cql2elm/Issue592.cql | 0 .../org/cqframework/cql/cql2elm/Issue596.cql | 0 .../org/cqframework/cql/cql2elm/Issue616.cql | 0 .../org/cqframework/cql/cql2elm/Issue617.cql | 0 .../org/cqframework/cql/cql2elm/Issue643.cql | 0 .../org/cqframework/cql/cql2elm/Issue648.cql | 0 .../org/cqframework/cql/cql2elm/Issue827.cql | 0 .../org/cqframework/cql/cql2elm/Issue863.cql | 0 .../cql/cql2elm/IssueEmptySourceInterval.cql | 0 .../LibraryManagerTests/OutOfOrder.cql | 0 .../LibraryTests/AccessModifierBase.cql | 0 .../AccessModifierNonReferencing.cql | 0 .../AccessModifierReferencing.cql | 0 .../LibraryTests/BaseLibrary-lib2020.cql | 0 .../cql/cql2elm/LibraryTests/BaseLibrary.cql | 0 .../DuplicateExpressionLibrary.cql | 0 .../LibraryTests/InvalidBaseLibrary.cql | 0 .../LibraryTests/InvalidLibraryReference.cql | 0 .../InvalidReferencingLibrary.cql | 0 .../cql/cql2elm/LibraryTests/Issue1407.cql | 0 .../LibraryTests/Issue1407ValueSets.cql | 0 .../cql/cql2elm/LibraryTests/Issue641.cql | 0 .../cql2elm/LibraryTests/MissingLibrary.cql | 0 .../ReferencingInvalidBaseLibrary.cql | 0 .../LibraryTests/ReferencingLibrary.cql | 0 .../ReferencingLibraryJsonElm.cql | 0 ...ingLibraryWithNullTypeSpecifierJsonElm.cql | 0 .../LibraryTests/ReferencingLibraryXmlElm.cql | 0 ...SupplementalDataElements_99FHIR4-2.0.0.cql | 0 .../SupplementalDataElements_FHIR4-2.0.0.xml | 0 .../SyntaxErrorReferencingLibrary.cql | 0 .../LibraryTests/SyntaxErrorWithLibrary.cql | 0 .../LibraryTests/SyntaxErrorWithNoLibrary.cql | 0 .../cql/cql2elm/LibraryTests/TestCommon.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent1.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent2.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent3.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent4.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent5.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent6.cql | 0 .../cql/cql2elm/LibraryTests/TestFluent7.cql | 0 ...nctionResolutionWithoutTypeInformation.cql | 0 .../LibraryTests/TestForwardDeclaration.cql | 0 .../TestForwardDeclarationGenericType.cql | 0 ...stForwardDeclarationImplicitConversion.cql | 0 .../TestForwardDeclarationNormalType.cql | 0 ...rdDeclarationScoringImplicitConversion.cql | 0 ...coringImplicitConversionMultipleParams.cql | 0 ...tConversionMultipleParamsCannotResolve.cql | 0 ...icitConversionNonRelevantFunctionFirst.cql | 0 ...estForwardDeclarationScoringNormalType.cql | 0 .../LibraryTests/TestInvalidFunction.cql | 0 .../cql/cql2elm/LibraryTests/TestMeasure.cql | 0 ...nctionResolutionWithoutTypeInformation.cql | 0 ...rdDeclarationScoringImplicitConversion.cql | 0 ...coringImplicitConversionMultipleParams.cql | 0 ...tConversionMultipleParamsCannotResolve.cql | 0 .../TranslationTestsCommon-1.0.cql | 0 .../cql/cql2elm/LibraryTests/expression.cql | 0 .../cql/cql2elm/LibraryTests/expression2.cql | 0 .../LibraryTests/json/BaseLibraryElm.json | 0 .../SupplementalDataElements_FHIR4-2.0.0.json | 0 ...ements_FHIR4_Null_TypeSpecifier-2.0.0.json | 0 .../cql2elm/LocalFunctionResolutionTest.cql | 0 .../cqframework/cql/cql2elm/Log_BaseTen.cql | 0 ...MappingExpansionsRespectSignatureLevel.cql | 0 .../cql/cql2elm/Median_dup_vals_odd.cql | 0 .../cqframework/cql/cql2elm/Median_odd.cql | 0 .../cql/cql2elm/Median_q_diff_units.cql | 0 .../cql/cql2elm/ModelTests/ModelTest.cql | 0 .../cql/cql2elm/ModelTests/test-modelinfo.xml | 0 .../test-modelinfowithgenerics-happy.xml | 0 .../test-modelinfowithgenerics-sad1.xml | 0 .../cql2elm/NamespaceTests/BaseLibrary.cql | 0 .../cql2elm/NamespaceTests/Content/Main.cql | 0 .../Content/ReferencingMain.cql | 0 .../cql/cql2elm/NamespaceTests/Core/Main.cql | 0 .../NamespaceTests/Core/ReferencingMain.cql | 0 .../NamespaceTests/InvalidBaseLibrary.cql | 0 .../InvalidLibraryReference.cql | 0 .../InvalidReferencingLibrary.cql | 0 .../cql/cql2elm/NamespaceTests/Main.cql | 0 .../ReferencingInvalidBaseLibrary.cql | 0 .../NamespaceTests/ReferencingLibrary.cql | 0 .../NamespaceTests/ReferencingMain.cql | 0 .../cql2elm/NamespaceTests/Shared/Main.cql | 0 .../NamespaceTests/Shared/ReferencingMain.cql | 0 .../cql2elm/NullIvlCollapse_NullCollapse.cql | 0 .../cql2elm/OperatorTests/AgeOperators.cql | 0 .../cql/cql2elm/OperatorTests/Aggregate.cql | 0 .../OperatorTests/AggregateOperators.cql | 0 .../OperatorTests/ArithmeticOperators.cql | 0 .../OperatorTests/ComparisonOperators.cql | 0 .../OperatorTests/CqlComparisonOperators.cql | 0 .../OperatorTests/CqlIntervalOperators.cql | 0 .../OperatorTests/CqlListOperators.cql | 0 .../OperatorTests/DateTimeOperators.cql | 0 .../OperatorTests/ForwardReferences.cql | 0 .../cql/cql2elm/OperatorTests/Functions.cql | 0 .../OperatorTests/ImplicitConversions.cql | 0 .../OperatorTests/IntervalOperatorPhrases.cql | 0 .../OperatorTests/IntervalOperators.cql | 0 .../OperatorTests/InvalidCastExpression.cql | 0 .../OperatorTests/InvalidSortClauses.cql | 0 .../cql2elm/OperatorTests/ListOperators.cql | 0 .../OperatorTests/LogicalOperators.cql | 0 .../OperatorTests/MessageOperators.cql | 0 .../OperatorTests/MultiSourceQuery.cql | 0 .../cql/cql2elm/OperatorTests/NameHiding.cql | 0 .../OperatorTests/NullologicalOperators.cql | 0 .../cql/cql2elm/OperatorTests/Query.cql | 0 .../OperatorTests/RecursiveFunctions.cql | 0 .../cql/cql2elm/OperatorTests/Sorting.cql | 0 .../cql2elm/OperatorTests/StringOperators.cql | 0 .../OperatorTests/TerminologyReferences.cql | 0 .../cql2elm/OperatorTests/TimeOperators.cql | 0 .../TupleAndClassConversions.cql | 0 .../cql2elm/OperatorTests/TypeOperators.cql | 0 .../OperatorTests/UndeclaredForward.cql | 0 .../OperatorTests/UndeclaredSignature.cql | 0 .../cqframework/cql/cql2elm/ParameterTest.cql | 0 .../cql/cql2elm/ParameterTestInvalid.cql | 0 .../cql/cql2elm/ParserPerformance.cql | 0 .../cqframework/cql/cql2elm/PropertyTest.cql | 0 .../cql/cql2elm/PropertyTest_ELM.xml | 0 .../cql/cql2elm/QuantityLiteralTest.cql | 0 .../cql/cql2elm/RatioLiteralTest.cql | 0 .../ResolutionTests/ProperlyIncludesTests.cql | 0 .../org/cqframework/cql/cql2elm/RoundDown.cql | 0 .../org/cqframework/cql/cql2elm/RoundUp.cql | 0 .../cqframework/cql/cql2elm/ShouldFail.cql | 0 .../cql/cql2elm/SignatureResolutionTest.cql | 0 .../SignatureTests/GenericOverloadsTests.cql | 0 .../IncludedSignatureOutputTests.cql | 0 .../IncludedSignatureWithAliasOutputTests.cql | 0 .../SignatureTests/SignatureOutputTests.cql | 0 .../cql/cql2elm/TenDividedByTwo.cql | 0 .../cql/cql2elm/TestChoiceAssignment.cql | 0 .../cqframework/cql/cql2elm/TestComments.cql | 0 .../cql/cql2elm/TestCompatibilityLevel3.cql | 0 ...SameTypeDifferentNamespaceGenericTypes.cql | 0 ...nSameTypeDifferentNamespaceNormalTypes.cql | 0 .../cql2elm/TestIdentifierCaseMismatch.cql | 0 .../cql2elm/TestImplicitFHIRHelpers_FHIR4.cql | 0 .../cql/cql2elm/TestIncludedIn.cql | 0 .../TestIncorrectParameterType1204.cql | 0 .../cql/cql2elm/TestNoImplicitCast.cql | 0 .../cql/cql2elm/TestPatientContext.cql | 0 .../cql2elm/TestPointIntervalSignatures.cql | 0 .../cql/cql2elm/TestQuotedForwards.cql | 0 .../cql2elm/TestRelatedContextRetrieve.cql | 0 .../org/cqframework/cql/cql2elm/TestTags.cql | 0 .../org/cqframework/cql/cql2elm/TestUnion.cql | 0 .../cql/cql2elm/TestVSCastFunction.cql | 0 .../cql/cql2elm/TokenRecognitionError.cql | 0 .../cql/cql2elm/TranslationTests.cql | 0 .../TranslatorTests/UnknownIdentifier.cql | 0 .../cqframework/cql/cql2elm/TricksyParse.cql | 0 .../cql/cql2elm/TupleDifferentKeys.cql | 0 .../UncertTuplesWithDiffNullFields.cql | 0 .../cql2elm/abstractClassNotRetrievable.cql | 0 .../fhir/dstu2/EqualityWithConversions.cql | 0 .../cql/cql2elm/fhir/dstu2/TestBundle.cql | 0 .../dstu2/TestChoiceDateRangeOptimization.cql | 0 .../fhir/dstu2/TestConceptConversion.cql | 0 .../fhir/dstu2/TestDoubleListPromotion.cql | 0 .../cql/cql2elm/fhir/dstu2/TestFHIR.cql | 0 .../cql2elm/fhir/dstu2/TestFHIRHelpers.cql | 0 .../cql2elm/fhir/dstu2/TestFHIRNamespaces.cql | 0 .../fhir/dstu2/TestFHIRWithHelpers.cql | 0 .../fhir/dstu2/TestImplicitFHIRHelpers.cql | 0 .../dstu2/TestIntervalImplicitConversion.cql | 0 .../fhir/dstu2/TestParameterContext.cql | 0 .../fhir/dstu2/TestRetrieveWithConcept.cql | 0 .../fhir/r4/EqualityWithConversions.cql | 0 .../cql/cql2elm/fhir/r4/TestBundle.cql | 0 .../r4/TestChoiceDateRangeOptimization.cql | 0 .../cql/cql2elm/fhir/r4/TestChoiceTypes.cql | 0 .../cql2elm/fhir/r4/TestConceptConversion.cql | 0 .../fhir/r4/TestDoubleListPromotion.cql | 0 .../cql/cql2elm/fhir/r4/TestFHIR.cql | 0 .../cql/cql2elm/fhir/r4/TestFHIRHelpers.cql | 0 .../cql/cql2elm/fhir/r4/TestFHIRTiming.cql | 0 .../cql2elm/fhir/r4/TestFHIRWithHelpers.cql | 0 .../fhir/r4/TestImplicitFHIRHelpers.cql | 0 .../r4/TestIntervalImplicitConversion.cql | 0 .../fhir/r4/TestRetrieveWithConcept.cql | 0 .../cql/cql2elm/fhir/r4/TestURIConversion.cql | 0 .../cql/cql2elm/fhir/r4/exm108/EXM108.cql | 848 +++++++++--------- .../cql2elm/fhir/r4/exm108/FHIRHelpers.cql | 600 ++++++------- .../r4/exm108/MATGlobalCommonFunctions.cql | 566 ++++++------ .../r4/exm108/SupplementalDataElements.cql | 92 +- .../cql/cql2elm/fhir/r4/exm108/TJCOverall.cql | 148 +-- .../cql/cql2elm/fhir/r4/exm108/VTEICU.cql | 80 +- .../fhir/r401/EqualityWithConversions.cql | 0 .../cql/cql2elm/fhir/r401/TestBundle.cql | 0 .../r401/TestChoiceDateRangeOptimization.cql | 0 .../cql/cql2elm/fhir/r401/TestChoiceTypes.cql | 0 .../fhir/r401/TestConceptConversion.cql | 0 .../cql/cql2elm/fhir/r401/TestContext.cql | 0 .../fhir/r401/TestDoubleListPromotion.cql | 0 .../r401/TestEncounterParameterContext.cql | 0 .../cql/cql2elm/fhir/r401/TestFHIR.cql | 0 .../cql/cql2elm/fhir/r401/TestFHIRHelpers.cql | 0 .../cql2elm/fhir/r401/TestFHIRNamespaces.cql | 0 .../cql/cql2elm/fhir/r401/TestFHIRPath.cql | 0 .../r401/TestFHIRPathLiteralStringEscapes.cql | 0 .../cql/cql2elm/fhir/r401/TestFHIRTiming.cql | 0 .../cql2elm/fhir/r401/TestFHIRWithHelpers.cql | 0 .../cql2elm/fhir/r401/TestImplicitContext.cql | 0 .../fhir/r401/TestImplicitFHIRHelpers.cql | 0 .../cql/cql2elm/fhir/r401/TestInclude.cql | 0 .../r401/TestIntervalImplicitConversion.cql | 0 .../fhir/r401/TestMeasureParameterContext.cql | 0 .../fhir/r401/TestMedicationRequest.cql | 0 .../cql/cql2elm/fhir/r401/TestOverload.cql | 0 .../cql2elm/fhir/r401/TestOverloadForward.cql | 0 .../fhir/r401/TestParameterContext.cql | 0 .../fhir/r401/TestPluralTerminologyTarget.cql | 0 .../fhir/r401/TestRetrieveWithConcept.cql | 0 .../cql/cql2elm/fhir/r401/TestTrace.cql | 0 .../cql2elm/fhir/r401/TestURIConversion.cql | 0 .../fhir/stu3/EqualityWithConversions.cql | 0 .../cql/cql2elm/fhir/stu3/TestBundle.cql | 0 .../stu3/TestChoiceDateRangeOptimization.cql | 0 .../cql/cql2elm/fhir/stu3/TestChoiceTypes.cql | 0 .../fhir/stu3/TestConceptConversion.cql | 0 .../fhir/stu3/TestDoubleListPromotion.cql | 0 .../cql/cql2elm/fhir/stu3/TestFHIR.cql | 0 .../cql/cql2elm/fhir/stu3/TestFHIRHelpers.cql | 0 .../cql/cql2elm/fhir/stu3/TestFHIRTiming.cql | 0 .../cql2elm/fhir/stu3/TestFHIRWithHelpers.cql | 0 .../fhir/stu3/TestImplicitFHIRHelpers.cql | 0 .../stu3/TestIntervalImplicitConversion.cql | 0 .../fhir/stu3/TestRetrieveWithConcept.cql | 0 .../cql2elm/fhir/stu3/TestURIConversion.cql | 0 .../fhir/stu301/EqualityWithConversions.cql | 0 .../cql/cql2elm/fhir/stu301/TestBundle.cql | 0 .../TestChoiceDateRangeOptimization.cql | 0 .../cql2elm/fhir/stu301/TestChoiceTypes.cql | 0 .../fhir/stu301/TestConceptConversion.cql | 0 .../fhir/stu301/TestDoubleListPromotion.cql | 0 .../cql/cql2elm/fhir/stu301/TestFHIR.cql | 0 .../cql2elm/fhir/stu301/TestFHIRHelpers.cql | 0 .../fhir/stu301/TestFHIRNamespaces.cql | 0 .../TestFHIRPathLiteralStringEscapes.cql | 0 .../cql2elm/fhir/stu301/TestFHIRTiming.cql | 0 .../fhir/stu301/TestFHIRWithHelpers.cql | 0 .../fhir/stu301/TestImplicitFHIRHelpers.cql | 0 .../stu301/TestIntervalImplicitConversion.cql | 0 .../fhir/stu301/TestRetrieveWithConcept.cql | 0 .../cql2elm/fhir/stu301/TestURIConversion.cql | 0 .../cql/cql2elm/fhir/v14/TestFHIR.cql | 0 .../cql/cql2elm/fhir/v16/TestFHIR.cql | 0 .../cql/cql2elm/fhir/v16/TestFHIRHelpers.cql | 0 .../cql2elm/fhir/v16/TestFHIRWithHelpers.cql | 0 .../cql/cql2elm/fhir/v18/PathTests.cql | 0 .../cql/cql2elm/fhir/v18/TestFHIR.cql | 0 .../cql/cql2elm/fhir/v18/TestFHIRHelpers.cql | 0 .../cql2elm/fhir/v18/TestFHIRWithHelpers.cql | 0 .../cql2elm/fhir/v18/fhir-modelinfo-1.8.xml | 0 .../cql/cql2elm/fhir/v32/TestFHIR.cql | 0 .../cql/cql2elm/fhir/v32/TestFHIRHelpers.cql | 0 .../cql2elm/fhir/v32/TestFHIRWithHelpers.cql | 0 .../cql/cql2elm/qdm/v54/TestChoiceTypes.cql | 0 .../cql/cql2elm/qdm/v55/TestChoiceTypes.cql | 0 .../cql/cql2elm/qdm/v56/TestChoiceTypes.cql | 0 .../cql/cql2elm/qdm/v56/TestEntities.cql | 0 ...ltOutpatientEncounters_QICore4-2.0.000.cql | 0 ...essandFrailtyExclusion_QICore4-5.0.000.cql | 0 .../qicore/v410/EXM124_QICore4-8.2.000.cql | 0 .../qicore/v410/EXM165_QICore4-8.5.000.cql | 0 .../qicore/v410/Hospice_QICore4-2.0.000.cql | 0 ...TGlobalCommonFunctions_QICore4-5.0.000.cql | 0 ...SupplementalDataElements_QICore4-2.0.0.cql | 0 .../v410/TJCOverall_QICore4-5.0.000.cql | 0 .../cql/cql2elm/qicore/v410/TestQICore.cql | 0 .../qicore/v410/VTEICU_QICore4-4.0.000.cql | 0 ...ltOutpatientEncounters_QICore4-2.0.000.cql | 0 ...essandFrailtyExclusion_QICore4-5.0.000.cql | 0 .../cql2elm/qicore/v411/AuthoringPatterns.cql | 0 .../cql2elm/qicore/v411/CQMCommon-1.1.000.cql | 0 .../qicore/v411/EXM124_QICore4-8.2.000.cql | 0 .../qicore/v411/EXM165_QICore4-8.5.000.cql | 0 .../qicore/v411/Hospice_QICore4-2.0.000.cql | 0 ...TGlobalCommonFunctions_QICore4-5.0.000.cql | 0 .../qicore/v411/QICoreCommon-1.3.000.cql | 0 ...SupplementalDataElements_QICore4-2.0.0.cql | 0 .../v411/TJCOverall_QICore4-5.0.000.cql | 0 .../cql2elm/qicore/v411/TestChoiceUnion.cql | 0 .../qicore/v411/TestMedicationRequest.cql | 0 .../cql/cql2elm/qicore/v411/TestQICore.cql | 0 .../qicore/v411/VTEICU_QICore4-4.0.000.cql | 0 .../cql2elm/qicore/v500/AuthoringPatterns.cql | 0 .../cql2elm/qicore/v500/CQMCommon-2.0.000.cql | 0 .../qicore/v500/QICoreCommon-2.0.000.cql | 0 .../cql/cql2elm/qicore/v500/TestQICore.cql | 0 .../cql/cql2elm/qicore/v600/TestQICore.cql | 0 .../quick/v330/EqualityWithConversions.cql | 0 .../cql2elm/quick/v330/TestChoiceTypes.cql | 0 .../quick/v330/TestDoubleListPromotion.cql | 0 .../cql/cql2elm/quick/v330/TestFHIRTiming.cql | 0 .../quick/v330/TestImplicitFHIRHelpers.cql | 0 .../v330/TestIntervalImplicitConversion.cql | 0 .../cql2elm/quick/v330/TestURIConversion.cql | 0 .../cql/cql2elm/uscore/v310/TestUSCore.cql | 0 .../cql/cql2elm/uscore/v311/TestUSCore.cql | 0 .../cql/cql2elm/uscore/v610/TestUSCore.cql | 0 .../cql/cql2elm/who/TestSignature.cql | 0 .../cqframework/cql/cql2elm/who/WHOCommon.cql | 0 .../cqframework/cql/cql2elm/CqlCapability.kt | 128 --- .../cql2elm/LibrarySourceProviderFactory.kt | 14 - .../cql/cql2elm/ModelInfoProviderFactory.kt | 14 - .../cql2elm/utils/TranslatorVersionWasmJs.kt | 6 + .../cql/cql2elm/utils/WeakReferenceWasmJs.kt | 7 + Src/java/cql/build.gradle.kts | 10 + Src/java/elm-test/build.gradle.kts | 1 + Src/java/elm-xmlutil/build.gradle.kts | 12 - .../xmlutil/ElmLibraryReaderProvider.kt | 15 +- .../xmlutil/ElmLibraryWriterProvider.kt | 15 +- ...l.elm.serializing.ElmLibraryReaderProvider | 1 - ...l.elm.serializing.ElmLibraryWriterProvider | 1 - .../xmlutil/SerializationRoundTripTest.java | 2 +- .../xmlutil/XSDValidationTest.java | 2 +- .../cqframework/cql/elm/IdObjectFactory.kt | 205 +++++ .../serializing/ElmLibraryReaderProvider.kt | 5 - .../serializing/ElmLibraryWriterProvider.kt | 5 - .../cql/elm/visiting/FunctionalElmVisitor.kt | 15 +- .../serializing/ElmLibraryReaderFactory.kt | 38 - .../serializing/ElmLibraryWriterFactory.kt | 38 - Src/java/model-xmlutil/build.gradle.kts | 10 - 586 files changed, 2313 insertions(+), 1920 deletions(-) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt (92%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt (97%) create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCapability.kt rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt (91%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt (89%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt (99%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlIncludeException.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlInternalException.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlSemanticException.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlSyntaxException.kt (100%) create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslator.kt rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt (90%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/DataTypes.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt (62%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/LibraryBuilder.kt (98%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/LibraryContentType.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt (88%) rename Src/java/cql-to-elm/src/{main/kotlin/org/cqframework/cql/cql2elm/LibrarySourceProvider.kt => commonMain/kotlin/org/cqframework/cql/cql2elm/LibrarySourceLoader.kt} (79%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/MimeType.kt (100%) create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ModelManager.kt rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/ModelResolver.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/ResultWithPossibleError.kt (100%) create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SimpleCqlTranslator.kt rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt (98%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt (97%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt (99%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt (93%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/elm/ElmEdit.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/elm/ElmEditor.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/elm/IElmEdit.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/CallContext.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Chunk.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt (94%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Conversion.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt (99%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt (82%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt (99%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/InstantiationContextImpl.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/InstantiationResult.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt (96%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/LibraryRef.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Model.kt (93%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt (98%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Operator.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/OperatorEntry.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt (98%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/OperatorResolution.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt (98%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/QueryContext.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt (90%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Signature.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt (99%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/SystemModel.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/TimingOperatorContext.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/Version.kt (94%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/AbstractExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/AggregateExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInCodeSystemInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInValueSetInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/BinaryExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/CombineInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/ConvertInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt (96%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt (98%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/FirstInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/FunctionRefInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/InCodeSystemInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/InValueSetInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/IndexOfInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastPositionOfInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/MessageInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/NaryExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt (92%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/PositionOfInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/RoundInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/SkipInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitOnMatchesInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/SubstringInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/TailInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/TakeInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/TernaryExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt (97%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/UnaryExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/model/invocation/ZeroOperandExpressionInvocation.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/BaseInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/CodeDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/CodesystemDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/ConceptDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/ContextDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/CqlPreprocessor.kt (99%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/CqlPreprocessorElmCommonVisitor.kt (97%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/ExpressionDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/FunctionDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/IncludeDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/LibraryInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/ParameterDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/UsingDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/preprocessor/ValuesetDefinitionInfo.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/tracking/TrackBack.kt (100%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/tracking/Trackable.kt (83%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/tracking/WeakIdentityHashMap.kt (95%) rename Src/java/cql-to-elm/src/{main => commonMain}/kotlin/org/cqframework/cql/cql2elm/ucum/UcumService.kt (91%) create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/Calendar.kt create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/Characters.kt create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/Log.kt create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/Source.kt create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/Stack.kt create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/TranslatorVersion.kt create mode 100644 Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/utils/WeakReference.kt create mode 100644 Src/java/cql-to-elm/src/jsMain/kotlin/org/cqframework/cql/cql2elm/utils/TranslatorVersionJs.kt create mode 100644 Src/java/cql-to-elm/src/jsMain/kotlin/org/cqframework/cql/cql2elm/utils/WeakReferenceJs.kt create mode 100644 Src/java/cql-to-elm/src/jsMain/resources/index.html create mode 120000 Src/java/cql-to-elm/src/jsMain/resources/system-modelinfo.xml create mode 100644 Src/java/cql-to-elm/src/jvmMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerJvm.kt rename Src/java/cql-to-elm/src/{main/kotlin/org/cqframework/cql/cql2elm/CqlTranslator.kt => jvmMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorJvm.kt} (69%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/DefaultLibrarySourceLoader.kt (90%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/DefaultLibrarySourceProvider.kt (100%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/DefaultModelInfoProvider.kt (100%) create mode 100644 Src/java/cql-to-elm/src/jvmMain/kotlin/org/cqframework/cql/cql2elm/LibraryManagerJvm.kt create mode 100644 Src/java/cql-to-elm/src/jvmMain/kotlin/org/cqframework/cql/cql2elm/LibrarySourceLoaderJvm.kt rename Src/java/cql-to-elm/src/{main/kotlin/org/cqframework/cql/cql2elm/LibrarySourceLoader.kt => jvmMain/kotlin/org/cqframework/cql/cql2elm/LibrarySourceProvider.kt} (57%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/ModelInfoLoader.kt (97%) create mode 100644 Src/java/cql-to-elm/src/jvmMain/kotlin/org/cqframework/cql/cql2elm/ModelInfoProvider.kt rename Src/java/cql-to-elm/src/{main/kotlin/org/cqframework/cql/cql2elm/ModelManager.kt => jvmMain/kotlin/org/cqframework/cql/cql2elm/ModelManagerJvm.kt} (95%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/PathAware.kt (100%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/PriorityLibrarySourceLoader.kt (92%) rename Src/java/cql-to-elm/src/{main => jvmMain}/kotlin/org/cqframework/cql/cql2elm/StringLibrarySourceProvider.kt (100%) rename Src/java/cql-to-elm/src/{main/kotlin/org/cqframework/cql/cql2elm/ucum/UcumServiceFactory.kt => jvmMain/kotlin/org/cqframework/cql/cql2elm/ucum/UcumService.kt} (52%) create mode 100644 Src/java/cql-to-elm/src/jvmMain/kotlin/org/cqframework/cql/cql2elm/utils/TranslatorVersionJvm.kt create mode 100644 Src/java/cql-to-elm/src/jvmMain/kotlin/org/cqframework/cql/cql2elm/utils/WeakReferenceJvm.kt rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/ArchitectureTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/CMS146ElmTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/CMS146SignatureTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/CommentTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/Cql2ElmVisitorTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/ElmSupportTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/EscapeSequenceTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/EscapeSequenceWithBacktickTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/GenericOverloadsTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/HidingTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/IncludedSignatureOutputTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/IncludedSignatureWithAliasOutputTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/LibraryManagerTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/LibraryTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/LiteralTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/ModelTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/ModelWithoutDefaultLoadersTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/NamespaceTests.java (99%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/SemanticTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/SignatureOutputTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/StringEscapeUtilsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/StringLibrarySourceProviderTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TestFhirModelInfoProvider.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TestLibrarySourceProvider.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TestLocalId.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TestModelInfoProvider.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TestPointIntervalSignatures.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TestUtils.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/TranslationTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/elm/ElmEditorTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/dstu2/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/r4/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/r401/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/stu3/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/stu301/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/v14/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/v16/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/v18/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/v18/PathTests.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/fhir/v32/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/ConvertsToDecimalFrom.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/HasTypeAndResult.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/ListOfLiterals.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/LiteralFor.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/QdmDataType.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/Quick2DataType.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/matchers/QuickDataType.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/model/GentestModelInfoProvider.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/model/GentestModelInfoProviderSad1.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/model/ModelImporterTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/model/VersionTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/AgeOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/AggregateOperatorsTest.java (98%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/AggregateTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/ArithmeticOperatorsTest.java (97%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/CqlComparisonOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/CqlIntervalOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/CqlListOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/DateTimeOperatorsTest.java (97%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/ListOperatorsTest.java (95%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/NullologicalOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/QueryTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/SortingTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/StringOperatorsTest.java (97%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/TimeOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/operators/TypeOperatorsTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qdm/v54/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qdm/v55/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qdm/v56/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qicore/v410/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qicore/v411/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qicore/v500/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/qicore/v600/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/quick/v330/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/uscore/v310/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/uscore/v311/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/uscore/v610/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/validation/LocalIdTests.java (94%) rename Src/java/cql-to-elm/src/{test => jvmTest}/java/org/cqframework/cql/cql2elm/who/BaseTest.java (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Arithmetic_Mixed.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Arithmetic_Parenthetical.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/CMS146v2_Test_CQM.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/CodeAndConceptTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ConvertTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/CqlAllInOne-1.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/DateTimeLiteralTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/DefaultContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/DivideMultiple.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/DivideVariables.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/EscapeSequenceTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/EscapeSequenceWithBacktickTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/GeometricMean_Zero.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHiddenIdentifierArgumentToAlias.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHiddenIdentifierFromReturn.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingCaseInsensitiveWarning.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingCommaMissingInListConstruction.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingFunctionDefinitionWithOverloads.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingIncludeDefinition.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingLetAlias.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingParameterDefinition.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingReturnArgumentNotConsideredHiddenIdentifier.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingSoMuchNestingHidingComplex.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingSoMuchNestingHidingSimple.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingSoMuchNestingNormal.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingStringLiteral.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingUnionSameAlias.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingUnionSameAliasEachHides.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/HidingTests/TestHidingVariousUseCases.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/IdentifierDoesNotResolveCaseMismatchExistIdentifier_Issue598.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/InCodeSystemTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/InTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/InValueSetTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/InvalidEquality.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue395.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue405.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue435.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue547.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue558.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue581.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue587.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue592.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue596.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue616.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue617.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue643.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue648.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue827.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Issue863.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/IssueEmptySourceInterval.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryManagerTests/OutOfOrder.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/AccessModifierBase.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/AccessModifierNonReferencing.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/AccessModifierReferencing.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/BaseLibrary-lib2020.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/BaseLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/DuplicateExpressionLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/InvalidBaseLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/InvalidLibraryReference.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/InvalidReferencingLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/Issue1407.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/Issue1407ValueSets.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/Issue641.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/MissingLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/ReferencingInvalidBaseLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/ReferencingLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/ReferencingLibraryJsonElm.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/ReferencingLibraryWithNullTypeSpecifierJsonElm.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/ReferencingLibraryXmlElm.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/SupplementalDataElements_99FHIR4-2.0.0.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/SupplementalDataElements_FHIR4-2.0.0.xml (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/SyntaxErrorReferencingLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/SyntaxErrorWithLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/SyntaxErrorWithNoLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestCommon.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent1.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent2.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent3.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent4.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent5.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent6.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestFluent7.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardAmbiguousFunctionResolutionWithoutTypeInformation.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclaration.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationGenericType.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationNormalType.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationScoringImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationScoringImplicitConversionMultipleParams.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationScoringImplicitConversionMultipleParamsCannotResolve.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationScoringImplicitConversionNonRelevantFunctionFirst.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestForwardDeclarationScoringNormalType.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestInvalidFunction.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestMeasure.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestNonForwardAmbiguousFunctionResolutionWithoutTypeInformation.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestNonForwardDeclarationScoringImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestNonForwardDeclarationScoringImplicitConversionMultipleParams.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TestNonForwardDeclarationScoringImplicitConversionMultipleParamsCannotResolve.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/TranslationTestsCommon-1.0.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/expression.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/expression2.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/json/BaseLibraryElm.json (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/json/SupplementalDataElements_FHIR4-2.0.0.json (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LibraryTests/json/SupplementalDataElements_FHIR4_Null_TypeSpecifier-2.0.0.json (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/LocalFunctionResolutionTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Log_BaseTen.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/MappingExpansionsRespectSignatureLevel.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Median_dup_vals_odd.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Median_odd.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/Median_q_diff_units.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ModelTests/ModelTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ModelTests/test-modelinfo.xml (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ModelTests/test-modelinfowithgenerics-happy.xml (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ModelTests/test-modelinfowithgenerics-sad1.xml (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/BaseLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Content/Main.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Content/ReferencingMain.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Core/Main.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Core/ReferencingMain.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/InvalidBaseLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/InvalidLibraryReference.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/InvalidReferencingLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Main.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/ReferencingInvalidBaseLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/ReferencingLibrary.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/ReferencingMain.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Shared/Main.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NamespaceTests/Shared/ReferencingMain.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/NullIvlCollapse_NullCollapse.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/AgeOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/Aggregate.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/AggregateOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/ArithmeticOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/ComparisonOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/CqlComparisonOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/CqlIntervalOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/CqlListOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/DateTimeOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/ForwardReferences.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/Functions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/ImplicitConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/IntervalOperatorPhrases.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/IntervalOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/InvalidCastExpression.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/InvalidSortClauses.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/ListOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/LogicalOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/MessageOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/MultiSourceQuery.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/NameHiding.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/NullologicalOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/Query.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/RecursiveFunctions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/Sorting.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/StringOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/TerminologyReferences.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/TimeOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/TupleAndClassConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/TypeOperators.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/UndeclaredForward.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/OperatorTests/UndeclaredSignature.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ParameterTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ParameterTestInvalid.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ParserPerformance.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/PropertyTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/PropertyTest_ELM.xml (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/QuantityLiteralTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/RatioLiteralTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ResolutionTests/ProperlyIncludesTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/RoundDown.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/RoundUp.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/ShouldFail.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/SignatureResolutionTest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/SignatureTests/GenericOverloadsTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/SignatureTests/IncludedSignatureOutputTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/SignatureTests/IncludedSignatureWithAliasOutputTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/SignatureTests/SignatureOutputTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TenDividedByTwo.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestChoiceAssignment.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestComments.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestCompatibilityLevel3.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestForwardDeclarationSameTypeDifferentNamespaceGenericTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestForwardDeclarationSameTypeDifferentNamespaceNormalTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestIdentifierCaseMismatch.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestImplicitFHIRHelpers_FHIR4.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestIncludedIn.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestIncorrectParameterType1204.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestNoImplicitCast.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestPatientContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestPointIntervalSignatures.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestQuotedForwards.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestRelatedContextRetrieve.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestTags.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestUnion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TestVSCastFunction.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TokenRecognitionError.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TranslationTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TranslatorTests/UnknownIdentifier.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TricksyParse.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/TupleDifferentKeys.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/UncertTuplesWithDiffNullFields.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/abstractClassNotRetrievable.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/EqualityWithConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestBundle.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestChoiceDateRangeOptimization.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestConceptConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestDoubleListPromotion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestFHIRNamespaces.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestImplicitFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestIntervalImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestParameterContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/dstu2/TestRetrieveWithConcept.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/EqualityWithConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestBundle.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestChoiceDateRangeOptimization.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestConceptConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestDoubleListPromotion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestFHIRTiming.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestImplicitFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestIntervalImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestRetrieveWithConcept.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/TestURIConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/exm108/EXM108.cql (98%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/exm108/FHIRHelpers.cql (98%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/exm108/MATGlobalCommonFunctions.cql (97%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/exm108/SupplementalDataElements.cql (97%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/exm108/TJCOverall.cql (98%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r4/exm108/VTEICU.cql (97%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/EqualityWithConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestBundle.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestChoiceDateRangeOptimization.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestConceptConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestDoubleListPromotion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestEncounterParameterContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIRNamespaces.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIRPath.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIRPathLiteralStringEscapes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIRTiming.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestImplicitContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestImplicitFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestInclude.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestIntervalImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestMeasureParameterContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestMedicationRequest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestOverload.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestOverloadForward.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestParameterContext.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestPluralTerminologyTarget.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestRetrieveWithConcept.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestTrace.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/r401/TestURIConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/EqualityWithConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestBundle.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestChoiceDateRangeOptimization.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestConceptConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestDoubleListPromotion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestFHIRTiming.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestImplicitFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestIntervalImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestRetrieveWithConcept.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu3/TestURIConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/EqualityWithConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestBundle.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestChoiceDateRangeOptimization.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestConceptConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestDoubleListPromotion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestFHIRNamespaces.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestFHIRPathLiteralStringEscapes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestFHIRTiming.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestImplicitFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestIntervalImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestRetrieveWithConcept.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/stu301/TestURIConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v14/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v16/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v16/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v16/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v18/PathTests.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v18/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v18/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v18/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v18/fhir-modelinfo-1.8.xml (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v32/TestFHIR.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v32/TestFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/fhir/v32/TestFHIRWithHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qdm/v54/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qdm/v55/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qdm/v56/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qdm/v56/TestEntities.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/AdultOutpatientEncounters_QICore4-2.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/AdvancedIllnessandFrailtyExclusion_QICore4-5.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/EXM124_QICore4-8.2.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/EXM165_QICore4-8.5.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/Hospice_QICore4-2.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/MATGlobalCommonFunctions_QICore4-5.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/SupplementalDataElements_QICore4-2.0.0.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/TJCOverall_QICore4-5.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/TestQICore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v410/VTEICU_QICore4-4.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/AdultOutpatientEncounters_QICore4-2.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/AdvancedIllnessandFrailtyExclusion_QICore4-5.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/AuthoringPatterns.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/CQMCommon-1.1.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/EXM124_QICore4-8.2.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/EXM165_QICore4-8.5.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/Hospice_QICore4-2.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/MATGlobalCommonFunctions_QICore4-5.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/QICoreCommon-1.3.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/SupplementalDataElements_QICore4-2.0.0.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/TJCOverall_QICore4-5.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/TestChoiceUnion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/TestMedicationRequest.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/TestQICore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v411/VTEICU_QICore4-4.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v500/AuthoringPatterns.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v500/CQMCommon-2.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v500/QICoreCommon-2.0.000.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v500/TestQICore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/qicore/v600/TestQICore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/EqualityWithConversions.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/TestChoiceTypes.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/TestDoubleListPromotion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/TestFHIRTiming.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/TestImplicitFHIRHelpers.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/TestIntervalImplicitConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/quick/v330/TestURIConversion.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/uscore/v310/TestUSCore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/uscore/v311/TestUSCore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/uscore/v610/TestUSCore.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/who/TestSignature.cql (100%) rename Src/java/cql-to-elm/src/{test => jvmTest}/resources/org/cqframework/cql/cql2elm/who/WHOCommon.cql (100%) delete mode 100644 Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCapability.kt delete mode 100644 Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibrarySourceProviderFactory.kt delete mode 100644 Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/ModelInfoProviderFactory.kt create mode 100644 Src/java/cql-to-elm/src/wasmJsMain/kotlin/org/cqframework/cql/cql2elm/utils/TranslatorVersionWasmJs.kt create mode 100644 Src/java/cql-to-elm/src/wasmJsMain/kotlin/org/cqframework/cql/cql2elm/utils/WeakReferenceWasmJs.kt delete mode 100644 Src/java/elm-xmlutil/src/jvmMain/resources/META-INF/services/org.cqframework.cql.elm.serializing.ElmLibraryReaderProvider delete mode 100644 Src/java/elm-xmlutil/src/jvmMain/resources/META-INF/services/org.cqframework.cql.elm.serializing.ElmLibraryWriterProvider delete mode 100644 Src/java/elm/src/commonMain/kotlin/org/cqframework/cql/elm/serializing/ElmLibraryReaderProvider.kt delete mode 100644 Src/java/elm/src/commonMain/kotlin/org/cqframework/cql/elm/serializing/ElmLibraryWriterProvider.kt rename Src/java/elm/src/{jvmMain => commonMain}/kotlin/org/cqframework/cql/elm/visiting/FunctionalElmVisitor.kt (62%) delete mode 100644 Src/java/elm/src/jvmMain/kotlin/org/cqframework/cql/elm/serializing/ElmLibraryReaderFactory.kt delete mode 100644 Src/java/elm/src/jvmMain/kotlin/org/cqframework/cql/elm/serializing/ElmLibraryWriterFactory.kt diff --git a/Src/java/buildSrc/src/main/kotlin/cql.kotlin-multiplatform-conventions.gradle.kts b/Src/java/buildSrc/src/main/kotlin/cql.kotlin-multiplatform-conventions.gradle.kts index acccc4904..66cb03ac3 100644 --- a/Src/java/buildSrc/src/main/kotlin/cql.kotlin-multiplatform-conventions.gradle.kts +++ b/Src/java/buildSrc/src/main/kotlin/cql.kotlin-multiplatform-conventions.gradle.kts @@ -1,10 +1,11 @@ -import org.jetbrains.kotlin.gradle.ExperimentalWasmDsl +import org.jetbrains.kotlin.gradle.dsl.KotlinVersion plugins { kotlin("multiplatform") id("com.diffplug.spotless") id("io.gitlab.arturbosch.detekt") id("org.jetbrains.dokka") + kotlin("plugin.serialization") } repositories { @@ -18,6 +19,10 @@ spotless { } kotlin { + compilerOptions { + apiVersion.set(KotlinVersion.KOTLIN_2_0) + languageVersion.set(KotlinVersion.KOTLIN_2_0) + } jvmToolchain(17) jvm { withJava() @@ -65,16 +70,31 @@ kotlin { generateTypeScriptDefinitions() } - // Add Kotlin/WASM compilation target. - // The output is in the JS packages directory. - @OptIn(ExperimentalWasmDsl::class) - wasmJs { - browser { } - binaries.executable() - generateTypeScriptDefinitions() - } - sourceSets { + commonMain { + dependencies { + implementation("io.github.pdvrieze.xmlutil:core:0.90.3") + implementation("io.github.pdvrieze.xmlutil:serialization:0.90.3") + implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.0") + implementation("org.jetbrains.kotlinx:kotlinx-io-core:0.6.0") + implementation("io.github.oshai:kotlin-logging:7.0.3") + } + } + + jvmMain { + dependencies { + implementation("io.github.pdvrieze.xmlutil:serialization-jvm:0.90.3") + implementation("org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0") + } + } + + jsMain { + dependencies { + implementation("io.github.pdvrieze.xmlutil:core-js:0.90.3") + implementation("io.github.pdvrieze.xmlutil:serialization-js:0.90.3") + } + } + commonTest { dependencies { implementation(kotlin("test")) @@ -86,6 +106,7 @@ kotlin { implementation(kotlin("test-junit5")) implementation("org.junit.jupiter:junit-jupiter") implementation("org.slf4j:slf4j-simple:2.0.13") + implementation("org.hamcrest:hamcrest-all:1.3") } } diff --git a/Src/java/buildSrc/src/main/kotlin/cql.xsd-kotlin-multiplatform-gen-conventions.gradle.kts b/Src/java/buildSrc/src/main/kotlin/cql.xsd-kotlin-multiplatform-gen-conventions.gradle.kts index e4236d868..547e7c42d 100644 --- a/Src/java/buildSrc/src/main/kotlin/cql.xsd-kotlin-multiplatform-gen-conventions.gradle.kts +++ b/Src/java/buildSrc/src/main/kotlin/cql.xsd-kotlin-multiplatform-gen-conventions.gradle.kts @@ -1,11 +1,8 @@ import org.jetbrains.kotlin.gradle.tasks.KotlinCompile import com.github.gradle.node.task.NodeTask -import gradle.kotlin.dsl.accessors._2dcd0a84416f85634c85a37519569374.sourceSets -import org.gradle.kotlin.dsl.kotlin plugins { id("cql.kotlin-multiplatform-conventions") - kotlin("plugin.serialization") id("com.github.node-gradle.node") } @@ -18,17 +15,6 @@ kotlin { kotlin { srcDir(destDir) } - dependencies { - implementation("io.github.pdvrieze.xmlutil:core:0.90.3") - implementation("io.github.pdvrieze.xmlutil:serialization:0.90.3") - implementation("org.jetbrains.kotlinx:kotlinx-serialization-json:1.7.0") - } - } - - jvmMain { - dependencies { - implementation("io.github.pdvrieze.xmlutil:serialization-jvm:0.90.3") - } } } } diff --git a/Src/java/cql-to-elm/build.gradle.kts b/Src/java/cql-to-elm/build.gradle.kts index 96b48c846..b0a03a8c7 100644 --- a/Src/java/cql-to-elm/build.gradle.kts +++ b/Src/java/cql-to-elm/build.gradle.kts @@ -1,18 +1,25 @@ plugins { - id("cql.library-conventions") + id("cql.kotlin-multiplatform-conventions") } -dependencies { - api(project(":cql")) - api(project(":model")) - api(project(":elm")) - - implementation("org.jetbrains.kotlinx:kotlinx-io-core-jvm:0.6.0") - - testImplementation(project(":elm-xmlutil")) - testImplementation(project(":model-xmlutil")) - testImplementation(project(":quick")) - testImplementation(project(":qdm")) - testImplementation(project(":ucum")) - testImplementation("com.tngtech.archunit:archunit:1.2.1") +kotlin { + sourceSets { + commonMain { + dependencies { + api(project(":cql")) + api(project(":model")) + api(project(":elm")) + implementation(project(":elm-xmlutil")) + implementation(project(":model-xmlutil")) + } + } + jvmTest { + dependencies { + implementation(project(":quick")) + implementation(project(":qdm")) + implementation(project(":ucum")) + implementation("com.tngtech.archunit:archunit:1.2.1") + } + } + } } \ No newline at end of file diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt similarity index 92% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt index 8292bac76..a065b219c 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CompilerOptions.kt @@ -1,9 +1,9 @@ package org.cqframework.cql.cql2elm -import java.util.* import org.hl7.cql_annotations.r1.CqlToElmBase import org.hl7.cql_annotations.r1.CqlToElmInfo import org.hl7.elm.r1.Library +import kotlin.jvm.JvmStatic /** This class provides functions for extracting and parsing CQL Compiler Options from a Library */ object CompilerOptions { @@ -37,7 +37,7 @@ object CompilerOptions { } /** - * Parses a string representing CQL compiler Options into an EnumSet. The string is expected to + * Parses a string representing CQL compiler Options into a Set. The string is expected to * be a comma-delimited list of values from the CqlCompiler.Options enumeration. For example * "EnableListPromotion, EnableListDemotion". * @@ -49,8 +49,8 @@ object CompilerOptions { if (compilerOptions.isNullOrEmpty()) { return null } - val optionSet: EnumSet = - EnumSet.noneOf(CqlCompilerOptions.Options::class.java) + val optionSet = + mutableSetOf() val options = compilerOptions.trim { it <= ' ' }.split(",".toRegex()).dropLastWhile { it.isEmpty() } for (option in options) { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt similarity index 97% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt index 14ddca105..8800f5133 100755 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/Cql2ElmVisitor.kt @@ -2,9 +2,6 @@ package org.cqframework.cql.cql2elm -import java.math.BigDecimal -import java.util.* -import java.util.regex.Pattern import org.antlr.v4.kotlinruntime.ParserRuleContext import org.antlr.v4.kotlinruntime.Token import org.antlr.v4.kotlinruntime.TokenStream @@ -25,13 +22,16 @@ import org.cqframework.cql.cql2elm.tracking.TrackBack import org.cqframework.cql.cql2elm.tracking.Trackable.resultType import org.cqframework.cql.cql2elm.tracking.Trackable.trackbacks import org.cqframework.cql.cql2elm.tracking.Trackable.withResultType +import org.cqframework.cql.cql2elm.utils.Stack +import org.cqframework.cql.cql2elm.utils.isLeapYear +import org.cqframework.cql.cql2elm.utils.logger +import org.cqframework.cql.elm.serializing.BigDecimal import org.cqframework.cql.gen.cqlLexer import org.cqframework.cql.gen.cqlParser import org.cqframework.cql.gen.cqlParser.* import org.hl7.cql.model.* import org.hl7.elm.r1.* import org.hl7.elm_modelinfo.r1.ModelInfo -import org.slf4j.LoggerFactory @Suppress( "LongMethod", @@ -62,7 +62,7 @@ class Cql2ElmVisitor( HashMap() private val timingOperators = Stack() val retrieves: MutableList = ArrayList() - val expressions: List = ArrayList() + val expressions: kotlin.collections.List = ArrayList() private val contextDefinitions: MutableMap = HashMap() init { @@ -119,8 +119,8 @@ class Cql2ElmVisitor( val unqualifiedIdentifier: String = identifiers.removeAt(identifiers.size - 1) val namespaceName = when { - identifiers.isNotEmpty() -> java.lang.String.join(".", identifiers) - libraryBuilder.isWellKnownModelName(unqualifiedIdentifier) -> null + identifiers.isNotEmpty() -> identifiers.joinToString(".") + isWellKnownModelName(unqualifiedIdentifier) -> null libraryBuilder.namespaceInfo != null -> libraryBuilder.namespaceInfo.name else -> null } @@ -169,7 +169,7 @@ class Cql2ElmVisitor( val identifiers: MutableList = visit(ctx.qualifiedIdentifier()).cast() val unqualifiedIdentifier: String = identifiers.removeAt(identifiers.size - 1) var namespaceName = - if (identifiers.isNotEmpty()) java.lang.String.join(".", identifiers) + if (identifiers.isNotEmpty()) identifiers.joinToString(".") else if (libraryBuilder.namespaceInfo != null) libraryBuilder.namespaceInfo.name else null var path = getLibraryPath(namespaceName, unqualifiedIdentifier) @@ -192,7 +192,7 @@ class Cql2ElmVisitor( if (!libraryBuilder.canResolveLibrary(library)) { namespaceName = when { - identifiers.isNotEmpty() -> java.lang.String.join(".", identifiers) + identifiers.isNotEmpty() -> identifiers.joinToString(".") libraryBuilder.isWellKnownLibraryName(unqualifiedIdentifier) -> null libraryBuilder.namespaceInfo != null -> libraryBuilder.namespaceInfo.name else -> null @@ -253,12 +253,12 @@ class Cql2ElmVisitor( } override fun visitAccessModifier(ctx: AccessModifierContext): AccessModifier { - return when (ctx.text.lowercase(Locale.getDefault())) { + return when (ctx.text.lowercase()) { "public" -> AccessModifier.PUBLIC "private" -> AccessModifier.PRIVATE else -> throw IllegalArgumentException( - "Unknown access modifier ${ctx.text.lowercase(Locale.getDefault())}." + "Unknown access modifier ${ctx.text.lowercase()}." ) } } @@ -579,7 +579,7 @@ class Cql2ElmVisitor( } override fun visitBooleanLiteral(ctx: BooleanLiteralContext): Literal { - return libraryBuilder.createLiteral(java.lang.Boolean.valueOf(ctx.text)) + return libraryBuilder.createLiteral(ctx.text.toBoolean()) } override fun visitIntervalSelector(ctx: IntervalSelectorContext): Any { @@ -744,34 +744,34 @@ class Cql2ElmVisitor( if (input.startsWith("@")) { input = input.substring(1) } - val timePattern = Pattern.compile("T(\\d{2})(\\:(\\d{2})(\\:(\\d{2})(\\.(\\d+))?)?)?") + val timePattern = Regex("T(\\d{2})(\\:(\\d{2})(\\:(\\d{2})(\\.(\\d+))?)?)?") // -1-------2---3-------4---5-------6---7----------- - val matcher = timePattern.matcher(input) - return if (matcher.matches()) { + val matcher = timePattern.matchEntire(input) + return if (matcher != null) { try { val result = of.createTime() - val hour = matcher.group(1).toInt() + val hour = matcher.groups[1]!!.value.toInt() var minute = -1 var second = -1 var millisecond = -1 require(hour in 0..24) { "Invalid hour in time literal ($hour)." } result.hour = libraryBuilder.createLiteral(hour) - if (matcher.group(3) != null) { - minute = matcher.group(3).toInt() + if (matcher.groups[3] != null) { + minute = matcher.groups[3]!!.value.toInt() require(!((minute < 0) || (minute >= 60) || (hour == 24 && minute > 0))) { "Invalid minute in time literal ($minute)." } result.minute = libraryBuilder.createLiteral(minute) } - if (matcher.group(5) != null) { - second = matcher.group(5).toInt() + if (matcher.groups[5] != null) { + second = matcher.groups[5]!!.value.toInt() require(!((second < 0) || (second >= 60) || (hour == 24 && second > 0))) { "Invalid second in time literal ($second)." } result.second = libraryBuilder.createLiteral(second) } - if (matcher.group(7) != null) { - millisecond = matcher.group(7).toInt() + if (matcher.groups[7] != null) { + millisecond = matcher.groups[7]!!.value.toInt() require(hour == 24 && millisecond == 0 || millisecond >= 0) { "Invalid millisecond in time literal ($millisecond)." } @@ -814,8 +814,7 @@ class Cql2ElmVisitor( * ('Z' | ('+' | '-') [0-9][0-9]':'[0-9][0-9])? // timezone offset * ; */ - val dateTimePattern = - Pattern.compile( + val dateTimePattern = Regex( "(\\d{4})(((-(\\d{2}))(((-(\\d{2}))((T)((\\d{2})(\\:(\\d{2})(\\:(\\d{2})(\\.(\\d+))?)?)?)?)?)|(T))?)|(T))?((Z)|(([+-])(\\d{2})(\\:(\\d{2}))))?" ) // 1-------234-5--------678-9--------11--11-------1---1-------1---1-------1---1-----------------2------2----22---22-----2-------2---2----------- @@ -848,12 +847,11 @@ class Cql2ElmVisitor( * //----------------------------------------0-------1---2-------3---4-------5-- * -6-------------78---90-----1-------2----3--------------- */ - val matcher = dateTimePattern.matcher(input) - return if (matcher.matches()) { + val matcher = dateTimePattern.matchEntire(input) + return if (matcher != null) { try { - val calendar = GregorianCalendar.getInstance() as GregorianCalendar val result = of.createDateTime() - val year = matcher.group(1).toInt() + val year = matcher.groups[1]!!.value.toInt() var month = -1 var day = -1 var hour = -1 @@ -861,16 +859,16 @@ class Cql2ElmVisitor( var second = -1 var millisecond = -1 result.year = libraryBuilder.createLiteral(year) - if (matcher.group(5) != null) { - month = matcher.group(5).toInt() + if (matcher.groups[5] != null) { + month = matcher.groups[5]!!.value.toInt() require(month in 0..12) { "Invalid month in date/time literal ($input)." } result.month = libraryBuilder.createLiteral(month) } - if (matcher.group(9) != null) { - day = matcher.group(9).toInt() + if (matcher.groups[9] != null) { + day = matcher.groups[9]!!.value.toInt() var maxDay = 31 when (month) { - 2 -> maxDay = if (calendar.isLeapYear(year)) 29 else 28 + 2 -> maxDay = if (isLeapYear(year)) 29 else 28 4, 6, 9, @@ -879,43 +877,43 @@ class Cql2ElmVisitor( require(day in 0..maxDay) { "Invalid day in date/time literal ($input)." } result.day = libraryBuilder.createLiteral(day) } - if (matcher.group(13) != null) { - hour = matcher.group(13).toInt() + if (matcher.groups[13] != null) { + hour = matcher.groups[13]!!.value.toInt() require(hour in 0..24) { "Invalid hour in date/time literal ($input)." } result.hour = libraryBuilder.createLiteral(hour) } - if (matcher.group(15) != null) { - minute = matcher.group(15).toInt() + if (matcher.groups[15] != null) { + minute = matcher.groups[15]!!.value.toInt() require(minute in 0..60 && !(hour == 24 && minute > 0)) { "Invalid minute in date/time literal ($input)." } result.minute = libraryBuilder.createLiteral(minute) } - if (matcher.group(17) != null) { - second = matcher.group(17).toInt() + if (matcher.groups[17] != null) { + second = matcher.groups[17]!!.value.toInt() require(second in 0..60 && !(hour == 24 && second > 0)) { "Invalid second in date/time literal ($input)." } result.second = libraryBuilder.createLiteral(second) } - if (matcher.group(19) != null) { - millisecond = matcher.group(19).toInt() + if (matcher.groups[19] != null) { + millisecond = matcher.groups[19]!!.value.toInt() require(millisecond >= 0 && !(hour == 24 && millisecond > 0)) { "Invalid millisecond in date/time literal ($input)." } result.millisecond = libraryBuilder.createLiteral(millisecond) } - if (matcher.group(23) != null && (matcher.group(23) == "Z")) { + if (matcher.groups[23] != null && (matcher.groups[23]!!.value == "Z")) { result.timezoneOffset = libraryBuilder.createLiteral(0.0) } - if (matcher.group(25) != null) { - val offsetPolarity = if ((matcher.group(25) == "+")) 1 else -1 - if (matcher.group(28) != null) { - val hourOffset = matcher.group(26).toInt() + if (matcher.groups[25] != null) { + val offsetPolarity = if ((matcher.groups[25]!!.value == "+")) 1 else -1 + if (matcher.groups[28] != null) { + val hourOffset = matcher.groups[26]!!.value.toInt() require(hourOffset in 0..14) { "Timezone hour offset is out of range in date/time literal ($input)." } - val minuteOffset = matcher.group(28).toInt() + val minuteOffset = matcher.groups[28]!!.value.toInt() require(minuteOffset in 0..60 && !(hourOffset == 14 && minuteOffset > 0)) { "Timezone minute offset is out of range in date/time literal ($input)." } @@ -924,8 +922,8 @@ class Cql2ElmVisitor( (hourOffset + (minuteOffset.toDouble() / 60)) * offsetPolarity ) } else { - if (matcher.group(26) != null) { - val hourOffset = matcher.group(26).toInt() + if (matcher.groups[26] != null) { + val hourOffset = matcher.groups[26]!!.value.toInt() require(hourOffset in 0..14) { "Timezone hour offset is out of range in date/time literal ($input)." } @@ -938,9 +936,9 @@ class Cql2ElmVisitor( } if ( (result.hour == null) && - (matcher.group(11) == null) && - (matcher.group(20) == null) && - (matcher.group(21) == null) + (matcher.groups[11] == null) && + (matcher.groups[20] == null) && + (matcher.groups[21] == null) ) { val date = of.createDate() date.year = result.year @@ -1616,7 +1614,7 @@ class Cql2ElmVisitor( return exp } - override fun visitQualifiedIdentifier(ctx: QualifiedIdentifierContext): List { + override fun visitQualifiedIdentifier(ctx: QualifiedIdentifierContext): kotlin.collections.List { // Return the list of qualified identifiers for resolution by the containing // element val identifiers: MutableList = ArrayList() @@ -1631,7 +1629,7 @@ class Cql2ElmVisitor( override fun visitQualifiedIdentifierExpression( ctx: QualifiedIdentifierExpressionContext - ): List { + ): kotlin.collections.List { // Return the list of qualified identifiers for resolution by the containing // element val identifiers: MutableList = ArrayList() @@ -1795,9 +1793,9 @@ class Cql2ElmVisitor( override fun visitTimingExpression(ctx: TimingExpressionContext): Any? { val left = parseExpression(ctx.expression(0)) val right = parseExpression(ctx.expression(1)) - Objects.requireNonNull(left, "left expression of timing operator can not be null") - Objects.requireNonNull(right, "right expression of timing operator can not be null") - val timingOperatorContext = TimingOperatorContext(left!!, right!!) + requireNotNull(left) { "left expression of timing operator can not be null" } + requireNotNull(right) { "right expression of timing operator can not be null" } + val timingOperatorContext = TimingOperatorContext(left, right) timingOperators.push(timingOperatorContext) return try { visit(ctx.intervalOperatorPhrase()) @@ -2719,7 +2717,7 @@ class Cql2ElmVisitor( if (ctx.dateTimePrecision() != null) { per = libraryBuilder.createQuantity( - BigDecimal.valueOf(1.0), + BigDecimal(1.0), (parseString(ctx.dateTimePrecision()))!! ) } else if (ctx.expression().size > 1) { @@ -2766,7 +2764,7 @@ class Cql2ElmVisitor( override fun visitRetrieve(ctx: RetrieveContext): Expression? { libraryBuilder.checkLiteralContext() - val qualifiers: List = parseQualifiers(ctx.namedTypeSpecifier()) + val qualifiers: kotlin.collections.List = parseQualifiers(ctx.namedTypeSpecifier()) val model: String? = getModelIdentifier(qualifiers) val label: String = getTypeIdentifier( @@ -2846,7 +2844,7 @@ class Cql2ElmVisitor( } } if (ctx.terminology()!!.qualifiedIdentifierExpression() != null) { - val identifiers: List = visit(ctx.terminology()!!).cast() + val identifiers: kotlin.collections.List = visit(ctx.terminology()!!).cast() terminology = resolveQualifiedIdentifier(identifiers) track(terminology, ctx.terminology()!!.qualifiedIdentifierExpression()!!) } else { @@ -3072,7 +3070,7 @@ class Cql2ElmVisitor( .withTemplateId(classType.identifier) .withCodeProperty(codePath) if (ctx.contextIdentifier() != null) { - val identifiers: List = visit(ctx.contextIdentifier()!!).cast() + val identifiers: kotlin.collections.List = visit(ctx.contextIdentifier()!!).cast() val contextExpression: Expression? = resolveQualifiedIdentifier(identifiers) retrieve.context = contextExpression } @@ -3138,7 +3136,7 @@ class Cql2ElmVisitor( // WARNING: libraryBuilder.recordParsingException( CqlSemanticException( - "Unexpected membership operator ${inExpression.javaClass.simpleName} in retrieve", + "Unexpected membership operator ${inExpression::class.simpleName} in retrieve", if (useStrictRetrieveTyping) CqlCompilerException.ErrorSeverity.Error else CqlCompilerException.ErrorSeverity.Warning, @@ -3323,7 +3321,7 @@ class Cql2ElmVisitor( override fun visitQuery(ctx: cqlParser.QueryContext): Query { val queryContext = QueryContext() libraryBuilder.pushQueryContext(queryContext) - var sources: List? = null + var sources: kotlin.collections.List? = null return try { queryContext.enterSourceClause() try { @@ -3351,7 +3349,7 @@ class Cql2ElmVisitor( * expressionContextPushed = true; * } */ - var dfcx: List = emptyList() + var dfcx: kotlin.collections.List = emptyList() try { dfcx = if (ctx.letClause() != null) visit(ctx.letClause()!!).cast() else dfcx for (letClause: LetClause in dfcx) { @@ -3904,7 +3902,7 @@ class Cql2ElmVisitor( } else if (ctx.retrieve() != null) { visit(ctx.retrieve()!!) } else { - val identifiers: List = visit(ctx.qualifiedIdentifierExpression()!!).cast() + val identifiers: kotlin.collections.List = visit(ctx.qualifiedIdentifierExpression()!!).cast() resolveQualifiedIdentifier(identifiers) } } @@ -3952,7 +3950,7 @@ class Cql2ElmVisitor( return resolveMemberIdentifier(identifier) } - private fun resolveQualifiedIdentifier(identifiers: List): Expression? { + private fun resolveQualifiedIdentifier(identifiers: kotlin.collections.List): Expression? { var current: Expression? = null for (identifier in identifiers) { current = @@ -4059,7 +4057,7 @@ class Cql2ElmVisitor( fun resolveFunction( libraryName: String?, functionName: String, - expressions: List, + expressions: kotlin.collections.List, mustResolve: Boolean, allowPromotionAndDemotion: Boolean, allowFluent: Boolean @@ -4166,7 +4164,7 @@ class Cql2ElmVisitor( ) } throw IllegalArgumentException( - "Invalid invocation target: ${target.javaClass.name}" + "Invalid invocation target: ${target::class.simpleName}" ) } finally { libraryBuilder.pushExpressionTarget(target) @@ -4313,7 +4311,7 @@ class Cql2ElmVisitor( "Internal error: Could not resolve operator map entry for function header ${fh.mangledName}" ) libraryBuilder.pushIdentifier(functionDef.name!!, functionDef, IdentifierScope.GLOBAL) - val operand = op.functionDef!!.operand as List + val operand = op.functionDef!!.operand as kotlin.collections.List for (operandDef: OperandDef in operand) { libraryBuilder.pushIdentifier(operandDef.name!!, operandDef) } @@ -4364,7 +4362,9 @@ class Cql2ElmVisitor( try { libraryBuilder.popIdentifier() } catch (e: Exception) { - log.warn("Error popping identifier", e) + logger.warn(e) { + "Error popping identifier" + } } } // Intentionally do _not_ pop the function name, it needs to remain in global scope! @@ -4403,7 +4403,7 @@ class Cql2ElmVisitor( libraryBuilder.resolveTypeName("System", "Boolean") )) if (ret && bool != null) { - ret = bool == java.lang.Boolean.valueOf(expression.value) + ret = bool == expression.value.toBoolean() } } return ret @@ -4474,8 +4474,4 @@ class Cql2ElmVisitor( } return tb } - - companion object { - private val log = LoggerFactory.getLogger(Cql2ElmVisitor::class.java) - } } diff --git a/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCapability.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCapability.kt new file mode 100644 index 000000000..c8e863920 --- /dev/null +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCapability.kt @@ -0,0 +1,106 @@ +package org.cqframework.cql.cql2elm + +import kotlin.jvm.JvmOverloads + + +/* +Defines a language capability +*/ +class CqlCapability +@JvmOverloads +constructor( // A unique code identifying the capability + var code: String, // A short string providing a user-friendly display name for the capability + var display: + String, // A definition of the capability, including description of possible values for the + // capability + var definition: + String, // The version in which the capability was introduced, drawn from release versions, + // specifying as . + var sinceVersion: String = + "1.0", // The version in which the capability was removed, drawn from release versions, + // specifying as . + var upToVersion: String? = null +) { + + override fun equals(o: Any?): Boolean { + if (this === o) return true + if (o == null || this::class != o::class) return false + val that = o as CqlCapability + return code == that.code + } + + override fun hashCode(): Int { + return code.hashCode() + } + + override fun toString(): String { + return ("CqlCapability{" + + "code='" + + code + + '\'' + + ", display='" + + display + + '\'' + + ", definition='" + + definition + + '\'' + + '}') + } + + companion object { + @Suppress("MaxLineLength") + var capabilities: Set = setOf( + CqlCapability( + "decimal-precision", + "Decimal Precision", + "Maximum number of digits of precision that can be represented in decimal values. Conformant implementations SHALL support at least 28 digits of precision for decimal values." + ), + CqlCapability( + "decimal-scale", + "Decimal Scale", + "Maximum number of digits of scale that can be represented in decimal values (i.e. the maximum number of digits after the decimal point). Conformant implementations SHALL support at least 8 digits of scale for decimal values." + ), + CqlCapability( + "datetime-precision", + "DateTime Precision", + "The maximum number of digits of precision that can be represented for DateTime values, where each numeric place, beginning with years, is counted as a single digit. Conformant implementations SHALL support at least 17 digits of precision for datetime values (YYYYMMDDHHmmss.fff)." + ), + CqlCapability( + "datetime-scale", + "DateTime Scale", + "The maximum number of digits of scale that can be represented in datetime values (i.e. the maximum number of digits after the decimal point in the seconds component). Conformant implementations SHALL support at least 3 digits of scale for datetime values." + ), + CqlCapability( + "ucum-unit-conversion", + "UCUM Unit Conversion", + "Whether or not the implementation supports conversion of Unified Code for Units of Measure (UCUM) units. Conformant implementations SHOULD support UCUM unit conversion." + ), + CqlCapability( + "regex-dialect", + "Regular Expression Dialect", + "The dialect of regular expressions used by the implementation. Conformant implementations SHOULD use the Perl Compatible Regular Expression (PCRE) dialect. Values for this feature should be drawn from the Name of the regular expression language list here: https://en.wikipedia.org/wiki/Comparison_of_regular-expression_engines" + ), + CqlCapability( + "supported-data-model", + "Supported Data Model", + "A supported data model, specified as the URI of the model information." + ), + CqlCapability( + "supported-function", + "Supported Function", + "A supported function, specified as the fully qualified name of the function." + ), + CqlCapability( + "unfiltered-context-retrieve", + "Unfiltered Context Retrieve", + "Whether or not the implementation supports evaluating retrieves in the unfiltered context." + ), + CqlCapability( + "related-context-retrieve", + "Related Context Retrieve", + "Whether or not the implementation supports related-context retrieves.", + "1.4" + ) + ) + } +} diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt similarity index 91% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt index f9d51fcdf..7592f8a26 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompiler.kt @@ -2,8 +2,8 @@ package org.cqframework.cql.cql2elm -import java.io.* -import java.util.* +import kotlinx.io.Source +import kotlinx.io.readString import org.antlr.v4.kotlinruntime.* import org.antlr.v4.kotlinruntime.tree.ParseTree import org.cqframework.cql.cql2elm.elm.ElmEdit @@ -19,10 +19,10 @@ import org.cqframework.cql.gen.cqlParser.LibraryContext import org.hl7.cql.model.* import org.hl7.elm.r1.* -class CqlCompiler( +open class CommonCqlCompiler( private val namespaceInfo: NamespaceInfo?, sourceInfo: VersionedIdentifier?, - private val libraryManager: LibraryManager + private val libraryManager: CommonLibraryManager ) { var library: Library? = null private set @@ -31,7 +31,7 @@ class CqlCompiler( private set private var visitResult: Any? = null - private var retrieves: List? = null + private var retrieves: kotlin.collections.List? = null var exceptions: MutableList? = null var errors: MutableList? = null var warnings: MutableList? = null @@ -39,11 +39,11 @@ class CqlCompiler( private var sourceInfo = sourceInfo ?: VersionedIdentifier().withId("Anonymous").withSystem("text/cql") - constructor(libraryManager: LibraryManager) : this(null, null, libraryManager) + constructor(libraryManager: CommonLibraryManager) : this(null, null, libraryManager) constructor( namespaceInfo: NamespaceInfo?, - libraryManager: LibraryManager + libraryManager: CommonLibraryManager ) : this(namespaceInfo, null, libraryManager) init { @@ -64,7 +64,7 @@ class CqlCompiler( return visitResult } - fun toRetrieves(): List? { + fun toRetrieves(): kotlin.collections.List? { return retrieves } @@ -135,18 +135,12 @@ class CqlCompiler( } } - @Throws(IOException::class) - fun run(cqlFile: File): Library? { - return run(CharStreams.fromStream(FileInputStream(cqlFile))) - } - fun run(cqlText: String): Library? { return run(CharStreams.fromString(cqlText)) } - @Throws(IOException::class) - fun run(inputStream: InputStream): Library? { - return run(CharStreams.fromStream(inputStream)) + fun run(source: Source): Library? { + return run(CharStreams.fromString(source.readString())) } fun run(charStream: CharStream): Library? { @@ -212,7 +206,7 @@ class CqlCompiler( return library } - private fun allNonNull(vararg ts: IElmEdit?): List { + private fun allNonNull(vararg ts: IElmEdit?): kotlin.collections.List { return ts.filterNotNull() } } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt similarity index 89% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt index acd7058e6..9e67df4be 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerException.kt @@ -1,13 +1,17 @@ package org.cqframework.cql.cql2elm import org.cqframework.cql.cql2elm.tracking.TrackBack +import kotlin.jvm.JvmOverloads +import kotlin.jvm.JvmStatic +import kotlin.jvm.Transient open class CqlCompilerException @JvmOverloads constructor( message: String?, val severity: ErrorSeverity = ErrorSeverity.Error, - @field:Transient val locator: TrackBack? = null, + @field:Transient + val locator: TrackBack? = null, cause: Throwable? = null ) : RuntimeException(message, cause) { enum class ErrorSeverity { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt similarity index 99% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt index f498189bc..b013bd1b2 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlCompilerOptions.kt @@ -1,7 +1,7 @@ package org.cqframework.cql.cql2elm -import java.util.* import org.cqframework.cql.cql2elm.LibraryBuilder.SignatureLevel +import kotlin.jvm.JvmStatic /** translation options for Cql source files */ class CqlCompilerOptions { @@ -21,7 +21,7 @@ class CqlCompilerOptions { DisableDefaultModelInfoLoad } - val options: EnumSet = EnumSet.noneOf(Options::class.java) + val options = mutableSetOf() /** * Return instance of CqlTranslatorOptions validateUnits boolean * diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlIncludeException.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlIncludeException.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlIncludeException.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlIncludeException.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlInternalException.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlInternalException.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlInternalException.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlInternalException.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlSemanticException.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlSemanticException.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlSemanticException.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlSemanticException.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlSyntaxException.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlSyntaxException.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlSyntaxException.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlSyntaxException.kt diff --git a/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslator.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslator.kt new file mode 100644 index 000000000..b2980acbb --- /dev/null +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslator.kt @@ -0,0 +1,98 @@ +@file:Suppress("WildcardImport") + +package org.cqframework.cql.cql2elm + +import org.antlr.v4.kotlinruntime.CharStream +import org.antlr.v4.kotlinruntime.CharStreams +import org.cqframework.cql.cql2elm.model.CompiledLibrary +import org.cqframework.cql.elm.serializing.xmlutil.getElmLibraryWriter +import org.hl7.cql.model.* +import org.hl7.elm.r1.* +import kotlin.jvm.JvmStatic + +open class CommonCqlTranslator( + namespaceInfo: NamespaceInfo?, + sourceInfo: VersionedIdentifier?, + `is`: CharStream, + libraryManager: CommonLibraryManager +) { + enum class Format { + XML, + JSON, + COFFEE + } + + private val compiler = CommonCqlCompiler(namespaceInfo, sourceInfo, libraryManager) + + init { + compiler.run(`is`) + } + + private fun toXml(library: Library): String { + return convertToXml(library) + } + + private fun toJson(library: Library): String { + return convertToJson(library) + } + + fun toXml(): String { + return toXml(compiler.library!!) + } + + fun toJson(): String { + return toJson(compiler.library!!) + } + + fun toELM(): Library? { + return compiler.library + } + + val translatedLibrary: CompiledLibrary? + get() = compiler.compiledLibrary + + fun toObject(): Any? { + return compiler.toObject() + } + + fun toRetrieves(): kotlin.collections.List? { + return compiler.toRetrieves() + } + + val libraries: Map + get() = compiler.libraries + + val exceptions: kotlin.collections.List? + // public Map getLibrariesAsXML() { + get() = compiler.exceptions + + val errors: kotlin.collections.List? + get() = compiler.errors + + val warnings: kotlin.collections.List? + get() = compiler.warnings + + val messages: kotlin.collections.List? + get() = compiler.messages + + @Suppress("TooManyFunctions") + companion object { + + @JvmStatic + fun fromText(cqlText: String, libraryManager: CommonLibraryManager): CommonCqlTranslator { + return CommonCqlTranslator(null, null, CharStreams.fromString(cqlText), libraryManager) + } + + @JvmStatic + fun convertToXml(library: Library): String { + return getElmLibraryWriter(LibraryContentType.XML.mimeType()) + .writeAsString(library) + } + + @JvmStatic + fun convertToJson(library: Library): String { + return getElmLibraryWriter(LibraryContentType.JSON.mimeType()) + .writeAsString(library) + } + } +} diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt similarity index 90% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt index 6a4712926..8890a6d9d 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/CqlTranslatorOptions.kt @@ -1,6 +1,7 @@ package org.cqframework.cql.cql2elm -import java.util.* +import kotlin.jvm.JvmStatic + class CqlTranslatorOptions { enum class Format { @@ -27,7 +28,7 @@ class CqlTranslatorOptions { fun defaultOptions(): CqlTranslatorOptions { return CqlTranslatorOptions() .withCqlCompilerOptions(CqlCompilerOptions.defaultOptions()) - .withFormats(EnumSet.of(Format.XML)) + .withFormats(setOf(Format.XML)) } } } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/DataTypes.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/DataTypes.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/DataTypes.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/DataTypes.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt similarity index 62% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt index cdfb695d8..fec74f7b8 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/IdentifierContext.kt @@ -1,19 +1,19 @@ package org.cqframework.cql.cql2elm -import java.util.* import org.hl7.elm.r1.Element +import kotlin.reflect.KClass /** * Simple POJO using for identifier hider that maintains the identifier and Trackable type of the * construct being evaluated. */ -class IdentifierContext(val identifier: String, val trackableSubclass: Class?) { +class IdentifierContext(val identifier: String, val trackableSubclass: KClass?) { override fun equals(other: Any?): Boolean { if (this === other) { return true } - if (other == null || javaClass != other.javaClass) { + if (other == null || this::class != other::class) { return false } val that = other as IdentifierContext @@ -21,13 +21,13 @@ class IdentifierContext(val identifier: String, val trackableSubclass: Class() private val expressionDefinitions = ExpressionDefinitionContextStack() private val functionDefs = Stack() - private val globalIdentifiers: Deque = ArrayDeque() - private val localIdentifierStack = Stack>() + private val globalIdentifiers = ArrayDeque() + private val localIdentifierStack = Stack>() private var literalContext = 0 private var typeSpecifierContext = 0 - private val modelManager: ModelManager = libraryManager.modelManager + private val modelManager: CommonModelManager = libraryManager.modelManager var defaultModel: Model? = null private set(model) { // The default model is the first model that is not System @@ -102,7 +106,7 @@ class LibraryBuilder( private val af = ObjectFactory() private var listTraversal = true private val options: CqlCompilerOptions = libraryManager.cqlCompilerOptions - private val cqlToElmInfo = af.createCqlToElmInfo() + protected val cqlToElmInfo = af.createCqlToElmInfo() private val typeBuilder = TypeBuilder(objectFactory, modelManager) fun enableListTraversal() { @@ -147,8 +151,7 @@ class LibraryBuilder( private var compatibilityVersion: Version? = null init { - cqlToElmInfo.translatorVersion = - LibraryBuilder::class.java.getPackage().implementationVersion + cqlToElmInfo.translatorVersion = getTranslatorVersion() library.annotation.add(cqlToElmInfo) setCompilerOptions(options) compiledLibrary.library = library @@ -175,15 +178,6 @@ class LibraryBuilder( } } - /* - A "well-known" model name is one that is allowed to resolve without a namespace in a namespace-aware context - */ - fun isWellKnownModelName(unqualifiedIdentifier: String?): Boolean { - return if (namespaceInfo == null) { - false - } else modelManager.isWellKnownModelName(unqualifiedIdentifier) - } - /* A "well-known" library name is a library name that is allowed to resolve without a namespace in a namespace-aware context */ @@ -387,7 +381,7 @@ class LibraryBuilder( // intervalTypeSpecifier: 'interval' '<' typeSpecifier '>' // listTypeSpecifier: 'list' '<' typeSpecifier '>' return when { - typeSpecifier.lowercase(Locale.getDefault()).startsWith("interval<") -> { + typeSpecifier.lowercase().startsWith("interval<") -> { val pointType = resolveTypeSpecifier( typeSpecifier.substring( @@ -398,7 +392,7 @@ class LibraryBuilder( IntervalType(pointType!!) } else -> - if (typeSpecifier.lowercase(Locale.getDefault()).startsWith("list<")) { + if (typeSpecifier.lowercase().startsWith("list<")) { val elementType = resolveTypeName( typeSpecifier.substring( @@ -1580,7 +1574,7 @@ class LibraryBuilder( fun resolveFunction( libraryName: String?, functionName: String, - paramList: List + paramList: kotlin.collections.List ): Expression? { return resolveFunction( libraryName, @@ -1610,7 +1604,7 @@ class LibraryBuilder( fun resolveFunction( libraryName: String?, functionName: String, - paramList: List, + paramList: kotlin.collections.List, mustResolve: Boolean, allowPromotionAndDemotion: Boolean, allowFluent: Boolean @@ -2397,7 +2391,7 @@ class LibraryBuilder( return typeBuilder.dataTypeToQName(type) } - private fun dataTypesToTypeSpecifiers(types: List): List { + private fun dataTypesToTypeSpecifiers(types: kotlin.collections.List): kotlin.collections.List { return typeBuilder.dataTypesToTypeSpecifiers(types) } @@ -2734,10 +2728,10 @@ class LibraryBuilder( if (!inLiteralContext() && inSpecificContext()) { val resolvedIdentifierContext: ResolvedIdentifierContext = resolve(currentExpressionContext()) - val optParameterDef: Optional = - resolvedIdentifierContext.getElementOfType(ParameterDef::class.java) - if (optParameterDef.isPresent) { - val contextParameter: ParameterDef = optParameterDef.get() + val optParameterDef = + resolvedIdentifierContext.getElementOfType(ParameterDef::class) + if (optParameterDef != null) { + val contextParameter: ParameterDef = optParameterDef checkLiteralContext() val parameterRef: ParameterRef = objectFactory.createParameterRef().withName(contextParameter.name) @@ -3043,7 +3037,7 @@ class LibraryBuilder( for (path: String in indexerPaths) { if ((path == "%parent")) { require(source is Property) { - "Cannot expand target map $targetMap for non-property-accessor type ${source!!.javaClass.simpleName}" + "Cannot expand target map $targetMap for non-property-accessor type ${source!!::class.simpleName}" } val sourceProperty: Property = source result = @@ -3438,7 +3432,7 @@ class LibraryBuilder( // Need to use a for loop to go through backwards, iteration on a Stack is bottom up if (inQueryContext()) { for (i in scope.queries.indices.reversed()) { - val source = scope.queries[i].resolveAlias(identifier) + val source = scope.queries.elementAt(i).resolveAlias(identifier) if (source != null) { return source } @@ -3474,7 +3468,7 @@ class LibraryBuilder( // Need to use a for loop to go through backwards, iteration on a Stack is bottom up if (inQueryContext()) { for (i in scope.queries.indices.reversed()) { - val let = scope.queries[i].resolveLet(identifier) + val let = scope.queries.elementAt(i).resolveLet(identifier) if (let != null) { return let } @@ -3570,12 +3564,12 @@ class LibraryBuilder( val localMatch = if (localIdentifierStack.isNotEmpty()) findMatchingIdentifierContext(localIdentifierStack.peek(), identifier) - else Optional.empty() + else null val globalMatch = findMatchingIdentifierContext(globalIdentifiers, identifier) - if (globalMatch.isPresent || localMatch.isPresent) { - val matchedContext = if (globalMatch.isPresent) globalMatch.get() else localMatch.get() + if (globalMatch != null || localMatch != null) { + val matchedContext = if (globalMatch != null) globalMatch else localMatch!! val matchedOnFunctionOverloads = - matchedContext.trackableSubclass == FunctionDef::class.java && + matchedContext.trackableSubclass == FunctionDef::class && element is FunctionDef if (!matchedOnFunctionOverloads) { reportWarning( @@ -3585,12 +3579,12 @@ class LibraryBuilder( } } if (shouldAddIdentifierContext(element)) { - val trackableOrNull: Class? = element?.javaClass + val trackableOrNull: KClass? = if (element == null) null else element::class // Sometimes the underlying Trackable doesn't resolve in the calling code if (scope == IdentifierScope.GLOBAL) { - globalIdentifiers.push(IdentifierContext(identifier, trackableOrNull)) + globalIdentifiers.add(IdentifierContext(identifier, trackableOrNull)) } else { - localIdentifierStack.peek().push(IdentifierContext(identifier, trackableOrNull)) + localIdentifierStack.peek().add(IdentifierContext(identifier, trackableOrNull)) } } } @@ -3598,11 +3592,10 @@ class LibraryBuilder( private fun findMatchingIdentifierContext( identifierContext: Collection, identifier: String - ): Optional { + ): IdentifierContext? { return identifierContext - .stream() .filter { innerContext: IdentifierContext -> (innerContext.identifier == identifier) } - .findFirst() + .firstOrNull() } /** @@ -3613,9 +3606,9 @@ class LibraryBuilder( @JvmOverloads fun popIdentifier(scope: IdentifierScope = IdentifierScope.LOCAL) { if (scope == IdentifierScope.GLOBAL) { - globalIdentifiers.pop() + globalIdentifiers.removeLast() } else { - localIdentifierStack.peek().pop() + localIdentifierStack.peek().removeLast() } } @@ -3655,7 +3648,7 @@ class LibraryBuilder( private inner class ExpressionDefinitionContextStack : Stack() { operator fun contains(identifier: String): Boolean { - for (i in 0 until elementCount) { + for (i in 0 until size()) { if (this.elementAt(i)?.identifier == identifier) { return true } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibraryContentType.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibraryContentType.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibraryContentType.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibraryContentType.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt similarity index 88% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt index 267683234..ea8aa01cc 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibraryManager.kt @@ -2,31 +2,29 @@ package org.cqframework.cql.cql2elm -import java.io.* +import kotlinx.io.Source import kotlin.collections.ArrayList import kotlin.collections.HashMap import kotlin.collections.HashSet -import kotlinx.io.asSource -import kotlinx.io.buffered import org.cqframework.cql.cql2elm.model.CompiledLibrary import org.cqframework.cql.cql2elm.tracking.Trackable.resultType import org.cqframework.cql.cql2elm.ucum.UcumService -import org.cqframework.cql.cql2elm.ucum.UcumServiceFactory -import org.cqframework.cql.elm.serializing.ElmLibraryReaderFactory +import org.cqframework.cql.elm.serializing.xmlutil.getElmLibraryReader import org.hl7.cql.model.NamespaceManager import org.hl7.elm.r1.* +import kotlin.jvm.JvmOverloads /** * Manages a set of CQL libraries. As new library references are encountered during compilation, the * corresponding source is obtained via librarySourceLoader, compiled and cached for later use. */ -@Suppress("TooManyFunctions") -class LibraryManager -@JvmOverloads -constructor( - val modelManager: ModelManager, +open class CommonLibraryManager( + val modelManager: CommonModelManager, + val namespaceManager: NamespaceManager, + open val librarySourceLoader: CommonLibrarySourceLoader, + val ucumService: UcumService, val cqlCompilerOptions: CqlCompilerOptions = CqlCompilerOptions.defaultOptions(), - libraryCache: MutableMap? = null + val compiledLibraries: MutableMap = HashMap() ) { enum class CacheMode { NONE, @@ -34,12 +32,6 @@ constructor( READ_WRITE } - var namespaceManager = modelManager.namespaceManager - var compiledLibraries: MutableMap = - libraryCache ?: HashMap() - val librarySourceLoader: LibrarySourceLoader = PriorityLibrarySourceLoader() - val ucumService: UcumService by lazy { UcumServiceFactory.load() } - /* * A "well-known" library name is one that is allowed to resolve without a * namespace in a namespace-aware context @@ -100,8 +92,7 @@ constructor( } val libraryPath: String = NamespaceManager.getPath(libraryIdentifier.system, libraryIdentifier.id!!) - try { - val cqlSource: InputStream = + val cqlSource = librarySourceLoader.getLibrarySource(libraryIdentifier) ?: throw CqlIncludeException( """Could not load source for library ${libraryIdentifier.id}, @@ -111,7 +102,7 @@ constructor( libraryIdentifier.version ) val compiler = - CqlCompiler( + CommonCqlCompiler( libraryIdentifier.system?.let { namespaceManager.getNamespaceInfoFromUri(it) }, libraryIdentifier, this @@ -131,15 +122,6 @@ constructor( libraryIdentifier.version ) } - } catch (e: IOException) { - throw CqlIncludeException( - "Errors occurred translating library $libraryPath, version ${libraryIdentifier.version}.", - libraryIdentifier.system!!, - libraryIdentifier.id!!, - libraryIdentifier.version, - e - ) - } if (result == null) { throw CqlIncludeException( "Could not load source for library $libraryPath.", @@ -164,7 +146,7 @@ constructor( libraryIdentifier: VersionedIdentifier, options: CqlCompilerOptions ): CompiledLibrary? { - var elm: InputStream? + var elm: Source? @Suppress("LoopWithTooManyJumpStatements") for (type: LibraryContentType in supportedContentTypes) { if (LibraryContentType.CQL == type) { @@ -181,20 +163,15 @@ constructor( private fun generateCompiledLibraryFromElm( @Suppress("UnusedParameter") libraryIdentifier: VersionedIdentifier, - librarySource: InputStream, + librarySource: Source, type: LibraryContentType, @Suppress("UnusedParameter") options: CqlCompilerOptions ): CompiledLibrary? { - var library: Library? = null + val library = + getElmLibraryReader(type.mimeType()) + .read(librarySource) var compiledLibrary: CompiledLibrary? = null - try { - library = - ElmLibraryReaderFactory.getReader(type.mimeType()) - .read(librarySource.asSource().buffered()) - } catch (@Suppress("SwallowedException") e: IOException) { - // intentionally ignored - } - if (library != null && checkBinaryCompatibility(library)) { + if (checkBinaryCompatibility(library)) { compiledLibrary = generateCompiledLibrary(library) } return compiledLibrary diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibrarySourceProvider.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibrarySourceLoader.kt similarity index 79% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibrarySourceProvider.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibrarySourceLoader.kt index 87eaa9cbd..1e8df3829 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/LibrarySourceProvider.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/LibrarySourceLoader.kt @@ -1,19 +1,18 @@ package org.cqframework.cql.cql2elm -import java.io.InputStream +import kotlinx.io.Source import org.hl7.elm.r1.VersionedIdentifier -interface LibrarySourceProvider { - fun getLibrarySource(libraryIdentifier: VersionedIdentifier): InputStream? +interface CommonLibrarySourceLoader { + fun getLibrarySource(libraryIdentifier: VersionedIdentifier): Source? fun getLibraryContent( libraryIdentifier: VersionedIdentifier, type: LibraryContentType - ): InputStream? { + ): Source? { if (LibraryContentType.CQL == type) { return getLibrarySource(libraryIdentifier) } - return null } } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/MimeType.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/MimeType.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/MimeType.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/MimeType.kt diff --git a/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ModelManager.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ModelManager.kt new file mode 100644 index 000000000..80154d34c --- /dev/null +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ModelManager.kt @@ -0,0 +1,28 @@ +package org.cqframework.cql.cql2elm + +import org.cqframework.cql.cql2elm.model.Model +import org.hl7.cql.model.ModelIdentifier + +interface CommonModelManager { + fun resolveModel(modelIdentifier: ModelIdentifier): Model + fun resolveModel(modelName: String): Model + fun resolveModel(modelName: String, version: String? = null): Model + fun resolveModelByUri(namespaceUri: String): Model +} + +/* +A "well-known" model name is one that is allowed to resolve without a namespace in a namespace-aware context + */ +fun isWellKnownModelName(unqualifiedIdentifier: String?): Boolean { + return if (unqualifiedIdentifier == null) { + false + } else + when (unqualifiedIdentifier) { + "FHIR", + "QDM", + "USCore", + "QICore", + "QUICK" -> true + else -> false + } +} \ No newline at end of file diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/ModelResolver.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ModelResolver.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/ModelResolver.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ModelResolver.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/ResultWithPossibleError.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ResultWithPossibleError.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/ResultWithPossibleError.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/ResultWithPossibleError.kt diff --git a/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SimpleCqlTranslator.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SimpleCqlTranslator.kt new file mode 100644 index 000000000..7febb2f70 --- /dev/null +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SimpleCqlTranslator.kt @@ -0,0 +1,92 @@ +package org.cqframework.cql.cql2elm + +import kotlinx.io.Source +import org.cqframework.cql.cql2elm.model.Model +import org.cqframework.cql.cql2elm.model.SystemModel +import org.cqframework.cql.cql2elm.ucum.UcumService +import org.cqframework.cql.cql2elm.utils.asSource +import org.cqframework.cql.elm.serializing.BigDecimal +import org.cqframework.cql.elm.serializing.xmlutil.getElmLibraryWriter +import org.hl7.cql.model.ModelIdentifier +import org.hl7.cql.model.NamespaceManager +import org.hl7.elm.r1.VersionedIdentifier +import org.hl7.elm_modelinfo.r1.serializing.xmlutil.ModelInfoReaderProvider +import kotlin.js.JsExport + +@JsExport +fun cqlToElm( + cqlText: String, + getModelXml: ( + id: String, + system: String?, + version: String? + ) -> String, + getLibraryCql: ( + id: String, + system: String?, + version: String? + ) -> String? = { _, _, _ -> null }, + validateUnit: (unit: String) -> String? = { null }, + outputContentType: String = LibraryContentType.JSON.mimeType() +): String { + val namespaceManager = NamespaceManager() + + val modelManager = object : CommonModelManager { + private val modelsByUri: MutableMap = HashMap() + + override fun resolveModel(modelIdentifier: ModelIdentifier): Model { + val modelXml = getModelXml(modelIdentifier.id, modelIdentifier.system, modelIdentifier.version) + val modelInfo = ModelInfoReaderProvider().create("application/xml").read(modelXml) + val model = if (modelIdentifier.id == "System") { + SystemModel(modelInfo) + } else { + Model(modelInfo, this) + } + modelsByUri[model.modelInfo.url!!] = model + return model + } + + override fun resolveModel(modelName: String): Model { + return resolveModel(ModelIdentifier(modelName, version = null)) + } + + override fun resolveModel(modelName: String, version: String?): Model { + return resolveModel(ModelIdentifier(modelName, version = version)) + } + + override fun resolveModelByUri(namespaceUri: String): Model { + return modelsByUri[namespaceUri]!! + } + } + + val librarySourceLoader = object : CommonLibrarySourceLoader { + override fun getLibrarySource(libraryIdentifier: VersionedIdentifier): Source? { + val cql = getLibraryCql(libraryIdentifier.id!!, libraryIdentifier.system, libraryIdentifier.version) + return cql?.asSource() + } + + override fun getLibraryContent( + libraryIdentifier: VersionedIdentifier, + type: LibraryContentType + ): Source? { + return getLibrarySource(libraryIdentifier) + } + } + + val ucumService = object : UcumService { + override fun convert(value: BigDecimal, sourceUnit: String, destUnit: String): BigDecimal { + // We don't expect convert to be called during translation + throw IllegalStateException("Unexpected call to convert") + } + + override fun validate(unit: String): String? { + return validateUnit(unit) + } + } + + val libraryManager = CommonLibraryManager(modelManager, namespaceManager, librarySourceLoader, ucumService) + + val translator = CommonCqlTranslator.fromText(cqlText, libraryManager) + + return getElmLibraryWriter(outputContentType).writeAsString(translator.toELM()!!) +} diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt similarity index 98% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt index 94759fd0b..186e22588 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/StringEscapeUtils.kt @@ -1,5 +1,7 @@ package org.cqframework.cql.cql2elm +import kotlin.jvm.JvmStatic + /** Created by Bryn on 3/22/2017. */ object StringEscapeUtils { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt similarity index 97% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt index 842b70f0d..255221669 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SystemFunctionResolver.kt @@ -10,6 +10,7 @@ import org.cqframework.cql.cql2elm.model.invocation.DateTimeInvocation.Companion import org.cqframework.cql.cql2elm.model.invocation.TimeInvocation.Companion.setTimeFieldsFromOperands import org.cqframework.cql.cql2elm.tracking.Trackable.resultType import org.cqframework.cql.cql2elm.tracking.Trackable.trackbacks +import org.cqframework.cql.elm.createExpression import org.hl7.elm.r1.* @Suppress("LargeClass", "TooManyFunctions") @@ -366,7 +367,7 @@ class SystemFunctionResolver(private val builder: LibraryBuilder) { } private fun resolveCalculateAgeAt( - e: List, + e: kotlin.collections.List, p: DateTimePrecision ): BinaryExpressionInvocation { val operator = of.createCalculateAgeAt().withPrecision(p).withOperand(e) @@ -652,15 +653,19 @@ class SystemFunctionResolver(private val builder: LibraryBuilder) { // General Function Support private inline fun createExpression(functionRef: FunctionRef): T { - return try { - T::class.java.cast(of.javaClass.getMethod("create" + functionRef.name).invoke(of)) - } catch (@Suppress("TooGenericExceptionCaught") e: Exception) { - throw CqlInternalException( - "Could not create instance of Element \"${functionRef.name}\"", - if (functionRef.trackbacks.isNotEmpty()) functionRef.trackbacks[0] else null, - e - ) - } + return of.createExpression(functionRef.name!!) as T + +// This old implementation could still be used on JVM because it could be more performant: +// +// return try { +// T::class.cast(of.javaClass.getMethod("create" + functionRef.name).invoke(of)) +// } catch (@Suppress("TooGenericExceptionCaught") e: Exception) { +// throw CqlInternalException( +// "Could not create instance of Element \"${functionRef.name}\"", +// if (functionRef.trackbacks.isNotEmpty()) functionRef.trackbacks[0] else null, +// e +// ) +// } } private fun resolveUnary(functionRef: FunctionRef): UnaryExpressionInvocation<*> { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt similarity index 99% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt index 54a179c2e..b1961f65f 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/SystemMethodResolver.kt @@ -2,7 +2,6 @@ package org.cqframework.cql.cql2elm -import java.util.* import org.cqframework.cql.cql2elm.model.QueryContext import org.cqframework.cql.cql2elm.tracking.Trackable.resultType import org.cqframework.cql.gen.cqlParser @@ -41,7 +40,7 @@ class SystemMethodResolver( actualCount = ctx.expression().size } require(actualCount == expectedCount) { - "Expected ${Integer.valueOf(expectedCount)} argument for method $functionName." + "Expected $expectedCount argument for method $functionName." } } @@ -279,7 +278,7 @@ class SystemMethodResolver( // .all(criteria) resolves as .where(criteria).select(true).allTrue() val query = createWhere(target, functionName, ctx) val returnClause = of.createReturnClause() - returnClause.expression = builder.createLiteral(java.lang.Boolean.valueOf(true)) + returnClause.expression = builder.createLiteral(true) if (query.resultType is ListType) { returnClause.resultType = ListType(returnClause.expression!!.resultType!!) } else { @@ -379,7 +378,7 @@ class SystemMethodResolver( "exclude" -> builder.resolveFunction(null, "Except", getParams(target, ctx)) "exists" -> { if (ctx?.expression() == null || ctx.expression().isEmpty()) { - val params: List = getParams(target, ctx) + val params: kotlin.collections.List = getParams(target, ctx) builder.resolveFunction(null, "Exists", params) } else { // .exists(criteria) resolves as a .where(criteria).exists() diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt similarity index 93% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt index 3e97726b9..647914aa6 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/TypeBuilder.kt @@ -2,7 +2,7 @@ package org.cqframework.cql.cql2elm -import javax.xml.namespace.QName +import nl.adaptivity.xmlutil.QName import kotlin.collections.ArrayList import org.cqframework.cql.cql2elm.model.Model import org.cqframework.cql.cql2elm.tracking.Trackable.withResultType @@ -14,7 +14,7 @@ import org.hl7.elm.r1.TypeSpecifier import org.hl7.elm_modelinfo.r1.ModelInfo class TypeBuilder(private val of: IdObjectFactory, private val mr: ModelResolver) { - class InternalModelResolver(private val modelManager: ModelManager) : ModelResolver { + class InternalModelResolver(private val modelManager: CommonModelManager) : ModelResolver { override fun getModel(modelName: String): Model { return modelManager.resolveModel(modelName) } @@ -22,7 +22,7 @@ class TypeBuilder(private val of: IdObjectFactory, private val mr: ModelResolver constructor( of: IdObjectFactory, - modelManager: ModelManager + modelManager: CommonModelManager ) : this(of, InternalModelResolver(modelManager)) fun dataTypeToQName(type: DataType?): QName { @@ -30,8 +30,8 @@ class TypeBuilder(private val of: IdObjectFactory, private val mr: ModelResolver val namedType: NamedType = type val modelInfo: ModelInfo = mr.getModel(namedType.namespace).modelInfo return QName( - if (modelInfo.targetUrl != null) modelInfo.targetUrl else modelInfo.url, - if (namedType.target != null) namedType.target else namedType.simpleName + if (modelInfo.targetUrl != null) modelInfo.targetUrl!! else modelInfo.url!!, + if (namedType.target != null) namedType.target!! else namedType.simpleName ) } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/elm/ElmEdit.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/elm/ElmEdit.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/elm/ElmEdit.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/elm/ElmEdit.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/elm/ElmEditor.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/elm/ElmEditor.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/elm/ElmEditor.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/elm/ElmEditor.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/elm/IElmEdit.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/elm/IElmEdit.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/elm/IElmEdit.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/elm/IElmEdit.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/CallContext.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/CallContext.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/CallContext.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/CallContext.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Chunk.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Chunk.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Chunk.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Chunk.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt similarity index 94% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt index f94bc790b..fc4dfd799 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/CompiledLibrary.kt @@ -17,6 +17,7 @@ import org.hl7.elm.r1.ParameterDef import org.hl7.elm.r1.UsingDef import org.hl7.elm.r1.ValueSetDef import org.hl7.elm.r1.VersionedIdentifier +import kotlin.reflect.KClass @Suppress("TooManyFunctions") class CompiledLibrary { @@ -133,20 +134,18 @@ class CompiledLibrary { } return namespace.entries - .stream() .filter { it.key.equals(identifier, ignoreCase = true) } .map { it.value } .map { ResolvedIdentifierContext.caseInsensitiveMatch(identifier, it) } - .findFirst() - .orElse(ResolvedIdentifierContext.caseInsensitiveMatch(identifier, null)) + .firstOrNull() ?: ResolvedIdentifierContext.caseInsensitiveMatch(identifier, null) } fun resolveUsingRef(identifier: String): UsingDef? { - return resolveIdentifier(identifier, UsingDef::class.java) + return resolveIdentifier(identifier, UsingDef::class) } fun resolveIncludeRef(identifier: String): IncludeDef? { - return resolveIdentifier(identifier, IncludeDef::class.java) + return resolveIdentifier(identifier, IncludeDef::class) } fun resolveIncludeAlias(identifier: VersionedIdentifier?): String? { @@ -160,30 +159,30 @@ class CompiledLibrary { } fun resolveCodeSystemRef(identifier: String): CodeSystemDef? { - return resolveIdentifier(identifier, CodeSystemDef::class.java) + return resolveIdentifier(identifier, CodeSystemDef::class) } fun resolveValueSetRef(identifier: String): ValueSetDef? { - return resolveIdentifier(identifier, ValueSetDef::class.java) + return resolveIdentifier(identifier, ValueSetDef::class) } fun resolveCodeRef(identifier: String): CodeDef? { - return resolveIdentifier(identifier, CodeDef::class.java) + return resolveIdentifier(identifier, CodeDef::class) } fun resolveConceptRef(identifier: String): ConceptDef? { - return resolveIdentifier(identifier, ConceptDef::class.java) + return resolveIdentifier(identifier, ConceptDef::class) } fun resolveParameterRef(identifier: String): ParameterDef? { - return resolveIdentifier(identifier, ParameterDef::class.java) + return resolveIdentifier(identifier, ParameterDef::class) } fun resolveExpressionRef(identifier: String): ExpressionDef? { - return resolveIdentifier(identifier, ExpressionDef::class.java) + return resolveIdentifier(identifier, ExpressionDef::class) } - private fun resolveIdentifier(identifier: String, clazz: Class): T? { + private fun resolveIdentifier(identifier: String, clazz: KClass): T? { return resolve(identifier).resolveIdentifier(clazz) } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Conversion.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Conversion.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Conversion.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Conversion.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt similarity index 99% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt index c62a6c39b..9a970a52e 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ConversionMap.kt @@ -6,6 +6,7 @@ import org.hl7.cql.model.ChoiceType import org.hl7.cql.model.DataType import org.hl7.cql.model.IntervalType import org.hl7.cql.model.ListType +import kotlin.jvm.JvmStatic @Suppress("TooManyFunctions") class ConversionMap { @@ -78,7 +79,7 @@ class ConversionMap { } fun getConversions(fromType: DataType): MutableList { - return map.computeIfAbsent(fromType) { ArrayList() } + return map.getOrPut(fromType) { ArrayList() } } /* @@ -403,7 +404,7 @@ class ConversionMap { companion object { @JvmStatic fun getTypePrecedenceScore(operand: DataType): Int { - return when (operand.javaClass.simpleName) { + return when (operand::class.simpleName) { "SimpleType" -> TypePrecedenceScore.Simple.score "TupleType" -> TypePrecedenceScore.Tuple.score "ClassType" -> TypePrecedenceScore.Class.score diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt similarity index 82% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt index 6da09b164..ba6efe5c0 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/FunctionHeader.kt @@ -1,6 +1,5 @@ package org.cqframework.cql.cql2elm.model -import java.util.* import org.hl7.elm.r1.FunctionDef import org.hl7.elm.r1.NamedTypeSpecifier import org.hl7.elm.r1.TypeSpecifier @@ -29,9 +28,9 @@ data class FunctionHeader(val functionDef: FunctionDef, val resultType: TypeSpec } override fun toString(): String { - return StringJoiner(", ", FunctionHeader::class.java.simpleName + "[", "]") - .add("functionDef=$functionDef") - .add("resultType=$resultType") - .toString() + return listOf( + "functionDef=$functionDef", + "resultType=$resultType" + ).joinToString(", ", FunctionHeader::class.simpleName + "[", "]") } } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt similarity index 99% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt index 0d97d4db8..87574ca0b 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/GenericOperator.kt @@ -1,6 +1,5 @@ package org.cqframework.cql.cql2elm.model -import java.util.* import org.hl7.cql.model.DataType import org.hl7.cql.model.TypeParameter diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/InstantiationContextImpl.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/InstantiationContextImpl.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/InstantiationContextImpl.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/InstantiationContextImpl.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/InstantiationResult.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/InstantiationResult.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/InstantiationResult.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/InstantiationResult.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt similarity index 96% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt index 6298d8165..df2b215b1 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Invocation.kt @@ -3,6 +3,7 @@ package org.cqframework.cql.cql2elm.model import org.hl7.cql.model.DataType import org.hl7.elm.r1.Expression import org.hl7.elm.r1.TypeSpecifier +import kotlin.jvm.JvmSuppressWildcards /** * The Invocation interface is used to represent an invocation of an operator or function in the ELM diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/LibraryRef.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/LibraryRef.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/LibraryRef.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/LibraryRef.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Model.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Model.kt similarity index 93% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Model.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Model.kt index fcb5e5e07..d83d773de 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Model.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Model.kt @@ -1,14 +1,14 @@ package org.cqframework.cql.cql2elm.model -import java.util.* -import org.cqframework.cql.cql2elm.ModelManager +import org.cqframework.cql.cql2elm.CommonModelManager import org.hl7.cql.model.ClassType import org.hl7.cql.model.DataType import org.hl7.cql.model.ModelContext import org.hl7.cql.model.NamedType import org.hl7.elm_modelinfo.r1.ModelInfo +import kotlin.jvm.JvmOverloads -open class Model(val modelInfo: ModelInfo, modelManager: ModelManager?) { +open class Model(val modelInfo: ModelInfo, modelManager: CommonModelManager?) { private var index: Map = HashMap() private val classIndex: MutableMap = HashMap() private val conversions: MutableList = ArrayList() @@ -95,7 +95,7 @@ open class Model(val modelInfo: ModelInfo, modelManager: ModelManager?) { private fun casify(typeName: String): String { return if ((modelInfo.isCaseSensitive() != null && modelInfo.isCaseSensitive()!!)) - typeName.lowercase(Locale.getDefault()) + typeName.lowercase() else typeName } } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt similarity index 98% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt index 239010d1b..0b8510d6d 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ModelImporter.kt @@ -1,9 +1,8 @@ package org.cqframework.cql.cql2elm.model -import java.util.* import kotlin.collections.ArrayList import kotlin.collections.HashMap -import org.cqframework.cql.cql2elm.ModelManager +import org.cqframework.cql.cql2elm.CommonModelManager import org.hl7.cql.model.ChoiceType import org.hl7.cql.model.ClassType import org.hl7.cql.model.ClassTypeElement @@ -52,7 +51,7 @@ import org.hl7.elm_modelinfo.r1.TypeSpecifier "ReturnCount", "UnusedParameter" ) -class ModelImporter(val modelInfo: ModelInfo, val modelManager: ModelManager?) { +class ModelImporter(val modelInfo: ModelInfo, val modelManager: CommonModelManager?) { private val modelIndex: MutableMap = HashMap() private val typeInfoIndex: MutableMap = HashMap() private val resolvedTypes: MutableMap = HashMap() @@ -173,7 +172,7 @@ class ModelImporter(val modelInfo: ModelInfo, val modelManager: ModelManager?) { typeName: String, caseSensitive: Boolean = modelInfo.isCaseSensitive() ?: false ): String { - return if (caseSensitive) typeName.lowercase(Locale.getDefault()) else typeName + return if (caseSensitive) typeName.lowercase() else typeName } private fun resolveTypeInfo(t: TypeInfo): DataType? { @@ -258,13 +257,13 @@ class ModelImporter(val modelInfo: ModelInfo, val modelManager: ModelManager?) { // simpleTypeSpecifier: (identifier '.')? identifier // intervalTypeSpecifier: 'interval' '<' typeSpecifier '>' // listTypeSpecifier: 'list' '<' typeSpecifier '>' - if (typeName.lowercase(Locale.getDefault()).startsWith("interval<")) { + if (typeName.lowercase().startsWith("interval<")) { val pointType = resolveTypeName( typeName.substring(typeName.indexOf('<') + 1, typeName.lastIndexOf('>')) ) return IntervalType(pointType!!) - } else if (typeName.lowercase(Locale.getDefault()).startsWith("list<")) { + } else if (typeName.lowercase().startsWith("list<")) { val elementType = resolveTypeName( typeName.substring(typeName.indexOf('<') + 1, typeName.lastIndexOf('>')) diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Operator.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Operator.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Operator.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Operator.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorEntry.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorEntry.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorEntry.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorEntry.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt similarity index 98% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt index 75fb184f3..9a76d51c2 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorMap.kt @@ -16,7 +16,7 @@ class OperatorMap { } private fun getEntry(operatorName: String): OperatorEntry { - return operators.computeIfAbsent(operatorName) { OperatorEntry(operatorName) } + return operators.getOrPut(operatorName) { OperatorEntry(operatorName) } } private fun supportsOperator( diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorResolution.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorResolution.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/OperatorResolution.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/OperatorResolution.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt similarity index 98% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt index 2037b9d4a..3461eb5d7 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/PropertyResolution.kt @@ -4,6 +4,7 @@ import org.hl7.cql.model.ClassTypeElement import org.hl7.cql.model.DataType import org.hl7.cql.model.SearchType import org.hl7.cql.model.TupleTypeElement +import kotlin.jvm.JvmOverloads /** Created by Bryn on 4/19/2019. */ data class PropertyResolution( diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/QueryContext.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/QueryContext.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/QueryContext.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/QueryContext.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt similarity index 90% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt index b46652d21..0d3cff83d 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/ResolvedIdentifierContext.kt @@ -1,6 +1,5 @@ package org.cqframework.cql.cql2elm.model -import java.util.* import org.hl7.elm.r1.CodeDef import org.hl7.elm.r1.CodeSystemDef import org.hl7.elm.r1.ConceptDef @@ -11,13 +10,15 @@ import org.hl7.elm.r1.OperandDef import org.hl7.elm.r1.ParameterDef import org.hl7.elm.r1.TupleElementDefinition import org.hl7.elm.r1.ValueSetDef +import kotlin.reflect.KClass +import kotlin.reflect.cast /** * Context for resolved identifiers containing the identifier, the resolved element (if non-null) as * well as the type of matching done to retrieve the element, whether case-sensitive or * case-insensitive. */ -@ExposedCopyVisibility +// TODO @ExposedCopyVisibility data class ResolvedIdentifierContext private constructor( private val identifier: String, @@ -47,7 +48,7 @@ private constructor( return null } - fun resolveIdentifier(clazz: Class): T? { + fun resolveIdentifier(clazz: KClass): T? { return if (exactMatchElement != null && clazz.isInstance(element)) { clazz.cast(element) } else { @@ -55,12 +56,12 @@ private constructor( } } - fun getElementOfType(clazz: Class): Optional { + fun getElementOfType(clazz: KClass): T? { if (clazz.isInstance(element)) { - return Optional.of(clazz.cast(element)) + return clazz.cast(element) } - return Optional.empty() + return null } companion object { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Signature.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Signature.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Signature.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Signature.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt similarity index 99% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt index e3d245e72..3832b2186 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/SystemLibraryHelper.kt @@ -9,6 +9,7 @@ import org.hl7.cql.model.TypeParameter import org.hl7.elm.r1.FunctionDef import org.hl7.elm.r1.OperandDef import org.hl7.elm.r1.VersionedIdentifier +import kotlin.jvm.JvmStatic @Suppress("LargeClass", "LongMethod") object SystemLibraryHelper { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/SystemModel.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/SystemModel.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/SystemModel.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/SystemModel.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/TimingOperatorContext.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/TimingOperatorContext.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/TimingOperatorContext.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/TimingOperatorContext.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Version.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Version.kt similarity index 94% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Version.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Version.kt index 8c7d16a87..5723caa5f 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/Version.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/Version.kt @@ -1,6 +1,5 @@ package org.cqframework.cql.cql2elm.model -import java.util.regex.Pattern import kotlin.math.max /** Created by Bryn on 3/2/2017. */ @@ -107,7 +106,7 @@ data class Version(private val version: String) : Comparable { } private fun String.toUnsignedIntOrNull(): Int? { - return if (isUnsignedInteger.matcher(this).matches()) this.toInt() else null + return if (isUnsignedInteger.matches(this)) this.toInt() else null } private fun isComparable(level: Int): Boolean { @@ -132,7 +131,7 @@ data class Version(private val version: String) : Comparable { } companion object { - private val isUnsignedInteger: Pattern = Pattern.compile("[0-9]+") - private val versionPartPattern = Pattern.compile("[.\\-]") + private val isUnsignedInteger = Regex("[0-9]+") + private val versionPartPattern = Regex("[.\\-]") } } diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AbstractExpressionInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AbstractExpressionInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AbstractExpressionInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AbstractExpressionInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AggregateExpressionInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AggregateExpressionInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AggregateExpressionInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AggregateExpressionInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInCodeSystemInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInCodeSystemInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInCodeSystemInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInCodeSystemInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInValueSetInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInValueSetInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInValueSetInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/AnyInValueSetInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/BinaryExpressionInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/BinaryExpressionInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/BinaryExpressionInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/BinaryExpressionInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/CombineInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/CombineInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/CombineInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/CombineInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/ConvertInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/ConvertInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/ConvertInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/ConvertInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt similarity index 96% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt index ef17e40ad..e5659fbe0 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateInvocation.kt @@ -2,6 +2,7 @@ package org.cqframework.cql.cql2elm.model.invocation import org.hl7.elm.r1.Date import org.hl7.elm.r1.Expression +import kotlin.jvm.JvmStatic class DateInvocation(expression: Date) : OperatorExpressionInvocation(expression) { override var operands: List diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt similarity index 98% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt index 1808460f1..42bc02588 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/DateTimeInvocation.kt @@ -2,6 +2,7 @@ package org.cqframework.cql.cql2elm.model.invocation import org.hl7.elm.r1.DateTime import org.hl7.elm.r1.Expression +import kotlin.jvm.JvmStatic class DateTimeInvocation(expression: DateTime) : OperatorExpressionInvocation(expression) { diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/FirstInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/FirstInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/FirstInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/FirstInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/FunctionRefInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/FunctionRefInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/FunctionRefInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/FunctionRefInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/InCodeSystemInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/InCodeSystemInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/InCodeSystemInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/InCodeSystemInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/InValueSetInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/InValueSetInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/InValueSetInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/InValueSetInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/IndexOfInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/IndexOfInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/IndexOfInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/IndexOfInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastPositionOfInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastPositionOfInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastPositionOfInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/LastPositionOfInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/MessageInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/MessageInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/MessageInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/MessageInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/NaryExpressionInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/NaryExpressionInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/NaryExpressionInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/NaryExpressionInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt similarity index 92% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt index 3c2426789..c47b5c1f0 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/OperatorExpressionInvocation.kt @@ -2,6 +2,7 @@ package org.cqframework.cql.cql2elm.model.invocation import org.hl7.elm.r1.OperatorExpression import org.hl7.elm.r1.TypeSpecifier +import kotlin.jvm.JvmSuppressWildcards /** Created by Bryn on 4/12/2018. */ abstract class OperatorExpressionInvocation(expression: O) : diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/PositionOfInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/PositionOfInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/PositionOfInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/PositionOfInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/RoundInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/RoundInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/RoundInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/RoundInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SkipInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SkipInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SkipInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SkipInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitOnMatchesInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitOnMatchesInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitOnMatchesInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SplitOnMatchesInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SubstringInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SubstringInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/SubstringInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/SubstringInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TailInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TailInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TailInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TailInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TakeInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TakeInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TakeInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TakeInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TernaryExpressionInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TernaryExpressionInvocation.kt similarity index 100% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TernaryExpressionInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TernaryExpressionInvocation.kt diff --git a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt similarity index 97% rename from Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt rename to Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt index 2708ea3e8..79c4eb55e 100644 --- a/Src/java/cql-to-elm/src/main/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt +++ b/Src/java/cql-to-elm/src/commonMain/kotlin/org/cqframework/cql/cql2elm/model/invocation/TimeInvocation.kt @@ -2,6 +2,7 @@ package org.cqframework.cql.cql2elm.model.invocation import org.hl7.elm.r1.Expression import org.hl7.elm.r1.Time +import kotlin.jvm.JvmStatic class TimeInvocation(expression: Time) : OperatorExpressionInvocation