From b324f3b4dd20a1a1dcaf5d378e3692e70b1cf258 Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Thu, 23 Jan 2025 18:23:44 +0100 Subject: [PATCH 01/39] Quick and dirty Fhir packager api --- .../Infrastructure/EnumerableExtensions.cs | 5 ++ .../Infrastructure/Graphs/Traversal.cs | 9 +-- Cql/Cql.Packaging/ResourcePackager.cs | 70 ++++++++++++------- Cql/CqlSdkPrototype/Elm/ElmApiState.cs | 2 +- Cql/CqlSdkPrototype/Fhir/FhirApi.cs | 54 ++++++++++++++ 5 files changed, 107 insertions(+), 33 deletions(-) create mode 100644 Cql/CqlSdkPrototype/Fhir/FhirApi.cs diff --git a/Cql/Cql.Abstractions/Infrastructure/EnumerableExtensions.cs b/Cql/Cql.Abstractions/Infrastructure/EnumerableExtensions.cs index a4b4f7cb0..6b148f516 100644 --- a/Cql/Cql.Abstractions/Infrastructure/EnumerableExtensions.cs +++ b/Cql/Cql.Abstractions/Infrastructure/EnumerableExtensions.cs @@ -106,4 +106,9 @@ public static bool TryPeek( value = stack.Peek(); return true; } + + public static IEnumerable EnumerateSingle(this T item) + { + yield return item; + } } \ No newline at end of file diff --git a/Cql/Cql.Compiler/Infrastructure/Graphs/Traversal.cs b/Cql/Cql.Compiler/Infrastructure/Graphs/Traversal.cs index ea18c7427..8a90dec71 100644 --- a/Cql/Cql.Compiler/Infrastructure/Graphs/Traversal.cs +++ b/Cql/Cql.Compiler/Infrastructure/Graphs/Traversal.cs @@ -6,6 +6,8 @@ * available at https://raw.githubusercontent.com/FirelyTeam/firely-cql-sdk/main/LICENSE */ +using Hl7.Cql.Abstractions.Infrastructure; + namespace Hl7.Cql.Compiler.Infrastructure.Graphs; internal static class Traversal @@ -56,7 +58,7 @@ public static IEnumerable TopologicalSort( case 0: return []; case 1: - return EnumerateSingle(unvisited.First()); + return unvisited.First().EnumerateSingle(); } HashSet visited = []; @@ -88,9 +90,4 @@ public static IEnumerable TopologicalSort( return results; } - - private static IEnumerable EnumerateSingle(T first) - { - yield return first; - } } \ No newline at end of file diff --git a/Cql/Cql.Packaging/ResourcePackager.cs b/Cql/Cql.Packaging/ResourcePackager.cs index 29fc5ebe0..e78bd5579 100644 --- a/Cql/Cql.Packaging/ResourcePackager.cs +++ b/Cql/Cql.Packaging/ResourcePackager.cs @@ -14,6 +14,7 @@ using Hl7.Cql.Primitives; using Hl7.Fhir.Model; using Hl7.Fhir.Utility; +using DateTime = System.DateTime; namespace Hl7.Cql.Packaging; @@ -30,7 +31,7 @@ namespace Hl7.Cql.Packaging; internal class ResourcePackager( TypeResolver typeResolver) { - // private readonly FhirResourcePostProcessor? _fhirResourcePostProcessor = fhirResourcePostProcessor; + private readonly CqlTypeToFhirTypeMapper _cqlTypeToFhirTypeMapper = new(typeResolver); public IReadOnlyCollection PackageResources( DirectoryInfo elmDirectory, @@ -47,8 +48,6 @@ void OnResourceCreated(FhirResource resource) resources!.Add(resource); } - var typeCrosswalk = new CqlTypeToFhirTypeMapper(typeResolver); - foreach (var (name, asmData) in assembliesByLibraryName) { var library = elmLibrarySet.GetLibrary(name)!; @@ -76,7 +75,7 @@ void OnResourceCreated(FhirResource resource) if (library.GetVersionedIdentifier() is null) throw new InvalidOperationException("Library VersionedIdentifier should not be null."); - var fhirLibrary = LibraryPackager.CreateLibraryResource(elmFile, cqlFile, resourceCanonicalRootUrl, asmData, typeCrosswalk, library); + var fhirLibrary = LibraryPackager.CreateLibraryResource(elmFile, cqlFile, resourceCanonicalRootUrl, asmData, _cqlTypeToFhirTypeMapper, library); librariesByVersionedIdentifier.Add(library.GetVersionedIdentifier()!, fhirLibrary); // Analyze datarequirements and add to the FHIR Library resource. @@ -264,14 +263,14 @@ from p in populations } } -file static class LibraryPackager +internal static class LibraryPackager { public static FhirLibrary CreateLibraryResource( FileInfo elmFile, FileInfo? cqlFile, string? resourceCanonicalRootUrl, AssemblyDataWithSourceCode assemblyDataWithSourceCode, - CqlTypeToFhirTypeMapper typeCrosswalk, + CqlTypeToFhirTypeMapper cqlTypeToFhirTypeMapper, ElmLibrary? elmLibrary = null) { if (!elmFile.Exists) @@ -284,8 +283,27 @@ public static FhirLibrary CreateLibraryResource( throw new ArgumentException($"File at {elmFile.FullName} is not valid ELM"); } - var fhirLibrary = CreateFhirLibrary(elmLibrary, elmFile, resourceCanonicalRootUrl); - AddElmAttachment(elmLibrary, elmFile, fhirLibrary); + var elmFileLastWriteTimeUtc = elmFile.LastWriteTimeUtc; + var elmBytes = File.ReadAllBytes(elmFile.FullName); + byte[]? cqlBytes = null; + if (cqlFile!.Exists) + cqlBytes = File.ReadAllBytes(cqlFile.FullName); + + return CreateLibraryResource(cqlTypeToFhirTypeMapper, elmLibrary, elmBytes, cqlBytes, assemblyDataWithSourceCode.AssemblyBytes, assemblyDataWithSourceCode.SourceCode, resourceCanonicalRootUrl, elmFileLastWriteTimeUtc); + } + + public static FhirLibrary CreateLibraryResource( + CqlTypeToFhirTypeMapper typeCrosswalk, + ElmLibrary elmLibrary, + byte[] elmBytes, + byte[]? cqlBytes, + byte[]? assemblyBytes, + IEnumerable>? cSharpSourceCodeById, + string? resourceCanonicalRootUrl, + DateTime? elmFileLastWriteTimeUtc) + { + var fhirLibrary = CreateFhirLibrary(elmLibrary, resourceCanonicalRootUrl, elmFileLastWriteTimeUtc ?? DateTime.Now); + AddElmAttachment(elmLibrary, fhirLibrary, elmBytes); var parameters = new List(); AddInParameters(elmLibrary, parameters, typeCrosswalk); AddOutParameters(elmLibrary, parameters, typeCrosswalk); @@ -295,24 +313,27 @@ public static FhirLibrary CreateLibraryResource( var fhirParameters = CreateFhirParameters(elmLibrary); if (fhirParameters.Any()) - AddCQLOptions(fhirLibrary, fhirParameters); + AddCqlOptions(fhirLibrary, fhirParameters); - if (cqlFile!.Exists) - AddCqlAttachment(elmLibrary, fhirLibrary, cqlFile); + if (cqlBytes != null) + AddCqlAttachment(elmLibrary, fhirLibrary, cqlBytes); + + if (assemblyBytes != null) + AddDllAttachment(elmLibrary, fhirLibrary, assemblyBytes); - AddDllAttachment(elmLibrary, fhirLibrary, assemblyDataWithSourceCode); - foreach (var kvp in assemblyDataWithSourceCode.SourceCode!) - AddCSharpAttachment(fhirLibrary, kvp); + if (cSharpSourceCodeById != null) + foreach (var kvp in cSharpSourceCodeById) + AddCSharpAttachment(fhirLibrary, kvp); return fhirLibrary; } private static void AddElmAttachment( ElmLibrary elmLibrary, - FileInfo elmFile, - FhirLibrary fhirLibrary) + FhirLibrary fhirLibrary, + byte[] elmBytes) { - var bytes = File.ReadAllBytes(elmFile.FullName); + var bytes = elmBytes; var attachment = new Attachment { ElementId = $"{elmLibrary.GetVersionedIdentifier()}+elm", @@ -324,8 +345,8 @@ private static void AddElmAttachment( private static FhirLibrary CreateFhirLibrary( ElmLibrary elmLibrary, - FileInfo elmFile, - string? resourceCanonicalRootUrl) + string? resourceCanonicalRootUrl, + DateTime date) { var fhirLibrary = new FhirLibrary(); fhirLibrary.Type = LogicLibraryCodeableConcept; @@ -333,7 +354,7 @@ private static FhirLibrary CreateFhirLibrary( fhirLibrary.Version = elmLibrary.identifier?.version!; fhirLibrary.Name = elmLibrary.identifier?.id!; fhirLibrary.Status = PublicationStatus.Active; - fhirLibrary.Date = new DateTimeIso8601(elmFile.LastWriteTimeUtc, DateTimePrecision.Millisecond).ToString(); + fhirLibrary.Date = new DateTimeIso8601(date, DateTimePrecision.Millisecond).ToString(); fhirLibrary.Url = fhirLibrary.CanonicalUri(resourceCanonicalRootUrl); return fhirLibrary; } @@ -398,10 +419,8 @@ private static void AddInParameters( private static void AddCqlAttachment( ElmLibrary? elmLibrary, FhirLibrary fhirLibrary, - FileInfo cqlFile) + byte[] cqlBytes) { - var cqlBytes = File.ReadAllBytes(cqlFile.FullName); - var attachment = new Attachment { ElementId = $"{elmLibrary!.GetVersionedIdentifier()}+cql", @@ -411,7 +430,7 @@ private static void AddCqlAttachment( fhirLibrary.Content.Add(attachment); } - private static void AddCQLOptions( + private static void AddCqlOptions( FhirLibrary fhirLibrary, IReadOnlyList fhirParameters) { @@ -453,9 +472,8 @@ private static void AddCSharpAttachment(FhirLibrary library, KeyValuePair.Empty.WithComparers(CqlVersionedLibraryIdentifier.IdentifierOnlyEqualityComparer); + var entries = ElmApiStateEntryDictionary.Empty/*.WithComparers(CqlVersionedLibraryIdentifier.IdentifierOnlyEqualityComparer)*/; return new ElmApiState(loggerFactory, entries, null!, null!, null!, null!, null!) { // Must be set through the property initializer, to ensure the services are created diff --git a/Cql/CqlSdkPrototype/Fhir/FhirApi.cs b/Cql/CqlSdkPrototype/Fhir/FhirApi.cs new file mode 100644 index 000000000..02df0b57d --- /dev/null +++ b/Cql/CqlSdkPrototype/Fhir/FhirApi.cs @@ -0,0 +1,54 @@ +using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Logging.Internal; +using Hl7.Cql.Abstractions; +using Hl7.Cql.Abstractions.Infrastructure; +using Hl7.Cql.Fhir; +using Hl7.Cql.Packaging; +using Hl7.Fhir.Introspection; + +namespace CqlSdkPrototype.Fhir; + +using ElmLibrary = Hl7.Cql.Elm.Library; +using FhirLibrary = Hl7.Fhir.Model.Library; +using DateTime = System.DateTime; + +public class FhirApi(ILoggerFactory? loggerFactory) +{ + private readonly FhirApiServices _services = CreateServices(loggerFactory ?? NullLoggerFactory.Instance); + + private static FhirApiServices CreateServices(ILoggerFactory loggerFactory) + { + var services = new ServiceCollection().AddExternalLogging(loggerFactory); + services.TryAddSingleton(_ => Hl7.Fhir.Model.ModelInfo.ModelInspector); + services.TryAddSingleton(); + services.TryAddSingleton(); + var serviceProvider = services.BuildServiceProvider(); + CqlTypeToFhirTypeMapper cqlTypeToFhirTypeMapper = serviceProvider.GetRequiredService(); + return new FhirApiServices(serviceProvider, cqlTypeToFhirTypeMapper); + } + + public FhirLibrary CreateLibraryResource( + ElmLibrary elmLibrary, + byte[] elmBytes, + byte[]? cqlBytes, + string? cSharpSourceCode, + byte[]? assemblyBinary, + string? resourceCanonicalRootUrl = null, + DateTime? elmFileLastWriteTimeUtc = null) + { + var libraryResource = LibraryPackager.CreateLibraryResource( + _services.CqlTypeToFhirTypeMapper, + elmLibrary, + elmBytes, + cqlBytes, + assemblyBinary, + cSharpSourceCode is not null + ? KeyValuePair.Create($"{CqlVersionedLibraryIdentifier.FromVersionedIdentifier(elmLibrary.identifier)}", cSharpSourceCode).EnumerateSingle() + : [], + resourceCanonicalRootUrl, + elmFileLastWriteTimeUtc); + return libraryResource; + } +} + +internal record FhirApiServices(ServiceProvider ServiceProvider, CqlTypeToFhirTypeMapper CqlTypeToFhirTypeMapper); \ No newline at end of file From 9494164bec8748acabad95e7464c2b199072c1dd Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Fri, 24 Jan 2025 14:26:57 +0100 Subject: [PATCH 02/39] Remove ICqlApiInternal --- Cql/CqlSdkPrototype/Cql/CqlApi.cs | 30 +++++++++---------- .../Cql/Internal/CqlApiInternalExtensions.cs | 7 ----- .../Cql/Internal/ICqlApiInternal.cs | 12 -------- Cql/CqlToElmTests/CoercionTest.cs | 5 ++-- Cql/CqlToElmTests/IfThenElseTest.cs | 3 +- Cql/CqlToElmTests/InvocationBuilderTests.cs | 5 ++-- Cql/CqlToElmTests/LibraryTest.cs | 3 +- Cql/CqlToElmTests/LiteralTest.cs | 3 +- Cql/CqlToElmTests/SymbolTableTest.cs | 3 +- Cql/CqlToElmTests/XmlTest.cs | 3 +- 10 files changed, 30 insertions(+), 44 deletions(-) delete mode 100644 Cql/CqlSdkPrototype/Cql/Internal/CqlApiInternalExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Internal/ICqlApiInternal.cs diff --git a/Cql/CqlSdkPrototype/Cql/CqlApi.cs b/Cql/CqlSdkPrototype/Cql/CqlApi.cs index 6dcb73518..0135c076e 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlApi.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlApi.cs @@ -8,8 +8,7 @@ namespace CqlSdkPrototype.Cql; public class CqlApi : - ICqlApiExtendable, - ICqlApiInternal + ICqlApiExtendable { public CqlApi( ILoggerFactory? loggerFactory = null, @@ -20,13 +19,13 @@ public CqlApi( var entriesBuilder = entries.ToBuilder(); var libraryProvider = new EntriesBuilderLibraryProvider(entriesBuilder); _entries = entries; - _services = CqlApiServices.Create(loggerFactory ?? NullLoggerFactory.Instance, options, libraryProvider); + Services = CqlApiServices.Create(loggerFactory ?? NullLoggerFactory.Instance, options, libraryProvider); _options = options; } #region State - private CqlApiServices _services; + internal CqlApiServices Services { get; private set; } private CqlApiStateEntryDictionary _entries; private CqlApiOptions _options; @@ -34,24 +33,23 @@ private CqlApi WithEntries( CqlApiStateEntryDictionary entries) { _entries = entries; - _services.LibraryProvider.EntriesBuilder = entries.ToBuilder(); + Services.LibraryProvider.EntriesBuilder = entries.ToBuilder(); return this; } public CqlApi WithOptions( Func replaceOptions) { - var libraryProvider = _services.LibraryProvider; - _services.ServiceProvider.Dispose(); + var libraryProvider = Services.LibraryProvider; + Services.ServiceProvider.Dispose(); _options = replaceOptions(_options); - _services = CqlApiServices.Create(_services.LoggerFactory, _options, libraryProvider); + Services = CqlApiServices.Create(Services.LoggerFactory, _options, libraryProvider); return this; } - ILoggerFactory ICqlApiExtendable.LoggerFactory => _services.LoggerFactory; + ILoggerFactory ICqlApiExtendable.LoggerFactory => Services.LoggerFactory; CqlApiOptions ICqlApiExtendable.Options => _options; IReadOnlyDictionary ICqlApiExtendable.Entries => _entries; - CqlApiServices ICqlApiInternal.Services => _services; #endregion @@ -59,10 +57,10 @@ public CqlApi WithOptions( public CqlApi AddCqlLibraries(IEnumerable cqlLibraries) { - var logger = _services.Logger; - var entriesBuilder = _services.LibraryProvider.EntriesBuilder; - var cqlToElmConverter = _services.CqlToElmConverter; - using var scope = _services.ServiceProvider.CreateScope()!; + var logger = Services.Logger; + var entriesBuilder = Services.LibraryProvider.EntriesBuilder; + var cqlToElmConverter = Services.CqlToElmConverter; + using var scope = Services.ServiceProvider.CreateScope()!; var hasChanged = false; foreach (var cqlLibrary in cqlLibraries) { @@ -93,8 +91,8 @@ public CqlApi AddCqlLibraries(IEnumerable cqlLibraries) public CqlApi Translate() { - CqlApiStateEntryDictionary.Builder entriesBuilder = _services.LibraryProvider.EntriesBuilder; - var logger = _services.Logger; + CqlApiStateEntryDictionary.Builder entriesBuilder = Services.LibraryProvider.EntriesBuilder; + var logger = Services.Logger; bool atFirst = true; IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlApiStateEntry cqlTranslationEntry)> GetLibrariesForProcessing() diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlApiInternalExtensions.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlApiInternalExtensions.cs deleted file mode 100644 index 6efe08946..000000000 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlApiInternalExtensions.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace CqlSdkPrototype.Cql.Internal; - -internal static class CqlApiInternalExtensions -{ - internal static ICqlApiInternal AsInternal(this ICqlApiInternal self) - where TCqlApi : ICqlApiInternal => self; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Internal/ICqlApiInternal.cs b/Cql/CqlSdkPrototype/Cql/Internal/ICqlApiInternal.cs deleted file mode 100644 index 63f2c239d..000000000 --- a/Cql/CqlSdkPrototype/Cql/Internal/ICqlApiInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -using CqlSdkPrototype.Cql.Extensibility; - -namespace CqlSdkPrototype.Cql.Internal; - -/// -/// Used to gain internal access to the state of the CQL API. -/// -internal interface ICqlApiInternal : ICqlApiExtendable - where TCqlApi : ICqlApiExtendable -{ - CqlApiServices Services { get; } -} \ No newline at end of file diff --git a/Cql/CqlToElmTests/CoercionTest.cs b/Cql/CqlToElmTests/CoercionTest.cs index 860e05505..9245b44bf 100644 --- a/Cql/CqlToElmTests/CoercionTest.cs +++ b/Cql/CqlToElmTests/CoercionTest.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using Hl7.Cql.Elm; using CqlSdkPrototype.Cql.Internal; @@ -13,9 +14,9 @@ public class CoercionTest : Base EnableListPromotion:true, EnableListDemotion:true, EnableIntervalPromotion:true, - EnableIntervalDemotion:true).AsInternal().Services.ServiceProvider.GetRequiredService(); + EnableIntervalDemotion:true).Services.ServiceProvider.GetRequiredService(); - private static ElmFactory ElmFactory => CreateCqlApi().AsInternal().Services.ServiceProvider.GetRequiredService(); + private static ElmFactory ElmFactory => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); private static Null Null() => new Null().WithResultType(SystemTypes.AnyType); private static Null Null(TypeSpecifier type) => new Null().WithResultType(type); diff --git a/Cql/CqlToElmTests/IfThenElseTest.cs b/Cql/CqlToElmTests/IfThenElseTest.cs index 6580fac69..4a0460ba1 100644 --- a/Cql/CqlToElmTests/IfThenElseTest.cs +++ b/Cql/CqlToElmTests/IfThenElseTest.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using CqlSdkPrototype.Cql.Internal; using Hl7.Cql.Elm; @@ -75,7 +76,7 @@ public void True_Decimal_String() [TestMethod] public void String_Integer_Integer() { - var messageProvider = CreateCqlApi().AsInternal().Services.ServiceProvider.GetRequiredService(); + var messageProvider = CreateCqlApi().Services.ServiceProvider.GetRequiredService(); string[] expectedErrors = [messageProvider.TypeFoundIsNotExpected(SystemTypes.StringType, SystemTypes.BooleanType)]; var library = CreateCqlApi().MakeLibraryFromExpression("if 'hello' then 4 else 5", expectedErrors); diff --git a/Cql/CqlToElmTests/InvocationBuilderTests.cs b/Cql/CqlToElmTests/InvocationBuilderTests.cs index 19e7baabe..edfec3f84 100644 --- a/Cql/CqlToElmTests/InvocationBuilderTests.cs +++ b/Cql/CqlToElmTests/InvocationBuilderTests.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.Elm; using CqlSdkPrototype.Cql.Internal; @@ -9,8 +10,8 @@ namespace Hl7.Cql.CqlToElm.Test [TestClass] public class InvocationBuilderTest : Base { - internal static InvocationBuilder InvocationBuilder => CreateCqlApi().AsInternal().Services.ServiceProvider.GetRequiredService(); - internal static ElmFactory ElmFactory => CreateCqlApi().AsInternal().Services.ServiceProvider.GetRequiredService(); + internal static InvocationBuilder InvocationBuilder => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); + internal static ElmFactory ElmFactory => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); private static ParameterTypeSpecifier Generic(string parameterName = "T") => new ParameterTypeSpecifier { parameterName = parameterName }; diff --git a/Cql/CqlToElmTests/LibraryTest.cs b/Cql/CqlToElmTests/LibraryTest.cs index a42c6473e..5c94271cd 100644 --- a/Cql/CqlToElmTests/LibraryTest.cs +++ b/Cql/CqlToElmTests/LibraryTest.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using Hl7.Cql.Elm; using CqlSdkPrototype.Cql.Internal; @@ -11,7 +12,7 @@ public void Empty() { Assert.ThrowsException(() => CreateCqlApi().MakeLibrary(string.Empty)); var ms = new MemoryStream(); - Assert.ThrowsException(() => CreateCqlApi().AsInternal().Services.CqlToElmConverter.ConvertLibrary(ms)); + Assert.ThrowsException(() => CreateCqlApi().Services.CqlToElmConverter.ConvertLibrary(ms)); } #region Identifier diff --git a/Cql/CqlToElmTests/LiteralTest.cs b/Cql/CqlToElmTests/LiteralTest.cs index e13736ddb..ee22e2a2a 100644 --- a/Cql/CqlToElmTests/LiteralTest.cs +++ b/Cql/CqlToElmTests/LiteralTest.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using CqlSdkPrototype.Cql.Internal; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.Elm; @@ -10,7 +11,7 @@ namespace Hl7.Cql.CqlToElm.Test public class LiteralTest : Base { - private static InvocationBuilder InvocationBuilder => CreateCqlApi().AsInternal().Services.ServiceProvider.GetRequiredService(); + private static InvocationBuilder InvocationBuilder => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); [TestMethod] public void String_Literal() diff --git a/Cql/CqlToElmTests/SymbolTableTest.cs b/Cql/CqlToElmTests/SymbolTableTest.cs index 87547a847..efe3cc9f0 100644 --- a/Cql/CqlToElmTests/SymbolTableTest.cs +++ b/Cql/CqlToElmTests/SymbolTableTest.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.CqlToElm.Scopes; using Hl7.Cql.Elm; @@ -11,7 +12,7 @@ namespace Hl7.Cql.CqlToElm.Test public class SymbolTableTest : Base { private static VersionedIdentifier TestId => new VersionedIdentifier { id = "Test", version = "1.0.0" }; - private static SystemLibrary SystemLibrary => CreateCqlApi().AsInternal().Services.ServiceProvider.GetSystemLibrary(); + private static SystemLibrary SystemLibrary => CreateCqlApi().Services.ServiceProvider.GetSystemLibrary(); [TestMethod] public void Add_Local_Expression() diff --git a/Cql/CqlToElmTests/XmlTest.cs b/Cql/CqlToElmTests/XmlTest.cs index ae260606a..14471e2c6 100644 --- a/Cql/CqlToElmTests/XmlTest.cs +++ b/Cql/CqlToElmTests/XmlTest.cs @@ -1,3 +1,4 @@ +using CqlSdkPrototype.Cql; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.Elm; using Hl7.Cql.Fhir; @@ -75,7 +76,7 @@ public void Run(TestCase testCase) private static Expression Equals(Expression expression, Expression expectation) { var cqlApi = CreateCqlApi(); - var serviceProvider = cqlApi.AsInternal().Services.ServiceProvider; + var serviceProvider = cqlApi.Services.ServiceProvider; var invocationBuilder = serviceProvider.GetService(); var elmFactory = serviceProvider.GetService(); var equal = invocationBuilder.Invoke(SystemLibrary.Equal, expression, expectation); From 004464bcc8cd8f8abbdb1aef06466b4ee0e57fc4 Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Fri, 24 Jan 2025 14:29:09 +0100 Subject: [PATCH 03/39] Remove IElmApiInternal --- Cql/CqlSdkPrototype/CqlSdkPrototype.csproj | 1 + Cql/CqlSdkPrototype/Elm/ElmApi.cs | 5 +---- .../Elm/Internal/ElmApiInternalExtensions.cs | 7 ------- Cql/CqlSdkPrototype/Elm/Internal/IElmApiInternal.cs | 12 ------------ Cql/CqlToElmTests/Base.cs | 3 +-- Cql/CqlToElmTests/TestExtensions.cs | 3 --- Demo/cql-demo.props | 2 +- cql-base.props | 2 +- submodules/Firely.Cql.Sdk.Integration.Runner | 2 +- 9 files changed, 6 insertions(+), 31 deletions(-) delete mode 100644 Cql/CqlSdkPrototype/Elm/Internal/ElmApiInternalExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Internal/IElmApiInternal.cs diff --git a/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj b/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj index 51629cd31..3a249c3ad 100644 --- a/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj +++ b/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj @@ -32,6 +32,7 @@ + diff --git a/Cql/CqlSdkPrototype/Elm/ElmApi.cs b/Cql/CqlSdkPrototype/Elm/ElmApi.cs index 6ff3bdcc7..143a5b07c 100644 --- a/Cql/CqlSdkPrototype/Elm/ElmApi.cs +++ b/Cql/CqlSdkPrototype/Elm/ElmApi.cs @@ -1,5 +1,4 @@ using CqlSdkPrototype.Elm.Extensibility; -using CqlSdkPrototype.Elm.Internal; using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; using Hl7.Cql.Abstractions.Exceptions; @@ -11,8 +10,7 @@ namespace CqlSdkPrototype.Elm; public class ElmApi : - IElmApiExtendable, - IElmApiInternal + IElmApiExtendable { public ElmApi( ILoggerFactory? loggerFactory = null, @@ -44,7 +42,6 @@ public ElmApi WithOptions( } TResult IElmApiExtendable.UseLogger(Func, TResult> action) => action(this, _state.Logger); - ElmApiState IElmApiInternal.State => _state; ILoggerFactory IElmApiExtendable.LoggerFactory => _state.LoggerFactory; #endregion diff --git a/Cql/CqlSdkPrototype/Elm/Internal/ElmApiInternalExtensions.cs b/Cql/CqlSdkPrototype/Elm/Internal/ElmApiInternalExtensions.cs deleted file mode 100644 index 2ab55142e..000000000 --- a/Cql/CqlSdkPrototype/Elm/Internal/ElmApiInternalExtensions.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace CqlSdkPrototype.Elm.Internal; - -internal static class ElmApiInternalExtensions -{ - internal static IElmApiInternal AsInternal(this IElmApiInternal self) - where TElmApi : IElmApiInternal => self; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Internal/IElmApiInternal.cs b/Cql/CqlSdkPrototype/Elm/Internal/IElmApiInternal.cs deleted file mode 100644 index dacf01121..000000000 --- a/Cql/CqlSdkPrototype/Elm/Internal/IElmApiInternal.cs +++ /dev/null @@ -1,12 +0,0 @@ -using CqlSdkPrototype.Elm.Extensibility; - -namespace CqlSdkPrototype.Elm.Internal; - -/// -/// Used to gain internal access to the state of the ELM API. -/// -internal interface IElmApiInternal : IElmApiExtendable - where TElmApi : IElmApiExtendable -{ - ElmApiState State { get; } -} \ No newline at end of file diff --git a/Cql/CqlToElmTests/Base.cs b/Cql/CqlToElmTests/Base.cs index 14280421c..7d71e00d5 100644 --- a/Cql/CqlToElmTests/Base.cs +++ b/Cql/CqlToElmTests/Base.cs @@ -5,7 +5,6 @@ using Hl7.Cql.Runtime; using CqlSdkPrototype.Cql; using CqlSdkPrototype.Elm; -using CqlSdkPrototype.Elm.Internal; using CqlSdkPrototype.Runtime; using CqlSdkPrototype.Runtime.Extensions; using CqlSdkPrototype.Infrastructure; @@ -35,7 +34,7 @@ public class Base var elmApi = CreateElmApi(); var lambda = elmApi.Lambda(expression); var expressionName = "TempExpression"; - var state = elmApi.AsInternal().State; + var state = elmApi.State; LibrarySet librarySet = new("TempLibrarySet", library); DefinitionDictionary definitions = new(); definitions.Add(library.GetVersionedIdentifier()!, expressionName, lambda); diff --git a/Cql/CqlToElmTests/TestExtensions.cs b/Cql/CqlToElmTests/TestExtensions.cs index c4b40f3ed..6074709fb 100644 --- a/Cql/CqlToElmTests/TestExtensions.cs +++ b/Cql/CqlToElmTests/TestExtensions.cs @@ -2,7 +2,6 @@ using CqlSdkPrototype.Cql.Extensibility; using CqlSdkPrototype.Cql.Extensions; using CqlSdkPrototype.Elm; -using CqlSdkPrototype.Elm.Internal; using CqlSdkPrototype.Infrastructure; using FluentAssertions.Collections; using Hl7.Cql.Compiler; @@ -63,7 +62,6 @@ internal static DefinitionDictionary ProcessLibrary( Library library) { using var scope = elmApi - .AsInternal() .State .ServiceProvider .CreateScope(); @@ -76,7 +74,6 @@ internal static LambdaExpression Lambda( Expression expression) { using var scope = elmApi - .AsInternal() .State .ServiceProvider .CreateScope(); diff --git a/Demo/cql-demo.props b/Demo/cql-demo.props index ab6d21317..6ab377b69 100644 --- a/Demo/cql-demo.props +++ b/Demo/cql-demo.props @@ -35,7 +35,7 @@ false - true + false diff --git a/cql-base.props b/cql-base.props index 13c645892..54259bbd8 100644 --- a/cql-base.props +++ b/cql-base.props @@ -31,7 +31,7 @@ false - true + false diff --git a/submodules/Firely.Cql.Sdk.Integration.Runner b/submodules/Firely.Cql.Sdk.Integration.Runner index 1c574cdca..26ece97c4 160000 --- a/submodules/Firely.Cql.Sdk.Integration.Runner +++ b/submodules/Firely.Cql.Sdk.Integration.Runner @@ -1 +1 @@ -Subproject commit 1c574cdcab89592e24eaa97b6432a75c78209ce2 +Subproject commit 26ece97c4ae6ca1206ad83a0890136489e11c7bf From fbb0dc319a33a80e33752a568b05d73ab20b5862 Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Mon, 27 Jan 2025 13:12:23 +0100 Subject: [PATCH 04/39] Create special interface to access cql services for testing purposes --- .gitignore | 4 +-- Cql-Sdk-All.sln | 4 +-- Cql/CqlSdkPrototype/Cql/CqlApi.cs | 31 ++++++++++--------- .../Cql/Internal/CqlApiServices.cs | 3 +- Cql/CqlSdkPrototype/CqlSdkPrototype.csproj | 5 --- .../ITestingOnlyServiceProviderAccessor.cs | 6 ++++ .../{ => (tests)}/AdditionTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/AgeTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/AndTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/AsTest.cs | 0 .../{ => (tests)}/BetweenTest.cs | 0 .../{ => (tests)}/BooleanTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/CaseTest.cs | 0 .../{ => (tests)}/CoercionTest.cs | 5 +-- .../{ => (tests)}/ComponentFromTest.cs | 0 .../{ => (tests)}/ConcatenationTest.cs | 0 .../{ => (tests)}/ConcurrentWithTest.cs | 0 .../{ => (tests)}/ContextDefTest.cs | 0 .../{ => (tests)}/ConvertTest.cs | 0 .../{ => (tests)}/CrossLibraryTest.cs | 0 .../{ => (tests)}/DifferenceTest.cs | 0 .../{ => (tests)}/DistinctTest.cs | 0 .../{ => (tests)}/DivisionTest.cs | 0 .../{ => (tests)}/DurationTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/EqualsTest.cs | 0 .../{ => (tests)}/EquivalentTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/ExistsTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/ExpandTest.cs | 0 .../{ => (tests)}/FHIRHelpersTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/FilesTest.cs | 0 .../{ => (tests)}/FlattenTest.cs | 0 .../FunctionDefinitionBuilderTest.cs | 0 .../{ => (tests)}/FunctionDefinitionTest.cs | 0 .../{ => (tests)}/GreaterTest.cs | 0 .../{ => (tests)}/IfThenElseTest.cs | 2 +- .../{ => (tests)}/ImpliesTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/InTest.cs | 0 .../{ => (tests)}/IncludedInTest.cs | 0 .../{ => (tests)}/IncludesTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/IndexTest.cs | 0 .../{ => (tests)}/InfixSetTest.cs | 0 .../{ => (tests)}/InstanceTest.cs | 0 .../{ => (tests)}/IntervalTest.cs | 0 .../{ => (tests)}/InvocationBuilderTests.cs | 14 +++++++-- Cql/CqlToElmTests/{ => (tests)}/IsTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/LengthTest.cs | 0 .../{ => (tests)}/LibraryTest.cs | 2 +- Cql/CqlToElmTests/{ => (tests)}/ListTest.cs | 0 .../{ => (tests)}/LiteralTest.cs | 2 +- Cql/CqlToElmTests/{ => (tests)}/MeetsTest.cs | 0 .../{ => (tests)}/ModelProviderTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/ModelTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/ModuloTest.cs | 0 .../{ => (tests)}/MultiplicationTest.cs | 0 .../{ => (tests)}/NotEqualTest.cs | 0 .../{ => (tests)}/NotEquivalentTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/NotTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/OrTest.cs | 0 .../{ => (tests)}/OrderingTest.cs | 0 .../{ => (tests)}/OverlapsTest.cs | 0 .../{ => (tests)}/PointFromTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/PowerTest.cs | 0 .../{ => (tests)}/PredecessorTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/QueryTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/RefTest.cs | 0 .../{ => (tests)}/RetrieveTest.cs | 0 .../{ => (tests)}/SingletonTest.cs | 0 .../{ => (tests)}/SkippedTests.cs | 0 .../{ => (tests)}/StartEndTest.cs | 0 .../{ => (tests)}/StartsEndsTest.cs | 0 .../{ => (tests)}/StreamInspectorTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/StringTest.cs | 0 .../{ => (tests)}/SubtractionTest.cs | 0 .../{ => (tests)}/SuccessorTest.cs | 0 .../{ => (tests)}/SymbolTableTest.cs | 2 +- Cql/CqlToElmTests/{ => (tests)}/TagsTest.cs | 0 .../{ => (tests)}/TimingExpressionTest.cs | 0 .../{ => (tests)}/TruncatedDivisionTest.cs | 0 .../{ => (tests)}/TypeExtentTest.cs | 0 .../{ => (tests)}/VersionTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/WidthTest.cs | 0 Cql/CqlToElmTests/{ => (tests)}/XmlTest.cs | 5 ++- Cql/CqlToElmTests/{ => (tests)}/XorTest.cs | 0 ...ngOnlyServiceProviderAccessorExtensions.cs | 29 +++++++++++++++++ .../CqlToElmTests.csproj.DotSettings | 2 ++ 85 files changed, 80 insertions(+), 36 deletions(-) create mode 100644 Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs rename Cql/CqlToElmTests/{ => (tests)}/AdditionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/AgeTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/AndTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/AsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/BetweenTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/BooleanTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/CaseTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/CoercionTest.cs (98%) rename Cql/CqlToElmTests/{ => (tests)}/ComponentFromTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ConcatenationTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ConcurrentWithTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ContextDefTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ConvertTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/CrossLibraryTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/DifferenceTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/DistinctTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/DivisionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/DurationTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/EqualsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/EquivalentTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ExistsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ExpandTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/FHIRHelpersTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/FilesTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/FlattenTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/FunctionDefinitionBuilderTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/FunctionDefinitionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/GreaterTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/IfThenElseTest.cs (96%) rename Cql/CqlToElmTests/{ => (tests)}/ImpliesTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/InTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/IncludedInTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/IncludesTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/IndexTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/InfixSetTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/InstanceTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/IntervalTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/InvocationBuilderTests.cs (98%) rename Cql/CqlToElmTests/{ => (tests)}/IsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/LengthTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/LibraryTest.cs (99%) rename Cql/CqlToElmTests/{ => (tests)}/ListTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/LiteralTest.cs (99%) rename Cql/CqlToElmTests/{ => (tests)}/MeetsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ModelProviderTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ModelTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/ModuloTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/MultiplicationTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/NotEqualTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/NotEquivalentTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/NotTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/OrTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/OrderingTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/OverlapsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/PointFromTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/PowerTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/PredecessorTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/QueryTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/RefTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/RetrieveTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/SingletonTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/SkippedTests.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/StartEndTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/StartsEndsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/StreamInspectorTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/StringTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/SubtractionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/SuccessorTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/SymbolTableTest.cs (99%) rename Cql/CqlToElmTests/{ => (tests)}/TagsTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/TimingExpressionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/TruncatedDivisionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/TypeExtentTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/VersionTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/WidthTest.cs (100%) rename Cql/CqlToElmTests/{ => (tests)}/XmlTest.cs (95%) rename Cql/CqlToElmTests/{ => (tests)}/XorTest.cs (100%) create mode 100644 Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs create mode 100644 Cql/CqlToElmTests/CqlToElmTests.csproj.DotSettings diff --git a/.gitignore b/.gitignore index 7dd921057..0856c8b38 100644 --- a/.gitignore +++ b/.gitignore @@ -16,7 +16,6 @@ VSWorkspaceState.json .idea/ # ReSharper Settings -*.DotSettings *.DotSettings.user @@ -408,4 +407,5 @@ VSCodeExtension/ncqa-cql-engine-workspace/test/*/*/results/*.json /Demo/**/Resources/*.* #remove global.json for testing dotnet sdk updates global.json -/Cql/CqlSdkPrototype/generated +#remove all files under generated +**/generated/*.* diff --git a/Cql-Sdk-All.sln b/Cql-Sdk-All.sln index 967beb973..58b278d24 100644 --- a/Cql-Sdk-All.sln +++ b/Cql-Sdk-All.sln @@ -306,7 +306,7 @@ Global {AF223BDF-576D-45FD-9A33-483BAFE1BB75} = {A2259B13-A115-4EA3-9DFB-5411DB88EA6F} {BF2C14B3-EF9B-4BE9-A843-EAA05368BD5A} = {A2259B13-A115-4EA3-9DFB-5411DB88EA6F} {F2ADD1CA-E231-4E88-B0EE-5C6885422629} = {4B5D75F5-E2FC-4CCB-90EF-6DC4A0193032} - {BF5D524C-0582-4471-BC79-B04B2D8DFCDB} = {295F5788-3893-4794-A574-4B0A75A3A4BC} + {BF5D524C-0582-4471-BC79-B04B2D8DFCDB} = {360E03FF-3AA0-4619-ACCA-93E78265F6DD} {0E5F5704-5289-4C65-AD4E-364CD5F60C44} = {D33B7DF4-8AC5-47D1-A782-AC5078FFDEC7} {2929117D-FB33-4BD6-8F20-4B623C114438} = {0E5F5704-5289-4C65-AD4E-364CD5F60C44} {1AF2E4B2-99C5-4678-B926-D224CC83A8F7} = {D33B7DF4-8AC5-47D1-A782-AC5078FFDEC7} @@ -321,7 +321,7 @@ Global {C667CF52-C1E9-41C0-9723-C2DC46C21B46} = {7D787B73-D44A-4B65-B83F-4AF4A752F26C} EndGlobalSection GlobalSection(ExtensibilityGlobals) = postSolution - FileExplorer = |build\|docs\|LibrarySets\|submodules\Firely.Cql.Sdk.Integration.Runner\NodeJsUtils\ SolutionGuid = {366252DE-C2FB-4EAC-96EE-22210BD43DE2} + FileExplorer = |build\|docs\|LibrarySets\|submodules\Firely.Cql.Sdk.Integration.Runner\NodeJsUtils\ EndGlobalSection EndGlobal diff --git a/Cql/CqlSdkPrototype/Cql/CqlApi.cs b/Cql/CqlSdkPrototype/Cql/CqlApi.cs index 0135c076e..36465be7e 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlApi.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlApi.cs @@ -8,7 +8,8 @@ namespace CqlSdkPrototype.Cql; public class CqlApi : - ICqlApiExtendable + ICqlApiExtendable, + ITestingOnlyServiceProviderAccessor { public CqlApi( ILoggerFactory? loggerFactory = null, @@ -19,35 +20,37 @@ public CqlApi( var entriesBuilder = entries.ToBuilder(); var libraryProvider = new EntriesBuilderLibraryProvider(entriesBuilder); _entries = entries; - Services = CqlApiServices.Create(loggerFactory ?? NullLoggerFactory.Instance, options, libraryProvider); + _services = CqlApiServices.Create(loggerFactory ?? NullLoggerFactory.Instance, options, libraryProvider); _options = options; } #region State - internal CqlApiServices Services { get; private set; } + ServiceProvider ITestingOnlyServiceProviderAccessor.ServiceProvider => _services.ServiceProvider; + private CqlApiStateEntryDictionary _entries; private CqlApiOptions _options; + private CqlApiServices _services; private CqlApi WithEntries( CqlApiStateEntryDictionary entries) { _entries = entries; - Services.LibraryProvider.EntriesBuilder = entries.ToBuilder(); + _services.LibraryProvider.EntriesBuilder = entries.ToBuilder(); return this; } public CqlApi WithOptions( Func replaceOptions) { - var libraryProvider = Services.LibraryProvider; - Services.ServiceProvider.Dispose(); + var libraryProvider = _services.LibraryProvider; + _services.ServiceProvider.Dispose(); _options = replaceOptions(_options); - Services = CqlApiServices.Create(Services.LoggerFactory, _options, libraryProvider); + _services = CqlApiServices.Create(_services.LoggerFactory, _options, libraryProvider); return this; } - ILoggerFactory ICqlApiExtendable.LoggerFactory => Services.LoggerFactory; + ILoggerFactory ICqlApiExtendable.LoggerFactory => _services.LoggerFactory; CqlApiOptions ICqlApiExtendable.Options => _options; IReadOnlyDictionary ICqlApiExtendable.Entries => _entries; @@ -57,10 +60,10 @@ public CqlApi WithOptions( public CqlApi AddCqlLibraries(IEnumerable cqlLibraries) { - var logger = Services.Logger; - var entriesBuilder = Services.LibraryProvider.EntriesBuilder; - var cqlToElmConverter = Services.CqlToElmConverter; - using var scope = Services.ServiceProvider.CreateScope()!; + var logger = _services.Logger; + var entriesBuilder = _services.LibraryProvider.EntriesBuilder; + var cqlToElmConverter = _services.CqlToElmConverter; + using var scope = _services.ServiceProvider.CreateScope()!; var hasChanged = false; foreach (var cqlLibrary in cqlLibraries) { @@ -91,8 +94,8 @@ public CqlApi AddCqlLibraries(IEnumerable cqlLibraries) public CqlApi Translate() { - CqlApiStateEntryDictionary.Builder entriesBuilder = Services.LibraryProvider.EntriesBuilder; - var logger = Services.Logger; + CqlApiStateEntryDictionary.Builder entriesBuilder = _services.LibraryProvider.EntriesBuilder; + var logger = _services.Logger; bool atFirst = true; IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlApiStateEntry cqlTranslationEntry)> GetLibrariesForProcessing() diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs index 4395fb603..43fae869f 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs @@ -12,7 +12,8 @@ internal readonly record struct CqlApiServices( ILoggerFactory LoggerFactory, ServiceProvider ServiceProvider, CqlToElmConverter CqlToElmConverter, - EntriesBuilderLibraryProvider LibraryProvider) + EntriesBuilderLibraryProvider LibraryProvider) : + ITestingOnlyServiceProviderAccessor { private static readonly (CqlModel CqlModel, ModelInfo ModelInfo)[] AllMappedModelsInOrder = [ (CqlModel.ElmR1, Models.ElmR1), diff --git a/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj b/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj index 3a249c3ad..a6f7ffe03 100644 --- a/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj +++ b/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj @@ -31,9 +31,4 @@ - - - - - diff --git a/Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs b/Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs new file mode 100644 index 000000000..23ee2a059 --- /dev/null +++ b/Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs @@ -0,0 +1,6 @@ +namespace CqlSdkPrototype.Internal; + +internal interface ITestingOnlyServiceProviderAccessor +{ + ServiceProvider ServiceProvider { get; } +} \ No newline at end of file diff --git a/Cql/CqlToElmTests/AdditionTest.cs b/Cql/CqlToElmTests/(tests)/AdditionTest.cs similarity index 100% rename from Cql/CqlToElmTests/AdditionTest.cs rename to Cql/CqlToElmTests/(tests)/AdditionTest.cs diff --git a/Cql/CqlToElmTests/AgeTest.cs b/Cql/CqlToElmTests/(tests)/AgeTest.cs similarity index 100% rename from Cql/CqlToElmTests/AgeTest.cs rename to Cql/CqlToElmTests/(tests)/AgeTest.cs diff --git a/Cql/CqlToElmTests/AndTest.cs b/Cql/CqlToElmTests/(tests)/AndTest.cs similarity index 100% rename from Cql/CqlToElmTests/AndTest.cs rename to Cql/CqlToElmTests/(tests)/AndTest.cs diff --git a/Cql/CqlToElmTests/AsTest.cs b/Cql/CqlToElmTests/(tests)/AsTest.cs similarity index 100% rename from Cql/CqlToElmTests/AsTest.cs rename to Cql/CqlToElmTests/(tests)/AsTest.cs diff --git a/Cql/CqlToElmTests/BetweenTest.cs b/Cql/CqlToElmTests/(tests)/BetweenTest.cs similarity index 100% rename from Cql/CqlToElmTests/BetweenTest.cs rename to Cql/CqlToElmTests/(tests)/BetweenTest.cs diff --git a/Cql/CqlToElmTests/BooleanTest.cs b/Cql/CqlToElmTests/(tests)/BooleanTest.cs similarity index 100% rename from Cql/CqlToElmTests/BooleanTest.cs rename to Cql/CqlToElmTests/(tests)/BooleanTest.cs diff --git a/Cql/CqlToElmTests/CaseTest.cs b/Cql/CqlToElmTests/(tests)/CaseTest.cs similarity index 100% rename from Cql/CqlToElmTests/CaseTest.cs rename to Cql/CqlToElmTests/(tests)/CaseTest.cs diff --git a/Cql/CqlToElmTests/CoercionTest.cs b/Cql/CqlToElmTests/(tests)/CoercionTest.cs similarity index 98% rename from Cql/CqlToElmTests/CoercionTest.cs rename to Cql/CqlToElmTests/(tests)/CoercionTest.cs index 9245b44bf..c0c8c50f2 100644 --- a/Cql/CqlToElmTests/CoercionTest.cs +++ b/Cql/CqlToElmTests/(tests)/CoercionTest.cs @@ -14,9 +14,10 @@ public class CoercionTest : Base EnableListPromotion:true, EnableListDemotion:true, EnableIntervalPromotion:true, - EnableIntervalDemotion:true).Services.ServiceProvider.GetRequiredService(); + EnableIntervalDemotion:true) + .GetCoercionProvider(); - private static ElmFactory ElmFactory => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); + private static ElmFactory ElmFactory => CreateCqlApi().GetElmFactory(); private static Null Null() => new Null().WithResultType(SystemTypes.AnyType); private static Null Null(TypeSpecifier type) => new Null().WithResultType(type); diff --git a/Cql/CqlToElmTests/ComponentFromTest.cs b/Cql/CqlToElmTests/(tests)/ComponentFromTest.cs similarity index 100% rename from Cql/CqlToElmTests/ComponentFromTest.cs rename to Cql/CqlToElmTests/(tests)/ComponentFromTest.cs diff --git a/Cql/CqlToElmTests/ConcatenationTest.cs b/Cql/CqlToElmTests/(tests)/ConcatenationTest.cs similarity index 100% rename from Cql/CqlToElmTests/ConcatenationTest.cs rename to Cql/CqlToElmTests/(tests)/ConcatenationTest.cs diff --git a/Cql/CqlToElmTests/ConcurrentWithTest.cs b/Cql/CqlToElmTests/(tests)/ConcurrentWithTest.cs similarity index 100% rename from Cql/CqlToElmTests/ConcurrentWithTest.cs rename to Cql/CqlToElmTests/(tests)/ConcurrentWithTest.cs diff --git a/Cql/CqlToElmTests/ContextDefTest.cs b/Cql/CqlToElmTests/(tests)/ContextDefTest.cs similarity index 100% rename from Cql/CqlToElmTests/ContextDefTest.cs rename to Cql/CqlToElmTests/(tests)/ContextDefTest.cs diff --git a/Cql/CqlToElmTests/ConvertTest.cs b/Cql/CqlToElmTests/(tests)/ConvertTest.cs similarity index 100% rename from Cql/CqlToElmTests/ConvertTest.cs rename to Cql/CqlToElmTests/(tests)/ConvertTest.cs diff --git a/Cql/CqlToElmTests/CrossLibraryTest.cs b/Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs similarity index 100% rename from Cql/CqlToElmTests/CrossLibraryTest.cs rename to Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs diff --git a/Cql/CqlToElmTests/DifferenceTest.cs b/Cql/CqlToElmTests/(tests)/DifferenceTest.cs similarity index 100% rename from Cql/CqlToElmTests/DifferenceTest.cs rename to Cql/CqlToElmTests/(tests)/DifferenceTest.cs diff --git a/Cql/CqlToElmTests/DistinctTest.cs b/Cql/CqlToElmTests/(tests)/DistinctTest.cs similarity index 100% rename from Cql/CqlToElmTests/DistinctTest.cs rename to Cql/CqlToElmTests/(tests)/DistinctTest.cs diff --git a/Cql/CqlToElmTests/DivisionTest.cs b/Cql/CqlToElmTests/(tests)/DivisionTest.cs similarity index 100% rename from Cql/CqlToElmTests/DivisionTest.cs rename to Cql/CqlToElmTests/(tests)/DivisionTest.cs diff --git a/Cql/CqlToElmTests/DurationTest.cs b/Cql/CqlToElmTests/(tests)/DurationTest.cs similarity index 100% rename from Cql/CqlToElmTests/DurationTest.cs rename to Cql/CqlToElmTests/(tests)/DurationTest.cs diff --git a/Cql/CqlToElmTests/EqualsTest.cs b/Cql/CqlToElmTests/(tests)/EqualsTest.cs similarity index 100% rename from Cql/CqlToElmTests/EqualsTest.cs rename to Cql/CqlToElmTests/(tests)/EqualsTest.cs diff --git a/Cql/CqlToElmTests/EquivalentTest.cs b/Cql/CqlToElmTests/(tests)/EquivalentTest.cs similarity index 100% rename from Cql/CqlToElmTests/EquivalentTest.cs rename to Cql/CqlToElmTests/(tests)/EquivalentTest.cs diff --git a/Cql/CqlToElmTests/ExistsTest.cs b/Cql/CqlToElmTests/(tests)/ExistsTest.cs similarity index 100% rename from Cql/CqlToElmTests/ExistsTest.cs rename to Cql/CqlToElmTests/(tests)/ExistsTest.cs diff --git a/Cql/CqlToElmTests/ExpandTest.cs b/Cql/CqlToElmTests/(tests)/ExpandTest.cs similarity index 100% rename from Cql/CqlToElmTests/ExpandTest.cs rename to Cql/CqlToElmTests/(tests)/ExpandTest.cs diff --git a/Cql/CqlToElmTests/FHIRHelpersTest.cs b/Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs similarity index 100% rename from Cql/CqlToElmTests/FHIRHelpersTest.cs rename to Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs diff --git a/Cql/CqlToElmTests/FilesTest.cs b/Cql/CqlToElmTests/(tests)/FilesTest.cs similarity index 100% rename from Cql/CqlToElmTests/FilesTest.cs rename to Cql/CqlToElmTests/(tests)/FilesTest.cs diff --git a/Cql/CqlToElmTests/FlattenTest.cs b/Cql/CqlToElmTests/(tests)/FlattenTest.cs similarity index 100% rename from Cql/CqlToElmTests/FlattenTest.cs rename to Cql/CqlToElmTests/(tests)/FlattenTest.cs diff --git a/Cql/CqlToElmTests/FunctionDefinitionBuilderTest.cs b/Cql/CqlToElmTests/(tests)/FunctionDefinitionBuilderTest.cs similarity index 100% rename from Cql/CqlToElmTests/FunctionDefinitionBuilderTest.cs rename to Cql/CqlToElmTests/(tests)/FunctionDefinitionBuilderTest.cs diff --git a/Cql/CqlToElmTests/FunctionDefinitionTest.cs b/Cql/CqlToElmTests/(tests)/FunctionDefinitionTest.cs similarity index 100% rename from Cql/CqlToElmTests/FunctionDefinitionTest.cs rename to Cql/CqlToElmTests/(tests)/FunctionDefinitionTest.cs diff --git a/Cql/CqlToElmTests/GreaterTest.cs b/Cql/CqlToElmTests/(tests)/GreaterTest.cs similarity index 100% rename from Cql/CqlToElmTests/GreaterTest.cs rename to Cql/CqlToElmTests/(tests)/GreaterTest.cs diff --git a/Cql/CqlToElmTests/IfThenElseTest.cs b/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs similarity index 96% rename from Cql/CqlToElmTests/IfThenElseTest.cs rename to Cql/CqlToElmTests/(tests)/IfThenElseTest.cs index 4a0460ba1..0b61c334f 100644 --- a/Cql/CqlToElmTests/IfThenElseTest.cs +++ b/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs @@ -76,7 +76,7 @@ public void True_Decimal_String() [TestMethod] public void String_Integer_Integer() { - var messageProvider = CreateCqlApi().Services.ServiceProvider.GetRequiredService(); + var messageProvider = CreateCqlApi().GetMessageProvider(); string[] expectedErrors = [messageProvider.TypeFoundIsNotExpected(SystemTypes.StringType, SystemTypes.BooleanType)]; var library = CreateCqlApi().MakeLibraryFromExpression("if 'hello' then 4 else 5", expectedErrors); diff --git a/Cql/CqlToElmTests/ImpliesTest.cs b/Cql/CqlToElmTests/(tests)/ImpliesTest.cs similarity index 100% rename from Cql/CqlToElmTests/ImpliesTest.cs rename to Cql/CqlToElmTests/(tests)/ImpliesTest.cs diff --git a/Cql/CqlToElmTests/InTest.cs b/Cql/CqlToElmTests/(tests)/InTest.cs similarity index 100% rename from Cql/CqlToElmTests/InTest.cs rename to Cql/CqlToElmTests/(tests)/InTest.cs diff --git a/Cql/CqlToElmTests/IncludedInTest.cs b/Cql/CqlToElmTests/(tests)/IncludedInTest.cs similarity index 100% rename from Cql/CqlToElmTests/IncludedInTest.cs rename to Cql/CqlToElmTests/(tests)/IncludedInTest.cs diff --git a/Cql/CqlToElmTests/IncludesTest.cs b/Cql/CqlToElmTests/(tests)/IncludesTest.cs similarity index 100% rename from Cql/CqlToElmTests/IncludesTest.cs rename to Cql/CqlToElmTests/(tests)/IncludesTest.cs diff --git a/Cql/CqlToElmTests/IndexTest.cs b/Cql/CqlToElmTests/(tests)/IndexTest.cs similarity index 100% rename from Cql/CqlToElmTests/IndexTest.cs rename to Cql/CqlToElmTests/(tests)/IndexTest.cs diff --git a/Cql/CqlToElmTests/InfixSetTest.cs b/Cql/CqlToElmTests/(tests)/InfixSetTest.cs similarity index 100% rename from Cql/CqlToElmTests/InfixSetTest.cs rename to Cql/CqlToElmTests/(tests)/InfixSetTest.cs diff --git a/Cql/CqlToElmTests/InstanceTest.cs b/Cql/CqlToElmTests/(tests)/InstanceTest.cs similarity index 100% rename from Cql/CqlToElmTests/InstanceTest.cs rename to Cql/CqlToElmTests/(tests)/InstanceTest.cs diff --git a/Cql/CqlToElmTests/IntervalTest.cs b/Cql/CqlToElmTests/(tests)/IntervalTest.cs similarity index 100% rename from Cql/CqlToElmTests/IntervalTest.cs rename to Cql/CqlToElmTests/(tests)/IntervalTest.cs diff --git a/Cql/CqlToElmTests/InvocationBuilderTests.cs b/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs similarity index 98% rename from Cql/CqlToElmTests/InvocationBuilderTests.cs rename to Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs index edfec3f84..a4c2d8f80 100644 --- a/Cql/CqlToElmTests/InvocationBuilderTests.cs +++ b/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs @@ -10,9 +10,16 @@ namespace Hl7.Cql.CqlToElm.Test [TestClass] public class InvocationBuilderTest : Base { - internal static InvocationBuilder InvocationBuilder => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); - internal static ElmFactory ElmFactory => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); - + static InvocationBuilderTest() + { + var cqlApi = CreateCqlApi(); + InvocationBuilder = cqlApi.GetInvocationBuilder(); + ElmFactory = cqlApi.GetElmFactory(); + } + + private static InvocationBuilder InvocationBuilder { get; } + private static ElmFactory ElmFactory { get; } + private static ParameterTypeSpecifier Generic(string parameterName = "T") => new ParameterTypeSpecifier { parameterName = parameterName }; private static Literal Boolean(bool value = true) => ElmFactory.Literal(value); @@ -27,6 +34,7 @@ public class InvocationBuilderTest : Base private static readonly Null Null = new Null().WithResultType(SystemTypes.AnyType); private static readonly ParameterTypeSpecifier T = new ParameterTypeSpecifier { parameterName = "T" }; + private static void AssertCompatible(FunctionDef function, Expression[] arguments, CoercionCost mostExpensive, int? totalCost = null) { var result = InvocationBuilder.MatchSignature(function, arguments); diff --git a/Cql/CqlToElmTests/IsTest.cs b/Cql/CqlToElmTests/(tests)/IsTest.cs similarity index 100% rename from Cql/CqlToElmTests/IsTest.cs rename to Cql/CqlToElmTests/(tests)/IsTest.cs diff --git a/Cql/CqlToElmTests/LengthTest.cs b/Cql/CqlToElmTests/(tests)/LengthTest.cs similarity index 100% rename from Cql/CqlToElmTests/LengthTest.cs rename to Cql/CqlToElmTests/(tests)/LengthTest.cs diff --git a/Cql/CqlToElmTests/LibraryTest.cs b/Cql/CqlToElmTests/(tests)/LibraryTest.cs similarity index 99% rename from Cql/CqlToElmTests/LibraryTest.cs rename to Cql/CqlToElmTests/(tests)/LibraryTest.cs index 5c94271cd..e89d15168 100644 --- a/Cql/CqlToElmTests/LibraryTest.cs +++ b/Cql/CqlToElmTests/(tests)/LibraryTest.cs @@ -12,7 +12,7 @@ public void Empty() { Assert.ThrowsException(() => CreateCqlApi().MakeLibrary(string.Empty)); var ms = new MemoryStream(); - Assert.ThrowsException(() => CreateCqlApi().Services.CqlToElmConverter.ConvertLibrary(ms)); + Assert.ThrowsException(() => CreateCqlApi().GetCqlToElmConverter().ConvertLibrary(ms)); } #region Identifier diff --git a/Cql/CqlToElmTests/ListTest.cs b/Cql/CqlToElmTests/(tests)/ListTest.cs similarity index 100% rename from Cql/CqlToElmTests/ListTest.cs rename to Cql/CqlToElmTests/(tests)/ListTest.cs diff --git a/Cql/CqlToElmTests/LiteralTest.cs b/Cql/CqlToElmTests/(tests)/LiteralTest.cs similarity index 99% rename from Cql/CqlToElmTests/LiteralTest.cs rename to Cql/CqlToElmTests/(tests)/LiteralTest.cs index ee22e2a2a..28d3c49e1 100644 --- a/Cql/CqlToElmTests/LiteralTest.cs +++ b/Cql/CqlToElmTests/(tests)/LiteralTest.cs @@ -11,7 +11,7 @@ namespace Hl7.Cql.CqlToElm.Test public class LiteralTest : Base { - private static InvocationBuilder InvocationBuilder => CreateCqlApi().Services.ServiceProvider.GetRequiredService(); + private static InvocationBuilder InvocationBuilder => CreateCqlApi().GetInvocationBuilder(); [TestMethod] public void String_Literal() diff --git a/Cql/CqlToElmTests/MeetsTest.cs b/Cql/CqlToElmTests/(tests)/MeetsTest.cs similarity index 100% rename from Cql/CqlToElmTests/MeetsTest.cs rename to Cql/CqlToElmTests/(tests)/MeetsTest.cs diff --git a/Cql/CqlToElmTests/ModelProviderTest.cs b/Cql/CqlToElmTests/(tests)/ModelProviderTest.cs similarity index 100% rename from Cql/CqlToElmTests/ModelProviderTest.cs rename to Cql/CqlToElmTests/(tests)/ModelProviderTest.cs diff --git a/Cql/CqlToElmTests/ModelTest.cs b/Cql/CqlToElmTests/(tests)/ModelTest.cs similarity index 100% rename from Cql/CqlToElmTests/ModelTest.cs rename to Cql/CqlToElmTests/(tests)/ModelTest.cs diff --git a/Cql/CqlToElmTests/ModuloTest.cs b/Cql/CqlToElmTests/(tests)/ModuloTest.cs similarity index 100% rename from Cql/CqlToElmTests/ModuloTest.cs rename to Cql/CqlToElmTests/(tests)/ModuloTest.cs diff --git a/Cql/CqlToElmTests/MultiplicationTest.cs b/Cql/CqlToElmTests/(tests)/MultiplicationTest.cs similarity index 100% rename from Cql/CqlToElmTests/MultiplicationTest.cs rename to Cql/CqlToElmTests/(tests)/MultiplicationTest.cs diff --git a/Cql/CqlToElmTests/NotEqualTest.cs b/Cql/CqlToElmTests/(tests)/NotEqualTest.cs similarity index 100% rename from Cql/CqlToElmTests/NotEqualTest.cs rename to Cql/CqlToElmTests/(tests)/NotEqualTest.cs diff --git a/Cql/CqlToElmTests/NotEquivalentTest.cs b/Cql/CqlToElmTests/(tests)/NotEquivalentTest.cs similarity index 100% rename from Cql/CqlToElmTests/NotEquivalentTest.cs rename to Cql/CqlToElmTests/(tests)/NotEquivalentTest.cs diff --git a/Cql/CqlToElmTests/NotTest.cs b/Cql/CqlToElmTests/(tests)/NotTest.cs similarity index 100% rename from Cql/CqlToElmTests/NotTest.cs rename to Cql/CqlToElmTests/(tests)/NotTest.cs diff --git a/Cql/CqlToElmTests/OrTest.cs b/Cql/CqlToElmTests/(tests)/OrTest.cs similarity index 100% rename from Cql/CqlToElmTests/OrTest.cs rename to Cql/CqlToElmTests/(tests)/OrTest.cs diff --git a/Cql/CqlToElmTests/OrderingTest.cs b/Cql/CqlToElmTests/(tests)/OrderingTest.cs similarity index 100% rename from Cql/CqlToElmTests/OrderingTest.cs rename to Cql/CqlToElmTests/(tests)/OrderingTest.cs diff --git a/Cql/CqlToElmTests/OverlapsTest.cs b/Cql/CqlToElmTests/(tests)/OverlapsTest.cs similarity index 100% rename from Cql/CqlToElmTests/OverlapsTest.cs rename to Cql/CqlToElmTests/(tests)/OverlapsTest.cs diff --git a/Cql/CqlToElmTests/PointFromTest.cs b/Cql/CqlToElmTests/(tests)/PointFromTest.cs similarity index 100% rename from Cql/CqlToElmTests/PointFromTest.cs rename to Cql/CqlToElmTests/(tests)/PointFromTest.cs diff --git a/Cql/CqlToElmTests/PowerTest.cs b/Cql/CqlToElmTests/(tests)/PowerTest.cs similarity index 100% rename from Cql/CqlToElmTests/PowerTest.cs rename to Cql/CqlToElmTests/(tests)/PowerTest.cs diff --git a/Cql/CqlToElmTests/PredecessorTest.cs b/Cql/CqlToElmTests/(tests)/PredecessorTest.cs similarity index 100% rename from Cql/CqlToElmTests/PredecessorTest.cs rename to Cql/CqlToElmTests/(tests)/PredecessorTest.cs diff --git a/Cql/CqlToElmTests/QueryTest.cs b/Cql/CqlToElmTests/(tests)/QueryTest.cs similarity index 100% rename from Cql/CqlToElmTests/QueryTest.cs rename to Cql/CqlToElmTests/(tests)/QueryTest.cs diff --git a/Cql/CqlToElmTests/RefTest.cs b/Cql/CqlToElmTests/(tests)/RefTest.cs similarity index 100% rename from Cql/CqlToElmTests/RefTest.cs rename to Cql/CqlToElmTests/(tests)/RefTest.cs diff --git a/Cql/CqlToElmTests/RetrieveTest.cs b/Cql/CqlToElmTests/(tests)/RetrieveTest.cs similarity index 100% rename from Cql/CqlToElmTests/RetrieveTest.cs rename to Cql/CqlToElmTests/(tests)/RetrieveTest.cs diff --git a/Cql/CqlToElmTests/SingletonTest.cs b/Cql/CqlToElmTests/(tests)/SingletonTest.cs similarity index 100% rename from Cql/CqlToElmTests/SingletonTest.cs rename to Cql/CqlToElmTests/(tests)/SingletonTest.cs diff --git a/Cql/CqlToElmTests/SkippedTests.cs b/Cql/CqlToElmTests/(tests)/SkippedTests.cs similarity index 100% rename from Cql/CqlToElmTests/SkippedTests.cs rename to Cql/CqlToElmTests/(tests)/SkippedTests.cs diff --git a/Cql/CqlToElmTests/StartEndTest.cs b/Cql/CqlToElmTests/(tests)/StartEndTest.cs similarity index 100% rename from Cql/CqlToElmTests/StartEndTest.cs rename to Cql/CqlToElmTests/(tests)/StartEndTest.cs diff --git a/Cql/CqlToElmTests/StartsEndsTest.cs b/Cql/CqlToElmTests/(tests)/StartsEndsTest.cs similarity index 100% rename from Cql/CqlToElmTests/StartsEndsTest.cs rename to Cql/CqlToElmTests/(tests)/StartsEndsTest.cs diff --git a/Cql/CqlToElmTests/StreamInspectorTest.cs b/Cql/CqlToElmTests/(tests)/StreamInspectorTest.cs similarity index 100% rename from Cql/CqlToElmTests/StreamInspectorTest.cs rename to Cql/CqlToElmTests/(tests)/StreamInspectorTest.cs diff --git a/Cql/CqlToElmTests/StringTest.cs b/Cql/CqlToElmTests/(tests)/StringTest.cs similarity index 100% rename from Cql/CqlToElmTests/StringTest.cs rename to Cql/CqlToElmTests/(tests)/StringTest.cs diff --git a/Cql/CqlToElmTests/SubtractionTest.cs b/Cql/CqlToElmTests/(tests)/SubtractionTest.cs similarity index 100% rename from Cql/CqlToElmTests/SubtractionTest.cs rename to Cql/CqlToElmTests/(tests)/SubtractionTest.cs diff --git a/Cql/CqlToElmTests/SuccessorTest.cs b/Cql/CqlToElmTests/(tests)/SuccessorTest.cs similarity index 100% rename from Cql/CqlToElmTests/SuccessorTest.cs rename to Cql/CqlToElmTests/(tests)/SuccessorTest.cs diff --git a/Cql/CqlToElmTests/SymbolTableTest.cs b/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs similarity index 99% rename from Cql/CqlToElmTests/SymbolTableTest.cs rename to Cql/CqlToElmTests/(tests)/SymbolTableTest.cs index efe3cc9f0..a174af0be 100644 --- a/Cql/CqlToElmTests/SymbolTableTest.cs +++ b/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs @@ -12,7 +12,7 @@ namespace Hl7.Cql.CqlToElm.Test public class SymbolTableTest : Base { private static VersionedIdentifier TestId => new VersionedIdentifier { id = "Test", version = "1.0.0" }; - private static SystemLibrary SystemLibrary => CreateCqlApi().Services.ServiceProvider.GetSystemLibrary(); + private static SystemLibrary SystemLibrary => CreateCqlApi().GetSystemLibrary(); [TestMethod] public void Add_Local_Expression() diff --git a/Cql/CqlToElmTests/TagsTest.cs b/Cql/CqlToElmTests/(tests)/TagsTest.cs similarity index 100% rename from Cql/CqlToElmTests/TagsTest.cs rename to Cql/CqlToElmTests/(tests)/TagsTest.cs diff --git a/Cql/CqlToElmTests/TimingExpressionTest.cs b/Cql/CqlToElmTests/(tests)/TimingExpressionTest.cs similarity index 100% rename from Cql/CqlToElmTests/TimingExpressionTest.cs rename to Cql/CqlToElmTests/(tests)/TimingExpressionTest.cs diff --git a/Cql/CqlToElmTests/TruncatedDivisionTest.cs b/Cql/CqlToElmTests/(tests)/TruncatedDivisionTest.cs similarity index 100% rename from Cql/CqlToElmTests/TruncatedDivisionTest.cs rename to Cql/CqlToElmTests/(tests)/TruncatedDivisionTest.cs diff --git a/Cql/CqlToElmTests/TypeExtentTest.cs b/Cql/CqlToElmTests/(tests)/TypeExtentTest.cs similarity index 100% rename from Cql/CqlToElmTests/TypeExtentTest.cs rename to Cql/CqlToElmTests/(tests)/TypeExtentTest.cs diff --git a/Cql/CqlToElmTests/VersionTest.cs b/Cql/CqlToElmTests/(tests)/VersionTest.cs similarity index 100% rename from Cql/CqlToElmTests/VersionTest.cs rename to Cql/CqlToElmTests/(tests)/VersionTest.cs diff --git a/Cql/CqlToElmTests/WidthTest.cs b/Cql/CqlToElmTests/(tests)/WidthTest.cs similarity index 100% rename from Cql/CqlToElmTests/WidthTest.cs rename to Cql/CqlToElmTests/(tests)/WidthTest.cs diff --git a/Cql/CqlToElmTests/XmlTest.cs b/Cql/CqlToElmTests/(tests)/XmlTest.cs similarity index 95% rename from Cql/CqlToElmTests/XmlTest.cs rename to Cql/CqlToElmTests/(tests)/XmlTest.cs index 14471e2c6..41d40da56 100644 --- a/Cql/CqlToElmTests/XmlTest.cs +++ b/Cql/CqlToElmTests/(tests)/XmlTest.cs @@ -76,9 +76,8 @@ public void Run(TestCase testCase) private static Expression Equals(Expression expression, Expression expectation) { var cqlApi = CreateCqlApi(); - var serviceProvider = cqlApi.Services.ServiceProvider; - var invocationBuilder = serviceProvider.GetService(); - var elmFactory = serviceProvider.GetService(); + var invocationBuilder = cqlApi.GetInvocationBuilder(); + var elmFactory = cqlApi.GetElmFactory(); var equal = invocationBuilder.Invoke(SystemLibrary.Equal, expression, expectation); var @if = new If { diff --git a/Cql/CqlToElmTests/XorTest.cs b/Cql/CqlToElmTests/(tests)/XorTest.cs similarity index 100% rename from Cql/CqlToElmTests/XorTest.cs rename to Cql/CqlToElmTests/(tests)/XorTest.cs diff --git a/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs b/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs new file mode 100644 index 000000000..17969827a --- /dev/null +++ b/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs @@ -0,0 +1,29 @@ +using CqlSdkPrototype.Internal; +using Hl7.Cql.CqlToElm; +using Hl7.Cql.CqlToElm.Builtin; + +namespace CqlSdkPrototype.Cql.Internal; + +internal static class CqlTestingOnlyServiceProviderAccessorExtensions +{ + private static TService GetCqlRequiredService(this ITestingOnlyServiceProviderAccessor spAccessor) where TService : notnull => + spAccessor.ServiceProvider.GetRequiredService(); + + public static CqlToElmConverter GetCqlToElmConverter(this ITestingOnlyServiceProviderAccessor spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static CoercionProvider GetCoercionProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static ElmFactory GetElmFactory(this ITestingOnlyServiceProviderAccessor spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static MessageProvider GetMessageProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static InvocationBuilder GetInvocationBuilder(this ITestingOnlyServiceProviderAccessor spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static SystemLibrary GetSystemLibrary(this ITestingOnlyServiceProviderAccessor spAccessor) => + spAccessor.GetCqlRequiredService(); +} \ No newline at end of file diff --git a/Cql/CqlToElmTests/CqlToElmTests.csproj.DotSettings b/Cql/CqlToElmTests/CqlToElmTests.csproj.DotSettings new file mode 100644 index 000000000..cd412a548 --- /dev/null +++ b/Cql/CqlToElmTests/CqlToElmTests.csproj.DotSettings @@ -0,0 +1,2 @@ + + True \ No newline at end of file From 549a2e7673b292cc06af1c13970091b66431c1ee Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Mon, 27 Jan 2025 14:02:30 +0100 Subject: [PATCH 05/39] Rename to CqlToolkit --- .../CqlToElmServiceProviderExtensions.cs | 36 -------- .../Cql/{CqlApi.cs => CqlToolkit.cs} | 89 +++++++++---------- ...CqlApiOptions.cs => CqlToolkitSettings.cs} | 6 +- .../CqlApiExtendableExtensions.cs | 2 +- ...StateEntry.cs => CqlToolkitProcessItem.cs} | 2 +- .../Cql/Extensibility/ICqlApiExtendable.cs | 14 --- .../Cql/Extensibility/ICqlToolkit.cs | 12 +++ .../Cql/Extensions/CqlApiExtensions.Adding.cs | 46 ---------- .../Cql/Extensions/CqlApiExtensions.Saving.cs | 30 ------- .../Cql/Extensions/CqlApiExtensions.cs | 6 -- .../Extensions/CqlToolkitExtensions.Adding.cs | 45 ++++++++++ .../Extensions/CqlToolkitExtensions.Saving.cs | 28 ++++++ .../Cql/Extensions/CqlToolkitExtensions.cs | 26 ++++++ .../Cql/Internal/CqlServicesOptions.cs | 8 -- ... CqlToolkitProcessItemsLibraryProvider.cs} | 6 +- ...qlApiServices.cs => CqlToolkitServices.cs} | 17 ++-- .../Elm/Extensions/ElmApiExtensions.Adding.cs | 4 +- .../Elm/Extensions/ElmApiExtensions.Cql.cs | 4 +- Cql/CqlSdkPrototype/GlobalUsings.cs | 3 +- Cql/CqlSdkPrototype/Program.cs | 30 +++---- .../Extensions/RuntimeApiExtensions.Cql.cs | 13 ++- Cql/CqlToElmTests/Base.cs | 6 +- ...ngOnlyServiceProviderAccessorExtensions.cs | 20 ++--- Cql/CqlToElmTests/TestExtensions.cs | 16 ++-- Cql/PackagerCLI/PackagerCli.cs | 4 +- Demo/API/Program.cs | 6 +- 26 files changed, 223 insertions(+), 256 deletions(-) delete mode 100644 Cql/Cql.CqlToElm/DependencyInjection/CqlToElmServiceProviderExtensions.cs rename Cql/CqlSdkPrototype/Cql/{CqlApi.cs => CqlToolkit.cs} (53%) rename Cql/CqlSdkPrototype/Cql/{CqlApiOptions.cs => CqlToolkitSettings.cs} (95%) rename Cql/CqlSdkPrototype/Cql/Extensibility/{CqlApiStateEntry.cs => CqlToolkitProcessItem.cs} (62%) delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensibility/ICqlApiExtendable.cs create mode 100644 Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Adding.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Saving.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.cs create mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs create mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs create mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Internal/CqlServicesOptions.cs rename Cql/CqlSdkPrototype/Cql/Internal/{EntriesBuilderLibraryProvider.cs => CqlToolkitProcessItemsLibraryProvider.cs} (67%) rename Cql/CqlSdkPrototype/Cql/Internal/{CqlApiServices.cs => CqlToolkitServices.cs} (79%) diff --git a/Cql/Cql.CqlToElm/DependencyInjection/CqlToElmServiceProviderExtensions.cs b/Cql/Cql.CqlToElm/DependencyInjection/CqlToElmServiceProviderExtensions.cs deleted file mode 100644 index 98180bc0f..000000000 --- a/Cql/Cql.CqlToElm/DependencyInjection/CqlToElmServiceProviderExtensions.cs +++ /dev/null @@ -1,36 +0,0 @@ -/* - * Copyright (c) 2024, NCQA and contributors - * See the file CONTRIBUTORS for details. - * - * This file is licensed under the BSD 3-Clause license - * available at https://raw.githubusercontent.com/FirelyTeam/firely-cql-sdk/main/LICENSE - */ - -using Hl7.Cql.CqlToElm; -using Hl7.Cql.CqlToElm.Builtin; -using Hl7.Cql.CqlToElm.LibraryProviders; - -// ReSharper disable once CheckNamespace -#pragma warning disable IDE0130 // Namespace does not match folder structure -namespace Microsoft.Extensions.DependencyInjection; - -internal static class CqlToElmServiceProviderExtensions -{ - public static CqlToElmConverter GetCqlToElmConverter(this IServiceProvider sp) => sp.GetRequiredService(); - - public static CoercionProvider GetCoercionProvider(this IServiceProvider sp) => sp.GetRequiredService(); - - public static ElmFactory GetElmFactory(this IServiceProvider sp) => sp.GetRequiredService(); - - public static SystemLibrary GetSystemLibrary(this IServiceProvider sp) => sp.GetRequiredService(); - - public static StreamInspector GetStreamInspector(this IServiceProvider sp) => sp.GetRequiredService(); - - public static InvocationBuilder GetInvocationBuilder(this IServiceProvider sp) => sp.GetRequiredService(); - - public static LocalIdentifierProvider GetLocalIdentifierProviderTransient(this IServiceProvider sp) => sp.GetRequiredService(); - - public static MessageProvider GetMessageProvider(this IServiceProvider sp) => sp.GetRequiredService(); - - public static IModelProvider GetModelProvider(this IServiceProvider sp) => sp.GetRequiredService(); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/CqlApi.cs b/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs similarity index 53% rename from Cql/CqlSdkPrototype/Cql/CqlApi.cs rename to Cql/CqlSdkPrototype/Cql/CqlToolkit.cs index 36465be7e..51677b7a7 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlApi.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs @@ -7,61 +7,59 @@ namespace CqlSdkPrototype.Cql; -public class CqlApi : - ICqlApiExtendable, - ITestingOnlyServiceProviderAccessor +public class CqlToolkit : + ICqlToolkit, + ITestingOnlyServiceProviderAccessor { - public CqlApi( + public CqlToolkit( ILoggerFactory? loggerFactory = null, - CqlApiOptions? options = null) + CqlToolkitSettings? settings = null) { - options ??= CqlApiOptions.Default; - var entries = CqlApiStateEntryDictionary.Empty.WithComparers(CqlVersionedLibraryIdentifier.IdentifierOnlyEqualityComparer); - var entriesBuilder = entries.ToBuilder(); - var libraryProvider = new EntriesBuilderLibraryProvider(entriesBuilder); - _entries = entries; - _services = CqlApiServices.Create(loggerFactory ?? NullLoggerFactory.Instance, options, libraryProvider); - _options = options; + settings ??= CqlToolkitSettings.Default; + var processItems = CqlToolkitProcessItems.Empty; + var entriesBuilder = processItems.ToBuilder(); + var libraryProvider = new CqlToolkitProcessItemsLibraryProvider(entriesBuilder); + _processItems = processItems; + _services = CqlToolkitServices.Create(loggerFactory ?? NullLoggerFactory.Instance, settings, libraryProvider); + _settings = settings; } #region State - ServiceProvider ITestingOnlyServiceProviderAccessor.ServiceProvider => _services.ServiceProvider; + ServiceProvider ITestingOnlyServiceProviderAccessor.ServiceProvider => _services.ServiceProvider; - private CqlApiStateEntryDictionary _entries; - private CqlApiOptions _options; - private CqlApiServices _services; + private CqlToolkitProcessItems _processItems; + internal CqlToolkitSettings _settings; + private CqlToolkitServices _services; - private CqlApi WithEntries( - CqlApiStateEntryDictionary entries) + private void WithEntries(CqlToolkitProcessItems entries) { - _entries = entries; - _services.LibraryProvider.EntriesBuilder = entries.ToBuilder(); - return this; + _processItems = entries; + _services.LibraryProvider.ProcessItemsBuilder = entries.ToBuilder(); } - public CqlApi WithOptions( - Func replaceOptions) + internal CqlToolkit SetSettings( + CqlToolkitSettings value) { var libraryProvider = _services.LibraryProvider; _services.ServiceProvider.Dispose(); - _options = replaceOptions(_options); - _services = CqlApiServices.Create(_services.LoggerFactory, _options, libraryProvider); + _settings = value; + _services = CqlToolkitServices.Create(_services.LoggerFactory, _settings, libraryProvider); return this; } - ILoggerFactory ICqlApiExtendable.LoggerFactory => _services.LoggerFactory; - CqlApiOptions ICqlApiExtendable.Options => _options; - IReadOnlyDictionary ICqlApiExtendable.Entries => _entries; + ILoggerFactory ICqlToolkit.LoggerFactory => _services.LoggerFactory; + CqlToolkitSettings ICqlToolkit.Settings => _settings; + CqlToolkitProcessItemsReadOnly ICqlToolkit.ProcessItems => _processItems; #endregion #region Input (CQL Library Strings) - public CqlApi AddCqlLibraries(IEnumerable cqlLibraries) + public CqlToolkit AddCqlLibraries(IEnumerable cqlLibraries) { var logger = _services.Logger; - var entriesBuilder = _services.LibraryProvider.EntriesBuilder; + var entriesBuilder = _services.LibraryProvider.ProcessItemsBuilder; var cqlToElmConverter = _services.CqlToElmConverter; using var scope = _services.ServiceProvider.CreateScope()!; var hasChanged = false; @@ -77,31 +75,31 @@ public CqlApi AddCqlLibraries(IEnumerable cqlLibraries) var libraryVisitor = CqlToElmConverter.GetLibraryVisitorScoped(scope); var libraryBuilder = cqlToElmConverter.GetBuilder(libraryVisitor, cqlLibrary.Cql); - var entry = new CqlApiStateEntry(cqlLibrary) { ElmLibraryBuilder = libraryBuilder }; + var entry = new CqlToolkitProcessItem(cqlLibrary) { ElmLibraryBuilder = libraryBuilder }; entriesBuilder.Add(versionedIdentifier, entry); logger.LogInformation("Adding cql library to translation: {versionedIdentifier}", versionedIdentifier); hasChanged = true; } - return hasChanged - ? WithEntries(entries: entriesBuilder.ToImmutable()) - : this; + if (hasChanged) + WithEntries(entries: entriesBuilder.ToImmutable()); + return this; } #endregion #region Processing (CQL-to-ELM) - public CqlApi Translate() + public CqlToolkit Translate() { - CqlApiStateEntryDictionary.Builder entriesBuilder = _services.LibraryProvider.EntriesBuilder; + CqlToolkitProcessItems.Builder processItemsBuilder = _services.LibraryProvider.ProcessItemsBuilder; var logger = _services.Logger; bool atFirst = true; - IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlApiStateEntry cqlTranslationEntry)> GetLibrariesForProcessing() + IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToolkitProcessItem cqlTranslationEntry)> GetLibrariesForProcessing() { foreach (var (versionedIdentifier, cqlTranslationEntry) in - _entries.Where(kv => kv.Value.ElmLibrary is null)) + _processItems.Where(kv => kv.Value.ElmLibrary is null)) { if (atFirst) { @@ -114,7 +112,7 @@ public CqlApi Translate() } } - LogExceptionMessageAction log = logger.GetLogExceptionMessageAction(_options.ProcessBatchItemExceptionHandling); + LogExceptionMessageAction log = logger.GetLogExceptionMessageAction(_settings.ProcessBatchItemExceptionHandling); int changedCount = GetLibrariesForProcessing() @@ -124,19 +122,18 @@ public CqlApi Translate() var libraryName = outcome.Input.versionedIdentifier; log(outcome.Exception, "Error translating CQL library '{libraryName}' to ELM.", libraryName); }) - .HandleExceptions(_options.ProcessBatchItemExceptionHandling) + .HandleExceptions(_settings.ProcessBatchItemExceptionHandling) .Count() // We must enumerate all ; - if (changedCount <= 0) - return this; - - return WithEntries(entries: entriesBuilder.ToImmutable()); + if (changedCount > 0) + WithEntries(entries: processItemsBuilder.ToImmutable()); + return this; - void ProcessLibrary(CqlVersionedLibraryIdentifier versionedIdentifier, CqlApiStateEntry cqlTranslationEntry) + void ProcessLibrary(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToolkitProcessItem cqlTranslationEntry) { var library = cqlTranslationEntry.ElmLibraryBuilder!.Build(); - entriesBuilder[versionedIdentifier] = cqlTranslationEntry with { ElmLibrary = library }; + processItemsBuilder[versionedIdentifier] = cqlTranslationEntry with { ElmLibrary = library }; } } diff --git a/Cql/CqlSdkPrototype/Cql/CqlApiOptions.cs b/Cql/CqlSdkPrototype/Cql/CqlToolkitSettings.cs similarity index 95% rename from Cql/CqlSdkPrototype/Cql/CqlApiOptions.cs rename to Cql/CqlSdkPrototype/Cql/CqlToolkitSettings.cs index cb2916187..ff67a7be2 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlApiOptions.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToolkitSettings.cs @@ -4,7 +4,7 @@ namespace CqlSdkPrototype.Cql; -public record CqlApiOptions +public record CqlToolkitSettings ( ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, ImmutableHashSet? Models = null, @@ -17,7 +17,7 @@ public record CqlApiOptions bool AllowNullInterval = false ) { - public static CqlApiOptions Default { get; } = new(); + public static CqlToolkitSettings Default { get; } = new(); public ImmutableHashSet Models { get; init; } = Models ?? []; @@ -84,7 +84,7 @@ public record CqlApiOptions internal static class CqlApiOptionsExtensions { - internal static void ApplyToCqlToElmOptions(this CqlApiOptions options, CqlToElmOptions opt) + internal static void ApplyToCqlToElmOptions(this CqlToolkitSettings options, CqlToElmOptions opt) { opt.AmbiguousTypeBehavior = options.AmbiguousTypeBehavior; opt.EnableListPromotion = options.EnableListPromotion; diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs index f7bef000e..2814048d8 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs @@ -2,5 +2,5 @@ public static class CqlApiExtendableExtensions { - public static ICqlApiExtendable AsExtendable(this CqlApi self) => self; + public static ICqlToolkit AsExtendable(this CqlToolkit self) => self; } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiStateEntry.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs similarity index 62% rename from Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiStateEntry.cs rename to Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs index 41b857cd7..df9b7b7bf 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiStateEntry.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs @@ -4,6 +4,6 @@ namespace CqlSdkPrototype.Cql.Extensibility; -public readonly record struct CqlApiStateEntry(CqlLibraryString CqlLibraryString, Library? ElmLibrary = null) { +public readonly record struct CqlToolkitProcessItem(CqlLibraryString CqlLibraryString, Library? ElmLibrary = null) { internal LibraryBuilder? ElmLibraryBuilder { get; init; } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlApiExtendable.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlApiExtendable.cs deleted file mode 100644 index fd4f83f14..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlApiExtendable.cs +++ /dev/null @@ -1,14 +0,0 @@ -using CqlSdkPrototype.Infrastructure; - -namespace CqlSdkPrototype.Cql.Extensibility; - -public interface ICqlApiExtendable - where TCqlApi : ICqlApiExtendable -{ - ILoggerFactory LoggerFactory { get; } - CqlApiOptions Options { get; } - IReadOnlyDictionary Entries { get; } - TCqlApi WithOptions(Func replaceOptions); - TCqlApi AddCqlLibraries(IEnumerable libraries); - TCqlApi Translate(); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs new file mode 100644 index 000000000..e38409b31 --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs @@ -0,0 +1,12 @@ +using CqlSdkPrototype.Infrastructure; + +namespace CqlSdkPrototype.Cql.Extensibility; + +public interface ICqlToolkit +{ + ILoggerFactory LoggerFactory { get; } + CqlToolkitSettings Settings { get; } + CqlToolkitProcessItemsReadOnly ProcessItems { get; } + CqlToolkit AddCqlLibraries(IEnumerable libraries); + CqlToolkit Translate(); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Adding.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Adding.cs deleted file mode 100644 index 7b323b3e5..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Adding.cs +++ /dev/null @@ -1,46 +0,0 @@ -using CqlSdkPrototype.Cql.Extensibility; -using CqlSdkPrototype.Infrastructure; -using CqlSdkPrototype.Internal; - -namespace CqlSdkPrototype.Cql.Extensions; - -public static partial class CqlApiExtensions -{ - public static TCqlApi AddCqlLibraryString( - this TCqlApi cqlApi, - CqlLibraryString cqlLibrary) - where TCqlApi : ICqlApiExtendable - { - return cqlApi.AddCqlLibraries([cqlLibrary]); - } - - public static TCqlApi AddCqlLibrariesFromDirectory( - this TCqlApi cqlApi, - DirectoryInfo directory, - EnumerationOptions? options = null, - Func? filePredicate = null) - where TCqlApi : ICqlApiExtendable - { - var files = directory.EnumerateFiles("*.cql", options ?? InternalConstants.DefaultEnumerationOptions); - if (filePredicate is not null) files = files.Where(filePredicate); - return cqlApi.AddCqlLibraryFiles(files); - } - - public static TCqlApi AddCqlLibraryFiles( - this TCqlApi cqlApi, - IEnumerable files) - where TCqlApi : ICqlApiExtendable - { - var logger = cqlApi.LoggerFactory.CreateLogger(typeof(CqlApiExtensions)); - var cqlLibraries = files - .Select(f => - { - logger.LogInformation("Loading library from file: {file}", f); - var cqlContent = File.ReadAllText(f.FullName); - var cqlLibrary = CqlLibraryString.Parse(cqlContent); - return cqlLibrary; - }); // Log errors - - return cqlApi.AddCqlLibraries(cqlLibraries); - } -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Saving.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Saving.cs deleted file mode 100644 index 61e2806d5..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.Saving.cs +++ /dev/null @@ -1,30 +0,0 @@ -using CqlSdkPrototype.Cql.Extensibility; - -namespace CqlSdkPrototype.Cql.Extensions; - -public static partial class CqlApiExtensions -{ - public static TCqlApi SaveElmFileToDirectory( - this TCqlApi cqlApi, - DirectoryInfo directory, - bool writeIndented = true) - where TCqlApi : ICqlApiExtendable - { - if (!directory.Exists) - directory.Create(); - - var logger = cqlApi.LoggerFactory.CreateLogger(typeof(CqlApiExtensions)); - - foreach (var (libraryName, (_, elmLibrary)) in cqlApi.Entries) - { - if (elmLibrary == null) - continue; - - var fileName = Path.Combine(directory.FullName, $"{libraryName}.json"); - File.WriteAllText(fileName, elmLibrary.SerializeToJson(writeIndented)); - logger.LogInformation("Saved ELM to file: {file}", fileName); - } - - return cqlApi; - } -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.cs deleted file mode 100644 index e635ea282..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlApiExtensions.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace CqlSdkPrototype.Cql.Extensions; - -public static partial class CqlApiExtensions -{ - // This file is intentionally left blank - since it's the parent file for nested CqlApiExtensions.* files -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs new file mode 100644 index 000000000..8e7e93625 --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs @@ -0,0 +1,45 @@ +using CqlSdkPrototype.Cql.Extensibility; +using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Internal; + +namespace CqlSdkPrototype.Cql.Extensions; + +public static partial class CqlToolkitExtensions +{ + public static ICqlToolkit AddCqlLibraryString( + this ICqlToolkit cqlToolkit, + CqlLibraryString cqlLibrary) + { + return cqlToolkit.AddCqlLibraries([cqlLibrary]); + } + + public static ICqlToolkit AddCqlLibrariesFromDirectory( + this ICqlToolkit cqlToolkit, + DirectoryInfo directory, + EnumerationOptions? options = null, + Func? filePredicate = null) => + cqlToolkit.Return(cqlToolkit => + { + var files = directory.EnumerateFiles("*.cql", options ?? InternalConstants.DefaultEnumerationOptions); + if (filePredicate is not null) files = files.Where(filePredicate); + cqlToolkit.AddCqlLibraryFiles(files); + }); + + public static ICqlToolkit AddCqlLibraryFiles( + this ICqlToolkit cqlToolkit, + IEnumerable files) => + cqlToolkit.Return((cqlToolkit, loggerFn) => + { + var logger = loggerFn(); + var cqlLibraries = files + .Select(f => + { + logger.LogInformation("Loading library from file: {file}", f); + var cqlContent = File.ReadAllText(f.FullName); + var cqlLibrary = CqlLibraryString.Parse(cqlContent); + return cqlLibrary; + }); // Log errors + + cqlToolkit.AddCqlLibraries(cqlLibraries); + }); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs new file mode 100644 index 000000000..de3d3f9bf --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs @@ -0,0 +1,28 @@ +using CqlSdkPrototype.Cql.Extensibility; + +namespace CqlSdkPrototype.Cql.Extensions; + +public static partial class CqlToolkitExtensions +{ + public static ICqlToolkit SaveElmFileToDirectory( + this ICqlToolkit cqlToolkit, + DirectoryInfo directory, + bool writeIndented = true) => + cqlToolkit.Return((cqlToolkit, loggerFn) => + { + if (!directory.Exists) + directory.Create(); + + var logger = loggerFn(); + + foreach (var (libraryName, (_, elmLibrary)) in cqlToolkit.ProcessItems) + { + if (elmLibrary == null) + continue; + + var fileName = Path.Combine(directory.FullName, $"{libraryName}.json"); + File.WriteAllText(fileName, elmLibrary.SerializeToJson(writeIndented)); + logger.LogInformation("Saved ELM to file: {file}", fileName); + } + }); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs new file mode 100644 index 000000000..cff93f5a0 --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs @@ -0,0 +1,26 @@ +using CqlSdkPrototype.Cql.Extensibility; + +namespace CqlSdkPrototype.Cql.Extensions; + +public static partial class CqlToolkitExtensions +{ + private static ICqlToolkit Return(this ICqlToolkit cqlToolkit, Action with) + { + with(cqlToolkit); + return cqlToolkit; + } + + private static ICqlToolkit Return(this ICqlToolkit cqlToolkit, Action> with) + { + with(cqlToolkit, () => cqlToolkit.LoggerFactory.CreateLogger(typeof(CqlToolkitExtensions))); + return cqlToolkit; + } + + public static ICqlToolkit ReplaceSettings(this ICqlToolkit cqlToolkit, Func replace) => + cqlToolkit.Return(cqlToolkit => + { + var toolkit = ((CqlToolkit)cqlToolkit); + var cqlToolkitSettings = replace(toolkit._settings); + toolkit.SetSettings(cqlToolkitSettings); + }); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlServicesOptions.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlServicesOptions.cs deleted file mode 100644 index f4b61bf35..000000000 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlServicesOptions.cs +++ /dev/null @@ -1,8 +0,0 @@ -using Hl7.Cql.Model; - -namespace CqlSdkPrototype.Cql.Internal; - -internal class CqlServicesOptions -{ - public ModelInfo[] Models { get; set; } = []; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Internal/EntriesBuilderLibraryProvider.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs similarity index 67% rename from Cql/CqlSdkPrototype/Cql/Internal/EntriesBuilderLibraryProvider.cs rename to Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs index d5777fc7b..b78970e04 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/EntriesBuilderLibraryProvider.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs @@ -3,10 +3,10 @@ namespace CqlSdkPrototype.Cql.Internal; -internal class EntriesBuilderLibraryProvider(CqlApiStateEntryDictionary.Builder entriesBuilder) +internal class CqlToolkitProcessItemsLibraryProvider(CqlToolkitProcessItems.Builder processItemsBuilder) : ILibraryProvider { - public CqlApiStateEntryDictionary.Builder EntriesBuilder { get; set; } = entriesBuilder; + public CqlToolkitProcessItems.Builder ProcessItemsBuilder { get; set; } = processItemsBuilder; public bool TryResolveLibrary( string libraryName, @@ -21,7 +21,7 @@ public bool TryResolveLibrary( CqlLibraryIdentifier.Parse(libraryName), version is null ? null : CqlLibraryVersion.Parse(version)); - if (EntriesBuilder.TryGetValue(libVer, out var entry) && entry.ElmLibraryBuilder is { } lb) + if (ProcessItemsBuilder.TryGetValue(libVer, out var processItem) && processItem.ElmLibraryBuilder is { } lb) { libraryBuilder = lb; return true; diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitServices.cs similarity index 79% rename from Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs rename to Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitServices.cs index 43fae869f..8afecd53f 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlApiServices.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitServices.cs @@ -8,26 +8,25 @@ namespace CqlSdkPrototype.Cql.Internal; -internal readonly record struct CqlApiServices( +internal readonly record struct CqlToolkitServices( ILoggerFactory LoggerFactory, ServiceProvider ServiceProvider, CqlToElmConverter CqlToElmConverter, - EntriesBuilderLibraryProvider LibraryProvider) : - ITestingOnlyServiceProviderAccessor + CqlToolkitProcessItemsLibraryProvider LibraryProvider) { private static readonly (CqlModel CqlModel, ModelInfo ModelInfo)[] AllMappedModelsInOrder = [ (CqlModel.ElmR1, Models.ElmR1), (CqlModel.Fhir401, Models.Fhir401)]; - public static CqlApiServices Create(ILoggerFactory loggerFactory, CqlApiOptions options, EntriesBuilderLibraryProvider libraryProvider) + public static CqlToolkitServices Create(ILoggerFactory loggerFactory, CqlToolkitSettings options, CqlToolkitProcessItemsLibraryProvider libraryProvider) { var services = new ServiceCollection(); services.AddExternalLogging(loggerFactory); AddCqlServices(services, options, libraryProvider); var serviceProvider = services.BuildServiceProvider(validateScopes: true); - var cqlToElmConverter = serviceProvider.GetCqlToElmConverter(); + var cqlToElmConverter = serviceProvider.GetRequiredService(); - return new CqlApiServices( + return new CqlToolkitServices( loggerFactory, serviceProvider, cqlToElmConverter, @@ -36,7 +35,7 @@ public static CqlApiServices Create(ILoggerFactory loggerFactory, CqlApiOptions private static void AddCqlServices( IServiceCollection serviceCollection, - CqlApiOptions options, + CqlToolkitSettings options, ILibraryProvider libraryProvider) { SuppressCqlDebugAssertions(); @@ -76,7 +75,7 @@ private static void SuppressCqlDebugAssertions() public ILoggerFactory LoggerFactory { get; } = LoggerFactory; public ServiceProvider ServiceProvider { get; } = ServiceProvider!; - public ILogger Logger { get; } = ServiceProvider.GetLogger(); + public ILogger Logger { get; } = ServiceProvider.GetLogger(); public CqlToElmConverter CqlToElmConverter { get; } = CqlToElmConverter!; - public EntriesBuilderLibraryProvider LibraryProvider { get; } = LibraryProvider!; + public CqlToolkitProcessItemsLibraryProvider LibraryProvider { get; } = LibraryProvider!; } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs index ac12e0c61..c156df208 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs @@ -14,10 +14,10 @@ public static TElmApi AddElmFromCqlApi( this TElmApi elmApi, TCqlApi cqlApi) where TElmApi : IElmApiExtendable - where TCqlApi : ICqlApiExtendable + where TCqlApi : ICqlToolkit { return elmApi.AddElmLibraries( - from entry in cqlApi.Entries + from entry in cqlApi.ProcessItems let elmLibrary = entry.Value.ElmLibrary where elmLibrary is not null select elmLibrary); diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs index baa91288b..64a15bfc0 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs @@ -6,9 +6,9 @@ namespace CqlSdkPrototype.Elm.Extensions; public static partial class ElmApiExtensions { public static ElmApi Compile( - this CqlApi cqlApi) + this CqlToolkit cqlToolkit) { - return cqlApi + return cqlToolkit .Translate() .CreateElmApi() .Compile(); diff --git a/Cql/CqlSdkPrototype/GlobalUsings.cs b/Cql/CqlSdkPrototype/GlobalUsings.cs index 187b89bd2..781cbe12c 100644 --- a/Cql/CqlSdkPrototype/GlobalUsings.cs +++ b/Cql/CqlSdkPrototype/GlobalUsings.cs @@ -13,5 +13,6 @@ global using Microsoft.Extensions.DependencyInjection.Extensions; global using Microsoft.Extensions.Logging; global using Microsoft.Extensions.Logging.Abstractions; -global using CqlApiStateEntryDictionary = System.Collections.Immutable.ImmutableDictionary; +global using CqlToolkitProcessItems = System.Collections.Immutable.ImmutableDictionary; +global using CqlToolkitProcessItemsReadOnly = System.Collections.Generic.IReadOnlyDictionary; global using ElmApiStateEntryDictionary = System.Collections.Immutable.ImmutableDictionary; \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Program.cs b/Cql/CqlSdkPrototype/Program.cs index 7a792e8d0..995d7aa95 100644 --- a/Cql/CqlSdkPrototype/Program.cs +++ b/Cql/CqlSdkPrototype/Program.cs @@ -27,8 +27,8 @@ static void Main(string[] args) .BuildServiceProvider(); var loggerFactory = serviceProvider.GetRequiredService(); - var cqlApiOptions = new CqlApiOptions(Models: [CqlModel.ElmR1, CqlModel.Fhir401]); - var cqlApi = new CqlApi(loggerFactory, cqlApiOptions); + var cqlApiOptions = new CqlToolkitSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401]); + var cqlApi = new CqlToolkit(loggerFactory, cqlApiOptions); var logger = serviceProvider.GetLogger(); @@ -37,14 +37,14 @@ static void Main(string[] args) //InvokeCqlFromExamplesFolder(logger: logger, cqlApi: cqlApi); // foreach (var librarySetName in (string[]) ["CMS"])//"Authoring", "CMS", "Demo", "Examples"]) - VerboseExample(logger: logger, cqlApi: cqlApi, librarySetName: librarySetName, shouldBuildCqlToElm:false); + VerboseExample(logger: logger, cqlToolkit: cqlApi, librarySetName: librarySetName, shouldBuildCqlToElm:false); // VerboseExample(logger, cqlApi, "CMS"); } private static void InvokeCqlFromExamplesFolder( ILogger logger, - CqlApi cqlApi) + CqlToolkit cqlToolkit) { // INTRO: // This example demonstrates how to load CQL libraries from a directory and invoke a library declarations directly. @@ -56,8 +56,8 @@ private static void InvokeCqlFromExamplesFolder( var cqlContext = FhirCqlContext.ForBundle(); // We need a disposable invocation scope, which contains the AssemblyLoadContext and the related library Assemblies. - using var invocationScope = cqlApi - .WithOptions(o => o with { ProcessBatchItemExceptionHandling = IgnoreExceptionAndContinue }) + using var invocationScope = cqlToolkit + .ReplaceSettings(o => o with { ProcessBatchItemExceptionHandling = IgnoreExceptionAndContinue }) .AddCqlLibrariesFromDirectory(dirs.CqlInDirectory) .CreateRuntimeScope(); logger.LogInformation("{dump}", invocationScope.DumpLibraryDeclarations()); @@ -73,7 +73,7 @@ private static void InvokeCqlFromExamplesFolder( } } - private static void InvokeCqlExample(CqlApi cqlApi) + private static void InvokeCqlExample(CqlToolkit cqlToolkit) { // INTRO: // This example demonstrates how to add a CqlLibraryString to the CqlApi and invoke a library declaration directly. @@ -86,7 +86,7 @@ library AdditionLib version '0.0.0' define private Three: 1 + 2 """); var cqlContext = FhirCqlContext.ForBundle(); - using var invocationScope = cqlApi + using var invocationScope = cqlToolkit .AddCqlLibraryString(cqlLibraryString) .CreateRuntimeScope(elmOpt => elmOpt with { AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.Embedded }); var result = invocationScope.GetLibraryDefinitionResult(cqlContext, cqlLibraryString.VersionedLibraryIdentifier, "Three"); @@ -95,7 +95,7 @@ library AdditionLib version '0.0.0' private static void VerboseExample( ILogger logger, - CqlApi cqlApi, + CqlToolkit cqlToolkit, string librarySetName, bool shouldBuildCqlToElm = false) { @@ -107,11 +107,11 @@ private static void VerboseExample( Directories dirs = Directories.Create(librarySetName); dirs.GeneratedDirectory.Delete(recursive: true); - cqlApi.WithOptions(o => o with { ProcessBatchItemExceptionHandling = IgnoreExceptionAndContinue }); + cqlToolkit.ReplaceSettings(o => o with { ProcessBatchItemExceptionHandling = IgnoreExceptionAndContinue }); if (shouldBuildCqlToElm) { - cqlApi + cqlToolkit .AddCqlLibrariesFromDirectory( dirs.CqlInDirectory /*, options: new EnumerationOptions() @@ -128,13 +128,13 @@ private static void VerboseExample( ; } - var elmApi = cqlApi.CreateElmApi(o => o with { AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.Embedded }) + var elmApi = cqlToolkit.CreateElmApi(o => o with { AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.Embedded }) .AddElmFilesFromDirectory(dirs.ElmInDirectory) .Compile() .SaveCSharpFilesToDirectory(dirs.CSharpOutDirectory) .SaveAssemblyBinariesToDirectory(dirs.AssembliesOutDirectory); - cqlApi.TryGetFirstElmFileLines() + cqlToolkit.TryGetFirstElmFileLines() .Switch(t => logger.LogInformation( $""" First 50 ELM lines for {t.id}: @@ -212,9 +212,9 @@ file static class X public static Maybe<(CqlVersionedLibraryIdentifier id, string elmJson)> TryGetFirstElmFileLines( this TCqlApi cqlApi) - where TCqlApi : ICqlApiExtendable + where TCqlApi : ICqlToolkit { - return cqlApi.Entries + return cqlApi.ProcessItems .TryGetFirst(kv => kv.Value.ElmLibrary is not null) .TryReturn(kv => (kv.Key, kv.Value.ElmLibrary!.SerializeToJson()!)); } diff --git a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs index 2cbaaa7b5..f3a7ae6fd 100644 --- a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs +++ b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs @@ -7,25 +7,24 @@ namespace CqlSdkPrototype.Runtime.Extensions; public static partial class RuntimeApiExtensions { - public static ElmApi CreateElmApi( - this TCqlApi cqlApi, + public static ElmApi CreateElmApi( + this ICqlToolkit cqlToolkit, Func? configureOptions = null) - where TCqlApi : ICqlApiExtendable { - var elmApiOptions = new ElmApiOptions(ProcessBatchItemExceptionHandling: cqlApi.Options.ProcessBatchItemExceptionHandling); + var elmApiOptions = new ElmApiOptions(ProcessBatchItemExceptionHandling: cqlToolkit.Settings.ProcessBatchItemExceptionHandling); if (configureOptions is not null) elmApiOptions = configureOptions(elmApiOptions); - var elmApi = new ElmApi(cqlApi.LoggerFactory, elmApiOptions).AddElmFromCqlApi(cqlApi); + var elmApi = new ElmApi(cqlToolkit.LoggerFactory, elmApiOptions).AddElmFromCqlApi(cqlToolkit); return elmApi; } #pragma warning disable RS0026 public static RuntimeScope CreateRuntimeScope( #pragma warning restore RS0026 - this CqlApi cqlApi, + this ICqlToolkit cqlToolkit, Func? configureElmOptions = null, Func? configureRuntimeOptions = null) { - return cqlApi + return cqlToolkit .Translate() .CreateElmApi(configureElmOptions) .CreateRuntimeScope(configureRuntimeOptions); diff --git a/Cql/CqlToElmTests/Base.cs b/Cql/CqlToElmTests/Base.cs index 7d71e00d5..8b08fc35d 100644 --- a/Cql/CqlToElmTests/Base.cs +++ b/Cql/CqlToElmTests/Base.cs @@ -179,7 +179,7 @@ protected static void AssertList( .BuildServiceProvider() .GetRequiredService(); - protected static CqlApi CreateCqlApi( + protected static CqlToolkit CreateCqlApi( ImmutableHashSet? Models = null, ImmutableHashSet? ModelInfos = null, AmbiguousTypeBehavior AmbiguousTypeBehavior = AmbiguousTypeBehavior.Error, @@ -188,9 +188,9 @@ protected static CqlApi CreateCqlApi( bool EnableIntervalPromotion = false, bool EnableIntervalDemotion = false, bool AllowNullIntervals = false) => - new CqlApi( + new CqlToolkit( LoggerFactory, - new CqlApiOptions( + new CqlToolkitSettings( ProcessBatchItemExceptionHandling: ProcessBatchItemExceptionHandling.ThrowException, Models: Models ?? [CqlModel.ElmR1, CqlModel.Fhir401], ModelInfos: ModelInfos, diff --git a/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs b/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs index 17969827a..ee5c43bc1 100644 --- a/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs +++ b/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs @@ -1,29 +1,29 @@ -using CqlSdkPrototype.Internal; -using Hl7.Cql.CqlToElm; +using CqlSdkPrototype.Cql; +using CqlSdkPrototype.Internal; using Hl7.Cql.CqlToElm.Builtin; -namespace CqlSdkPrototype.Cql.Internal; +namespace Hl7.Cql.CqlToElm.Test; internal static class CqlTestingOnlyServiceProviderAccessorExtensions { - private static TService GetCqlRequiredService(this ITestingOnlyServiceProviderAccessor spAccessor) where TService : notnull => + private static TService GetCqlRequiredService(this ITestingOnlyServiceProviderAccessor spAccessor) where TService : notnull => spAccessor.ServiceProvider.GetRequiredService(); - public static CqlToElmConverter GetCqlToElmConverter(this ITestingOnlyServiceProviderAccessor spAccessor) => + public static CqlToElmConverter GetCqlToElmConverter(this ITestingOnlyServiceProviderAccessor spAccessor) => spAccessor.GetCqlRequiredService(); - public static CoercionProvider GetCoercionProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => + public static CoercionProvider GetCoercionProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => spAccessor.GetCqlRequiredService(); - public static ElmFactory GetElmFactory(this ITestingOnlyServiceProviderAccessor spAccessor) => + public static ElmFactory GetElmFactory(this ITestingOnlyServiceProviderAccessor spAccessor) => spAccessor.GetCqlRequiredService(); - public static MessageProvider GetMessageProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => + public static MessageProvider GetMessageProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => spAccessor.GetCqlRequiredService(); - public static InvocationBuilder GetInvocationBuilder(this ITestingOnlyServiceProviderAccessor spAccessor) => + public static InvocationBuilder GetInvocationBuilder(this ITestingOnlyServiceProviderAccessor spAccessor) => spAccessor.GetCqlRequiredService(); - public static SystemLibrary GetSystemLibrary(this ITestingOnlyServiceProviderAccessor spAccessor) => + public static SystemLibrary GetSystemLibrary(this ITestingOnlyServiceProviderAccessor spAccessor) => spAccessor.GetCqlRequiredService(); } \ No newline at end of file diff --git a/Cql/CqlToElmTests/TestExtensions.cs b/Cql/CqlToElmTests/TestExtensions.cs index 6074709fb..41b13ea38 100644 --- a/Cql/CqlToElmTests/TestExtensions.cs +++ b/Cql/CqlToElmTests/TestExtensions.cs @@ -18,20 +18,20 @@ internal static class TestExtensions private static Library Library { get; } = new(identifier: new VersionedIdentifier { id = "Lambdas", version = "1.0.0" }); - public static CqlApi AddFHIRHelpers(this CqlApi cqlApi) => cqlApi.AddCqlLibraryString(FHIRHelpers); + public static ICqlToolkit AddFHIRHelpers(this ICqlToolkit cqlToolkit) => cqlToolkit.AddCqlLibraryString(FHIRHelpers); public static Library MakeLibrary( - this CqlApi cqlApi, + this ICqlToolkit cqlToolkit, string cql, params string[] expectedErrors) { var cqlLibraryString = CqlLibraryString.Parse(cql); - var library = cqlApi + var library = cqlToolkit .AddCqlLibraryString(cqlLibraryString) .Translate() .AsExtendable() - .Entries[cqlLibraryString.VersionedLibraryIdentifier] + .ProcessItems[cqlLibraryString.VersionedLibraryIdentifier] .ElmLibrary!; if (expectedErrors.Any()) @@ -43,7 +43,7 @@ public static Library MakeLibrary( } public static Library MakeLibraryFromExpression( - this CqlApi cqlApi, + this ICqlToolkit cqlToolkit, string expression, string[]? expectedErrors = null, [System.Runtime.CompilerServices.CallerMemberName] string memberName = "") @@ -53,7 +53,7 @@ library Test version '1.0.0' define private "{memberName}": {expression} """; - var lib = cqlApi.MakeLibrary(cql, expectedErrors ?? []); + var lib = cqlToolkit.MakeLibrary(cql, expectedErrors ?? []); return lib; } @@ -94,11 +94,11 @@ public static A ContainSingleOfType(this GenericCollectionAssertions().And.ContainSingle().Subject!; public static Expression Expression( - this CqlApi cqlApi, + this ICqlToolkit cqlToolkit, string expression, [System.Runtime.CompilerServices.CallerMemberName] string memberName = "") { - return cqlApi.MakeLibraryFromExpression(expression, memberName: memberName).statements[0].expression; + return cqlToolkit.MakeLibraryFromExpression(expression, memberName: memberName).statements[0].expression; } } \ No newline at end of file diff --git a/Cql/PackagerCLI/PackagerCli.cs b/Cql/PackagerCLI/PackagerCli.cs index 93e4b14b4..bb64adaad 100644 --- a/Cql/PackagerCLI/PackagerCli.cs +++ b/Cql/PackagerCLI/PackagerCli.cs @@ -37,9 +37,9 @@ public int Run(bool translateCql = false) ElmApi elmApi; if (translateCql) { - elmApi = new CqlApi( + elmApi = new CqlToolkit( loggerFactory, - new CqlApiOptions(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) + new CqlToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) .OnValueSelect( valueSelector: _ => opt.CqlInDirectory, ifHasValue: (api, cql) => api.AddCqlLibrariesFromDirectory(cql), diff --git a/Demo/API/Program.cs b/Demo/API/Program.cs index 5de0e9f4d..0471fcb14 100644 --- a/Demo/API/Program.cs +++ b/Demo/API/Program.cs @@ -19,12 +19,12 @@ private static void Main(string[] args) services.AddLogging(builder => builder.AddConsole()); - services.AddSingleton(new CqlApiOptions(Models: [CqlModel.ElmR1, CqlModel.Fhir401])); - services.AddSingleton(); + services.AddSingleton(new CqlToolkitSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401])); + services.AddSingleton(); // Get CqlApi from DI IServiceProvider serviceProvider = services.BuildServiceProvider(); - var cqlApi = serviceProvider.GetRequiredService(); + var cqlApi = serviceProvider.GetRequiredService(); // Setup and use CqlApi cqlApi.AddCqlLibrariesFromDirectory(new DirectoryInfo("input/cql/")); From 18567a4fd92a71d12bca48a940f61176cb88603a Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Mon, 27 Jan 2025 15:45:04 +0100 Subject: [PATCH 06/39] Clean up cql and elm apis --- Cql/CoreTests/PrimitiveTests.cs | 7 +- Cql/CqlSdkPrototype/Cql/CqlToElmConversion.cs | 9 ++ Cql/CqlSdkPrototype/Cql/CqlToolkit.cs | 97 +++++++------ .../CqlApiExtendableExtensions.cs | 6 - .../Extensibility/CqlToolkitProcessItem.cs | 9 -- .../Cql/Extensibility/ICqlToolkit.cs | 12 -- .../Extensions/CqlToolkitExtensions.Adding.cs | 55 ++++--- .../Extensions/CqlToolkitExtensions.Saving.cs | 39 +++-- .../Cql/Extensions/CqlToolkitExtensions.cs | 24 +--- Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs | 13 ++ .../CqlToolkitProcessItemsLibraryProvider.cs | 8 +- Cql/CqlSdkPrototype/CqlSdkPrototype.csproj | 4 + Cql/CqlSdkPrototype/Elm/ElmApiOptions.cs | 11 -- Cql/CqlSdkPrototype/Elm/ElmApiState.cs | 21 ++- ...ateEntry.cs => ElmToAssemblyConversion.cs} | 4 +- .../Elm/{ElmApi.cs => ElmToolkit.cs} | 101 +++++++------ Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs | 13 ++ .../ElmApiExtendableExtensions.cs | 6 - .../Elm/Extensibility/IElmApiExtendable.cs | 16 --- .../Elm/Extensions/ElmApiExtensions.Adding.cs | 103 ------------- .../Elm/Extensions/ElmApiExtensions.Cql.cs | 17 --- .../Elm/Extensions/ElmApiExtensions.cs | 6 - .../Extensions/ElmToolkitExtensions.Adding.cs | 85 +++++++++++ .../Extensions/ElmToolkitExtensions.Cql.cs | 14 ++ ...ving.cs => ElmToolkitExtensions.Saving.cs} | 24 ++-- .../Elm/Extensions/ElmToolkitExtensions.cs | 7 + Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs | 14 ++ Cql/CqlSdkPrototype/GlobalUsings.cs | 7 +- ... => IServiceProviderAccessorForTesting.cs} | 2 +- Cql/CqlSdkPrototype/Program.cs | 39 ++--- .../Extensions/RuntimeApiExtensions.Cql.cs | 17 ++- .../Extensions/RuntimeApiExtensions.Elm.cs | 16 +-- .../Internal/ElmApiInternalExtensions.cs | 7 - .../Runtime/Internal/IElmApiInternal.cs | 9 -- Cql/CqlToElmTests/(tests)/AdditionTest.cs | 112 +++++++-------- Cql/CqlToElmTests/(tests)/AgeTest.cs | 8 +- Cql/CqlToElmTests/(tests)/AndTest.cs | 26 ++-- Cql/CqlToElmTests/(tests)/AsTest.cs | 22 +-- Cql/CqlToElmTests/(tests)/BetweenTest.cs | 4 +- Cql/CqlToElmTests/(tests)/BooleanTest.cs | 20 +-- Cql/CqlToElmTests/(tests)/CaseTest.cs | 2 +- Cql/CqlToElmTests/(tests)/CoercionTest.cs | 4 +- .../(tests)/ComponentFromTest.cs | 10 +- .../(tests)/ConcatenationTest.cs | 8 +- .../(tests)/ConcurrentWithTest.cs | 48 +++---- Cql/CqlToElmTests/(tests)/ContextDefTest.cs | 12 +- Cql/CqlToElmTests/(tests)/ConvertTest.cs | 8 +- Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs | 8 +- Cql/CqlToElmTests/(tests)/DifferenceTest.cs | 26 ++-- Cql/CqlToElmTests/(tests)/DistinctTest.cs | 2 +- Cql/CqlToElmTests/(tests)/DivisionTest.cs | 84 +++++------ Cql/CqlToElmTests/(tests)/DurationTest.cs | 36 ++--- Cql/CqlToElmTests/(tests)/EqualsTest.cs | 130 ++++++++--------- Cql/CqlToElmTests/(tests)/EquivalentTest.cs | 116 +++++++-------- Cql/CqlToElmTests/(tests)/ExistsTest.cs | 10 +- Cql/CqlToElmTests/(tests)/ExpandTest.cs | 18 +-- Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs | 14 +- Cql/CqlToElmTests/(tests)/FlattenTest.cs | 16 +-- .../(tests)/FunctionDefinitionTest.cs | 34 ++--- Cql/CqlToElmTests/(tests)/GreaterTest.cs | 136 +++++++++--------- Cql/CqlToElmTests/(tests)/IfThenElseTest.cs | 12 +- Cql/CqlToElmTests/(tests)/ImpliesTest.cs | 26 ++-- Cql/CqlToElmTests/(tests)/InTest.cs | 12 +- Cql/CqlToElmTests/(tests)/IncludedInTest.cs | 28 ++-- Cql/CqlToElmTests/(tests)/IncludesTest.cs | 20 +-- Cql/CqlToElmTests/(tests)/IndexTest.cs | 2 +- Cql/CqlToElmTests/(tests)/InfixSetTest.cs | 8 +- Cql/CqlToElmTests/(tests)/InstanceTest.cs | 2 +- Cql/CqlToElmTests/(tests)/IntervalTest.cs | 46 +++--- .../(tests)/InvocationBuilderTests.cs | 2 +- Cql/CqlToElmTests/(tests)/IsTest.cs | 26 ++-- Cql/CqlToElmTests/(tests)/LengthTest.cs | 2 +- Cql/CqlToElmTests/(tests)/LibraryTest.cs | 86 +++++------ Cql/CqlToElmTests/(tests)/ListTest.cs | 18 +-- Cql/CqlToElmTests/(tests)/LiteralTest.cs | 96 ++++++------- Cql/CqlToElmTests/(tests)/MeetsTest.cs | 14 +- Cql/CqlToElmTests/(tests)/ModelTest.cs | 6 +- Cql/CqlToElmTests/(tests)/ModuloTest.cs | 84 +++++------ .../(tests)/MultiplicationTest.cs | 84 +++++------ Cql/CqlToElmTests/(tests)/NotEqualTest.cs | 124 ++++++++-------- .../(tests)/NotEquivalentTest.cs | 120 ++++++++-------- Cql/CqlToElmTests/(tests)/NotTest.cs | 14 +- Cql/CqlToElmTests/(tests)/OrTest.cs | 26 ++-- Cql/CqlToElmTests/(tests)/OrderingTest.cs | 8 +- Cql/CqlToElmTests/(tests)/OverlapsTest.cs | 12 +- Cql/CqlToElmTests/(tests)/PointFromTest.cs | 16 +-- Cql/CqlToElmTests/(tests)/PowerTest.cs | 60 ++++---- Cql/CqlToElmTests/(tests)/PredecessorTest.cs | 8 +- Cql/CqlToElmTests/(tests)/QueryTest.cs | 40 +++--- Cql/CqlToElmTests/(tests)/RefTest.cs | 72 +++++----- Cql/CqlToElmTests/(tests)/RetrieveTest.cs | 2 +- Cql/CqlToElmTests/(tests)/SingletonTest.cs | 18 +-- Cql/CqlToElmTests/(tests)/StartEndTest.cs | 12 +- Cql/CqlToElmTests/(tests)/StartsEndsTest.cs | 6 +- Cql/CqlToElmTests/(tests)/StringTest.cs | 2 +- Cql/CqlToElmTests/(tests)/SubtractionTest.cs | 72 +++++----- Cql/CqlToElmTests/(tests)/SuccessorTest.cs | 8 +- Cql/CqlToElmTests/(tests)/SymbolTableTest.cs | 2 +- Cql/CqlToElmTests/(tests)/TagsTest.cs | 7 +- .../(tests)/TimingExpressionTest.cs | 10 +- .../(tests)/TruncatedDivisionTest.cs | 84 +++++------ Cql/CqlToElmTests/(tests)/TypeExtentTest.cs | 56 ++++---- Cql/CqlToElmTests/(tests)/WidthTest.cs | 12 +- Cql/CqlToElmTests/(tests)/XmlTest.cs | 10 +- Cql/CqlToElmTests/(tests)/XorTest.cs | 26 ++-- Cql/CqlToElmTests/Base.cs | 22 +-- .../CqlServiceProviderAccessorForTesting.cs | 29 ++++ ...ngOnlyServiceProviderAccessorExtensions.cs | 29 ---- .../ElmServiceProviderAccessorForTesting.cs | 24 ++++ Cql/CqlToElmTests/ElmToolkitServiceScope.cs | 6 + Cql/CqlToElmTests/TestExtensions.cs | 36 +++-- Cql/PackagerCLI/PackagerCli.cs | 107 +++++++------- Demo/API/Program.cs | 6 +- Demo/Test.Measures.Demo/MeasuresTest.cs | 5 +- submodules/Ncqa.DQIC | 2 +- 115 files changed, 1686 insertions(+), 1717 deletions(-) create mode 100644 Cql/CqlSdkPrototype/Cql/CqlToElmConversion.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs create mode 100644 Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/ElmApiOptions.cs rename Cql/CqlSdkPrototype/Elm/{Extensibility/ElmApiStateEntry.cs => ElmToAssemblyConversion.cs} (61%) rename Cql/CqlSdkPrototype/Elm/{ElmApi.cs => ElmToolkit.cs} (77%) create mode 100644 Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiExtendableExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Extensibility/IElmApiExtendable.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.cs create mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs create mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs rename Cql/CqlSdkPrototype/Elm/Extensions/{ElmApiExtensions.Saving.cs => ElmToolkitExtensions.Saving.cs} (74%) create mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs create mode 100644 Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs rename Cql/CqlSdkPrototype/Internal/{ITestingOnlyServiceProviderAccessor.cs => IServiceProviderAccessorForTesting.cs} (59%) delete mode 100644 Cql/CqlSdkPrototype/Runtime/Internal/ElmApiInternalExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Runtime/Internal/IElmApiInternal.cs create mode 100644 Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs delete mode 100644 Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs create mode 100644 Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs create mode 100644 Cql/CqlToElmTests/ElmToolkitServiceScope.cs diff --git a/Cql/CoreTests/PrimitiveTests.cs b/Cql/CoreTests/PrimitiveTests.cs index 4b6abaca8..ba9b46904 100644 --- a/Cql/CoreTests/PrimitiveTests.cs +++ b/Cql/CoreTests/PrimitiveTests.cs @@ -12,7 +12,7 @@ namespace CoreTests { using DateTimePrecision = Hl7.Cql.Iso8601.DateTimePrecision; using Expression = System.Linq.Expressions.Expression; - + [TestClass] [TestCategory("UnitTest")] public class PrimitiveTests @@ -3408,9 +3408,10 @@ public void Aggregate_Query_Test() Assert.That.DoesNotThrow(() => { - new ElmApi(loggerFactory) + new ElmToolkit(loggerFactory) + .AsFluent() .AddElmLibraries(librarySet) - .Compile(); + .ProcessElmToAssemblies(); }); } diff --git a/Cql/CqlSdkPrototype/Cql/CqlToElmConversion.cs b/Cql/CqlSdkPrototype/Cql/CqlToElmConversion.cs new file mode 100644 index 000000000..032edcbaa --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/CqlToElmConversion.cs @@ -0,0 +1,9 @@ +using CqlSdkPrototype.Infrastructure; +using Hl7.Cql.CqlToElm; +using Hl7.Cql.Elm; + +namespace CqlSdkPrototype.Cql; + +public readonly record struct CqlToElmConversion(CqlLibraryString CqlLibraryString, Library? ElmLibrary = null) { + internal LibraryBuilder? ElmLibraryBuilder { get; init; } +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs b/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs index 51677b7a7..9f8e37af5 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs @@ -1,5 +1,4 @@ -using CqlSdkPrototype.Cql.Extensibility; -using CqlSdkPrototype.Cql.Internal; +using CqlSdkPrototype.Cql.Internal; using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; using Hl7.Cql.CqlToElm; @@ -8,55 +7,72 @@ namespace CqlSdkPrototype.Cql; public class CqlToolkit : - ICqlToolkit, - ITestingOnlyServiceProviderAccessor + ICqlFluentToolkit, + IServiceProviderAccessorForTesting { public CqlToolkit( ILoggerFactory? loggerFactory = null, CqlToolkitSettings? settings = null) { settings ??= CqlToolkitSettings.Default; - var processItems = CqlToolkitProcessItems.Empty; + var processItems = CqlToElmConversionDictionary.Empty; var entriesBuilder = processItems.ToBuilder(); var libraryProvider = new CqlToolkitProcessItemsLibraryProvider(entriesBuilder); - _processItems = processItems; + _cqlToElmConversions = processItems; _services = CqlToolkitServices.Create(loggerFactory ?? NullLoggerFactory.Instance, settings, libraryProvider); _settings = settings; + SetSettings(settings); } - #region State + public ICqlFluentToolkit AsFluent() => this; - ServiceProvider ITestingOnlyServiceProviderAccessor.ServiceProvider => _services.ServiceProvider; - - private CqlToolkitProcessItems _processItems; - internal CqlToolkitSettings _settings; + private CqlToElmConversionDictionary _cqlToElmConversions; private CqlToolkitServices _services; + private CqlToolkitSettings _settings; + + ServiceProvider IServiceProviderAccessorForTesting.ServiceProvider => _services.ServiceProvider; + + ILoggerFactory ICqlFluentToolkit.LoggerFactory => _services.LoggerFactory; - private void WithEntries(CqlToolkitProcessItems entries) + public CqlToolkitSettings Settings => _settings; + + public CqlToElmConversionReadOnlyDictionary CqlToElmConversions => _cqlToElmConversions; + + ICqlFluentToolkit ICqlFluentToolkit.ReplaceSettings(Func replace) { - _processItems = entries; - _services.LibraryProvider.ProcessItemsBuilder = entries.ToBuilder(); + SetSettings(replace(Settings)); + return this; } - internal CqlToolkit SetSettings( - CqlToolkitSettings value) + ICqlFluentToolkit ICqlFluentToolkit.AddCqlLibraries(IEnumerable libraries) { - var libraryProvider = _services.LibraryProvider; - _services.ServiceProvider.Dispose(); - _settings = value; - _services = CqlToolkitServices.Create(_services.LoggerFactory, _settings, libraryProvider); + AddCqlLibraries(libraries); return this; } - ILoggerFactory ICqlToolkit.LoggerFactory => _services.LoggerFactory; - CqlToolkitSettings ICqlToolkit.Settings => _settings; - CqlToolkitProcessItemsReadOnly ICqlToolkit.ProcessItems => _processItems; + ICqlFluentToolkit ICqlFluentToolkit.ProcessCqlToElm() + { + ProcessCqlToElm(); + return this; + } - #endregion + private void SetItems( + CqlToElmConversionDictionary conversions) + { + _cqlToElmConversions = conversions; + _services.LibraryProvider.ProcessItemsBuilder = conversions.ToBuilder(); + } - #region Input (CQL Library Strings) + private void SetSettings( + CqlToolkitSettings settings) + { + var libraryProvider = _services.LibraryProvider; + _services.ServiceProvider.Dispose(); + _settings = settings; + _services = CqlToolkitServices.Create(_services.LoggerFactory, Settings, libraryProvider); + } - public CqlToolkit AddCqlLibraries(IEnumerable cqlLibraries) + private void AddCqlLibraries(IEnumerable cqlLibraries) { var logger = _services.Logger; var entriesBuilder = _services.LibraryProvider.ProcessItemsBuilder; @@ -75,31 +91,26 @@ public CqlToolkit AddCqlLibraries(IEnumerable cqlLibraries) var libraryVisitor = CqlToElmConverter.GetLibraryVisitorScoped(scope); var libraryBuilder = cqlToElmConverter.GetBuilder(libraryVisitor, cqlLibrary.Cql); - var entry = new CqlToolkitProcessItem(cqlLibrary) { ElmLibraryBuilder = libraryBuilder }; + var entry = new CqlToElmConversion(cqlLibrary) { ElmLibraryBuilder = libraryBuilder }; entriesBuilder.Add(versionedIdentifier, entry); logger.LogInformation("Adding cql library to translation: {versionedIdentifier}", versionedIdentifier); hasChanged = true; } if (hasChanged) - WithEntries(entries: entriesBuilder.ToImmutable()); - return this; + SetItems(conversions: entriesBuilder.ToImmutable()); } - #endregion - - #region Processing (CQL-to-ELM) - - public CqlToolkit Translate() + private void ProcessCqlToElm() { - CqlToolkitProcessItems.Builder processItemsBuilder = _services.LibraryProvider.ProcessItemsBuilder; + CqlToElmConversionDictionary.Builder processItemsBuilder = _services.LibraryProvider.ProcessItemsBuilder; var logger = _services.Logger; bool atFirst = true; - IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToolkitProcessItem cqlTranslationEntry)> GetLibrariesForProcessing() + IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToElmConversion cqlTranslationEntry)> GetLibrariesForProcessing() { foreach (var (versionedIdentifier, cqlTranslationEntry) in - _processItems.Where(kv => kv.Value.ElmLibrary is null)) + _cqlToElmConversions.Where(kv => kv.Value.ElmLibrary is null)) { if (atFirst) { @@ -112,7 +123,7 @@ public CqlToolkit Translate() } } - LogExceptionMessageAction log = logger.GetLogExceptionMessageAction(_settings.ProcessBatchItemExceptionHandling); + LogExceptionMessageAction log = logger.GetLogExceptionMessageAction(Settings.ProcessBatchItemExceptionHandling); int changedCount = GetLibrariesForProcessing() @@ -122,20 +133,18 @@ public CqlToolkit Translate() var libraryName = outcome.Input.versionedIdentifier; log(outcome.Exception, "Error translating CQL library '{libraryName}' to ELM.", libraryName); }) - .HandleExceptions(_settings.ProcessBatchItemExceptionHandling) + .HandleExceptions(Settings.ProcessBatchItemExceptionHandling) .Count() // We must enumerate all ; if (changedCount > 0) - WithEntries(entries: processItemsBuilder.ToImmutable()); - return this; + SetItems(conversions: processItemsBuilder.ToImmutable()); + return; - void ProcessLibrary(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToolkitProcessItem cqlTranslationEntry) + void ProcessLibrary(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToElmConversion cqlTranslationEntry) { var library = cqlTranslationEntry.ElmLibraryBuilder!.Build(); processItemsBuilder[versionedIdentifier] = cqlTranslationEntry with { ElmLibrary = library }; } } - - #endregion } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs deleted file mode 100644 index 2814048d8..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlApiExtendableExtensions.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace CqlSdkPrototype.Cql.Extensibility; - -public static class CqlApiExtendableExtensions -{ - public static ICqlToolkit AsExtendable(this CqlToolkit self) => self; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs deleted file mode 100644 index df9b7b7bf..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensibility/CqlToolkitProcessItem.cs +++ /dev/null @@ -1,9 +0,0 @@ -using CqlSdkPrototype.Infrastructure; -using Hl7.Cql.CqlToElm; -using Hl7.Cql.Elm; - -namespace CqlSdkPrototype.Cql.Extensibility; - -public readonly record struct CqlToolkitProcessItem(CqlLibraryString CqlLibraryString, Library? ElmLibrary = null) { - internal LibraryBuilder? ElmLibraryBuilder { get; init; } -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs b/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs deleted file mode 100644 index e38409b31..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensibility/ICqlToolkit.cs +++ /dev/null @@ -1,12 +0,0 @@ -using CqlSdkPrototype.Infrastructure; - -namespace CqlSdkPrototype.Cql.Extensibility; - -public interface ICqlToolkit -{ - ILoggerFactory LoggerFactory { get; } - CqlToolkitSettings Settings { get; } - CqlToolkitProcessItemsReadOnly ProcessItems { get; } - CqlToolkit AddCqlLibraries(IEnumerable libraries); - CqlToolkit Translate(); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs index 8e7e93625..d40bd020b 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs @@ -1,45 +1,42 @@ -using CqlSdkPrototype.Cql.Extensibility; -using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; namespace CqlSdkPrototype.Cql.Extensions; public static partial class CqlToolkitExtensions { - public static ICqlToolkit AddCqlLibraryString( - this ICqlToolkit cqlToolkit, + public static ICqlFluentToolkit AddCqlLibraryString( + this ICqlFluentToolkit cqlToolkit, CqlLibraryString cqlLibrary) { return cqlToolkit.AddCqlLibraries([cqlLibrary]); } - public static ICqlToolkit AddCqlLibrariesFromDirectory( - this ICqlToolkit cqlToolkit, + public static ICqlFluentToolkit AddCqlLibrariesFromDirectory( + this ICqlFluentToolkit cqlToolkit, DirectoryInfo directory, EnumerationOptions? options = null, - Func? filePredicate = null) => - cqlToolkit.Return(cqlToolkit => - { - var files = directory.EnumerateFiles("*.cql", options ?? InternalConstants.DefaultEnumerationOptions); - if (filePredicate is not null) files = files.Where(filePredicate); - cqlToolkit.AddCqlLibraryFiles(files); - }); + Func? filePredicate = null) + { + var files = directory.EnumerateFiles("*.cql", options ?? InternalConstants.DefaultEnumerationOptions); + if (filePredicate is not null) files = files.Where(filePredicate); + return cqlToolkit.AddCqlLibraryFiles(files); + } - public static ICqlToolkit AddCqlLibraryFiles( - this ICqlToolkit cqlToolkit, - IEnumerable files) => - cqlToolkit.Return((cqlToolkit, loggerFn) => - { - var logger = loggerFn(); - var cqlLibraries = files - .Select(f => - { - logger.LogInformation("Loading library from file: {file}", f); - var cqlContent = File.ReadAllText(f.FullName); - var cqlLibrary = CqlLibraryString.Parse(cqlContent); - return cqlLibrary; - }); // Log errors + public static ICqlFluentToolkit AddCqlLibraryFiles( + this ICqlFluentToolkit cqlToolkit, + IEnumerable files) + { + var logger = cqlToolkit.CreateLogger(); + var cqlLibraries = files + .Select(f => + { + logger.LogInformation("Loading library from file: {file}", f); + var cqlContent = File.ReadAllText(f.FullName); + var cqlLibrary = CqlLibraryString.Parse(cqlContent); + return cqlLibrary; + }); // Log errors - cqlToolkit.AddCqlLibraries(cqlLibraries); - }); + return cqlToolkit.AddCqlLibraries(cqlLibraries); + } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs index de3d3f9bf..dbfb0c814 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs @@ -1,28 +1,27 @@ -using CqlSdkPrototype.Cql.Extensibility; - -namespace CqlSdkPrototype.Cql.Extensions; +namespace CqlSdkPrototype.Cql.Extensions; public static partial class CqlToolkitExtensions { - public static ICqlToolkit SaveElmFileToDirectory( - this ICqlToolkit cqlToolkit, + public static ICqlFluentToolkit SaveElmFileToDirectory( + this ICqlFluentToolkit cqlToolkit, DirectoryInfo directory, - bool writeIndented = true) => - cqlToolkit.Return((cqlToolkit, loggerFn) => - { - if (!directory.Exists) - directory.Create(); + bool writeIndented = true) + { + if (!directory.Exists) + directory.Create(); - var logger = loggerFn(); + var logger = cqlToolkit.CreateLogger(); + + foreach (var (libraryName, (_, elmLibrary)) in cqlToolkit.CqlToElmConversions) + { + if (elmLibrary == null) + continue; - foreach (var (libraryName, (_, elmLibrary)) in cqlToolkit.ProcessItems) - { - if (elmLibrary == null) - continue; + var fileName = Path.Combine(directory.FullName, $"{libraryName}.json"); + File.WriteAllText(fileName, elmLibrary.SerializeToJson(writeIndented)); + logger.LogInformation("Saved ELM to file: {file}", fileName); + } - var fileName = Path.Combine(directory.FullName, $"{libraryName}.json"); - File.WriteAllText(fileName, elmLibrary.SerializeToJson(writeIndented)); - logger.LogInformation("Saved ELM to file: {file}", fileName); - } - }); + return cqlToolkit; + } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs index cff93f5a0..9f7e8a1d2 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs @@ -1,26 +1,8 @@ -using CqlSdkPrototype.Cql.Extensibility; - -namespace CqlSdkPrototype.Cql.Extensions; +namespace CqlSdkPrototype.Cql.Extensions; public static partial class CqlToolkitExtensions { - private static ICqlToolkit Return(this ICqlToolkit cqlToolkit, Action with) - { - with(cqlToolkit); - return cqlToolkit; - } - - private static ICqlToolkit Return(this ICqlToolkit cqlToolkit, Action> with) - { - with(cqlToolkit, () => cqlToolkit.LoggerFactory.CreateLogger(typeof(CqlToolkitExtensions))); - return cqlToolkit; - } + private static ILogger CreateLogger(this ICqlFluentToolkit cqlToolkit) => + cqlToolkit.LoggerFactory.CreateLogger(typeof(CqlToolkitExtensions)); - public static ICqlToolkit ReplaceSettings(this ICqlToolkit cqlToolkit, Func replace) => - cqlToolkit.Return(cqlToolkit => - { - var toolkit = ((CqlToolkit)cqlToolkit); - var cqlToolkitSettings = replace(toolkit._settings); - toolkit.SetSettings(cqlToolkitSettings); - }); } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs b/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs new file mode 100644 index 000000000..cc4dd569c --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs @@ -0,0 +1,13 @@ +using CqlSdkPrototype.Infrastructure; + +namespace CqlSdkPrototype.Cql; + +public interface ICqlFluentToolkit +{ + ILoggerFactory LoggerFactory { get; } + CqlToolkitSettings Settings { get; } + CqlToElmConversionReadOnlyDictionary CqlToElmConversions { get; } + ICqlFluentToolkit ReplaceSettings(Func replace); + ICqlFluentToolkit AddCqlLibraries(IEnumerable libraries); + ICqlFluentToolkit ProcessCqlToElm(); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs index b78970e04..a21fab6a8 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs @@ -3,10 +3,14 @@ namespace CqlSdkPrototype.Cql.Internal; -internal class CqlToolkitProcessItemsLibraryProvider(CqlToolkitProcessItems.Builder processItemsBuilder) +/// +/// Provides the implementation for which resolves library builders given a library name and version on a . +/// 00 +/// +internal class CqlToolkitProcessItemsLibraryProvider(CqlToElmConversionDictionary.Builder processItemsBuilder) : ILibraryProvider { - public CqlToolkitProcessItems.Builder ProcessItemsBuilder { get; set; } = processItemsBuilder; + public CqlToElmConversionDictionary.Builder ProcessItemsBuilder { get; set; } = processItemsBuilder; public bool TryResolveLibrary( string libraryName, diff --git a/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj b/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj index a6f7ffe03..70b54572a 100644 --- a/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj +++ b/Cql/CqlSdkPrototype/CqlSdkPrototype.csproj @@ -31,4 +31,8 @@ + + + + diff --git a/Cql/CqlSdkPrototype/Elm/ElmApiOptions.cs b/Cql/CqlSdkPrototype/Elm/ElmApiOptions.cs deleted file mode 100644 index c2ede1695..000000000 --- a/Cql/CqlSdkPrototype/Elm/ElmApiOptions.cs +++ /dev/null @@ -1,11 +0,0 @@ -using Hl7.Cql.Abstractions.Exceptions; -using Hl7.Cql.CodeGeneration.NET; - -namespace CqlSdkPrototype.Elm; - -public record ElmApiOptions( - ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, - AssemblyCompilerDebugInformationFormat AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.None) -{ - public static ElmApiOptions Default { get; } = new(); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmApiState.cs b/Cql/CqlSdkPrototype/Elm/ElmApiState.cs index 553d14d1f..da70c39b1 100644 --- a/Cql/CqlSdkPrototype/Elm/ElmApiState.cs +++ b/Cql/CqlSdkPrototype/Elm/ElmApiState.cs @@ -1,5 +1,4 @@ -using CqlSdkPrototype.Elm.Extensibility; -using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Logging.Internal; using Hl7.Cql.Abstractions; using Hl7.Cql.CodeGeneration.NET; @@ -13,28 +12,28 @@ namespace CqlSdkPrototype.Elm; internal readonly record struct ElmApiState( ILoggerFactory LoggerFactory, - ImmutableDictionary Entries, - ElmApiOptions Options, + ImmutableDictionary ElmToAssemblyItems, + ElmToolkitSettings Settings, ServiceProvider ServiceProvider, - ILogger Logger, + ILogger Logger, AssemblyCompiler AssemblyCompiler, LibrarySetCSharpCodeGenerator LibrarySetCSharpCodeGenerator) { public static ElmApiState Create( ILoggerFactory loggerFactory, - ElmApiOptions options) + ElmToolkitSettings options) { - var entries = ElmApiStateEntryDictionary.Empty/*.WithComparers(CqlVersionedLibraryIdentifier.IdentifierOnlyEqualityComparer)*/; + var entries = ElmToAssemblyConversionDictionary.Empty/*.WithComparers(CqlVersionedLibraryIdentifier.IdentifierOnlyEqualityComparer)*/; return new ElmApiState(loggerFactory, entries, null!, null!, null!, null!, null!) { // Must be set through the property initializer, to ensure the services are created - Options = options + Settings = options }; } - private readonly ElmApiOptions _options = Options; + private readonly ElmToolkitSettings _options = Settings; - public ElmApiOptions Options + public ElmToolkitSettings Settings { get => _options; init @@ -50,7 +49,7 @@ public ElmApiOptions Options services.AddExternalLogging(LoggerFactory!); AddCqlCodeGenerationServices(services); ServiceProvider = services.BuildServiceProvider(validateScopes:true); - Logger = ServiceProvider.GetLogger(); + Logger = ServiceProvider.GetLogger(); AssemblyCompiler = ServiceProvider.GetRequiredService(); LibrarySetCSharpCodeGenerator = ServiceProvider.GetRequiredService(); } diff --git a/Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiStateEntry.cs b/Cql/CqlSdkPrototype/Elm/ElmToAssemblyConversion.cs similarity index 61% rename from Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiStateEntry.cs rename to Cql/CqlSdkPrototype/Elm/ElmToAssemblyConversion.cs index 53c85fa6a..7cd741b96 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiStateEntry.cs +++ b/Cql/CqlSdkPrototype/Elm/ElmToAssemblyConversion.cs @@ -1,6 +1,6 @@ using Hl7.Cql.Elm; -namespace CqlSdkPrototype.Elm.Extensibility; +namespace CqlSdkPrototype.Elm; -public readonly record struct ElmApiStateEntry +public readonly record struct ElmToAssemblyConversion (Library ElmLibrary, string? CSharpSourceCode = null, byte[]? AssemblyBinary = null, byte[]? DebugSymbolsBinary = null); \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmApi.cs b/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs similarity index 77% rename from Cql/CqlSdkPrototype/Elm/ElmApi.cs rename to Cql/CqlSdkPrototype/Elm/ElmToolkit.cs index 143a5b07c..fc64e960c 100644 --- a/Cql/CqlSdkPrototype/Elm/ElmApi.cs +++ b/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs @@ -1,5 +1,4 @@ -using CqlSdkPrototype.Elm.Extensibility; -using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; using Hl7.Cql.Abstractions.Exceptions; using Hl7.Cql.CodeGeneration.NET; @@ -9,48 +8,65 @@ namespace CqlSdkPrototype.Elm; -public class ElmApi : - IElmApiExtendable +public class ElmToolkit : + IElmFluentToolkit, + IServiceProviderAccessorForTesting { - public ElmApi( + public ElmToolkit( ILoggerFactory? loggerFactory = null, - ElmApiOptions? options = null) : this(ElmApiState.Create(loggerFactory ?? NullLoggerFactory.Instance, options ?? ElmApiOptions.Default)) { } + ElmToolkitSettings? options = null) : this(ElmApiState.Create(loggerFactory ?? NullLoggerFactory.Instance, options ?? ElmToolkitSettings.Default)) { } - internal ElmApi(ElmApiState state) => _state = state; // Might make this public later. Used for testing now. + public IElmFluentToolkit AsFluent() => this; - #region State + internal ElmToolkit(ElmApiState state) => _state = state; // Might make this public later. Used for testing now. private ElmApiState _state; - ElmApiOptions IElmApiExtendable.Options => _state.Options; - IReadOnlyDictionary IElmApiExtendable.Entries => _state.Entries; + public ElmToolkitSettings Settings => _state.Settings; - private ElmApi WithEntries( - ElmApiStateEntryDictionary entries) + public ElmToAssemblyConversionReadOnlyDictionary ElmToAssemblyConversions => _state.ElmToAssemblyItems; + + public ILoggerFactory LoggerFactory => _state.LoggerFactory; + + ElmToolkit IElmFluentToolkit.ElmToolkit => this; + + ServiceProvider IServiceProviderAccessorForTesting.ServiceProvider => _state.ServiceProvider; + + IElmFluentToolkit IElmFluentToolkit.ReplaceSettings(Func replace) { - _state = _state with { Entries = entries }; + SetSettings(replace(_state.Settings)); return this; } - public ElmApi WithOptions( - Func replaceOptions) + IElmFluentToolkit IElmFluentToolkit.AddElmLibraries(IEnumerable libraries) { - var newOptions = replaceOptions(_state.Options); - if (!ReferenceEquals(_state.Options, newOptions)) - _state = _state with { Options = newOptions }; + AddElmLibraries(libraries); return this; } - TResult IElmApiExtendable.UseLogger(Func, TResult> action) => action(this, _state.Logger); - ILoggerFactory IElmApiExtendable.LoggerFactory => _state.LoggerFactory; + IElmFluentToolkit IElmFluentToolkit.ProcessElmToAssemblies() + { + ProcessElmToAssemblies(); + return this; + } - #endregion - #region Input (ELM Libraries) + private void SetEntries( + ElmToAssemblyConversionDictionary conversions) + { + _state = _state with { ElmToAssemblyItems = conversions }; + } + + private void SetSettings( + ElmToolkitSettings settings) + { + if (!ReferenceEquals(_state.Settings, settings)) + _state = _state with { Settings = settings }; + } - public ElmApi AddElmLibraries(IEnumerable libraries) + private void AddElmLibraries(IEnumerable libraries) { - var entries = _state.Entries.ToBuilder(); + var entries = _state.ElmToAssemblyItems.ToBuilder(); var hasChanged = false; foreach (var library in libraries) { @@ -63,32 +79,26 @@ public ElmApi AddElmLibraries(IEnumerable libraries) continue; } - var libraryCompilation = new ElmApiStateEntry(library); + var libraryCompilation = new ElmToAssemblyConversion(library); entries.Add(versionedIdentifier, libraryCompilation); _state.Logger.LogInformation("Adding library to compiler: {versionedIdentifier}", versionedIdentifier); hasChanged = true; } - return hasChanged - ? WithEntries(entries: entries.ToImmutable()) - : this; + if (hasChanged) + SetEntries(conversions: entries.ToImmutable()); } - #endregion - - #region Processing - - public ElmApi Compile() + private void ProcessElmToAssemblies() { - var entries = _state.Entries; - if (entries.Values.All(predicate: lc => lc is { AssemblyBinary: not null })) - return this; + var entries = _state.ElmToAssemblyItems; + if (entries.Values.All(predicate: lc => lc is { AssemblyBinary: not null })) return; using var servicesScope = _state.CreateScopedState(); var logger = _state.Logger; logger.LogInformation(message: "Compiling ELM into C# and .NET Binaries"); - var exceptionHandling = _state.Options.ProcessBatchItemExceptionHandling; - var debugInformationFormat = _state.Options.AssemblyCompilerDebugInformationFormat; + var exceptionHandling = _state.Settings.ProcessBatchItemExceptionHandling; + var debugInformationFormat = _state.Settings.AssemblyCompilerDebugInformationFormat; AssemblyCompiler assemblyCompiler = _state.AssemblyCompiler; LibrarySetCSharpCodeGenerator cSharpCodeProcessor = _state.LibrarySetCSharpCodeGenerator; LibrarySetExpressionBuilder librarySetExpressionBuilderScoped = servicesScope.LibrarySetExpressionBuilder; @@ -109,13 +119,14 @@ public ElmApi Compile() var entriesBuilder = entries.ToBuilder(); var hasChanged = UpdateStateEntries(assemblyDatas, entriesBuilder, logger); - return hasChanged ? WithEntries(entries: entriesBuilder.ToImmutable()) : this; + if (hasChanged) + SetEntries(conversions: entriesBuilder.ToImmutable()); } private static bool UpdateStateEntries( IEnumerable<(Library library, AssemblyDataWithSourceCode assemblyDataWithSourceCode)> assemblyDatas, - ElmApiStateEntryDictionary.Builder entriesBuilder, - ILogger logger) + ElmToAssemblyConversionDictionary.Builder entriesBuilder, + ILogger logger) { bool hasChanged = false; foreach (var (library, (assemblyBinary, sourceCodePerName, debugSymbols)) in assemblyDatas) @@ -149,7 +160,7 @@ private static bool UpdateStateEntries( LibrarySet librarySet, IEnumerable<(Library library, string cSharp)> cSharps, AssemblyCompilerDebugInformationFormat debugInformationFormat, - ILogger logger, + ILogger logger, LogExceptionMessageAction log, ProcessBatchItemExceptionHandling exceptionHandling) { @@ -177,7 +188,7 @@ private static bool UpdateStateEntries( LibrarySetCSharpCodeGenerator cSharpCodeProcessor, LibrarySet librarySet, DefinitionDictionary librarySetDefinitions, - ILogger logger, + ILogger logger, LogExceptionMessageAction log, ProcessBatchItemExceptionHandling exceptionHandling) { @@ -202,7 +213,7 @@ private static bool UpdateStateEntries( private static DefinitionDictionary BuildLibrarySetDefinitions( LibrarySetExpressionBuilder librarySetExpressionBuilderScoped, LibrarySet librarySet, - ILogger logger, + ILogger logger, LogExceptionMessageAction log, ProcessBatchItemExceptionHandling exceptionHandling) { @@ -228,6 +239,4 @@ private static DefinitionDictionary BuildLibrarySetDefinitions return librarySetDefinitions; } - - #endregion } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs b/Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs new file mode 100644 index 000000000..e387c2807 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs @@ -0,0 +1,13 @@ +using Hl7.Cql.Abstractions.Exceptions; +using Hl7.Cql.CodeGeneration.NET; + +namespace CqlSdkPrototype.Elm; + +public record ElmToolkitSettings( + ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, + AssemblyCompilerDebugInformationFormat AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.None) +{ + public static ElmToolkitSettings Default { get; } = new(); + public ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling { get; init; } = ProcessBatchItemExceptionHandling; + public AssemblyCompilerDebugInformationFormat AssemblyCompilerDebugInformationFormat { get; init; } = AssemblyCompilerDebugInformationFormat; +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiExtendableExtensions.cs b/Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiExtendableExtensions.cs deleted file mode 100644 index 2487a6c02..000000000 --- a/Cql/CqlSdkPrototype/Elm/Extensibility/ElmApiExtendableExtensions.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace CqlSdkPrototype.Elm.Extensibility; - -public static class ElmApiExtendableExtensions -{ - public static IElmApiExtendable AsExtendable(this ElmApi self) => self; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensibility/IElmApiExtendable.cs b/Cql/CqlSdkPrototype/Elm/Extensibility/IElmApiExtendable.cs deleted file mode 100644 index 35fd1f0fd..000000000 --- a/Cql/CqlSdkPrototype/Elm/Extensibility/IElmApiExtendable.cs +++ /dev/null @@ -1,16 +0,0 @@ -using CqlSdkPrototype.Infrastructure; -using Hl7.Cql.Elm; - -namespace CqlSdkPrototype.Elm.Extensibility; - -public interface IElmApiExtendable - where TElmApi : IElmApiExtendable -{ - ILoggerFactory LoggerFactory { get; } - ElmApiOptions Options { get; } - IReadOnlyDictionary Entries { get; } - TElmApi WithOptions(Func replaceOptions); - TElmApi AddElmLibraries(IEnumerable libraries); - TElmApi Compile(); - TResult UseLogger(Func, TResult> action); // Useful for extensions methods -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs deleted file mode 100644 index c156df208..000000000 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Adding.cs +++ /dev/null @@ -1,103 +0,0 @@ -using CqlSdkPrototype.Cql.Extensibility; -using CqlSdkPrototype.Elm.Extensibility; -using CqlSdkPrototype.Infrastructure; -using CqlSdkPrototype.Internal; -using Hl7.Cql.Elm; - -#pragma warning disable RS0027 - -namespace CqlSdkPrototype.Elm.Extensions; - -public static partial class ElmApiExtensions -{ - public static TElmApi AddElmFromCqlApi( - this TElmApi elmApi, - TCqlApi cqlApi) - where TElmApi : IElmApiExtendable - where TCqlApi : ICqlToolkit - { - return elmApi.AddElmLibraries( - from entry in cqlApi.ProcessItems - let elmLibrary = entry.Value.ElmLibrary - where elmLibrary is not null - select elmLibrary); - } - - public static TElmApi AddElmFile( - this TElmApi elmApi, - DirectoryInfo directory, - CqlVersionedLibraryIdentifier versionedLibraryIdentifier) - where TElmApi : IElmApiExtendable - { - FileInfo file = new(Path.Combine(directory.FullName, $"{versionedLibraryIdentifier}.json")); - if (file.Exists) - return elmApi.AddElmFile(file); - - if (versionedLibraryIdentifier.Version is null) - throw new FileNotFoundException($"Could not find file '{file.FullName}'."); - - return elmApi.UseLogger((elmApi, logger) => - { - logger.LogWarning("Could not load library from file with name and version, trying without version: {file}", file.FullName); - file = new FileInfo(Path.Combine(directory.FullName, $"{versionedLibraryIdentifier with { Version = null }}.json")); - return elmApi.AddElmFile(file); - }); - } - - public static TElmApi AddElmFiles( - this TElmApi elmApi, - IEnumerable files) - where TElmApi : IElmApiExtendable - { - var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmApiExtensions)); - var libraries = files - .Select(f => - { - logger.LogInformation("Loading library from file: {file}", f); - var library = Library.LoadFromJson(f); - return library; - }); // Log errors - return elmApi.AddElmLibraries(libraries); - } - - public static TElmApi AddElmFilesFromDirectory( - this TElmApi elmApi, - DirectoryInfo directory, - EnumerationOptions? options = null, - Func? filePredicate = null) - where TElmApi : IElmApiExtendable - { - var files = directory.EnumerateFiles("*.json", options ?? InternalConstants.DefaultEnumerationOptions); - if (filePredicate is not null) files = files.Where(filePredicate); - return elmApi.AddElmFiles(files); - } - - public static TElmApi AddElmFileWithDependencies( - this TElmApi elmApi, - FileInfo file, - EnumerationOptions? options) - where TElmApi : IElmApiExtendable - { - // TODO - return elmApi; - } - - public static TElmApi AddElmFileWithDependencies( - this TElmApi elmApi, - DirectoryInfo directory, - CqlVersionedLibraryIdentifier fileName, - EnumerationOptions? options) - where TElmApi : IElmApiExtendable - { - // TODO - return elmApi; - } - - public static TElmApi AddElmFile( - this TElmApi elmApi, - FileInfo file) - where TElmApi : IElmApiExtendable - { - return elmApi.AddElmFiles([file]); - } -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs deleted file mode 100644 index 64a15bfc0..000000000 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Cql.cs +++ /dev/null @@ -1,17 +0,0 @@ -using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Runtime.Extensions; - -namespace CqlSdkPrototype.Elm.Extensions; - -public static partial class ElmApiExtensions -{ - public static ElmApi Compile( - this CqlToolkit cqlToolkit) - { - return cqlToolkit - .Translate() - .CreateElmApi() - .Compile(); - } - -} diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.cs deleted file mode 100644 index fc12f32df..000000000 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace CqlSdkPrototype.Elm.Extensions; - -public static partial class ElmApiExtensions -{ - // This file is intentionally left blank - since it's the parent file for nested ElmApiExtensions.* files -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs new file mode 100644 index 000000000..5b18c395a --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs @@ -0,0 +1,85 @@ +using System.Runtime.CompilerServices; +using CqlSdkPrototype.Cql; +using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Internal; +using Hl7.Cql.Elm; + +#pragma warning disable RS0027 + +namespace CqlSdkPrototype.Elm.Extensions; + +public static partial class ElmToolkitExtensions +{ + public static IElmFluentToolkit AddElmFrom( + this IElmFluentToolkit elmToolkit, + ICqlFluentToolkit cqlToolkit) => + elmToolkit.AddElmLibraries( + from entry in cqlToolkit.CqlToElmConversions + let elmLibrary = entry.Value.ElmLibrary + where elmLibrary is not null + select elmLibrary); + + public static IElmFluentToolkit AddElmFile( + this IElmFluentToolkit elmToolkit, + DirectoryInfo directory, + CqlVersionedLibraryIdentifier versionedLibraryIdentifier) + { + FileInfo file = new(Path.Combine(directory.FullName, $"{versionedLibraryIdentifier}.json")); + if (file.Exists) + { + return elmToolkit.AddElmFile(file); + } + + if (versionedLibraryIdentifier.Version is null) + throw new FileNotFoundException($"Could not find file '{file.FullName}'."); + + var logger = elmToolkit.CreateLogger(); + logger.LogWarning("Could not load library from file with name and version, trying without version: {file}", file.FullName); + file = new FileInfo(Path.Combine(directory.FullName, $"{versionedLibraryIdentifier with { Version = null }}.json")); + return elmToolkit.AddElmFile(file); + } + + public static IElmFluentToolkit AddElmFiles( + this IElmFluentToolkit elmToolkit, + IEnumerable files) + { + var logger = elmToolkit.CreateLogger(); + var libraries = files + .Select(f => + { + logger.LogInformation("Loading library from file: {file}", f); + var library = Library.LoadFromJson(f); + return library; + }); // Log errors + return elmToolkit.AddElmLibraries(libraries); + } + + public static IElmFluentToolkit AddElmFilesFromDirectory( + this IElmFluentToolkit elmToolkit, + DirectoryInfo directory, + EnumerationOptions? options = null, + Func? filePredicate = null) + { + var files = directory.EnumerateFiles("*.json", options ?? InternalConstants.DefaultEnumerationOptions); + if (filePredicate is not null) files = files.Where(filePredicate); + return elmToolkit.AddElmFiles(files); + } + + public static IElmFluentToolkit AddElmFileWithDependencies( + this IElmFluentToolkit elmToolkit, + FileInfo file, + EnumerationOptions? options) => + throw new NotImplementedException(); + + public static IElmFluentToolkit AddElmFileWithDependencies( + this IElmFluentToolkit elmToolkit, + DirectoryInfo directory, + CqlVersionedLibraryIdentifier fileName, + EnumerationOptions? options) => + throw new NotImplementedException(); + + public static IElmFluentToolkit AddElmFile( + this IElmFluentToolkit elmToolkit, + FileInfo file) => + elmToolkit.AddElmFiles([file]); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs new file mode 100644 index 000000000..2d40f282e --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs @@ -0,0 +1,14 @@ +using CqlSdkPrototype.Cql; +using CqlSdkPrototype.Runtime.Extensions; + +namespace CqlSdkPrototype.Elm.Extensions; + +public static partial class ElmToolkitExtensions +{ + public static IElmFluentToolkit ProcessCqlToAssemblies( + this ICqlFluentToolkit cqlToolkit) => + cqlToolkit + .ProcessCqlToElm() + .CreateElmApi() + .ProcessElmToAssemblies(); +} diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Saving.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Saving.cs similarity index 74% rename from Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Saving.cs rename to Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Saving.cs index 938044116..f27f5f3b9 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmApiExtensions.Saving.cs +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Saving.cs @@ -1,21 +1,18 @@ -using CqlSdkPrototype.Elm.Extensibility; +namespace CqlSdkPrototype.Elm.Extensions; -namespace CqlSdkPrototype.Elm.Extensions; - -public static partial class ElmApiExtensions +public static partial class ElmToolkitExtensions { - public static TElmApi SaveCSharpFilesToDirectory( - this TElmApi elmApi, + public static IElmFluentToolkit SaveCSharpFilesToDirectory( + this IElmFluentToolkit elmApi, DirectoryInfo directory) - where TElmApi : IElmApiExtendable { if (!directory.Exists) directory.Create(); - var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmApiExtensions)); + var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmToolkitExtensions)); - foreach (var (libraryName, (_, cSharpSourceCode, _, _)) in elmApi.Entries) + foreach (var (libraryName, (_, cSharpSourceCode, _, _)) in elmApi.ElmToAssemblyConversions) { if (cSharpSourceCode is null) continue; @@ -28,17 +25,16 @@ public static TElmApi SaveCSharpFilesToDirectory( return elmApi; } - public static TElmApi SaveAssemblyBinariesToDirectory( - this TElmApi elmApi, + public static IElmFluentToolkit SaveAssemblyBinariesToDirectory( + this IElmFluentToolkit elmApi, DirectoryInfo directory) - where TElmApi : IElmApiExtendable { if (!directory.Exists) directory.Create(); - var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmApiExtensions)); + var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmToolkitExtensions)); - foreach (var (libraryName, (_, _, assemblyBytes, symbolsBytes)) in elmApi.Entries) + foreach (var (libraryName, (_, _, assemblyBytes, symbolsBytes)) in elmApi.ElmToAssemblyConversions) { if (assemblyBytes is null) continue; diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs new file mode 100644 index 000000000..994a40895 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs @@ -0,0 +1,7 @@ +namespace CqlSdkPrototype.Elm.Extensions; + +public static partial class ElmToolkitExtensions +{ + private static ILogger CreateLogger(this IElmFluentToolkit elmToolkit) => + elmToolkit.LoggerFactory.CreateLogger(typeof(ElmToolkitExtensions)); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs b/Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs new file mode 100644 index 000000000..1cf2e1df0 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs @@ -0,0 +1,14 @@ +using Hl7.Cql.Elm; + +namespace CqlSdkPrototype.Elm; + +public interface IElmFluentToolkit +{ + ElmToolkit ElmToolkit { get; } + ILoggerFactory LoggerFactory { get; } + ElmToolkitSettings Settings { get; } + ElmToAssemblyConversionReadOnlyDictionary ElmToAssemblyConversions { get; } + IElmFluentToolkit ReplaceSettings(Func replace); + IElmFluentToolkit AddElmLibraries(IEnumerable libraries); + IElmFluentToolkit ProcessElmToAssemblies(); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/GlobalUsings.cs b/Cql/CqlSdkPrototype/GlobalUsings.cs index 781cbe12c..a7dafbecc 100644 --- a/Cql/CqlSdkPrototype/GlobalUsings.cs +++ b/Cql/CqlSdkPrototype/GlobalUsings.cs @@ -13,6 +13,7 @@ global using Microsoft.Extensions.DependencyInjection.Extensions; global using Microsoft.Extensions.Logging; global using Microsoft.Extensions.Logging.Abstractions; -global using CqlToolkitProcessItems = System.Collections.Immutable.ImmutableDictionary; -global using CqlToolkitProcessItemsReadOnly = System.Collections.Generic.IReadOnlyDictionary; -global using ElmApiStateEntryDictionary = System.Collections.Immutable.ImmutableDictionary; \ No newline at end of file +global using CqlToElmConversionDictionary = System.Collections.Immutable.ImmutableDictionary; +global using CqlToElmConversionReadOnlyDictionary = System.Collections.Generic.IReadOnlyDictionary; +global using ElmToAssemblyConversionDictionary = System.Collections.Immutable.ImmutableDictionary; +global using ElmToAssemblyConversionReadOnlyDictionary = System.Collections.Generic.IReadOnlyDictionary; diff --git a/Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs b/Cql/CqlSdkPrototype/Internal/IServiceProviderAccessorForTesting.cs similarity index 59% rename from Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs rename to Cql/CqlSdkPrototype/Internal/IServiceProviderAccessorForTesting.cs index 23ee2a059..7fe7a6ffe 100644 --- a/Cql/CqlSdkPrototype/Internal/ITestingOnlyServiceProviderAccessor.cs +++ b/Cql/CqlSdkPrototype/Internal/IServiceProviderAccessorForTesting.cs @@ -1,6 +1,6 @@ namespace CqlSdkPrototype.Internal; -internal interface ITestingOnlyServiceProviderAccessor +internal interface IServiceProviderAccessorForTesting { ServiceProvider ServiceProvider { get; } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Program.cs b/Cql/CqlSdkPrototype/Program.cs index 995d7aa95..5aa88edc1 100644 --- a/Cql/CqlSdkPrototype/Program.cs +++ b/Cql/CqlSdkPrototype/Program.cs @@ -1,7 +1,6 @@ using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Cql.Extensibility; using CqlSdkPrototype.Cql.Extensions; -using CqlSdkPrototype.Elm.Extensibility; +using CqlSdkPrototype.Elm; using CqlSdkPrototype.Elm.Extensions; using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; @@ -44,7 +43,7 @@ static void Main(string[] args) private static void InvokeCqlFromExamplesFolder( ILogger logger, - CqlToolkit cqlToolkit) + ICqlFluentToolkit cqlToolkit) { // INTRO: // This example demonstrates how to load CQL libraries from a directory and invoke a library declarations directly. @@ -95,7 +94,7 @@ library AdditionLib version '0.0.0' private static void VerboseExample( ILogger logger, - CqlToolkit cqlToolkit, + ICqlFluentToolkit cqlToolkit, string librarySetName, bool shouldBuildCqlToElm = false) { @@ -123,14 +122,14 @@ private static void VerboseExample( or "NCQATerminology" or "NCQAStatus"*/ ) - .Translate() + .ProcessCqlToElm() .SaveElmFileToDirectory(dirs.ElmOutDirectory) ; } var elmApi = cqlToolkit.CreateElmApi(o => o with { AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.Embedded }) .AddElmFilesFromDirectory(dirs.ElmInDirectory) - .Compile() + .ProcessElmToAssemblies() .SaveCSharpFilesToDirectory(dirs.CSharpOutDirectory) .SaveAssemblyBinariesToDirectory(dirs.AssembliesOutDirectory); @@ -200,22 +199,14 @@ private static void VerboseExample( file static class X { - public static Maybe<(CqlVersionedLibraryIdentifier id, string cSharpSourceCode)> - TryGetFirstCSharpFileLines( - this TElmApi elmApi) - where TElmApi : IElmApiExtendable - { - return elmApi.Entries - .TryGetFirst(kv => kv.Value.CSharpSourceCode is not null) - .TryReturn(kv => (kv.Key, kv.Value.CSharpSourceCode!)); - } - - public static Maybe<(CqlVersionedLibraryIdentifier id, string elmJson)> TryGetFirstElmFileLines( - this TCqlApi cqlApi) - where TCqlApi : ICqlToolkit - { - return cqlApi.ProcessItems - .TryGetFirst(kv => kv.Value.ElmLibrary is not null) - .TryReturn(kv => (kv.Key, kv.Value.ElmLibrary!.SerializeToJson()!)); - } + public static Maybe<(CqlVersionedLibraryIdentifier id, string cSharpSourceCode)> TryGetFirstCSharpFileLines(this IElmFluentToolkit elmApi) => + elmApi.ElmToAssemblyConversions + .TryGetFirst(kv => kv.Value.CSharpSourceCode is not null) + .TryReturn(kv => (kv.Key, kv.Value.CSharpSourceCode!)); + + public static Maybe<(CqlVersionedLibraryIdentifier id, string elmJson)> TryGetFirstElmFileLines( + this ICqlFluentToolkit cqlApi) => + cqlApi.CqlToElmConversions + .TryGetFirst(kv => kv.Value.ElmLibrary is not null) + .TryReturn(kv => (kv.Key, kv.Value.ElmLibrary!.SerializeToJson()!)); } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs index f3a7ae6fd..ae4c6dec4 100644 --- a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs +++ b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs @@ -1,5 +1,4 @@ using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Cql.Extensibility; using CqlSdkPrototype.Elm; using CqlSdkPrototype.Elm.Extensions; @@ -7,25 +6,25 @@ namespace CqlSdkPrototype.Runtime.Extensions; public static partial class RuntimeApiExtensions { - public static ElmApi CreateElmApi( - this ICqlToolkit cqlToolkit, - Func? configureOptions = null) + public static IElmFluentToolkit CreateElmApi( + this ICqlFluentToolkit cqlToolkit, + Func? configureOptions = null) { - var elmApiOptions = new ElmApiOptions(ProcessBatchItemExceptionHandling: cqlToolkit.Settings.ProcessBatchItemExceptionHandling); + var elmApiOptions = new ElmToolkitSettings(ProcessBatchItemExceptionHandling: cqlToolkit.Settings.ProcessBatchItemExceptionHandling); if (configureOptions is not null) elmApiOptions = configureOptions(elmApiOptions); - var elmApi = new ElmApi(cqlToolkit.LoggerFactory, elmApiOptions).AddElmFromCqlApi(cqlToolkit); + var elmApi = new ElmToolkit(cqlToolkit.LoggerFactory, elmApiOptions).AddElmFrom(cqlToolkit); return elmApi; } #pragma warning disable RS0026 public static RuntimeScope CreateRuntimeScope( #pragma warning restore RS0026 - this ICqlToolkit cqlToolkit, - Func? configureElmOptions = null, + this ICqlFluentToolkit cqlToolkit, + Func? configureElmOptions = null, Func? configureRuntimeOptions = null) { return cqlToolkit - .Translate() + .ProcessCqlToElm() .CreateElmApi(configureElmOptions) .CreateRuntimeScope(configureRuntimeOptions); } diff --git a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs index ade8a37e4..8e7a0d686 100644 --- a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs +++ b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs @@ -1,20 +1,19 @@ -using CqlSdkPrototype.Elm.Extensibility; +using CqlSdkPrototype.Elm; using Hl7.Cql.CodeGeneration.NET; namespace CqlSdkPrototype.Runtime.Extensions; public static partial class RuntimeApiExtensions { - public static RuntimeApi CreateRuntimeApi( - this TElmApi elmApi, + public static RuntimeApi CreateRuntimeApi( + this IElmFluentToolkit elmApi, Func? configureOptions = null) - where TElmApi : IElmApiExtendable { var runtimeApiOptions = RuntimeApiOptions.Default; if (configureOptions is not null) runtimeApiOptions = configureOptions(runtimeApiOptions); var assemblyDatas = - from entry in elmApi.Entries + from entry in elmApi.ElmToAssemblyConversions let assembly = entry.Value.AssemblyBinary where assembly is not null let debugSymbols = entry.Value.DebugSymbolsBinary @@ -26,14 +25,13 @@ where assembly is not null } #pragma warning disable RS0026 - public static RuntimeScope CreateRuntimeScope( + public static RuntimeScope CreateRuntimeScope( #pragma warning restore RS0026 - this TElmApi elmApi, + this IElmFluentToolkit elmApi, Func? configureOptions = null) - where TElmApi : IElmApiExtendable { return elmApi - .Compile() + .ProcessElmToAssemblies() .CreateRuntimeApi(configureOptions) .CreateRuntimeScope(); } diff --git a/Cql/CqlSdkPrototype/Runtime/Internal/ElmApiInternalExtensions.cs b/Cql/CqlSdkPrototype/Runtime/Internal/ElmApiInternalExtensions.cs deleted file mode 100644 index 24ede699c..000000000 --- a/Cql/CqlSdkPrototype/Runtime/Internal/ElmApiInternalExtensions.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace CqlSdkPrototype.Runtime.Internal; - -internal static class RuntimeApiInternalExtensions -{ - internal static IRuntimeApiInternal AsInternal(this IRuntimeApiInternal self) - where TRuntimeApi : IRuntimeApiInternal => self; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Runtime/Internal/IElmApiInternal.cs b/Cql/CqlSdkPrototype/Runtime/Internal/IElmApiInternal.cs deleted file mode 100644 index bb737b15a..000000000 --- a/Cql/CqlSdkPrototype/Runtime/Internal/IElmApiInternal.cs +++ /dev/null @@ -1,9 +0,0 @@ -using CqlSdkPrototype.Runtime.Extensibility; - -namespace CqlSdkPrototype.Runtime.Internal; - -internal interface IRuntimeApiInternal : IRuntimeApiExtendable - where TRuntimeApi : IRuntimeApiExtendable -{ - RuntimeApiState State { get; } -} \ No newline at end of file diff --git a/Cql/CqlToElmTests/(tests)/AdditionTest.cs b/Cql/CqlToElmTests/(tests)/AdditionTest.cs index 2f408cad7..2a4a9733c 100644 --- a/Cql/CqlToElmTests/(tests)/AdditionTest.cs +++ b/Cql/CqlToElmTests/(tests)/AdditionTest.cs @@ -15,7 +15,7 @@ public class AdditionTest : Base [TestMethod] public void Add_Integer_to_Integer() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Integer_to_Integer version '1.0.0' @@ -63,7 +63,7 @@ library Add_Integer_to_Integer version '1.0.0' Assert.AreEqual("2", rhs.value); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(int?)); @@ -74,7 +74,7 @@ library Add_Integer_to_Integer version '1.0.0' [TestMethod] public void Add_Long_to_Long() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Long_to_Long version '1.0.0' @@ -122,7 +122,7 @@ library Add_Long_to_Long version '1.0.0' Assert.AreEqual("2", rhs.value); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -133,7 +133,7 @@ library Add_Long_to_Long version '1.0.0' [TestMethod] public void Add_Decimal_to_Decimal() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Decimal_to_Decimal version '1.0.0' @@ -181,7 +181,7 @@ library Add_Decimal_to_Decimal version '1.0.0' Assert.AreEqual("2.0", rhs.value); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -192,7 +192,7 @@ library Add_Decimal_to_Decimal version '1.0.0' [TestMethod] public void Add_Quantity_to_Quantity() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Decimal_to_Quantity version '1.0.0' @@ -242,7 +242,7 @@ library Add_Decimal_to_Quantity version '1.0.0' Assert.AreEqual(UCUMUnits.Default, rhs.unit); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -260,7 +260,7 @@ library Add_Decimal_to_Quantity version '1.0.0' [TestMethod] public void Add_Integer_to_Long() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Integer_to_Long version '1.0.0' @@ -307,7 +307,7 @@ library Add_Integer_to_Long version '1.0.0' Assert.AreEqual("2", rhs.value); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -318,7 +318,7 @@ library Add_Integer_to_Long version '1.0.0' [TestMethod] public void Add_Integer_to_Decimal() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Integer_to_Decimal version '1.0.0' @@ -365,7 +365,7 @@ library Add_Integer_to_Decimal version '1.0.0' Assert.AreEqual("2.0", rhs.value); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -376,7 +376,7 @@ library Add_Integer_to_Decimal version '1.0.0' [TestMethod] public void Add_Integer_to_Quantity() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Integer_to_Quantity version '1.0.0' @@ -424,7 +424,7 @@ library Add_Integer_to_Quantity version '1.0.0' Assert.AreEqual(UCUMUnits.Default, rhs.unit); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -438,7 +438,7 @@ library Add_Integer_to_Quantity version '1.0.0' [TestMethod] public void Add_Long_to_Decimal() { - var library = CreateCqlApi().MakeLibrary( + var library = CreateCqlFluentToolkit().MakeLibrary( """ library Add_Long_to_Decimal version '1.0.0' @@ -485,7 +485,7 @@ library Add_Long_to_Decimal version '1.0.0' Assert.AreEqual("2.0", rhs.value); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -496,7 +496,7 @@ library Add_Long_to_Decimal version '1.0.0' [TestMethod] public void Add_Long_to_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Integer_to_Quantity version '1.0.0' define private Three: 1L + 2.0 '1' @@ -543,7 +543,7 @@ library Add_Integer_to_Quantity version '1.0.0' Assert.AreEqual(UCUMUnits.Default, rhs.unit); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -557,7 +557,7 @@ library Add_Integer_to_Quantity version '1.0.0' [TestMethod] public void Add_Decimal_to_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Decimal_to_Quantity version '1.0.0' define private Three: -1.0 + 2.0 '1' @@ -604,7 +604,7 @@ library Add_Decimal_to_Quantity version '1.0.0' Assert.AreEqual(UCUMUnits.Default, rhs.unit); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -622,7 +622,7 @@ library Add_Decimal_to_Quantity version '1.0.0' [TestMethod] public void Add_Long_to_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Long_to_Integer version '1.0.0' define private Three: 1L + 2 @@ -667,7 +667,7 @@ library Add_Long_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -678,7 +678,7 @@ library Add_Long_to_Integer version '1.0.0' [TestMethod] public void Add_Decimal_to_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Decimal_to_Integer version '1.0.0' define private Three: 5.25 + 2 @@ -723,7 +723,7 @@ library Add_Decimal_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -734,7 +734,7 @@ library Add_Decimal_to_Integer version '1.0.0' [TestMethod] public void Add_Quantity_to_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Decimal_to_Integer version '1.0.0' define private Three: 5.25 '1' + 2 @@ -779,7 +779,7 @@ library Add_Decimal_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -793,7 +793,7 @@ library Add_Decimal_to_Integer version '1.0.0' [TestMethod] public void Add_Decimal_to_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Decimal_to_Long version '1.0.0' define private Three: 5.25 + 2L @@ -838,7 +838,7 @@ library Add_Decimal_to_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -849,7 +849,7 @@ library Add_Decimal_to_Long version '1.0.0' [TestMethod] public void Add_Quantity_to_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Quantity_to_Long version '1.0.0' define private Three: 5.25 '1' + 2L @@ -894,7 +894,7 @@ library Add_Quantity_to_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -908,7 +908,7 @@ library Add_Quantity_to_Long version '1.0.0' [TestMethod] public void Add_Quantity_to_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Quantity_to_Decimal version '1.0.0' define private Three: 5.25 '1' + 2.0 @@ -953,7 +953,7 @@ library Add_Quantity_to_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -971,7 +971,7 @@ library Add_Quantity_to_Decimal version '1.0.0' [TestMethod] public void Add_Null_to_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Null_to_Integer version '1.0.0' define private AddNull: null + 1 @@ -1016,7 +1016,7 @@ library Add_Null_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -1026,7 +1026,7 @@ library Add_Null_to_Integer version '1.0.0' [TestMethod] public void Add_Integer_to_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Null_to_Integer version '1.0.0' define private AddNull: 1 + null @@ -1070,7 +1070,7 @@ library Add_Null_to_Integer version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -1084,7 +1084,7 @@ library Add_Null_to_Integer version '1.0.0' [TestMethod] public void Add_Quantity_to_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Quantity_to_Date version '1.0.0' define private Three: @2023-01-01 + 1 month @@ -1129,7 +1129,7 @@ library Add_Quantity_to_Date version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1144,7 +1144,7 @@ library Add_Quantity_to_Date version '1.0.0' [TestMethod] public void Add_Null_to_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Quantity_to_Date version '1.0.0' define private Three: @2023-01-01 + null @@ -1189,7 +1189,7 @@ library Add_Quantity_to_Date version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1199,7 +1199,7 @@ library Add_Quantity_to_Date version '1.0.0' [TestMethod] public void Add_Quantity_to_DateTime() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Quantity_to_DateTime version '1.0.0' define private Three: @2023-01-01T01:23:45.300+01:30 + 1 month @@ -1244,7 +1244,7 @@ library Add_Quantity_to_DateTime version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1265,7 +1265,7 @@ library Add_Quantity_to_DateTime version '1.0.0' [TestMethod] public void Add_Null_to_DateTime() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Null_To_DateTime version '1.0.0' define private Three: @2023-01-01T01:23:45.300+01:30 + null @@ -1310,7 +1310,7 @@ library Add_Null_To_DateTime version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1320,7 +1320,7 @@ library Add_Null_To_DateTime version '1.0.0' [TestMethod] public void Add_Quantity_to_Time() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DefaultConverter version '1.0.0' define private Three: @T01:23:45 + 1 hour @@ -1365,7 +1365,7 @@ library DefaultConverter version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1381,7 +1381,7 @@ library DefaultConverter version '1.0.0' [TestMethod] public void Add_Null_to_Time() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Null_To_DateTime version '1.0.0' define private Three: @T01:23:45 + null @@ -1426,7 +1426,7 @@ library Add_Null_To_DateTime version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1436,21 +1436,21 @@ library Add_Null_To_DateTime version '1.0.0' [TestMethod] public void Add_DateTypes_to_Quantity() { - CreateCqlApi() + CreateCqlFluentToolkit() .MakeLibrary(""" library Add_Date_to_Quantity version '1.0.0' define private Test: 1 month + @2023-01-01 """, "Could not resolve call to operator Add*"); - CreateCqlApi() + CreateCqlFluentToolkit() .MakeLibrary(""" library Add_Time_to_Quantity version '1.0.0' define private Test: 1 month + @T01:23:45 """, "Could not resolve call to operator Add*"); - CreateCqlApi() + CreateCqlFluentToolkit() .MakeLibrary(""" library Add_DateTime_to_Quantity version '1.0.0' @@ -1463,7 +1463,7 @@ library Add_DateTime_to_Quantity version '1.0.0' [TestMethod] public void Add_Three_Decimals() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Decimal_to_Decimal version '1.0.0' define private Three: 1.0 + (2.0 + 3.0) @@ -1508,7 +1508,7 @@ library Add_Decimal_to_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -1519,7 +1519,7 @@ library Add_Decimal_to_Decimal version '1.0.0' [TestMethod] public void Add_Quantity_to_Two_Decimals() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Decimal_to_Decimal version '1.0.0' define private Three: 1.0 '1' + (2.0 + 3.0) @@ -1564,7 +1564,7 @@ library Add_Decimal_to_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1578,7 +1578,7 @@ library Add_Decimal_to_Decimal version '1.0.0' [TestMethod] public void Add_Strings_With_Plus() { - var library = CreateCqlApi().MakeLibraryFromExpression("'hello' + 'world'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("'hello' + 'world'"); library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } } diff --git a/Cql/CqlToElmTests/(tests)/AgeTest.cs b/Cql/CqlToElmTests/(tests)/AgeTest.cs index cf6765cb8..0546534ca 100644 --- a/Cql/CqlToElmTests/(tests)/AgeTest.cs +++ b/Cql/CqlToElmTests/(tests)/AgeTest.cs @@ -8,7 +8,7 @@ public class AgeTest : Base { private void TestCalculateAgeAt(string type, DateTimePrecision unit) { - var lib = CreateCqlApi().MakeLibrary($""" + var lib = CreateCqlFluentToolkit().MakeLibrary($""" library AgeTest version '1.0.0' using FHIR version '4.0.1' @@ -23,7 +23,7 @@ define function CalculateAgeAt(birthDate {type}, at {type}): private void TestAgeAt(string type, DateTimePrecision unit) { - var lib = CreateCqlApi().MakeLibrary($""" + var lib = CreateCqlFluentToolkit().MakeLibrary($""" library AgeTest version '1.0.0' using FHIR version '4.0.1' @@ -38,7 +38,7 @@ define function AgeAt(at {type}): private void TestCalculateAge(string type, DateTimePrecision unit) { - var lib = CreateCqlApi().MakeLibrary($""" + var lib = CreateCqlFluentToolkit().MakeLibrary($""" library AgeTest version '1.0.0' using FHIR version '4.0.1' @@ -53,7 +53,7 @@ define function CalculateAge(birthDate {type}): private void TestAge(string type, DateTimePrecision unit) { - var lib = CreateCqlApi().MakeLibrary($""" + var lib = CreateCqlFluentToolkit().MakeLibrary($""" library AgeTest version '1.0.0' using FHIR version '4.0.1' diff --git a/Cql/CqlToElmTests/(tests)/AndTest.cs b/Cql/CqlToElmTests/(tests)/AndTest.cs index da65ff237..714b5e81a 100644 --- a/Cql/CqlToElmTests/(tests)/AndTest.cs +++ b/Cql/CqlToElmTests/(tests)/AndTest.cs @@ -9,7 +9,7 @@ public class AndTest : Base [TestMethod] public void True_And_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private True_And_False: true and false @@ -54,7 +54,7 @@ library AndTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(and); + var lambda = CreateElmFluentToolkit().Lambda(and); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -65,7 +65,7 @@ library AndTest version '1.0.0' [TestMethod] public void True_And_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private True_And_True: true and true @@ -110,7 +110,7 @@ library AndTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(and); + var lambda = CreateElmFluentToolkit().Lambda(and); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -121,7 +121,7 @@ library AndTest version '1.0.0' [TestMethod] public void False_And_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private False_And_False: false and false @@ -166,7 +166,7 @@ library AndTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(and); + var lambda = CreateElmFluentToolkit().Lambda(and); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -177,7 +177,7 @@ library AndTest version '1.0.0' [TestMethod] public void True_And_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private True_And_Null: true and null @@ -222,7 +222,7 @@ library AndTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(and); + var lambda = CreateElmFluentToolkit().Lambda(and); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -232,7 +232,7 @@ library AndTest version '1.0.0' [TestMethod] public void Null_And_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private Null_And_False: null and false @@ -277,7 +277,7 @@ library AndTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(and); + var lambda = CreateElmFluentToolkit().Lambda(and); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -288,7 +288,7 @@ library AndTest version '1.0.0' [TestMethod] public void Null_And_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private Null_And_Null: null and null @@ -333,7 +333,7 @@ library AndTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(and); + var lambda = CreateElmFluentToolkit().Lambda(and); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -343,7 +343,7 @@ library AndTest version '1.0.0' [TestMethod] public void True_And_1() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library AndTest version '1.0.0' define private True_And_1: true and 1 diff --git a/Cql/CqlToElmTests/(tests)/AsTest.cs b/Cql/CqlToElmTests/(tests)/AsTest.cs index a0a100d9b..0793fc672 100644 --- a/Cql/CqlToElmTests/(tests)/AsTest.cs +++ b/Cql/CqlToElmTests/(tests)/AsTest.cs @@ -10,7 +10,7 @@ public class AsTest : Base [TestMethod] public void Integer_As_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AsTest version '1.0.0' define private Integer_As_Decimal: 1 as System.Decimal @@ -21,7 +21,7 @@ library AsTest version '1.0.0' [TestMethod] public void ValueSet_As_Vocabulary() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AsTest version '1.0.0' valueset "vs": 'http://xyz.com' @@ -41,7 +41,7 @@ library AsTest version '1.0.0' var nts = (NamedTypeSpecifier)@as.asTypeSpecifier; Assert.AreEqual($"{{{SystemUri}}}Vocabulary", nts.name?.Name); - var delegates = CreateElmApi().ProcessLibrary(library).CompileAll(); + var delegates = CreateElmFluentToolkit().ProcessLibrary(library).CompileAll(); var dg = delegates["AsTest-1.0.0", "ValueSet_As_Vocabulary"]; var ctx = FhirCqlContext.ForBundle(delegates: delegates); var result = dg.DynamicInvoke(ctx); @@ -53,7 +53,7 @@ library AsTest version '1.0.0' [TestMethod] public void Null_As_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library AsTest version '1.0.0' define private Null_As_Decimal: null as System.Decimal @@ -95,7 +95,7 @@ private static As AssertAsTypes(Library library, string literalTypeName, string private void AssertAsNull(As @as) { - var lambda = CreateElmApi().Lambda(@as); + var lambda = CreateElmFluentToolkit().Lambda(@as); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -105,7 +105,7 @@ private void AssertAsNull(As @as) [TestMethod] public void DecimalLiteral_CastAs_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("cast (1.0 as System.Any) as System.Decimal"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("cast (1.0 as System.Any) as System.Decimal"); var castAs = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); castAs.strict.Should().BeTrue(); @@ -116,7 +116,7 @@ public void DecimalLiteral_CastAs_Decimal() [TestMethod] public void BooleanLiteral_CastAs_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("cast (true as System.Any) as System.Decimal"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("cast (true as System.Any) as System.Decimal"); var castAs = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); castAs.strict.Should().BeTrue(); @@ -127,7 +127,7 @@ public void BooleanLiteral_CastAs_Decimal() [TestMethod] public void FhirId_As_FhirString() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library AsTest version '1.0.0' using FHIR version '4.0.1' @@ -135,7 +135,7 @@ library AsTest version '1.0.0' define private function f(id FHIR.id): id as FHIR.string """); lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); - var lambdas = CreateElmApi().ProcessLibrary(lib); + var lambdas = CreateElmFluentToolkit().ProcessLibrary(lib); var delegates = lambdas.CompileAll(); var dg = delegates[lib.GetVersionedIdentifier(), "f", typeof(Hl7.Fhir.Model.Id)]; var ctx = FhirCqlContext.ForBundle(); @@ -148,7 +148,7 @@ define private function f(id FHIR.id): id as FHIR.string public void Choice_As() { // from MATGlobalCommonFunctionsFHIR4.cql function "Normalize Interval" - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library AsTest version '1.0.0' using FHIR version '4.0.1' @@ -159,7 +159,7 @@ context Patient define private function f(choice Choice): choice as FHIR.Range """); - _ = CreateElmApi().ProcessLibrary(lib); + _ = CreateElmFluentToolkit().ProcessLibrary(lib); } } } diff --git a/Cql/CqlToElmTests/(tests)/BetweenTest.cs b/Cql/CqlToElmTests/(tests)/BetweenTest.cs index 3fb48ee06..c52afbe1a 100644 --- a/Cql/CqlToElmTests/(tests)/BetweenTest.cs +++ b/Cql/CqlToElmTests/(tests)/BetweenTest.cs @@ -8,7 +8,7 @@ public class BetweenTest : Base [TestMethod] public void BetweenIntTrue() { - var lib = CreateCqlApi().MakeLibraryFromExpression("4 between 2 and 6"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("4 between 2 and 6"); var and = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); and.operand.Should().HaveCount(2); var ge = and.operand[0].Should().BeOfType().Subject; @@ -20,7 +20,7 @@ public void BetweenIntTrue() [TestMethod] public void ProperBetweenIntFalse() { - var lib = CreateCqlApi().MakeLibraryFromExpression("2 properly between 2 and 6"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("2 properly between 2 and 6"); var and = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); and.operand.Should().HaveCount(2); var ge = and.operand[0].Should().BeOfType().Subject; diff --git a/Cql/CqlToElmTests/(tests)/BooleanTest.cs b/Cql/CqlToElmTests/(tests)/BooleanTest.cs index 4821898b4..bc1c924f6 100644 --- a/Cql/CqlToElmTests/(tests)/BooleanTest.cs +++ b/Cql/CqlToElmTests/(tests)/BooleanTest.cs @@ -9,7 +9,7 @@ public class BooleanTest : Base [TestMethod] public void True_Is_True() { - var library = CreateCqlApi().MakeLibraryFromExpression("true is true"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("true is true"); var isTrue = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); isTrue.operand.Should().BeLiteralBool(true); AssertResult(isTrue, true); @@ -18,7 +18,7 @@ public void True_Is_True() [TestMethod] public void True_Is_False() { - var library = CreateCqlApi().MakeLibraryFromExpression("true is false"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("true is false"); var isFalse = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); isFalse.operand.Should().BeLiteralBool(true); AssertResult(isFalse, false); @@ -27,7 +27,7 @@ public void True_Is_False() [TestMethod] public void True_Is_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("true is null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("true is null"); var isNull = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var @as = isNull.operand.Should().BeOfType().Subject; @as.Should().HaveType(SystemTypes.AnyType); @@ -38,7 +38,7 @@ public void True_Is_Null() [TestMethod] public void Null_Is_True() { - var library = CreateCqlApi().MakeLibraryFromExpression("null is true"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null is true"); var isTrue = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var @as = isTrue.operand.Should().BeOfType().Subject; @as.operand.Should().BeNullLiteral(); @@ -48,7 +48,7 @@ public void Null_Is_True() [TestMethod] public void Null_Is_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("null is null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null is null"); var isNull = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); isNull.operand.Should().BeNullLiteral(); AssertResult(isNull, true); @@ -57,7 +57,7 @@ public void Null_Is_Null() [TestMethod] public void True_Is_Not_False() { - var library = CreateCqlApi().MakeLibraryFromExpression("true is not false"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("true is not false"); var isNot = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var isFalse = isNot.operand.Should().BeOfType().Subject; isFalse.operand.Should().BeLiteralBool(true); @@ -67,7 +67,7 @@ public void True_Is_Not_False() [TestMethod] public void True_Is_Not_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("true is not null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("true is not null"); var isNot = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var isNull = isNot.operand.Should().BeOfType().Subject; AssertResult(isNot, true); @@ -76,7 +76,7 @@ public void True_Is_Not_Null() [TestMethod] public void Null_Is_Not_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("null is not null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null is not null"); var isNot = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var isNull = isNot.operand.Should().BeOfType().Subject; isNull.operand.Should().BeNullLiteral(); @@ -86,7 +86,7 @@ public void Null_Is_Not_Null() [TestMethod] public void Null_Is_Not_False() { - var library = CreateCqlApi().MakeLibraryFromExpression("null is not false"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null is not false"); var isNot = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var isFalse = isNot.operand.Should().BeOfType().Subject; var @as = isFalse.operand.Should().BeOfType().Subject; @@ -97,7 +97,7 @@ public void Null_Is_Not_False() [TestMethod] public void TrueList_Is_True() { - var library = CreateCqlApi(EnableListDemotion:true ).MakeLibraryFromExpression("{true} is true"); + var library = CreateCqlFluentToolkit(EnableListDemotion:true ).MakeLibraryFromExpression("{true} is true"); var isTrue = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var singleton = isTrue.operand.Should().BeOfType().Subject; singleton.resultTypeSpecifier.Should().Be(SystemTypes.BooleanType); diff --git a/Cql/CqlToElmTests/(tests)/CaseTest.cs b/Cql/CqlToElmTests/(tests)/CaseTest.cs index b07c6e494..4a2be7070 100644 --- a/Cql/CqlToElmTests/(tests)/CaseTest.cs +++ b/Cql/CqlToElmTests/(tests)/CaseTest.cs @@ -7,7 +7,7 @@ public class CaseTest : Base { private Library createLibraryForExpression(string expression) { - return CreateCqlApi().MakeLibrary($""" + return CreateCqlFluentToolkit().MakeLibrary($""" library CaseTest version '1.0.0' define private predicate: {expression} diff --git a/Cql/CqlToElmTests/(tests)/CoercionTest.cs b/Cql/CqlToElmTests/(tests)/CoercionTest.cs index c0c8c50f2..7cdb23485 100644 --- a/Cql/CqlToElmTests/(tests)/CoercionTest.cs +++ b/Cql/CqlToElmTests/(tests)/CoercionTest.cs @@ -10,14 +10,14 @@ namespace Hl7.Cql.CqlToElm.Test [TestClass] public class CoercionTest : Base { - private static CoercionProvider CoercionProvider => CreateCqlApi( + private static CoercionProvider CoercionProvider => CreateCqlFluentToolkit( EnableListPromotion:true, EnableListDemotion:true, EnableIntervalPromotion:true, EnableIntervalDemotion:true) .GetCoercionProvider(); - private static ElmFactory ElmFactory => CreateCqlApi().GetElmFactory(); + private static ElmFactory ElmFactory => CreateCqlFluentToolkit().GetElmFactory(); private static Null Null() => new Null().WithResultType(SystemTypes.AnyType); private static Null Null(TypeSpecifier type) => new Null().WithResultType(type); diff --git a/Cql/CqlToElmTests/(tests)/ComponentFromTest.cs b/Cql/CqlToElmTests/(tests)/ComponentFromTest.cs index 05f9bab67..61a60bb12 100644 --- a/Cql/CqlToElmTests/(tests)/ComponentFromTest.cs +++ b/Cql/CqlToElmTests/(tests)/ComponentFromTest.cs @@ -9,7 +9,7 @@ public class ComponentFromTest : Base [TestMethod] public void YearFromDateTime() { - var lib = CreateCqlApi().MakeLibraryFromExpression("year from DateTime(2003, 10, 29, 20, 50, 33, 955)"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("year from DateTime(2003, 10, 29, 20, 50, 33, 955)"); var cf = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(cf, lib); Assert.AreEqual(2003, result); @@ -17,7 +17,7 @@ public void YearFromDateTime() [TestMethod] public void YearFromDate() { - var lib = CreateCqlApi().MakeLibraryFromExpression("year from Date(2003, 10, 29)"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("year from Date(2003, 10, 29)"); var cf = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(cf, lib); Assert.AreEqual(2003, result); @@ -25,7 +25,7 @@ public void YearFromDate() [TestMethod] public void HourFromTime() { - var lib = CreateCqlApi().MakeLibraryFromExpression("hour from Time(20, 40, 20, 123)"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("hour from Time(20, 40, 20, 123)"); var cf = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(cf, lib); Assert.AreEqual(20, result); @@ -34,7 +34,7 @@ public void HourFromTime() [TestMethod] public void TimezoneOffsetFromDateTime() { - var lib = CreateCqlApi().MakeLibraryFromExpression("timezoneoffset from DateTime(2003, 10, 29, 20, 50, 33, 955, 5.5)"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("timezoneoffset from DateTime(2003, 10, 29, 20, 50, 33, 955, 5.5)"); var cf = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(cf, lib); Assert.AreEqual(5.5m, result); @@ -42,7 +42,7 @@ public void TimezoneOffsetFromDateTime() [TestMethod] public void DateFromDateTime() { - var lib = CreateCqlApi().MakeLibraryFromExpression("date from DateTime(2003, 10, 29, 20, 50, 33, 955, 5.5)"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("date from DateTime(2003, 10, 29, 20, 50, 33, 955, 5.5)"); var cf = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(cf, lib); Assert.IsNotNull(result); diff --git a/Cql/CqlToElmTests/(tests)/ConcatenationTest.cs b/Cql/CqlToElmTests/(tests)/ConcatenationTest.cs index 59588ca78..d17fbe4c9 100644 --- a/Cql/CqlToElmTests/(tests)/ConcatenationTest.cs +++ b/Cql/CqlToElmTests/(tests)/ConcatenationTest.cs @@ -10,7 +10,7 @@ public class ConcatenationTest : Base [TestMethod] public void Add_String_To_String() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Integer_to_Integer version '1.0.0' define private Three: 'hello' & 'world' @@ -57,7 +57,7 @@ library Add_Integer_to_Integer version '1.0.0' Assert.AreEqual("world", rhs.value); } - var lambda = CreateElmApi().Lambda(concatenate); + var lambda = CreateElmFluentToolkit().Lambda(concatenate); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(string)); @@ -71,7 +71,7 @@ library Add_Integer_to_Integer version '1.0.0' [TestMethod] public void Add_Three_Strings() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Add_Integer_to_Integer version '1.0.0' define private Three: 'hello' & (' ' & 'world') @@ -116,7 +116,7 @@ library Add_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}String", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(concatenate); + var lambda = CreateElmFluentToolkit().Lambda(concatenate); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(string)); diff --git a/Cql/CqlToElmTests/(tests)/ConcurrentWithTest.cs b/Cql/CqlToElmTests/(tests)/ConcurrentWithTest.cs index 95dfd212e..b955c7ee0 100644 --- a/Cql/CqlToElmTests/(tests)/ConcurrentWithTest.cs +++ b/Cql/CqlToElmTests/(tests)/ConcurrentWithTest.cs @@ -17,7 +17,7 @@ public class ConcurrentWithTest : Base [TestMethod] public void Starts_Days_Or_Before_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_Before_Start: Interval[@2023-01-01, @2023-03-31] starts same day or before start Interval[@2023-04-01, @2023-04-30] @@ -45,7 +45,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Starts_Days_Or_Before_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_Before_End: Interval[@2023-01-01, @2023-03-31] starts same day or before end Interval[@2023-04-01, @2023-04-30] @@ -73,7 +73,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Starts_Days_Or_After_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_After_Start: Interval[@2023-01-01, @2023-03-31] starts same day or after start Interval[@2023-04-01, @2023-04-30] @@ -101,7 +101,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Starts_Days_Or_After_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_After_End: Interval[@2023-01-01, @2023-03-31] starts same day or after end Interval[@2023-04-01, @2023-04-30] @@ -129,7 +129,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Months_Or_Before_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_Before_Start: Interval[@2023-01, @2023-03] ends same month or before start Interval[@2023-04, @2023-06] @@ -157,7 +157,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Months_Or_Before_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_Before_End: Interval[@2023-01, @2023-03] ends same month or before end Interval[@2023-04, @2023-06] @@ -185,7 +185,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Months_Or_After_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_After_Start: Interval[@2023-01, @2023-03] ends same month or after start Interval[@2023-04, @2023-06] @@ -213,7 +213,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Months_Or_After_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_After_End: Interval[@2023-01, @2023-03] ends same month or after end Interval[@2023-04, @2023-06] @@ -245,7 +245,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Or_Before_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_Before_Start: Interval[@2023-01-01, @2023-03-31] same day or before start Interval[@2023-04-01, @2023-04-30] @@ -273,7 +273,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Or_Before_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Days_Or_Before_End: Interval[@2023-01-01, @2023-03-31] same day or before end Interval[@2023-04-01, @2023-04-30] @@ -301,7 +301,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Or_After_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Days_Or_After_Start: Interval[@2023-01-01, @2023-03-31] same day or after start Interval[@2023-04-01, @2023-04-30] @@ -329,7 +329,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Or_After_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Days_Or_After_End: Interval[@2023-01-01, @2023-03-31] same day or after end Interval[@2023-04-01, @2023-04-30] @@ -357,7 +357,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Months_Or_Before_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Months_Or_Before_Start: Interval[@2023-01, @2023-03] same month or before start Interval[@2023-04, @2023-06] @@ -385,7 +385,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Months_Or_Before_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Months_Or_Before_End: Interval[@2023-01, @2023-03] same month or before end Interval[@2023-04, @2023-06] @@ -413,7 +413,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Months_Or_After_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_After_Start: Interval[@2023-01, @2023-03] same month or after start Interval[@2023-04, @2023-06] @@ -441,7 +441,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Months_Or_After_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Months_Or_After_End: Interval[@2023-01, @2023-03] same month or after end Interval[@2023-04, @2023-06] @@ -473,7 +473,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Starts_Days_Or_Before() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_Before: Interval[@2023-01-01, @2023-03-31] starts same day or before Interval[@2023-04-01, @2023-04-30] @@ -501,7 +501,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Days_Or_Before() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Days_Or_Before: Interval[@2023-01-01, @2023-03-31] ends same day or before Interval[@2023-04-01, @2023-04-30] @@ -529,7 +529,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Starts_Days_Or_After() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_After_Start: Interval[@2023-01-01, @2023-03-31] starts same day or after Interval[@2023-04-01, @2023-04-30] @@ -558,7 +558,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Months_Or_Before() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_Before: Interval[@2023-01, @2023-03] ends same month or before Interval[@2023-04, @2023-06] @@ -587,7 +587,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Ends_Months_Or_After() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Ends_Months_Or_After: Interval[@2023-01, @2023-03] ends same month or after Interval[@2023-04, @2023-06] @@ -620,7 +620,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Or_Before() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Starts_Days_Or_Before: Interval[@2023-01-01, @2023-03-31] same day or before Interval[@2023-04-01, @2023-04-30] @@ -648,7 +648,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Or_After() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Days_Or_After: Interval[@2023-01-01, @2023-03-31] same day or after Interval[@2023-04-01, @2023-04-30] @@ -677,7 +677,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Days_Same() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Days_Or_After: Interval[@2023-01-01, @2023-03-31] same day as Interval[@2023-04-01, @2023-04-30] diff --git a/Cql/CqlToElmTests/(tests)/ContextDefTest.cs b/Cql/CqlToElmTests/(tests)/ContextDefTest.cs index 8fd1c21d3..0e5dd9d52 100644 --- a/Cql/CqlToElmTests/(tests)/ContextDefTest.cs +++ b/Cql/CqlToElmTests/(tests)/ContextDefTest.cs @@ -9,7 +9,7 @@ public class ContextDefTest : Base [TestMethod] public void Context_Of_Known_Model() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library UsingTest version '1.0.0' using FHIR @@ -38,7 +38,7 @@ context Observation [TestMethod] public void Context_Of_Unknown_Model() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library UsingTest version '1.0.0' using FHIR @@ -50,7 +50,7 @@ context FHIRX.Patient [TestMethod] public void Context_UnknonwType_on_Known_Model() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library UsingTest version '1.0.0' using FHIR @@ -62,7 +62,7 @@ context FHIR.doesnotexist [TestMethod] public void Context_Not_A_Model() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library UsingTest version '1.0.0' define derp: false @@ -74,7 +74,7 @@ context derp.herp [TestMethod] public void Context_Of_Unknown_Type() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library UsingTest version '1.0.0' using FHIR @@ -86,7 +86,7 @@ context ObservationX [TestMethod] public void Context_Unfiltered_Retrieve_Null_Context() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library UsingTest version '1.0.0' using FHIR version '4.0.1' diff --git a/Cql/CqlToElmTests/(tests)/ConvertTest.cs b/Cql/CqlToElmTests/(tests)/ConvertTest.cs index 1ef2ca43b..56f948301 100644 --- a/Cql/CqlToElmTests/(tests)/ConvertTest.cs +++ b/Cql/CqlToElmTests/(tests)/ConvertTest.cs @@ -9,14 +9,14 @@ public class ConvertTest : Base [TestMethod] public void Convert_Integer_to_String() { - var library = CreateCqlApi().MakeLibraryFromExpression("convert 5 to String"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("convert 5 to String"); library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } [TestMethod] public void Convert_String_to_DateTime() { - var library = CreateCqlApi().MakeLibraryFromExpression("ToDateTime('2014-01-01T12:05:05.955-01:15')"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("ToDateTime('2014-01-01T12:05:05.955-01:15')"); var toDateTime = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(toDateTime, library); var dt = result.Should().BeOfType().Subject; @@ -28,7 +28,7 @@ public void Convert_String_to_DateTime() [TestMethod] public void Convert_Code_To_Concept() { - var library = CreateCqlApi().MakeLibraryFromExpression("ToConcept(Code { code: '8480-6' })"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("ToConcept(Code { code: '8480-6' })"); var toConcept = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(toConcept, library); } @@ -36,7 +36,7 @@ public void Convert_Code_To_Concept() [TestMethod] public void Convert_Quantity_To_Weeks() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Test version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs b/Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs index db22cd150..cc97ee9c1 100644 --- a/Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs +++ b/Cql/CqlToElmTests/(tests)/CrossLibraryTest.cs @@ -8,7 +8,7 @@ public class CrossLibraryTest : Base [TestMethod] public void ExpressionRef_Across_Library() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var foo = cqlApi.MakeLibrary(""" library Foo version '1.0.0' @@ -30,7 +30,7 @@ include Foo version '1.0.0' called foo [TestMethod] public void ExpressionRef_Across_Library_NotFound() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var foo = cqlApi.MakeLibrary(""" library Foo version '1.0.0' @@ -51,7 +51,7 @@ include Foo version '1.0.0' called foo [TestMethod] public void FunctionRef_Across_Library() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var foo = cqlApi.MakeLibrary(""" library Foo version '1.0.0' @@ -73,7 +73,7 @@ include Foo version '1.0.0' called foo [TestMethod] public void FunctionRef_Across_Library_NotFound() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var foo = cqlApi.MakeLibrary(""" library Foo version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/DifferenceTest.cs b/Cql/CqlToElmTests/(tests)/DifferenceTest.cs index 304dd43bb..04cce66e6 100644 --- a/Cql/CqlToElmTests/(tests)/DifferenceTest.cs +++ b/Cql/CqlToElmTests/(tests)/DifferenceTest.cs @@ -8,7 +8,7 @@ public class DifferenceTest : Base [TestMethod] public void Difference_Between_Days() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Days: difference in days between @2023-01-01 and @2023-01-31 @@ -30,7 +30,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Months() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Months: difference in months between @2023-01-01 and @2023-02-01 @@ -52,7 +52,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Weeks() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Months: difference in weeks between @2023-01-01 and @2023-01-08 @@ -76,7 +76,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Years() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Months: difference in years between @2023-01-01 and @2024-02-01 @@ -98,7 +98,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Date_In_Hours() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Date_In_Hours: difference in hours between @2023-01-01 and @2024-02-01 @@ -107,7 +107,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Hours() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Hours: difference in hours between @T12:00:00 and @T20:00:00 @@ -130,7 +130,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Minutes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Minutes: difference in minutes between @T12:00:00 and @T20:00:00 @@ -153,7 +153,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Seconds() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Minutes: difference in seconds between @T12:00:00 and @T12:00:30 @@ -176,7 +176,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Milliseconds() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Milliseconds: difference in milliseconds between @T12:00:00.100 and @T12:00:00.300 @@ -198,7 +198,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Time_In_Days() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Milliseconds: difference in days between @T12:00:00.100 and @T12:00:00.300 @@ -207,7 +207,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_DateTimes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_DateTimes_Years: difference in years between @2023-01-01T12:00:00.100 and @2024-01-01T12:00:00.100 @@ -224,7 +224,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Months: difference in weeks between null and @2023-01-08 @@ -245,7 +245,7 @@ library DifferenceTest version '1.0.0' [TestMethod] public void Difference_Between_Null_Null() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library DifferenceTest version '1.0.0' define private Difference_Between_Months: difference in weeks between null and null diff --git a/Cql/CqlToElmTests/(tests)/DistinctTest.cs b/Cql/CqlToElmTests/(tests)/DistinctTest.cs index 204cf63bd..926deab3f 100644 --- a/Cql/CqlToElmTests/(tests)/DistinctTest.cs +++ b/Cql/CqlToElmTests/(tests)/DistinctTest.cs @@ -8,7 +8,7 @@ public class DistinctTest : Base [TestMethod] public void DistinctABCABC() { - var library = CreateCqlApi().MakeLibraryFromExpression("distinct { 'a', 'b', 'c', 'a', 'b', 'c'}"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("distinct { 'a', 'b', 'c', 'a', 'b', 'c'}"); var distinct = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run?>(distinct, library)!.ToArray(); result.Length.Should().Be(3); diff --git a/Cql/CqlToElmTests/(tests)/DivisionTest.cs b/Cql/CqlToElmTests/(tests)/DivisionTest.cs index 9fb9c8666..265a36bbc 100644 --- a/Cql/CqlToElmTests/(tests)/DivisionTest.cs +++ b/Cql/CqlToElmTests/(tests)/DivisionTest.cs @@ -13,7 +13,7 @@ public class DivisionTest : Base [TestMethod] public void Divide_Integer_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Integer_by_Integer version '1.0.0' define private Divide_Integer_by_Integer: 2 / 4 @@ -58,7 +58,7 @@ library Divide_Integer_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -69,7 +69,7 @@ library Divide_Integer_by_Integer version '1.0.0' [TestMethod] public void Divide_Integer_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Integer_by_Long version '1.0.0' define private Divide_Integer_by_Long: 2 / 3L @@ -114,7 +114,7 @@ library Divide_Integer_by_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -125,7 +125,7 @@ library Divide_Integer_by_Long version '1.0.0' [TestMethod] public void Divide_Integer_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Integer_by_Decimal version '1.0.0' define private Divide_Integer_by_Decimal: 2 / 3.0 @@ -170,7 +170,7 @@ library Divide_Integer_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -181,7 +181,7 @@ library Divide_Integer_by_Decimal version '1.0.0' [TestMethod] public void Divide_Integer_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Integer_by_Quantity version '1.0.0' define private Divide_Integer_by_Quantity: 10 / 2.0 '1' @@ -226,7 +226,7 @@ library Divide_Integer_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -241,7 +241,7 @@ library Divide_Integer_by_Quantity version '1.0.0' [TestMethod] public void Divide_Integer_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Integer_by_Null version '1.0.0' define private Divide_Integer_by_Null: 1 / null @@ -285,7 +285,7 @@ library Divide_Integer_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -295,7 +295,7 @@ library Divide_Integer_by_Null version '1.0.0' [TestMethod] public void Divide_Null_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Null_by_Integer version '1.0.0' define private Divide_Null_by_Integer: null / 1 @@ -339,7 +339,7 @@ library Divide_Null_by_Integer version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -353,7 +353,7 @@ library Divide_Null_by_Integer version '1.0.0' [TestMethod] public void Divide_Long_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Long_by_Integer version '1.0.0' define private Divide_Long_by_Integer: 10L / 2 @@ -398,7 +398,7 @@ library Divide_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -409,7 +409,7 @@ library Divide_Long_by_Integer version '1.0.0' [TestMethod] public void Divide_Long_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Long_by_Long version '1.0.0' define private Divide_Long_by_Long: 100L / 10L @@ -454,7 +454,7 @@ library Divide_Long_by_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -465,7 +465,7 @@ library Divide_Long_by_Long version '1.0.0' [TestMethod] public void Divide_Long_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Long_by_Decimal version '1.0.0' define private Divide_Long_by_Decimal: -3L / 2.0 @@ -510,7 +510,7 @@ library Divide_Long_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -521,7 +521,7 @@ library Divide_Long_by_Decimal version '1.0.0' [TestMethod] public void Divide_Long_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Long_by_Quantity version '1.0.0' define private Divide_Long_by_Quantity: 20L / 5.0 '1' @@ -566,7 +566,7 @@ library Divide_Long_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -580,7 +580,7 @@ library Divide_Long_by_Quantity version '1.0.0' [TestMethod] public void Divide_Long_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Long_by_Null version '1.0.0' define private Divide_Long_by_Null: 1L / null @@ -624,7 +624,7 @@ library Divide_Long_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -634,7 +634,7 @@ library Divide_Long_by_Null version '1.0.0' [TestMethod] public void Divide_Null_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Null_by_Long version '1.0.0' define private Divide_Null_by_Long: null / 1L @@ -678,7 +678,7 @@ library Divide_Null_by_Long version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -692,7 +692,7 @@ library Divide_Null_by_Long version '1.0.0' [TestMethod] public void Divide_Decimal_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Decimal_by_Integer version '1.0.0' define private Divide_Decimal_by_Integer: 0.0 / 3 @@ -737,7 +737,7 @@ library Divide_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -748,7 +748,7 @@ library Divide_Decimal_by_Integer version '1.0.0' [TestMethod] public void Divide_Decimal_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DefaultConverter version '1.0.0' define private DefaultConverter: 5.0 / 5L @@ -793,7 +793,7 @@ library DefaultConverter version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -804,7 +804,7 @@ library DefaultConverter version '1.0.0' [TestMethod] public void Divide_Decimal_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Decimal_by_Decimal version '1.0.0' define private Divide_Decimal_by_Decimal: -10.0 / 10.0 @@ -849,7 +849,7 @@ library Divide_Decimal_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -860,7 +860,7 @@ library Divide_Decimal_by_Decimal version '1.0.0' [TestMethod] public void Divide_Decimal_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Decimal_by_Quantity version '1.0.0' define private Divide_Decimal_by_Quantity: 3.0 / 2.0 '1' @@ -905,7 +905,7 @@ library Divide_Decimal_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -919,7 +919,7 @@ library Divide_Decimal_by_Quantity version '1.0.0' [TestMethod] public void Divide_Decimal_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Decimal_by_Null version '1.0.0' define private Divide_Decimal_by_Null: 1.0 / null @@ -963,7 +963,7 @@ library Divide_Decimal_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -973,7 +973,7 @@ library Divide_Decimal_by_Null version '1.0.0' [TestMethod] public void Divide_Null_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Null_by_Decimal version '1.0.0' define private Divide_Null_by_Decimal: null / 1.0 @@ -1017,7 +1017,7 @@ library Divide_Null_by_Decimal version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -1031,7 +1031,7 @@ library Divide_Null_by_Decimal version '1.0.0' [TestMethod] public void Divide_Quantity_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Quantity_by_Quantity version '1.0.0' define private Divide_Quantity_by_Quantity: 3.0 '1' / 2.0 '1' @@ -1076,7 +1076,7 @@ library Divide_Quantity_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1090,7 +1090,7 @@ library Divide_Quantity_by_Quantity version '1.0.0' [TestMethod] public void Divide_Quantity_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Quantity_by_Null version '1.0.0' define private Divide_Quantity_by_Null: 3.0 '1' / null @@ -1135,7 +1135,7 @@ library Divide_Quantity_by_Null version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1145,7 +1145,7 @@ library Divide_Quantity_by_Null version '1.0.0' [TestMethod] public void Divide_Null_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Divide_Null_by_Quantity version '1.0.0' define private Divide_Null_by_Quantity: null / 3.0 '1' @@ -1190,7 +1190,7 @@ library Divide_Null_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); diff --git a/Cql/CqlToElmTests/(tests)/DurationTest.cs b/Cql/CqlToElmTests/(tests)/DurationTest.cs index e2bea68b0..5a831587b 100644 --- a/Cql/CqlToElmTests/(tests)/DurationTest.cs +++ b/Cql/CqlToElmTests/(tests)/DurationTest.cs @@ -8,7 +8,7 @@ public class DurationTest : Base [TestMethod] public void Duration_Between_Days() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Days: duration in days between @2023-01-01 and @2023-01-31 @@ -32,7 +32,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Days_Shortform() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Days: days between @2023-01-01 and @2023-01-31 @@ -55,7 +55,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Months() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Months: duration in months between @2023-01-01 and @2023-02-01 @@ -77,7 +77,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Weeks() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Months: duration in weeks between @2023-01-01 and @2023-01-08 @@ -101,7 +101,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Years() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Months: duration in years between @2023-01-01 and @2024-02-01 @@ -123,7 +123,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Date_In_Hours() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Date_In_Hours: duration in hours between @2023-01-01 and @2024-02-01 @@ -132,7 +132,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Hours() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Hours: duration in hours between @T12:00:00 and @T20:00:00 @@ -155,7 +155,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Minutes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Minutes: duration in minutes between @T12:00:00 and @T20:00:00 @@ -178,7 +178,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Seconds() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Minutes: duration in seconds between @T12:00:00 and @T12:00:30 @@ -201,7 +201,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Milliseconds() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Milliseconds: duration in milliseconds between @T12:00:00.100 and @T12:00:00.300 @@ -223,7 +223,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Time_In_Days() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Milliseconds: duration in days between @T12:00:00.100 and @T12:00:00.300 @@ -232,7 +232,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_DateTimes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_DateTimes_Years: duration in years between @2023-01-01T12:00:00.100 and @2024-01-01T12:00:00.100 @@ -249,7 +249,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Months: duration in weeks between null and @2023-01-08 @@ -270,7 +270,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_Between_Null_Null() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define private Duration_Between_Months: duration in weeks between null and null @@ -279,7 +279,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_In_Days() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define d: duration in days of Interval[@2023-01-01, @2023-01-31] @@ -312,7 +312,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_In_Days_MixedPrecision() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define d: duration in days of Interval[@2023-01-01, @2023-01-31T12:30:45] @@ -330,7 +330,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Duration_In_Days_NonInterval() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define d: duration in days of 1 @@ -340,7 +340,7 @@ library DurationTest version '1.0.0' [TestMethod] public void Difference_In_Years() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library DurationTest version '1.0.0' define d: difference in years of Interval[@2023-01-01, @2023-01-31] diff --git a/Cql/CqlToElmTests/(tests)/EqualsTest.cs b/Cql/CqlToElmTests/(tests)/EqualsTest.cs index 4a4065210..e99bb2ea0 100644 --- a/Cql/CqlToElmTests/(tests)/EqualsTest.cs +++ b/Cql/CqlToElmTests/(tests)/EqualsTest.cs @@ -11,7 +11,7 @@ public class EqualsTest : Base [TestMethod] public void Integer_Equals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_Equals_Integer: 1 = 1 @@ -56,7 +56,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -67,7 +67,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_Equals_Integer_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_Equals_Integer_False: 1 = 2 @@ -112,7 +112,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -123,7 +123,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_Equals_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_Equals_Long: 1 = 1L @@ -168,7 +168,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -179,7 +179,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_Equals_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_Equals_Decimal_False: 1 = 1.01 @@ -224,7 +224,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -236,7 +236,7 @@ library EqualsTest version '1.0.0' public void Integer_Equals_Quantity() { // 1 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_Equals_Quantity: 1 = 1.0 'g' @@ -281,7 +281,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -292,7 +292,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_Equals_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_Equals_Quantity_False: 1 = 1.01 '1' @@ -337,7 +337,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -348,7 +348,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_Equals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1 = null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1 = null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -356,7 +356,7 @@ public void Integer_Equals_Null() [TestMethod] public void Null_Equals_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("null = 1"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null = 1"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -368,7 +368,7 @@ public void Null_Equals_Integer() [TestMethod] public void Long_Equals_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_Equals_Long: 1L = 1L @@ -413,7 +413,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -424,7 +424,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_Equals_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_Equals_Long_False: 1L = 2L @@ -469,7 +469,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -480,7 +480,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_Equals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_Equals_Long: 1L = 1 @@ -525,7 +525,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -536,7 +536,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_Equals_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_DoesNotEqual_Decimal: 1L = 1.01 @@ -581,7 +581,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -593,7 +593,7 @@ library EqualsTest version '1.0.0' public void Long_Equals_Quantity() { // 1L converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_Equals_Quantity: 1L = 1.0 'g' @@ -638,7 +638,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -649,7 +649,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_DoesNotEqual_Quantity: 1L = 1.01 '1' @@ -694,7 +694,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -705,7 +705,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_Equals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1L = null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1L = null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -713,7 +713,7 @@ public void Long_Equals_Null() [TestMethod] public void Null_Equals_Long() { - var library = CreateCqlApi().MakeLibraryFromExpression("null = 1L"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null = 1L"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -725,7 +725,7 @@ public void Null_Equals_Long() [TestMethod] public void Decimal_Equals_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_Equals_Decimal: 1.0 = 1.0 @@ -770,7 +770,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -781,7 +781,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_Equals_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_Equals_Decimal_False: 1.0 = 2.0 @@ -826,7 +826,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -837,7 +837,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_Equals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_Equals_Decimal: 1.0 = 1 @@ -882,7 +882,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -893,7 +893,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_Equals_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_DoesNotEqual_Decimal: 2.0 = 1L @@ -938,7 +938,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -950,7 +950,7 @@ library EqualsTest version '1.0.0' public void Decimal_Equals_Quantity() { // 1.0 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_Equals_Quantity: 1.0 = 1.0 'g' @@ -995,7 +995,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1006,7 +1006,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_DoesNotEqual_Quantity: 1.0 = 1.01 '1' @@ -1051,7 +1051,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1062,7 +1062,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_Equals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 = null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 = null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1070,7 +1070,7 @@ public void Decimal_Equals_Null() [TestMethod] public void Null_Equals_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("null = 1.0"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null = 1.0"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1082,7 +1082,7 @@ public void Null_Equals_Decimal() [TestMethod] public void Quantity_Equals_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_Equals_Quantity: 1.0 '1' = 1.0 '1' @@ -1127,7 +1127,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1138,7 +1138,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_Equals_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_Equals_Quantity_False: 1.0 '1' = 2.0 '1' @@ -1183,7 +1183,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1194,7 +1194,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_Equals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_Equals_Quantity: 1.0 '1' = 1 @@ -1239,7 +1239,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1250,7 +1250,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_Equals_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_DoesNotEqual_Quantity: 2.0 '1' = 1L @@ -1295,7 +1295,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1307,7 +1307,7 @@ library EqualsTest version '1.0.0' public void Quantity_Equals_Decimal() { // 1.0 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_Equals_Decimal: 1.0 'g' = 1.0 @@ -1352,7 +1352,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1363,7 +1363,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_DoesNotEqual_Quantity: 1.0 = 1.01 '1' @@ -1408,7 +1408,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1419,7 +1419,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_Equals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 '1' = null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 '1' = null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1427,7 +1427,7 @@ public void Quantity_Equals_Null() [TestMethod] public void Null_Equals_Quantity() { - var library = CreateCqlApi().MakeLibraryFromExpression("null = 1.0 '1'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null = 1.0 '1'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1438,7 +1438,7 @@ public void Null_Equals_Quantity() [TestMethod] public void String_Equals_String() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private String_Equals_String: 'hello' = 'hello' @@ -1483,7 +1483,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}String", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1494,7 +1494,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void String_Equals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("'hello' = null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("'hello' = null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1502,7 +1502,7 @@ public void String_Equals_Null() [TestMethod] public void Null_Equals_String() { - var library = CreateCqlApi().MakeLibraryFromExpression("null = 'hello'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null = 'hello'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1511,7 +1511,7 @@ public void Null_Equals_String() [TestMethod] public void Date_Equals_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Date_Equals_Date: @2023 = @2023 @@ -1556,7 +1556,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Date", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1567,7 +1567,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Date_Equals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("@2023 = null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("@2023 = null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1575,7 +1575,7 @@ public void Date_Equals_Null() [TestMethod] public void Null_Equals_Date() { - var library = CreateCqlApi().MakeLibraryFromExpression("null = @2023"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null = @2023"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1583,7 +1583,7 @@ public void Null_Equals_Date() [TestMethod] public void DateTimeList_Equals_DateTimeList() { - var lib = CreateCqlApi().MakeLibraryFromExpression("{ DateTime(2016), DateTime(2015), DateTime(2010)} = { @2016T, @2015T, @2010T }"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("{ DateTime(2016), DateTime(2015), DateTime(2010)} = { @2016T, @2015T, @2010T }"); var equal = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); equal.operand.Should().HaveCount(2); equal.operand[0].Should().HaveType(SystemTypes.DateTimeType.ToListType()); diff --git a/Cql/CqlToElmTests/(tests)/EquivalentTest.cs b/Cql/CqlToElmTests/(tests)/EquivalentTest.cs index e57878e56..7c5e46f52 100644 --- a/Cql/CqlToElmTests/(tests)/EquivalentTest.cs +++ b/Cql/CqlToElmTests/(tests)/EquivalentTest.cs @@ -11,7 +11,7 @@ public class EquivalentTest : Base [TestMethod] public void Integer_EquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_EquivalentTo_Integer: 1 ~ 1 @@ -56,7 +56,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -67,7 +67,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_EquivalentTo_Integer_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_EquivalentTo_Integer_False: 1 ~ 2 @@ -112,7 +112,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -123,7 +123,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_EquivalentTo_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_EquivalentTo_Long: 1 ~ 1L @@ -168,7 +168,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -179,7 +179,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_EquivalentTo_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_EquivalentTo_Decimal_False: 1 ~ 2.01 @@ -224,7 +224,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -236,7 +236,7 @@ library EqualsTest version '1.0.0' public void Integer_EquivalentTo_Quantity() { // 1 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_EquivalentTo_Quantity: 1 ~ 1.0 'g' @@ -281,7 +281,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -292,7 +292,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_EquivalentTo_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_EquivalentTo_Quantity_False: 1 ~ 2.0 '1' @@ -337,7 +337,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -348,7 +348,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_EquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1 ~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1 ~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -356,7 +356,7 @@ public void Integer_EquivalentTo_Null() [TestMethod] public void Null_EquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("null ~ 1"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null ~ 1"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -368,7 +368,7 @@ public void Null_EquivalentTo_Integer() [TestMethod] public void Long_EquivalentTo_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_EquivalentTo_Long: 1L ~ 1L @@ -413,7 +413,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -424,7 +424,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_EquivalentTo_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_EquivalentTo_Long_False: 1L ~ 2L @@ -469,7 +469,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -480,7 +480,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_EquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_EquivalentTo_Long: 1L ~ 1 @@ -525,7 +525,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -536,7 +536,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_EquivalentTo_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_EquivalentTo_Decimal_False: 1L ~ 2.0 @@ -581,7 +581,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -593,7 +593,7 @@ library EqualsTest version '1.0.0' public void Long_EquivalentTo_Quantity() { // 1L converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_EquivalentTo_Quantity: 1L ~ 1.0 'g' @@ -638,7 +638,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -649,7 +649,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_EquivalentTo_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_EquivalentTo_Quantity_False: 1L ~ 2 '1' @@ -694,7 +694,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -705,7 +705,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_EquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1L ~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1L ~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -713,7 +713,7 @@ public void Long_EquivalentTo_Null() [TestMethod] public void Null_EquivalentTo_Long() { - var library = CreateCqlApi().MakeLibraryFromExpression("null ~ 1L"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null ~ 1L"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -725,7 +725,7 @@ public void Null_EquivalentTo_Long() [TestMethod] public void Decimal_EquivalentTo_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_EquivalentTo_Decimal: 1.0 ~ 1.0 @@ -770,7 +770,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -781,7 +781,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_EquivalentTo_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_EquivalentTo_Decimal_False: 1.0 ~ 2.0 @@ -826,7 +826,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -837,7 +837,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_EquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_EquivalentTo_Decimal: 1.0 ~ 1 @@ -882,7 +882,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -893,7 +893,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_EquivalentTo_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_EquivalentTo_Long_False: 2.0 ~ 1L @@ -938,7 +938,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -950,7 +950,7 @@ library EqualsTest version '1.0.0' public void Decimal_EquivalentTo_Quantity() { // 1.0 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_EquivalentTo_Quantity: 1.0 ~ 1.0 'g' @@ -995,7 +995,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1006,7 +1006,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_EquivalentTo_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_EquivalentTo_Quantity_False: 1.0 ~ 2.0 '1' @@ -1051,7 +1051,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1062,7 +1062,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_EquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 ~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 ~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -1070,7 +1070,7 @@ public void Decimal_EquivalentTo_Null() [TestMethod] public void Null_EquivalentTo_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("null ~ 1.0"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null ~ 1.0"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -1082,7 +1082,7 @@ public void Null_EquivalentTo_Decimal() [TestMethod] public void Quantity_EquivalentTo_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_EquivalentTo_Quantity: 1.0 '1' ~ 1.0 '1' @@ -1127,7 +1127,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1138,7 +1138,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_EquivalentTo_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_EquivalentTo_Quantity_False: 1.0 '1' ~ 2.0 '1' @@ -1183,7 +1183,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1194,7 +1194,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_EquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_EquivalentTo_Quantity: 1.0 '1' ~ 1 @@ -1239,7 +1239,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1250,7 +1250,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_EquivalentTo_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_EquivalentTo_Long_False: 2.0 '1' ~ 1L @@ -1295,7 +1295,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1307,7 +1307,7 @@ library EqualsTest version '1.0.0' public void Quantity_EquivalentTo_Decimal() { // 1.0 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_EquivalentTo_Decimal: 1.0 'g' ~ 1.0 @@ -1352,7 +1352,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1363,7 +1363,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_EquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 '1' ~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 '1' ~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -1371,7 +1371,7 @@ public void Quantity_EquivalentTo_Null() [TestMethod] public void Null_EquivalentTo_Quantity() { - var library = CreateCqlApi().MakeLibraryFromExpression("null ~ 1.0 '1'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null ~ 1.0 '1'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -1382,7 +1382,7 @@ public void Null_EquivalentTo_Quantity() [TestMethod] public void String_EquivalentTo_String() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private String_EquivalentTo_String: 'hello' ~ 'hello' @@ -1427,7 +1427,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}String", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1438,7 +1438,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void String_EquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("'hello' ~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("'hello' ~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } @@ -1446,7 +1446,7 @@ public void String_EquivalentTo_Null() [TestMethod] public void Null_EquivalentTo_String() { - var library = CreateCqlApi().MakeLibraryFromExpression("null ~ 'hello'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null ~ 'hello'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, false); } diff --git a/Cql/CqlToElmTests/(tests)/ExistsTest.cs b/Cql/CqlToElmTests/(tests)/ExistsTest.cs index 0183d4a2c..d87d3a5dc 100644 --- a/Cql/CqlToElmTests/(tests)/ExistsTest.cs +++ b/Cql/CqlToElmTests/(tests)/ExistsTest.cs @@ -9,7 +9,7 @@ public class ExistsTest : Base [TestMethod] public void Exists_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ExistsTest version '1.0.0' define private Empty_List: exists { 1, 3, 5, 7 } @@ -33,7 +33,7 @@ library ExistsTest version '1.0.0' [TestMethod] public void Exists_Empty_List() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ExistsTest version '1.0.0' define private Empty_List: exists { } @@ -53,7 +53,7 @@ library ExistsTest version '1.0.0' [TestMethod] public void Exists_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ExistsTest version '1.0.0' define private Empty_List: exists null @@ -74,7 +74,7 @@ library ExistsTest version '1.0.0' [TestMethod] public void Exists_List_Nulls() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ExistsTest version '1.0.0' define private Empty_List: exists { null } @@ -98,7 +98,7 @@ library ExistsTest version '1.0.0' private void AssertExists(Exists exists, bool? expected) { - var lambda = CreateElmApi().Lambda(exists); + var lambda = CreateElmFluentToolkit().Lambda(exists); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); diff --git a/Cql/CqlToElmTests/(tests)/ExpandTest.cs b/Cql/CqlToElmTests/(tests)/ExpandTest.cs index 2eaddb8f4..a42ba4a2d 100644 --- a/Cql/CqlToElmTests/(tests)/ExpandTest.cs +++ b/Cql/CqlToElmTests/(tests)/ExpandTest.cs @@ -8,28 +8,28 @@ public class ExpandCollapseTest : Base [TestMethod] public void ExpandUnitUnspecified() { - var lib = CreateCqlApi().MakeLibraryFromExpression("expand { Interval[1, 4], Interval[4, 8], Interval[7, 9] }"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("expand { Interval[1, 4], Interval[4, 8], Interval[7, 9] }"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } [TestMethod] public void ExpandPerDay() { - var lib = CreateCqlApi().MakeLibraryFromExpression("expand { Interval[@2018-01-01, @2018-01-04] } per day"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("expand { Interval[@2018-01-01, @2018-01-04] } per day"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } [TestMethod] public void ExpandPer2Days() { - var lib = CreateCqlApi().MakeLibraryFromExpression("expand { Interval[@2018-01-01, @2018-01-04] } per 2 days"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("expand { Interval[@2018-01-01, @2018-01-04] } per 2 days"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } [TestMethod] public void ExpandIntervalPer2() { - var lib = CreateCqlApi().MakeLibraryFromExpression("expand { Interval [1, 10] } per 2"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("expand { Interval [1, 10] } per 2"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } @@ -37,7 +37,7 @@ public void ExpandIntervalPer2() [TestMethod] public void Expand_List_Interval() { - var lib = CreateCqlApi().MakeLibraryFromExpression("expand { Interval[10.0, 10.0] } per 0.1"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("expand { Interval[10.0, 10.0] } per 0.1"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); expand.operand.Length.Should().Be(2); expand.operand[0].Should().HaveType(SystemTypes.DecimalType.ToIntervalType().ToListType()); @@ -48,7 +48,7 @@ public void Expand_List_Interval() [TestMethod] public void CollapseUnitUnspecified() { - var lib = CreateCqlApi().MakeLibraryFromExpression("collapse { Interval[1, 4], Interval[4, 8], Interval[7, 9] }"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("collapse { Interval[1, 4], Interval[4, 8], Interval[7, 9] }"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } @@ -56,7 +56,7 @@ public void CollapseUnitUnspecified() [TestMethod] public void CollapseIntervalPerDay() { - var lib = CreateCqlApi().MakeLibraryFromExpression("collapse { Interval [1, 10] } per day"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("collapse { Interval [1, 10] } per day"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } @@ -64,14 +64,14 @@ public void CollapseIntervalPerDay() [TestMethod] public void CollapseIntervalPer2Day() { - var lib = CreateCqlApi().MakeLibraryFromExpression("collapse { Interval [1, 10] } per 2 day"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("collapse { Interval [1, 10] } per 2 day"); var expand = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } [TestMethod] public void DateTimeCollapse() { - var lib = CreateCqlApi().MakeLibraryFromExpression("collapse { Interval[DateTime(2012, 1, 1), DateTime(2012, 1, 15)], Interval[DateTime(2012, 1, 10), DateTime(2012, 1, 25)], Interval[DateTime(2012, 5, 10), DateTime(2012, 5, 25)], Interval[DateTime(2012, 5, 20), DateTime(2012, 5, 30)] }"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("collapse { Interval[DateTime(2012, 1, 1), DateTime(2012, 1, 15)], Interval[DateTime(2012, 1, 10), DateTime(2012, 1, 25)], Interval[DateTime(2012, 5, 10), DateTime(2012, 5, 25)], Interval[DateTime(2012, 5, 20), DateTime(2012, 5, 30)] }"); var collapse = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); // expected {Interval [ @2012-01-01T, @2012-01-25T ], Interval [ @2012-05-10T, @2012-05-30T ]} var result = Run(collapse, lib); diff --git a/Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs b/Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs index 22576f7bb..2b952a08a 100644 --- a/Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs +++ b/Cql/CqlToElmTests/(tests)/FHIRHelpersTest.cs @@ -10,7 +10,7 @@ public class FHIRHelpersTest : Base public void FHIRHelpers_To_Elm() { var cql = File.ReadAllText(@"Input\FHIRHelpers-4.0.1.cql"); - var lib = CreateCqlApi().MakeLibrary(cql); + var lib = CreateCqlFluentToolkit().MakeLibrary(cql); lib.GetErrors().Should().BeEmpty(); using var fs = new FileStream("FHIRHelpers-4.0.1.json", FileMode.Create, FileAccess.Write, FileShare.Read); lib.WriteJson(fs, true); @@ -22,19 +22,19 @@ public void FHIRHelpers_To_Elm() public void FHIRHelpers_To_Expressions() { var cql = File.ReadAllText(@"Input\FHIRHelpers-4.0.1.cql"); - var lib = CreateCqlApi().MakeLibrary(cql); + var lib = CreateCqlFluentToolkit().MakeLibrary(cql); lib.GetErrors().Should().BeEmpty(); using var fs = new FileStream("FHIRHelpers-4.0.1.json", FileMode.Create, FileAccess.Write, FileShare.Read); lib.WriteJson(fs); fs.Close(); - var lambdas = CreateElmApi().ProcessLibrary(lib); + var lambdas = CreateElmFluentToolkit().ProcessLibrary(lib); _ = lambdas.CompileAll(); } [TestMethod] public void FHIRHelpers_ToConcept_Right_Types() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library FHIRHelpers version '4.0.1' using FHIR version '4.0.1' @@ -55,7 +55,7 @@ define function ToConcept(concept FHIR.CodeableConcept): [TestMethod] public void FHIRHelpers_ToConcept_Query() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library FHIRHelpers version '4.0.1' using FHIR version '4.0.1' @@ -82,14 +82,14 @@ define function ToConcept(concept FHIR.CodeableConcept): lib.statements.Should().HaveCount(2); var fd = lib.statements[1].Should().BeOfType().Subject; - var lambdas = CreateElmApi().ProcessLibrary(lib); + var lambdas = CreateElmFluentToolkit().ProcessLibrary(lib); _ = lambdas.CompileAll(); } [TestMethod] public void FHIRHelpers_Coding_To_ListCodes() { - var cqlApi = CreateCqlApi().AddFHIRHelpers(); + var cqlApi = CreateCqlFluentToolkit().AddFHIRHelpers(); var lib = cqlApi.MakeLibrary(""" library Test version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/FlattenTest.cs b/Cql/CqlToElmTests/(tests)/FlattenTest.cs index 3d1c1e53f..8774a68e3 100644 --- a/Cql/CqlToElmTests/(tests)/FlattenTest.cs +++ b/Cql/CqlToElmTests/(tests)/FlattenTest.cs @@ -8,7 +8,7 @@ public class FlattenTest : Base [TestMethod] public void FlattenEmpty() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private FlattenEmpty: Flatten({{},{}}) @@ -26,7 +26,7 @@ library ListTest version '1.0.0' [TestMethod] public void FlattenCapitalF() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private FlattenEmpty: Flatten({{},{}}) @@ -36,11 +36,11 @@ library ListTest version '1.0.0' [TestMethod] public void FlattenListNullAndNull() { - var lib = CreateCqlApi().MakeLibraryFromExpression("Flatten({{null}, {null}})"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("Flatten({{null}, {null}})"); var flatten = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run>(flatten, lib); // {null, null} result!.Count.Should().Be(2); - var equal = CreateCqlApi().MakeLibraryFromExpression("Flatten({{null}, {null}}) = {null, null}") + var equal = CreateCqlFluentToolkit().MakeLibraryFromExpression("Flatten({{null}, {null}}) = {null, null}") .Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var eqr = Run(equal, lib); // {null, null} eqr.Should().BeTrue(); @@ -48,7 +48,7 @@ public void FlattenListNullAndNull() [TestMethod] public void FlattenListOfValueSet() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FlattenValueSets version '1.0.0' valueset "One": 'https://hl7.org/one' @@ -64,7 +64,7 @@ library FlattenValueSets version '1.0.0' [TestMethod] public void FlattenChoiceType() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define choice: @@ -84,7 +84,7 @@ library ListTest version '1.0.0' public void FlattenMixedChoiceType() { // requires list promotion - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var library = cqlApi.MakeLibrary( """ library Test version '1.0.0' @@ -95,7 +95,7 @@ library Test version '1.0.0' """, "Could not resolve call to operator Flatten with signature (List>>)."); // no errors - cqlApi = CreateCqlApi(EnableListPromotion:true); + cqlApi = CreateCqlFluentToolkit(EnableListPromotion:true); library = cqlApi.MakeLibrary(""" library Test version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/FunctionDefinitionTest.cs b/Cql/CqlToElmTests/(tests)/FunctionDefinitionTest.cs index f6cf5826a..043f78eb4 100644 --- a/Cql/CqlToElmTests/(tests)/FunctionDefinitionTest.cs +++ b/Cql/CqlToElmTests/(tests)/FunctionDefinitionTest.cs @@ -14,7 +14,7 @@ private FunctionDef shouldDefineFunction(Library l, string name) => [TestMethod] public void DefinePrivateFluentFunction() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' using FHIR version '4.0.1' context Patient @@ -31,7 +31,7 @@ define private fluent function Two(): 2 [TestMethod] public void DefinePublicNonFluentExternalFunction() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define public function Ext() returns String: external """); @@ -45,7 +45,7 @@ define public function Ext() returns String: external [TestMethod] public void UntypedFunctionsAreIllegal() { - _ = CreateCqlApi().MakeLibrary(""" + _ = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define public function Ext(): external """, @@ -56,7 +56,7 @@ define public function Ext(): external [TestMethod] public void OptionalReturnTypesMayBeTheSame() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define function Two() returns Integer: 2 """); @@ -68,7 +68,7 @@ define function Two() returns Integer: 2 [TestMethod] public void OptionalReturnTypesMayBeSupertype() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define function Two() returns Any: 2 """); @@ -80,7 +80,7 @@ define function Two() returns Any: 2 [TestMethod] public void MakesParametersVisibleInScope() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define function Double(a Integer): a*2 """); @@ -94,7 +94,7 @@ define function Double(a Integer): a*2 [TestMethod] public void SignalsUnknownParameters() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define function Double(a Integer): b """, @@ -104,7 +104,7 @@ define function Double(a Integer): b [TestMethod] public void ResolvesInParentScope() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define b: 5 define function Double(a Integer): b @@ -120,7 +120,7 @@ define function Double(a Integer): b [TestMethod] public void ResolvesNearestScope() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define a: 5 define function Replace(a String): a @@ -134,7 +134,7 @@ define function Replace(a String): a [TestMethod] public void DoesForwardsReference() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define b: a define a: 5 @@ -148,7 +148,7 @@ library FuncTest version '1.0.0' [TestMethod] public void DetectsCycle() { - _ = CreateCqlApi().MakeLibrary(""" + _ = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define a: b define b: a @@ -159,7 +159,7 @@ library FuncTest version '1.0.0' [TestMethod] public void CallsFluentOnMember() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' using FHIR version '4.0.1' @@ -177,7 +177,7 @@ library FuncTest version '1.0.0' [TestMethod] public void CallsFluentOnMember_AcrossLibrary() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var fluentLib = cqlApi.MakeLibrary(""" library FluentLib version '1.0.0' @@ -206,7 +206,7 @@ include FluentLib version '1.0.0' [TestMethod] public void BirthdatePlusAge() { - var cqlApi = CreateCqlApi().AddFHIRHelpers();; + var cqlApi = CreateCqlFluentToolkit().AddFHIRHelpers();; var lib = cqlApi.MakeLibrary(""" library Test version '1.0.0' @@ -234,7 +234,7 @@ define function f(patient FHIR.Patient, condition FHIR.Condition): [TestMethod] public void ComplexCaseStatement() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' using FHIR version '4.0.1' @@ -262,7 +262,7 @@ when condition.onset is Range and birthDate is not null then [TestMethod] public void External_Function() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library FuncTest version '1.0.0' define function Add(left Integer, right Integer) returns Integer: external @@ -277,7 +277,7 @@ define function Add(left Integer, right Integer) returns Integer: external [TestMethod] public void CSharp_Keyword_Parameter_Name() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var cqlLibraryString = CqlLibraryString.Parse( """ library FuncTest version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/GreaterTest.cs b/Cql/CqlToElmTests/(tests)/GreaterTest.cs index e7887ed8b..b4920405b 100644 --- a/Cql/CqlToElmTests/(tests)/GreaterTest.cs +++ b/Cql/CqlToElmTests/(tests)/GreaterTest.cs @@ -11,7 +11,7 @@ public class GreaterTest : Base [TestMethod] public void Integer_GreaterThan_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Integer: 1 > -1 @@ -56,7 +56,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -67,7 +67,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_GreaterThan_Integer_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Integer_False: 1 > 2 @@ -112,7 +112,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -123,7 +123,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_GreaterThan_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Long: 10 > 1L @@ -168,7 +168,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -179,7 +179,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_GreaterThan_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Decimal_False: -10 > 1.01 @@ -224,7 +224,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -236,7 +236,7 @@ library EqualsTest version '1.0.0' public void Integer_GreaterThan_Quantity() { // 1 converts to 1.0 '1' and '1' units are greater to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Quantity: 2 > 1.0 'g' @@ -281,7 +281,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -292,7 +292,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_GreaterThan_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Quantity_False: 0 > 1.01 '1' @@ -337,7 +337,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -348,7 +348,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_GreaterThan_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Null: 1 > null @@ -393,7 +393,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -403,7 +403,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Null_GreaterThan_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Null_GreaterThan_Integer: null > 1 @@ -448,7 +448,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -462,7 +462,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_GreaterThan_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_GreaterThan_Long: 1L > -1L @@ -507,7 +507,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -518,7 +518,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_GreaterThan_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_GreaterThan_Long_False: 1L > 2L @@ -563,7 +563,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -574,7 +574,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_GreaterThan_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_GreaterThan_Long: 1L > 0 @@ -619,7 +619,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -630,7 +630,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_GreaterThan_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotGreaterThan_Decimal: 1L > 1.01 @@ -675,7 +675,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -687,7 +687,7 @@ library EqualsTest version '1.0.0' public void Long_GreaterThan_Quantity() { // 1L converts to 1.0 '1' and '1' units are greater to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_GreaterThan_Quantity: 10L > 1.0 'g' @@ -732,7 +732,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -743,7 +743,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotGreaterThan_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotGreaterThan_Quantity: 1L > 1.01 '1' @@ -788,7 +788,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -799,7 +799,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_GreaterThan_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_GreaterThan_Null: 1L > null @@ -844,7 +844,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -854,7 +854,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Null_GreaterThan_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Null_GreaterThan_Long: null > 1L @@ -899,7 +899,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -913,7 +913,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_GreaterThan_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_GreaterThan_Decimal: 1.00001 > 1.0 @@ -958,7 +958,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -969,7 +969,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_GreaterThan_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_GreaterThan_Decimal_False: 1.0 > 2.0 @@ -1014,7 +1014,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1025,7 +1025,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_GreaterThan_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_GreaterThan_Decimal: 1.01 > 1 @@ -1070,7 +1070,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1081,7 +1081,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_GreaterThan_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotGreaterThan_Decimal: 2.0 > 10L @@ -1126,7 +1126,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1138,7 +1138,7 @@ library EqualsTest version '1.0.0' public void Decimal_GreaterThan_Quantity() { // 1.0 converts to 1.0 '1' and '1' units are greater to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_GreaterThan_Quantity: 2.0 > 1.0 'g' @@ -1183,7 +1183,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1194,7 +1194,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_GreaterThan_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_GreaterThan_Quantity_False: 1.0 > 1.01 '1' @@ -1239,7 +1239,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1250,7 +1250,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_GreaterThan_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_GreaterThan_Null: 1.0 > null @@ -1295,7 +1295,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1305,7 +1305,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Null_GreaterThan_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Null_GreaterThan_Decimal: null > 1.0 @@ -1350,7 +1350,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1364,7 +1364,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_GreaterThan_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_GreaterThan_Quantity: 1.1 '1' > 1.0 '1' @@ -1409,7 +1409,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1420,7 +1420,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_GreaterThan_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_GreaterThan_Quantity_False: 1.0 '1' > 2.0 '1' @@ -1465,7 +1465,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1476,7 +1476,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_GreaterThan_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_GreaterThan_Quantity: 1000.0 '1' > 1 @@ -1521,7 +1521,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1532,7 +1532,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_GreaterThan_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotGreaterThan_Quantity: 2.0 '1' > 10L @@ -1577,7 +1577,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1589,7 +1589,7 @@ library EqualsTest version '1.0.0' public void Quantity_GreaterThan_Decimal() { // 1.0 converts to 1.0 '1' and '1' units are greater to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_GreaterThan_Decimal: 1.0 'g' > 0.1 @@ -1634,7 +1634,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1645,7 +1645,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_GreaterThan_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_GreaterThan_Null: 1.0 '1' > null @@ -1690,7 +1690,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1700,7 +1700,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Null_GreaterThan_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Null_GreaterThan_Integer: null > 1.0 '1' @@ -1745,7 +1745,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1758,7 +1758,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Date_GreaterThan_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Date_GreaterThan_Date: @2023-12-31 > @2023-01-01 @@ -1803,7 +1803,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Date", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1814,7 +1814,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Date_GreaterThan_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private String_GreaterThan_String: @2023 > null @@ -1859,7 +1859,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Date", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1869,7 +1869,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Null_GreaterThan_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Null_GreaterThan_Date: null > @2023 @@ -1914,7 +1914,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Date", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(greater); + var lambda = CreateElmFluentToolkit().Lambda(greater); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); diff --git a/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs b/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs index 0b61c334f..94ded2b04 100644 --- a/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs +++ b/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs @@ -11,7 +11,7 @@ public class IfThenElseTest : Base [TestMethod] public void True_Integer_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("if true then 4 else 5"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("if true then 4 else 5"); var ifThenElse = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); ifThenElse.condition.Should().BeLiteralBool(true); @@ -24,7 +24,7 @@ public void True_Integer_Integer() [TestMethod] public void True_Integer_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("if true then 4 else 5.0"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("if true then 4 else 5.0"); var ifThenElse = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); ifThenElse.condition.Should().BeLiteralBool(true); @@ -39,7 +39,7 @@ public void True_Integer_Decimal() [TestMethod] public void True_Decimal_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("if false then 4.0 else 5"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("if false then 4.0 else 5"); var ifThenElse = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); ifThenElse.condition.Should().BeLiteralBool(false); @@ -54,7 +54,7 @@ public void True_Decimal_Integer() [TestMethod] public void True_Decimal_String() { - var library = CreateCqlApi().MakeLibraryFromExpression("if false then 4.0 else 'hello'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("if false then 4.0 else 'hello'"); var ifThenElse = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var expectedType = new ChoiceTypeSpecifier(SystemTypes.DecimalType, SystemTypes.StringType); @@ -76,9 +76,9 @@ public void True_Decimal_String() [TestMethod] public void String_Integer_Integer() { - var messageProvider = CreateCqlApi().GetMessageProvider(); + var messageProvider = CreateCqlFluentToolkit().GetMessageProvider(); string[] expectedErrors = [messageProvider.TypeFoundIsNotExpected(SystemTypes.StringType, SystemTypes.BooleanType)]; - var library = CreateCqlApi().MakeLibraryFromExpression("if 'hello' then 4 else 5", expectedErrors); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("if 'hello' then 4 else 5", expectedErrors); var @if = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); @if.resultTypeSpecifier.Should().Be(SystemTypes.IntegerType); diff --git a/Cql/CqlToElmTests/(tests)/ImpliesTest.cs b/Cql/CqlToElmTests/(tests)/ImpliesTest.cs index 421994ec7..8b59b5476 100644 --- a/Cql/CqlToElmTests/(tests)/ImpliesTest.cs +++ b/Cql/CqlToElmTests/(tests)/ImpliesTest.cs @@ -9,7 +9,7 @@ public class ImpliesTest : Base [TestMethod] public void True_Implies_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private True_Implies_False: true implies false @@ -54,7 +54,7 @@ library ImpliesTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(implies); + var lambda = CreateElmFluentToolkit().Lambda(implies); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -65,7 +65,7 @@ library ImpliesTest version '1.0.0' [TestMethod] public void True_Implies_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private True_Implies_True: true implies true @@ -110,7 +110,7 @@ library ImpliesTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(implies); + var lambda = CreateElmFluentToolkit().Lambda(implies); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -121,7 +121,7 @@ library ImpliesTest version '1.0.0' [TestMethod] public void False_Implies_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private False_Implies_False: false implies false @@ -166,7 +166,7 @@ library ImpliesTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(implies); + var lambda = CreateElmFluentToolkit().Lambda(implies); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -177,7 +177,7 @@ library ImpliesTest version '1.0.0' [TestMethod] public void True_Implies_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private True_Implies_Null: true implies null @@ -222,7 +222,7 @@ library ImpliesTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(implies); + var lambda = CreateElmFluentToolkit().Lambda(implies); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -232,7 +232,7 @@ library ImpliesTest version '1.0.0' [TestMethod] public void Null_Implies_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private Null_Implies_False: null implies false @@ -277,7 +277,7 @@ library ImpliesTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(implies); + var lambda = CreateElmFluentToolkit().Lambda(implies); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -287,7 +287,7 @@ library ImpliesTest version '1.0.0' [TestMethod] public void Null_Implies_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private Null_Implies_Null: null implies null @@ -332,7 +332,7 @@ library ImpliesTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(implies); + var lambda = CreateElmFluentToolkit().Lambda(implies); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -342,7 +342,7 @@ library ImpliesTest version '1.0.0' [TestMethod] public void True_Implies_1() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library ImpliesTest version '1.0.0' define private True_Implies_1: true implies 1 diff --git a/Cql/CqlToElmTests/(tests)/InTest.cs b/Cql/CqlToElmTests/(tests)/InTest.cs index a8064392f..3506d6705 100644 --- a/Cql/CqlToElmTests/(tests)/InTest.cs +++ b/Cql/CqlToElmTests/(tests)/InTest.cs @@ -8,7 +8,7 @@ public class InTest : Base [TestMethod] public void Starts_Properly_Within_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library InTest version '1.0.0' define private Starts_Properly_Within_Start: Interval[@2023, @2030] starts properly within 1 year of start Interval[@2022, @2030] @@ -37,7 +37,7 @@ library InTest version '1.0.0' [TestMethod] public void Starts_Within_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library InTest version '1.0.0' define f: Interval[@2023, @2030] starts within 1 year of start Interval[@2022, @2030] @@ -49,7 +49,7 @@ library InTest version '1.0.0' [TestMethod] public void Properly_Within_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library InTest version '1.0.0' define private Properly_Within_Start: Interval[@2023, @2030] properly within 1 year of start Interval[@2022, @2030] @@ -60,7 +60,7 @@ library InTest version '1.0.0' [TestMethod] public void TestInNullBoundaries() { - var lib = CreateCqlApi().MakeLibraryFromExpression("5 in Interval[null as Integer, null as Integer]"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("5 in Interval[null as Integer, null as Integer]"); var @in = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(@in, lib); Assert.IsFalse(result); @@ -68,14 +68,14 @@ public void TestInNullBoundaries() public void NullContains5() { - var lib = CreateCqlApi().MakeLibraryFromExpression("null contains 5"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("null contains 5"); var @in = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); } [TestMethod] public void Starts_Within_PointInterval() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library InTest version '1.0.0' define f: diff --git a/Cql/CqlToElmTests/(tests)/IncludedInTest.cs b/Cql/CqlToElmTests/(tests)/IncludedInTest.cs index 1094b8f1a..d6c2844cd 100644 --- a/Cql/CqlToElmTests/(tests)/IncludedInTest.cs +++ b/Cql/CqlToElmTests/(tests)/IncludedInTest.cs @@ -9,7 +9,7 @@ public class IncludedInTest : Base [TestMethod] public void Starts_Properly_During_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_Properly_During_Year: Interval[@2023, @2030] starts properly during year of Interval[@2020, @2030] @@ -37,7 +37,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_Properly_IncludedIn_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_Properly_IncludedIn_Year: Interval[@2023, @2030] starts properly included in year of Interval[@2020, @2030] @@ -66,7 +66,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_During_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_During_Year: Interval[@2023, @2030] starts during year of Interval[@2020, @2030] @@ -95,7 +95,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_IncludedIn_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_During_Year: Interval[@2023, @2030] starts included in year of Interval[@2020, @2030] @@ -124,7 +124,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Properly_During_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_Properly_During_Year: Interval[@2023, @2030] properly during year of Interval[@2020, @2030] @@ -153,7 +153,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Properly_IncludedIn_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Properly_IncludedIn_Year: Interval[@2023, @2030] properly included in year of Interval[@2020, @2030] @@ -182,7 +182,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void During_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_During_Year: Interval[@2023, @2030] during year of Interval[@2020, @2030] @@ -211,7 +211,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void IncludedIn_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private IncludedIn_Year: Interval[@2023, @2030] included in year of Interval[@2020, @2030] @@ -240,7 +240,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Properly_During() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Properly_During: Interval[@2023, @2030] properly during Interval[@2020, @2031] @@ -269,7 +269,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Properly_IncludedIn() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Properly_IncludedIn: Interval[@2023, @2030] properly included in Interval[@2020, @2031] @@ -298,7 +298,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_During() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_During: Interval[@2023, @2030] starts during Interval[@2020, @2030] @@ -327,7 +327,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_IncludedIn() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_During: Interval[@2023, @2030] starts included in Interval[@2020, @2030] @@ -356,7 +356,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_Properly_During() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_Properly_During_Year: Interval[@2023, @2030] starts properly during Interval[@2020, @2030] @@ -384,7 +384,7 @@ library IncludedInTest version '1.0.0' [TestMethod] public void Starts_Properly_IncludedIn() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludedInTest version '1.0.0' define private Starts_Properly_IncludedIn: Interval[@2023, @2030] starts properly included in Interval[@2020, @2030] diff --git a/Cql/CqlToElmTests/(tests)/IncludesTest.cs b/Cql/CqlToElmTests/(tests)/IncludesTest.cs index 1318b0582..5723ea31e 100644 --- a/Cql/CqlToElmTests/(tests)/IncludesTest.cs +++ b/Cql/CqlToElmTests/(tests)/IncludesTest.cs @@ -8,7 +8,7 @@ public class IncludesTest : Base [TestMethod] public void Proper_Includes_Day_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Proper_Includes_Day_Start: Interval[@2023-01-01, @2023-06-30] properly includes day of start Interval[@2023-04-01, @2023-04-30] @@ -36,7 +36,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Proper_Includes_Day_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Proper_Includes_Day_End: Interval[@2023-01-01, @2023-06-30] properly includes day of end Interval[@2023-04-01, @2023-04-30] @@ -64,7 +64,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Proper_Includes_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Proper_Includes_Day_Start: Interval[@2023, @2023] properly includes year of Interval[@2023, @2023] @@ -92,7 +92,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Proper_Includes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Proper_Includes: Interval[@2023, @2023] properly includes Interval[@2023, @2023] @@ -120,7 +120,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Includes_Day_Start() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Includes_Day_Start: Interval[@2023-01-01, @2023-06-30] includes day of start Interval[@2023-04-01, @2023-04-30] @@ -148,7 +148,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Includes_Day_End() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Includes_Day_End: Interval[@2023-01-01, @2023-06-30] includes day of end Interval[@2023-04-01, @2023-04-30] @@ -176,7 +176,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Includes_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Proper_Includes_Day_Start: Interval[@2023, @2023] includes year of Interval[@2023, @2023] @@ -204,7 +204,7 @@ library ConcurrentWithTest version '1.0.0' [TestMethod] public void Includes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ConcurrentWithTest version '1.0.0' define private Includes: Interval[@2023, @2023] includes Interval[@2023, @2023] @@ -234,7 +234,7 @@ public void EmptyList_Includes_EmptyList() { // Declare the cost of casting to Any to be higher than an exact match // that should make these unambiguous - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludesTest version '1.0.0' define private EmptyList_Includes_EmptyList: {} includes {} @@ -245,7 +245,7 @@ library IncludesTest version '1.0.0' [TestMethod] public void NullBoundariesProperlyIncludesIntegerInterval() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[null as Integer, null as Integer] properly includes Interval[1, 10]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[null as Integer, null as Integer] properly includes Interval[1, 10]"); var intersect = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(intersect, library); result.Should().BeNull(); diff --git a/Cql/CqlToElmTests/(tests)/IndexTest.cs b/Cql/CqlToElmTests/(tests)/IndexTest.cs index 8432a7362..d067a1aa5 100644 --- a/Cql/CqlToElmTests/(tests)/IndexTest.cs +++ b/Cql/CqlToElmTests/(tests)/IndexTest.cs @@ -8,7 +8,7 @@ public class IndexTest : Base [TestMethod] public void LastIndexOf() { - var lib = CreateCqlApi().MakeLibraryFromExpression("LastPositionOf('hi', 'Ohio is the place to be!')"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("LastPositionOf('hi', 'Ohio is the place to be!')"); var lpo = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(lpo, lib); result.Should().Be(1); diff --git a/Cql/CqlToElmTests/(tests)/InfixSetTest.cs b/Cql/CqlToElmTests/(tests)/InfixSetTest.cs index 416ec9bb7..eef1ac43d 100644 --- a/Cql/CqlToElmTests/(tests)/InfixSetTest.cs +++ b/Cql/CqlToElmTests/(tests)/InfixSetTest.cs @@ -9,7 +9,7 @@ public class InfixSetTest : Base [TestMethod] public void Interval_Except() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[1, 10] except Interval[4, 10]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[1, 10] except Interval[4, 10]"); var except = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run>(except, library); result.Should().NotBeNull(); @@ -22,7 +22,7 @@ public void Interval_Except() [TestMethod] public void Interval_Union() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[1, 10] union Interval[4, 15]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[1, 10] union Interval[4, 15]"); var union = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run>(union, library); result.Should().NotBeNull(); @@ -34,7 +34,7 @@ public void Interval_Union() [TestMethod] public void Interval_Union_Pipe_Operator() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[1, 10] | Interval[4, 15]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[1, 10] | Interval[4, 15]"); var union = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run>(union, library); result.Should().NotBeNull(); @@ -47,7 +47,7 @@ public void Interval_Union_Pipe_Operator() [TestMethod] public void Interval_Intersect_Operator() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[1, 5] intersect Interval[3, 7]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[1, 5] intersect Interval[3, 7]"); var intersect = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run>(intersect, library); result.Should().NotBeNull(); diff --git a/Cql/CqlToElmTests/(tests)/InstanceTest.cs b/Cql/CqlToElmTests/(tests)/InstanceTest.cs index 7d9055505..29b0fec7f 100644 --- a/Cql/CqlToElmTests/(tests)/InstanceTest.cs +++ b/Cql/CqlToElmTests/(tests)/InstanceTest.cs @@ -9,7 +9,7 @@ public class InstanceTest : Base [TestMethod] public void Concept_Instance() { - var library = CreateCqlApi( + var library = CreateCqlFluentToolkit( EnableListDemotion:true, EnableListPromotion:true, EnableIntervalDemotion: true, diff --git a/Cql/CqlToElmTests/(tests)/IntervalTest.cs b/Cql/CqlToElmTests/(tests)/IntervalTest.cs index 2163e3894..87f219792 100644 --- a/Cql/CqlToElmTests/(tests)/IntervalTest.cs +++ b/Cql/CqlToElmTests/(tests)/IntervalTest.cs @@ -10,7 +10,7 @@ public class IntervalTest : Base [TestMethod] public void Interval_InvalidType() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_InvalidType: Interval[{},{}] @@ -20,7 +20,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Quantity_Incompatible_Units() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_InvalidType: Interval[100 'a', 200 'kg'] @@ -30,7 +30,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Integer: Interval[1,2] @@ -52,7 +52,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -68,7 +68,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Integer_Null_High() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Integer: Interval[1,null) @@ -90,7 +90,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -106,7 +106,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Integer_Null_Low() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Integer: Interval[null, 1) @@ -128,7 +128,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -144,7 +144,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Long: Interval(-100L,20L] @@ -166,7 +166,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Long", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -182,7 +182,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Decimal: Interval[-0.00000001, 0.0) @@ -204,7 +204,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -220,7 +220,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Decimal: Interval(100 '1', 200 '1') @@ -242,7 +242,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Quantity", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -258,7 +258,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_Date: Interval[@2023-01-01, @2023-12-31] @@ -280,7 +280,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Date", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -296,7 +296,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_DateTime() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_DateTime: Interval[@2023-01-01T00:00:00.000Z, @2023-12-31T23:59:59.999Z] @@ -318,7 +318,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}DateTime", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -335,7 +335,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Time() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Interval_DateTime: Interval[@T00:00:00.000, @T23:59:59.999] @@ -357,7 +357,7 @@ library IntervalTest version '1.0.0' Assert.IsNotNull(nts.name?.Name); Assert.AreEqual($"{{{SystemUri}}}Time", nts.name?.Name); - var lambda = CreateElmApi().Lambda(interval); + var lambda = CreateElmFluentToolkit().Lambda(interval); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -374,7 +374,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Includes_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private TestIncludesNull: Interval[1, 10] includes null @@ -395,7 +395,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Interval_Properly_Included_in_Interval_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[1, 10] properly included in Interval[null as Integer, null as Integer]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[1, 10] properly included in Interval[null as Integer, null as Integer]"); var pii = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(pii, library); Assert.IsNull(result); @@ -404,7 +404,7 @@ public void Interval_Properly_Included_in_Interval_Null() [TestMethod] public void Interval_Null_Starts_Interval() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[null as Integer, null as Integer] starts Interval[1, 10]"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[null as Integer, null as Integer] starts Interval[1, 10]"); var pii = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(pii, library); Assert.IsNull(result); diff --git a/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs b/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs index a4c2d8f80..a6fb324f6 100644 --- a/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs +++ b/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs @@ -12,7 +12,7 @@ public class InvocationBuilderTest : Base { static InvocationBuilderTest() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); InvocationBuilder = cqlApi.GetInvocationBuilder(); ElmFactory = cqlApi.GetElmFactory(); } diff --git a/Cql/CqlToElmTests/(tests)/IsTest.cs b/Cql/CqlToElmTests/(tests)/IsTest.cs index 9d479ef08..87676b319 100644 --- a/Cql/CqlToElmTests/(tests)/IsTest.cs +++ b/Cql/CqlToElmTests/(tests)/IsTest.cs @@ -11,7 +11,7 @@ public class IsTest : Base [TestMethod] public void Integer_Is_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Integer_Is_Decimal: 1 is System.Decimal @@ -40,7 +40,7 @@ library IsTest version '1.0.0' [TestMethod] public void True_Is_Qualified_Boolean() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private True_Is_Qualified_Boolean: true is System.Boolean @@ -69,7 +69,7 @@ library IsTest version '1.0.0' [TestMethod] public void True_Is_Unqualified_Boolean() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private True_Is_Unqualified_Boolean: true is Boolean @@ -98,7 +98,7 @@ library IsTest version '1.0.0' [TestMethod] public void Null_Is_Boolean() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Null_Is_Boolean: null is Boolean @@ -123,7 +123,7 @@ library IsTest version '1.0.0' [TestMethod] public void Null_Is_Any() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Null_Is_Any: null is Any @@ -147,7 +147,7 @@ library IsTest version '1.0.0' [TestMethod] public void List_Is_List_of_Qualified_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private List_Is_List_of_Qualified_Integer: { 1,2,3 } is List @@ -174,7 +174,7 @@ library IsTest version '1.0.0' [TestMethod] public void Interval_Is_Unqualified_Integer_Interval() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Interval_Is_Unqualified_Integer_Interval: Interval[1, 10] is Interval @@ -200,7 +200,7 @@ library IsTest version '1.0.0' [TestMethod] public void Integer_Interval_Is_Decimal_Interval_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Integer_Interval_Is_Decimal_Interval_False: Interval[1, 10] is Interval @@ -226,7 +226,7 @@ library IsTest version '1.0.0' [TestMethod] public void Integer_Is_Choice() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Integer_Is_Choice: 1 is Choice @@ -253,7 +253,7 @@ library IsTest version '1.0.0' [TestMethod] public void String_Is_Choice_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private String_Is_Choice_False: 'hello' is Choice @@ -281,7 +281,7 @@ library IsTest version '1.0.0' [TestMethod] public void Tuple_Is_Tuple() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Tuple_Is_Tuple: { x: 1, y: 2 } is Tuple { x Integer, y Integer } @@ -306,7 +306,7 @@ library IsTest version '1.0.0' [TestMethod] public void Tuple_Is_Tuple_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IsTest version '1.0.0' define private Tuple_Is_Tuple: Tuple { x: 1, y: 2 } is Tuple { x Decimal, y Integer } @@ -331,7 +331,7 @@ library IsTest version '1.0.0' private void AssertIs(Is @is, bool? expected) { - var lambda = CreateElmApi().Lambda(@is); + var lambda = CreateElmFluentToolkit().Lambda(@is); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); diff --git a/Cql/CqlToElmTests/(tests)/LengthTest.cs b/Cql/CqlToElmTests/(tests)/LengthTest.cs index 02349c8ea..2b4d28ed8 100644 --- a/Cql/CqlToElmTests/(tests)/LengthTest.cs +++ b/Cql/CqlToElmTests/(tests)/LengthTest.cs @@ -8,7 +8,7 @@ public class LengthTest : Base [TestMethod] public void LengthNullString() { - var library = CreateCqlApi().MakeLibraryFromExpression("Length(null as String)"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Length(null as String)"); var length = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(length, library); result.Should().BeNull(); diff --git a/Cql/CqlToElmTests/(tests)/LibraryTest.cs b/Cql/CqlToElmTests/(tests)/LibraryTest.cs index e89d15168..2d0fbaac6 100644 --- a/Cql/CqlToElmTests/(tests)/LibraryTest.cs +++ b/Cql/CqlToElmTests/(tests)/LibraryTest.cs @@ -10,9 +10,9 @@ public class LibraryTest : Base [TestMethod] public void Empty() { - Assert.ThrowsException(() => CreateCqlApi().MakeLibrary(string.Empty)); + Assert.ThrowsException(() => CreateCqlFluentToolkit().MakeLibrary(string.Empty)); var ms = new MemoryStream(); - Assert.ThrowsException(() => CreateCqlApi().GetCqlToElmConverter().ConvertLibrary(ms)); + Assert.ThrowsException(() => CreateCqlFluentToolkit().GetCqlToElmConverter().ConvertLibrary(ms)); } #region Identifier @@ -20,7 +20,7 @@ public void Empty() [TestMethod] public void Identifier_AllTerms_String() { - var library = CreateCqlApi().MakeLibrary("library String version '4.0.1'"); + var library = CreateCqlFluentToolkit().MakeLibrary("library String version '4.0.1'"); Assert.IsNotNull(library); Assert.IsNotNull(library.identifier); Assert.AreEqual("String", library.identifier.id); @@ -32,7 +32,7 @@ public void Identifier_AllTerms_String() [TestMethod] public void Identifier_AllTerms_Namespace() { - var library = CreateCqlApi().MakeLibrary("library Namespace.Lib version '4.0.1'"); + var library = CreateCqlFluentToolkit().MakeLibrary("library Namespace.Lib version '4.0.1'"); Assert.IsNotNull(library); Assert.IsNotNull(library.identifier); Assert.AreEqual("Lib", library.identifier.id); @@ -44,7 +44,7 @@ public void Identifier_AllTerms_Namespace() [TestMethod] public void Identifier_Id_Only() { - var library = CreateCqlApi().MakeLibrary("library Lib"); + var library = CreateCqlFluentToolkit().MakeLibrary("library Lib"); Assert.IsNotNull(library); Assert.IsNotNull(library.identifier); Assert.AreEqual("Lib", library.identifier.id); @@ -56,7 +56,7 @@ public void Identifier_Id_Only() [TestMethod] public void Identifier_Id_Namespace() { - var library = CreateCqlApi().MakeLibrary("library Namespace.Lib"); + var library = CreateCqlFluentToolkit().MakeLibrary("library Namespace.Lib"); Assert.IsNotNull(library); Assert.IsNotNull(library.identifier); Assert.AreEqual("Lib", library.identifier.id); @@ -78,7 +78,7 @@ public void Using_AllTerms() version = "1.0.0" }; - var library = CreateCqlApi(ModelInfos: [modelInfo], Models: []) + var library = CreateCqlFluentToolkit(ModelInfos: [modelInfo], Models: []) .MakeLibrary(""" library UsingTest version '1.0.0' @@ -103,7 +103,7 @@ public void Using_AllTerms_WithNamespace() version = "1.0.0" }; - var library = CreateCqlApi(ModelInfos: [modelInfo], Models: []) + var library = CreateCqlFluentToolkit(ModelInfos: [modelInfo], Models: []) .MakeLibrary(""" library UsingTest version '1.0.0' @@ -127,7 +127,7 @@ public void Using_NoVersion_LocalIdentifier() version = "1.0.0" }; - var library = CreateCqlApi(ModelInfos: [modelInfo], Models: []) + var library = CreateCqlFluentToolkit(ModelInfos: [modelInfo], Models: []) .MakeLibrary(""" library UsingTest version '1.0.0' @@ -151,7 +151,7 @@ public void Using_Version_NoIdentifier() version = "1.0.0" }; - var library = CreateCqlApi(ModelInfos: [modelInfo], Models: []) + var library = CreateCqlFluentToolkit(ModelInfos: [modelInfo], Models: []) .MakeLibrary(""" library UsingTest version '1.0.0' @@ -175,7 +175,7 @@ public void Using_NoVersion_NoIdentifier() version = "1.0.0" }; - var library = CreateCqlApi(ModelInfos: [modelInfo], Models: []) + var library = CreateCqlFluentToolkit(ModelInfos: [modelInfo], Models: []) .MakeLibrary(""" library UsingTest version '1.0.0' @@ -199,7 +199,7 @@ public void Using_Duplicate_System_NoLocalAlias() version = "1.0.0" }; - var library = CreateCqlApi(ModelInfos: [modelInfo], Models: []) + var library = CreateCqlFluentToolkit(ModelInfos: [modelInfo], Models: []) .MakeLibrary(""" library UsingTest version '1.0.0' @@ -220,7 +220,7 @@ library UsingTest version '1.0.0' [TestMethod] public void Include_AllTerms() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -237,7 +237,7 @@ include MyLibrary version '1.0.0' called Derp [TestMethod] public void Include_AllTerms_WithNamespace() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -254,7 +254,7 @@ include Namespace.MyLibrary version '1.0.0' called Derp [TestMethod] public void Include_NoVersion_LocalIdentifier() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -271,7 +271,7 @@ include Namespace.MyLibrary called Derp [TestMethod] public void Include_Version_NoIdentifier() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -293,7 +293,7 @@ include Namespace.MyLibrary version '1.0.0' [TestMethod] public void Include_NoVersion_NoIdentifier() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -319,7 +319,7 @@ include Namespace.MyLibrary [TestMethod] public void CodeSystem_AllTerms() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private codesystem Name: 'id' version 'version string' @@ -335,7 +335,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void CodeSystem_Without_Access_Modifier() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' codesystem Name: 'id' version 'version string' @@ -351,7 +351,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void CodeSystem_Without_Version() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private codesystem Name: 'id' @@ -367,7 +367,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void CodeSystem_Minimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' codesystem Name: 'id' @@ -383,7 +383,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void CodeSystems_Two() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private codesystem Name: 'id' version 'version string' @@ -410,7 +410,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_AllTerms_OneCodeSystems() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private valueset Name: 'id' version 'version string' codesystems { lib.cs1 } @@ -430,7 +430,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_AllTerms_EvenCodeSystems() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private valueset Name: 'id' version 'version string' codesystems { lib.cs1, cs2 } @@ -453,7 +453,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_AllTerms_OddCodeSystems() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private valueset Name: 'id' version 'version string' codesystems { lib.cs1, cs2, lib2.cs3 } @@ -477,7 +477,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_Without_Access_Modifier() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' valueset Name: 'id' version 'version string' @@ -493,7 +493,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_Without_Version() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private valueset Name: 'id' @@ -509,7 +509,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_Minimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' valueset Name: 'id' @@ -525,7 +525,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSets_Two() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private valueset Name: 'id' version 'version string' @@ -548,7 +548,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void ValueSet_CodeSystems_NoVersion() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' valueset Name: 'id' codesystems { lib.cs1, cs2, lib2.cs3 } @@ -576,7 +576,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Code_WithoutDisplay() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -595,7 +595,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Code_AccessModifier_WithoutDisplay() { - var library = CreateCqlApi() + var library = CreateCqlFluentToolkit() .MakeLibrary(""" library IncludeTest version '1.0.0' @@ -615,7 +615,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Code_WithDisplay() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' code Name: 'id' from lib.cs1 display 'Code display text' @@ -634,7 +634,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Code_AllTerms() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private code Name: 'id' from lib.cs1 display 'Code display text' @@ -657,7 +657,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Concept_AllTerms() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private concept Name: { lib.code1, code2, lib2.code3 } display 'My concept' @@ -683,7 +683,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Concept_NoDisplay() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' concept Name: { lib.code1 } @@ -703,7 +703,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Concept_Build() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' codesystem "SystemA": 'http://hl7.org' @@ -713,7 +713,7 @@ library IncludeTest version '1.0.0' private concept Name: { "code1", "code2", "code3" } display 'My concept' """); - _ = CreateElmApi().ProcessLibrary(library); + _ = CreateElmFluentToolkit().ProcessLibrary(library); } #endregion @@ -723,7 +723,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Paramter_AllTerms() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private parameter Name System.String default 'default value' @@ -739,7 +739,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Parameter_AllTermsWithCast() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private parameter Name System.Decimal default 1 @@ -754,7 +754,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Parameter_Default() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private parameter Name default 'default value' @@ -768,7 +768,7 @@ library IncludeTest version '1.0.0' [TestMethod] public void Parameter_Type() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private parameter Name System.String @@ -782,7 +782,7 @@ private parameter Name System.String [TestMethod] public void Parameter_None() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IncludeTest version '1.0.0' private parameter Name diff --git a/Cql/CqlToElmTests/(tests)/ListTest.cs b/Cql/CqlToElmTests/(tests)/ListTest.cs index ff4f955f4..368e722a7 100644 --- a/Cql/CqlToElmTests/(tests)/ListTest.cs +++ b/Cql/CqlToElmTests/(tests)/ListTest.cs @@ -10,7 +10,7 @@ public class ListTest : Base [TestMethod] public void Empty_List() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private Empty_List: { } @@ -30,7 +30,7 @@ library ListTest version '1.0.0' [TestMethod] public void List_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private List_Integer: { 1, 2, 3 } @@ -50,7 +50,7 @@ library ListTest version '1.0.0' [TestMethod] public void List_Mixed_ToQuantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private List_Mixed_ToQuantity: { 1, 2L, 3.0, 4.0 '1' } @@ -75,7 +75,7 @@ library ListTest version '1.0.0' [TestMethod] public void List_Mixed_ToDecimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private List_Mixed_ToDecimal: { 1, 2L, 3.0 } @@ -95,7 +95,7 @@ library ListTest version '1.0.0' [TestMethod] public void List_Mixed_ToLong() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private List_Mixed_ToLong: { 1, 2L } @@ -115,7 +115,7 @@ library ListTest version '1.0.0' [TestMethod] public void List_Mixed_Any() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private List_Mixed_Any: { 1, 'string' } @@ -136,7 +136,7 @@ library ListTest version '1.0.0' [TestMethod] public void List_Nulls() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private List_Nulls: { null, null } @@ -156,7 +156,7 @@ library ListTest version '1.0.0' [TestMethod] public void Take_Null_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("Take(null, 3)"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Take(null, 3)"); var slice = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var @as = slice.source.Should().BeOfType().Subject; @as.Should().HaveType(SystemTypes.AnyType.ToListType()); @@ -174,7 +174,7 @@ public void Take_Null_Integer() public void List_Tuple_Different_Orders() { // we order tuple types & their elements alphabetically even when not ordered that way in the CQL - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library ListTest version '1.0.0' define private l: { Tuple { b: 2, a: 1 }, Tuple { a: 1, b: 2 } } diff --git a/Cql/CqlToElmTests/(tests)/LiteralTest.cs b/Cql/CqlToElmTests/(tests)/LiteralTest.cs index 28d3c49e1..d6d213684 100644 --- a/Cql/CqlToElmTests/(tests)/LiteralTest.cs +++ b/Cql/CqlToElmTests/(tests)/LiteralTest.cs @@ -11,12 +11,12 @@ namespace Hl7.Cql.CqlToElm.Test public class LiteralTest : Base { - private static InvocationBuilder InvocationBuilder => CreateCqlApi().GetInvocationBuilder(); + private static InvocationBuilder InvocationBuilder => CreateCqlFluentToolkit().GetInvocationBuilder(); [TestMethod] public void String_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DecimalTest version '1.0.0' define private String_Literal: 'test' @@ -45,7 +45,7 @@ library DecimalTest version '1.0.0' [TestMethod] public void Decimal_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DecimalTest version '1.0.0' define private Decimal_Literal: 1.0 @@ -72,7 +72,7 @@ library DecimalTest version '1.0.0' [TestMethod] public void Decimal_Negative_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DecimalTest version '1.0.0' define private Decimal_Literal: -123.567 @@ -99,21 +99,21 @@ library DecimalTest version '1.0.0' [TestMethod] public void Decimal_Errors() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library Decimal_Errors_1 version '1.0.0' define private Decimal_Literal: 0.123456789 """, "Decimal literals cannot have a mantissa longer than 8 digits."); // exactly 28 digits - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library Decimal_Errors_2 version '1.0.0' define private Decimal_Literal: -12345678901234567890.12345678 """).ShouldSucceed(); // 29 digits - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library Decimal_Errors_3 version '1.0.0' define private Decimal_Literal: -123456789012345678901.12345678 @@ -128,7 +128,7 @@ library Decimal_Errors_3 version '1.0.0' [TestMethod] public void Integer_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntegerTest version '1.0.0' define private Integer_Literal: 1 @@ -155,7 +155,7 @@ library IntegerTest version '1.0.0' [TestMethod] public void Integer_Negative() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntegerTest version '1.0.0' define private Integer_Literal: -123456789 @@ -183,13 +183,13 @@ library IntegerTest version '1.0.0' public void Integer_Overflows() { // minimum long is -9,223,372,036,854,775,808 - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library Decimal_Errors_1 version '1.0.0' define private Overflow_Literal: -9223372036854775809 """, "Unparseable numeric literal*."); - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library Decimal_Errors_1 version '1.0.0' define private Overflow_Literal: 9223372036854775808 @@ -205,7 +205,7 @@ public void Long_Literal() { // max value of an int is 2,147,483,647 // this will be parsed as a long - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library LongTest version '1.0.0' define private Long_Literal: 2147483648L @@ -232,7 +232,7 @@ public void Long_Negative() { // max value of an int is 2,147,483,647 // this will be parsed as a long - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library LongTest version '1.0.0' define private Long_Literal: -2147483649L @@ -259,7 +259,7 @@ library LongTest version '1.0.0' public void Long_MinValue() { - var lib = CreateCqlApi().MakeLibraryFromExpression("-9223372036854775808L"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("-9223372036854775808L"); var literal = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(false); literal.Should().HaveType(SystemTypes.LongType); } @@ -271,7 +271,7 @@ public void Long_MinValue() [TestMethod] public void Boolean_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TrueTest version '1.0.0' define private True_Literal: true @@ -294,7 +294,7 @@ library TrueTest version '1.0.0' Assert.AreEqual("true", literal.value); } - library = CreateCqlApi().MakeLibrary(""" + library = CreateCqlFluentToolkit().MakeLibrary(""" library FalseTest version '1.0.0' define private False_Literal: false @@ -322,7 +322,7 @@ library FalseTest version '1.0.0' [TestMethod] public void Null_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library NullTest version '1.0.0' define private Null_Test: null @@ -350,7 +350,7 @@ library NullTest version '1.0.0' [TestMethod] public void Date_Literal_Day_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01-02 @@ -418,7 +418,7 @@ library DateTest version '1.0.0' [TestMethod] public void Date_Literal_Month_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01 @@ -473,7 +473,7 @@ library DateTest version '1.0.0' [TestMethod] public void Date_Literal_Year_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023 @@ -520,7 +520,7 @@ library DateTest version '1.0.0' [TestMethod] public void DateTime_Literal_Millisecond_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01-02T01:23:45.678+01:30 @@ -653,7 +653,7 @@ library DateTest version '1.0.0' [TestMethod] public void DateTime_Literal_Second_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01-02T01:23:45+01:30 @@ -774,7 +774,7 @@ library DateTest version '1.0.0' [TestMethod] public void DateTime_Literal_Minute_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01-02T01:23+01:30 @@ -883,7 +883,7 @@ library DateTest version '1.0.0' [TestMethod] public void DateTime_Literal_Hour_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01-02T01+01:30 @@ -980,7 +980,7 @@ library DateTest version '1.0.0' [TestMethod] public void DateTime_Literal_Hour_Precision_NoOffset() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DateTest version '1.0.0' define private Date_Literal: @2023-01-02T01 @@ -1065,7 +1065,7 @@ library DateTest version '1.0.0' [TestMethod] public void DateTime_Literal_T() { - var lib = CreateCqlApi().MakeLibraryFromExpression("@2016T"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("@2016T"); var dt = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var yearLiteral = dt.year.Should().BeOfType().Subject; yearLiteral.value.Should().Be("2016"); @@ -1075,7 +1075,7 @@ public void DateTime_Literal_T() [TestMethod] public void Time_Literal_Millisecond_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TimeTest version '1.0.0' define private Time_Literal: @T01:23:45.678 @@ -1157,7 +1157,7 @@ library TimeTest version '1.0.0' [TestMethod] public void Time_Literal_Second_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TimeTest version '1.0.0' define private Time_Literal: @T01:23:45 @@ -1223,7 +1223,7 @@ library TimeTest version '1.0.0' [TestMethod] public void Time_Literal_Minute_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TimeTest version '1.0.0' define private Time_Literal: @T01:23 @@ -1277,7 +1277,7 @@ library TimeTest version '1.0.0' [TestMethod] public void Time_Literal_Hour_Precision() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TimeTest version '1.0.0' define private Time_Literal: @T01 @@ -1323,7 +1323,7 @@ library TimeTest version '1.0.0' [TestMethod] public void Quantity_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 6.2 'gm/cm3' @@ -1345,7 +1345,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Year() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 6 year @@ -1367,7 +1367,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Years() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 6 years @@ -1389,7 +1389,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Month() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 1.245671213 month @@ -1411,7 +1411,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Months() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 1.245671213 months @@ -1433,7 +1433,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Day() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 0 day @@ -1455,7 +1455,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Days() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 0 days @@ -1477,7 +1477,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Hour() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 0.0 hour @@ -1499,7 +1499,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Hours() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 0.0 hours @@ -1521,7 +1521,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Minute() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 0.25 minute @@ -1543,7 +1543,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Minutes() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 0.25 minutes @@ -1565,7 +1565,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Second() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 1 second @@ -1588,7 +1588,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Seconds() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 1 seconds @@ -1610,7 +1610,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Millisecond() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 2000000 millisecond @@ -1632,7 +1632,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Quantity_Milliseconds() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library QuantityTest version '1.0.0' define private Quantity_Literal: 2000000 milliseconds @@ -1656,7 +1656,7 @@ library QuantityTest version '1.0.0' [TestMethod] public void Ratio_Literal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library RatioTest version '1.0.0' define private Ratio_Literal: 6 'gm' : 10 'cm3' @@ -1682,9 +1682,9 @@ library RatioTest version '1.0.0' [TestMethod] public void Ceiling_1D() { - var input = CreateCqlApi().MakeLibraryFromExpression("Ceiling(1.0)"); + var input = CreateCqlFluentToolkit().MakeLibraryFromExpression("Ceiling(1.0)"); var ceiling = input.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); - var output = CreateCqlApi().MakeLibraryFromExpression("1"); + var output = CreateCqlFluentToolkit().MakeLibraryFromExpression("1"); var literal = output.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); // var context = FhirCqlContext.ForBundle(); var equalsOverload = InvocationBuilder.MatchSignature(SystemLibrary.Equal, ceiling, literal); diff --git a/Cql/CqlToElmTests/(tests)/MeetsTest.cs b/Cql/CqlToElmTests/(tests)/MeetsTest.cs index 80c0a7d00..781b2370a 100644 --- a/Cql/CqlToElmTests/(tests)/MeetsTest.cs +++ b/Cql/CqlToElmTests/(tests)/MeetsTest.cs @@ -8,7 +8,7 @@ public class MeetsTest : Base [TestMethod] public void Meets() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library MeetsTest version '1.0.0' define private Meets: Interval[6, 10] meets Interval[0, 5] @@ -37,7 +37,7 @@ library MeetsTest version '1.0.0' [TestMethod] public void Meets_Before() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library MeetsTest version '1.0.0' define private Meets_Before: Interval[-5, -1] meets before Interval[0, 5] @@ -66,7 +66,7 @@ library MeetsTest version '1.0.0' [TestMethod] public void Meets_After() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library MeetsTest version '1.0.0' define private Meets_After: Interval[6, 10] meets after Interval[0, 7] @@ -95,7 +95,7 @@ library MeetsTest version '1.0.0' [TestMethod] public void Meets_Is_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library MeetsTest version '1.0.0' define private Meets_Is_Null: Interval[6, 10] meets (null as Interval) @@ -123,7 +123,7 @@ library MeetsTest version '1.0.0' [TestMethod] public void Meets_After_Day() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library MeetsTest version '1.0.0' define private Meets_After_Day: Interval[@2023-03-01, @2023-06-01] meets after month of Interval[@2023-01-01, @2023-03-01] @@ -152,7 +152,7 @@ library MeetsTest version '1.0.0' [TestMethod] public void Meets_Day() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library MeetsTest version '1.0.0' define private Meets_Day: Interval[@2023-01-01, @2023-06-01] meets month of Interval[@2023-07-01, @2023-10-01] @@ -181,7 +181,7 @@ library MeetsTest version '1.0.0' [TestMethod] public void Meets_After_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval(null, 5] meets after Interval[11, null)"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval(null, 5] meets after Interval[11, null)"); var meetsAfter = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(meetsAfter, library); result.Should().BeFalse(); diff --git a/Cql/CqlToElmTests/(tests)/ModelTest.cs b/Cql/CqlToElmTests/(tests)/ModelTest.cs index 674f4dd69..67bec063d 100644 --- a/Cql/CqlToElmTests/(tests)/ModelTest.cs +++ b/Cql/CqlToElmTests/(tests)/ModelTest.cs @@ -8,7 +8,7 @@ public class ModelTest : Base [TestMethod] public void Quantity_Is_Ambiguous() { - var cqlApi = CreateCqlApi(AmbiguousTypeBehavior: AmbiguousTypeBehavior.Error); + var cqlApi = CreateCqlFluentToolkit(AmbiguousTypeBehavior: AmbiguousTypeBehavior.Error); var lib = cqlApi.MakeLibrary(""" library Test version '1.0.0' @@ -23,7 +23,7 @@ define function f(q Quantity): q [TestMethod] public void Quantity_Prefer_System() { - var cqlApi = CreateCqlApi(AmbiguousTypeBehavior: AmbiguousTypeBehavior.PreferSystem); + var cqlApi = CreateCqlFluentToolkit(AmbiguousTypeBehavior: AmbiguousTypeBehavior.PreferSystem); var lib = cqlApi.MakeLibrary(""" library Test version '1.0.0' @@ -38,7 +38,7 @@ define function f(q Quantity): q [TestMethod] public void Quantity_Prefer_Model() { - var cqlApi = CreateCqlApi(AmbiguousTypeBehavior: AmbiguousTypeBehavior.PreferModel); + var cqlApi = CreateCqlFluentToolkit(AmbiguousTypeBehavior: AmbiguousTypeBehavior.PreferModel); var lib = cqlApi.MakeLibrary(""" library Test version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/ModuloTest.cs b/Cql/CqlToElmTests/(tests)/ModuloTest.cs index a7841d051..91ee580d9 100644 --- a/Cql/CqlToElmTests/(tests)/ModuloTest.cs +++ b/Cql/CqlToElmTests/(tests)/ModuloTest.cs @@ -13,7 +13,7 @@ public class ModuloTest : Base [TestMethod] public void Modulo_Integer_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Integer_by_Integer version '1.0.0' define private Modulo_Integer_by_Integer: 4 mod 2 @@ -58,7 +58,7 @@ library Modulo_Integer_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(int?)); @@ -69,7 +69,7 @@ library Modulo_Integer_by_Integer version '1.0.0' [TestMethod] public void Modulo_Integer_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Integer_by_Long version '1.0.0' define private Modulo_Integer_by_Long: 3 mod 2L @@ -114,7 +114,7 @@ library Modulo_Integer_by_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -125,7 +125,7 @@ library Modulo_Integer_by_Long version '1.0.0' [TestMethod] public void Modulo_Integer_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Integer_by_Decimal version '1.0.0' define private Modulo_Integer_by_Decimal: 3 mod 2.0 @@ -170,7 +170,7 @@ library Modulo_Integer_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -181,7 +181,7 @@ library Modulo_Integer_by_Decimal version '1.0.0' [TestMethod] public void Modulo_Integer_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Integer_by_Quantity version '1.0.0' define private Modulo_Integer_by_Quantity: 10 mod 6.0 '1' @@ -226,7 +226,7 @@ library Modulo_Integer_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -241,7 +241,7 @@ library Modulo_Integer_by_Quantity version '1.0.0' [TestMethod] public void Modulo_Integer_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Integer_by_Null version '1.0.0' define private Modulo_Integer_by_Null: 1 mod null @@ -285,7 +285,7 @@ library Modulo_Integer_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -295,7 +295,7 @@ library Modulo_Integer_by_Null version '1.0.0' [TestMethod] public void Modulo_Null_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Null_by_Integer version '1.0.0' define private Modulo_Null_by_Integer: null mod 1 @@ -339,7 +339,7 @@ library Modulo_Null_by_Integer version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -353,7 +353,7 @@ library Modulo_Null_by_Integer version '1.0.0' [TestMethod] public void Modulo_Long_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Long_by_Integer version '1.0.0' define private Modulo_Long_by_Integer: 10L mod 2 @@ -398,7 +398,7 @@ library Modulo_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -409,7 +409,7 @@ library Modulo_Long_by_Integer version '1.0.0' [TestMethod] public void Modulo_Long_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Long_by_Long version '1.0.0' define private Modulo_Long_by_Long: 100L mod 9L @@ -454,7 +454,7 @@ library Modulo_Long_by_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -465,7 +465,7 @@ library Modulo_Long_by_Long version '1.0.0' [TestMethod] public void Modulo_Long_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Long_by_Decimal version '1.0.0' define private Modulo_Long_by_Decimal: -3L mod 2.0 @@ -510,7 +510,7 @@ library Modulo_Long_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -521,7 +521,7 @@ library Modulo_Long_by_Decimal version '1.0.0' [TestMethod] public void Modulo_Long_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Long_by_Quantity version '1.0.0' define private Modulo_Long_by_Quantity: 20L mod 3.0 '1' @@ -566,7 +566,7 @@ library Modulo_Long_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -580,7 +580,7 @@ library Modulo_Long_by_Quantity version '1.0.0' [TestMethod] public void Modulo_Long_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Long_by_Null version '1.0.0' define private Modulo_Long_by_Null: 1L mod null @@ -624,7 +624,7 @@ library Modulo_Long_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -634,7 +634,7 @@ library Modulo_Long_by_Null version '1.0.0' [TestMethod] public void Modulo_Null_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Null_by_Long version '1.0.0' define private Modulo_Null_by_Long: null mod 1L @@ -678,7 +678,7 @@ library Modulo_Null_by_Long version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -692,7 +692,7 @@ library Modulo_Null_by_Long version '1.0.0' [TestMethod] public void Modulo_Decimal_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Decimal_by_Integer version '1.0.0' define private Modulo_Decimal_by_Integer: 0.0 mod 3 @@ -737,7 +737,7 @@ library Modulo_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -748,7 +748,7 @@ library Modulo_Decimal_by_Integer version '1.0.0' [TestMethod] public void Modulo_Decimal_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DefaultConverter version '1.0.0' define private DefaultConverter: 5.0 mod 2L @@ -793,7 +793,7 @@ library DefaultConverter version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -804,7 +804,7 @@ library DefaultConverter version '1.0.0' [TestMethod] public void Modulo_Decimal_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Decimal_by_Decimal version '1.0.0' define private Modulo_Decimal_by_Decimal: 10.0 mod 3.0 @@ -849,7 +849,7 @@ library Modulo_Decimal_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -860,7 +860,7 @@ library Modulo_Decimal_by_Decimal version '1.0.0' [TestMethod] public void Modulo_Decimal_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Decimal_by_Quantity version '1.0.0' define private Modulo_Decimal_by_Quantity: 3.0 mod 2.0 '1' @@ -905,7 +905,7 @@ library Modulo_Decimal_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -919,7 +919,7 @@ library Modulo_Decimal_by_Quantity version '1.0.0' [TestMethod] public void Modulo_Decimal_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Decimal_by_Null version '1.0.0' define private Modulo_Decimal_by_Null: 1.0 mod null @@ -963,7 +963,7 @@ library Modulo_Decimal_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -973,7 +973,7 @@ library Modulo_Decimal_by_Null version '1.0.0' [TestMethod] public void Modulo_Null_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Null_by_Decimal version '1.0.0' define private Modulo_Null_by_Decimal: null mod 1.0 @@ -1017,7 +1017,7 @@ library Modulo_Null_by_Decimal version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -1031,7 +1031,7 @@ library Modulo_Null_by_Decimal version '1.0.0' [TestMethod] public void Modulo_Quantity_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Quantity_by_Quantity version '1.0.0' define private Modulo_Quantity_by_Quantity: 3.0 '1' mod 2.0 '1' @@ -1076,7 +1076,7 @@ library Modulo_Quantity_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1090,7 +1090,7 @@ library Modulo_Quantity_by_Quantity version '1.0.0' [TestMethod] public void Modulo_Quantity_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Quantity_by_Null version '1.0.0' define private Modulo_Quantity_by_Null: 3.0 '1' mod null @@ -1135,7 +1135,7 @@ library Modulo_Quantity_by_Null version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1145,7 +1145,7 @@ library Modulo_Quantity_by_Null version '1.0.0' [TestMethod] public void Modulo_Null_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Modulo_Null_by_Quantity version '1.0.0' define private Modulo_Null_by_Quantity: null mod 3.0 '1' @@ -1190,7 +1190,7 @@ library Modulo_Null_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(modulo); + var lambda = CreateElmFluentToolkit().Lambda(modulo); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); diff --git a/Cql/CqlToElmTests/(tests)/MultiplicationTest.cs b/Cql/CqlToElmTests/(tests)/MultiplicationTest.cs index 513d30f33..673a13391 100644 --- a/Cql/CqlToElmTests/(tests)/MultiplicationTest.cs +++ b/Cql/CqlToElmTests/(tests)/MultiplicationTest.cs @@ -13,7 +13,7 @@ public class MultiplicationTest : Base [TestMethod] public void Multiply_Integer_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_to_Integer version '1.0.0' define private Multiply_Integer_to_Integer: 2 * 3 @@ -58,7 +58,7 @@ library Multiply_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(int?)); @@ -69,7 +69,7 @@ library Multiply_Integer_to_Integer version '1.0.0' [TestMethod] public void Multiply_Integer_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_to_Integer version '1.0.0' define private Multiply_Integer_to_Integer: 2 * 3L @@ -114,7 +114,7 @@ library Multiply_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -125,7 +125,7 @@ library Multiply_Integer_to_Integer version '1.0.0' [TestMethod] public void Multiply_Integer_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_to_Integer version '1.0.0' define private Multiply_Integer_to_Integer: 2 * 3.0 @@ -170,7 +170,7 @@ library Multiply_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -181,7 +181,7 @@ library Multiply_Integer_to_Integer version '1.0.0' [TestMethod] public void Multiply_Integer_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Quantity version '1.0.0' define private Multiply_Integer_by_Quantity: 2 * 3.0 '1' @@ -226,7 +226,7 @@ library Multiply_Integer_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -241,7 +241,7 @@ library Multiply_Integer_by_Quantity version '1.0.0' [TestMethod] public void Multiply_Integer_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Null version '1.0.0' define private Product: 1 * null @@ -285,7 +285,7 @@ library Multiply_Integer_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -295,7 +295,7 @@ library Multiply_Integer_by_Null version '1.0.0' [TestMethod] public void Multiply_Null_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Null version '1.0.0' define private Product: null * 1 @@ -339,7 +339,7 @@ library Multiply_Integer_by_Null version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -353,7 +353,7 @@ library Multiply_Integer_by_Null version '1.0.0' [TestMethod] public void Multiply_Long_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Long_by_Integer version '1.0.0' define private Multiply_Integer_to_Integer: -2L * 3 @@ -398,7 +398,7 @@ library Multiply_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -409,7 +409,7 @@ library Multiply_Long_by_Integer version '1.0.0' [TestMethod] public void Multiply_Long_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Long_by_Integer version '1.0.0' define private Multiply_Integer_to_Integer: -2L * 3L @@ -454,7 +454,7 @@ library Multiply_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -465,7 +465,7 @@ library Multiply_Long_by_Integer version '1.0.0' [TestMethod] public void Multiply_Long_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Long_by_Integer version '1.0.0' define private Multiply_Integer_to_Integer: -2L * 3.0 @@ -510,7 +510,7 @@ library Multiply_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -521,7 +521,7 @@ library Multiply_Long_by_Integer version '1.0.0' [TestMethod] public void Multiply_Long_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Quantity version '1.0.0' define private Multiply_Integer_by_Quantity: 2L * 3.0 '1' @@ -566,7 +566,7 @@ library Multiply_Integer_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -580,7 +580,7 @@ library Multiply_Integer_by_Quantity version '1.0.0' [TestMethod] public void Multiply_Long_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Long_by_Null version '1.0.0' define private Product: 1L * null @@ -624,7 +624,7 @@ library Multiply_Long_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -634,7 +634,7 @@ library Multiply_Long_by_Null version '1.0.0' [TestMethod] public void Multiply_Null_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Null version '1.0.0' define private Product: null * 1L @@ -678,7 +678,7 @@ library Multiply_Integer_by_Null version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -692,7 +692,7 @@ library Multiply_Integer_by_Null version '1.0.0' [TestMethod] public void Multiply_Decimal_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Decimal_by_Integer version '1.0.0' define private Multiply_Integer_to_Integer: 0.0 * 3 @@ -737,7 +737,7 @@ library Multiply_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -748,7 +748,7 @@ library Multiply_Decimal_by_Integer version '1.0.0' [TestMethod] public void Multiply_Decimal_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Decimal_by_Integer version '1.0.0' define private Multiply_Integer_to_Integer: 5.0 * 5L @@ -793,7 +793,7 @@ library Multiply_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -804,7 +804,7 @@ library Multiply_Decimal_by_Integer version '1.0.0' [TestMethod] public void Multiply_Decimal_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Decimal_by_Integer version '1.0.0' define private Multiply_Integer_to_Integer: -10.0 * 10.0 @@ -849,7 +849,7 @@ library Multiply_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -860,7 +860,7 @@ library Multiply_Decimal_by_Integer version '1.0.0' [TestMethod] public void Multiply_Decimal_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Quantity version '1.0.0' define private Multiply_Integer_by_Quantity: 2.0 * 3.0 '1' @@ -905,7 +905,7 @@ library Multiply_Integer_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -919,7 +919,7 @@ library Multiply_Integer_by_Quantity version '1.0.0' [TestMethod] public void Multiply_Decimal_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Decimal_by_Null version '1.0.0' define private Product: 1.0 * null @@ -963,7 +963,7 @@ library Multiply_Decimal_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -973,7 +973,7 @@ library Multiply_Decimal_by_Null version '1.0.0' [TestMethod] public void Multiply_Null_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Integer_by_Null version '1.0.0' define private Product: null * 1.0 @@ -1017,7 +1017,7 @@ library Multiply_Integer_by_Null version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -1031,7 +1031,7 @@ library Multiply_Integer_by_Null version '1.0.0' [TestMethod] public void Multiply_Quantity_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Quantity_by_Quantity version '1.0.0' define private Multiply_Quantity_by_Quantity: 3.0 '1' * 2.0 '1' @@ -1076,7 +1076,7 @@ library Multiply_Quantity_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1090,7 +1090,7 @@ library Multiply_Quantity_by_Quantity version '1.0.0' [TestMethod] public void Multiply_Quantity_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Quantity_by_Null version '1.0.0' define private Multiply_Quantity_by_Null: 3.0 '1' * null @@ -1135,7 +1135,7 @@ library Multiply_Quantity_by_Null version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1145,7 +1145,7 @@ library Multiply_Quantity_by_Null version '1.0.0' [TestMethod] public void Multiply_Null_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Multiply_Null_by_Quantity version '1.0.0' define private Multiply_Null_by_Quantity: null * 3.0 '1' @@ -1190,7 +1190,7 @@ library Multiply_Null_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(multiply); + var lambda = CreateElmFluentToolkit().Lambda(multiply); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); diff --git a/Cql/CqlToElmTests/(tests)/NotEqualTest.cs b/Cql/CqlToElmTests/(tests)/NotEqualTest.cs index 2999a5577..d60939aea 100644 --- a/Cql/CqlToElmTests/(tests)/NotEqualTest.cs +++ b/Cql/CqlToElmTests/(tests)/NotEqualTest.cs @@ -11,7 +11,7 @@ public class NotEqualTest : Base [TestMethod] public void Integer_NotEquals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquals_Integer: 1 != 2 @@ -56,7 +56,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -67,7 +67,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquals_Integer_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquals_Integer_False: 1 != 1 @@ -112,7 +112,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -123,7 +123,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquals_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquals_Long: 1 != 2L @@ -168,7 +168,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -179,7 +179,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquals_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquals_Decimal_False: 1 != 1.0 @@ -224,7 +224,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -236,7 +236,7 @@ library EqualsTest version '1.0.0' public void Integer_NotEquals_Quantity() { // 1 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquals_Quantity: 1 != 2.0 'g' @@ -281,7 +281,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -292,7 +292,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquals_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquals_Quantity_False: 1 != 1.0 '1' @@ -337,7 +337,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -348,7 +348,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1 != null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1 != null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -356,7 +356,7 @@ public void Integer_NotEquals_Null() [TestMethod] public void Null_NotEquals_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("null != 1"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null != 1"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -368,7 +368,7 @@ public void Null_NotEquals_Integer() [TestMethod] public void Long_NotEquals_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquals_Long: 1L != 2L @@ -413,7 +413,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -424,7 +424,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquals_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquals_Long_False: 1L != 1L @@ -469,7 +469,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -480,7 +480,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquals_Long: 1L != 2 @@ -525,7 +525,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -536,7 +536,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquals_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_DoesNotEqual_Decimal: 1L != 1.0 @@ -581,7 +581,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -593,7 +593,7 @@ library EqualsTest version '1.0.0' public void Long_NotEquals_Quantity() { // 1L converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquals_Quantity: 1L != 2.0 'g' @@ -638,7 +638,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -649,7 +649,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_DoesNotEqual_Quantity: 1L != 1.0 '1' @@ -694,7 +694,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -705,7 +705,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1L != null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1L != null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -713,7 +713,7 @@ public void Long_NotEquals_Null() [TestMethod] public void Null_NotEquals_Long() { - var library = CreateCqlApi().MakeLibraryFromExpression("null != 1L"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null != 1L"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -725,7 +725,7 @@ public void Null_NotEquals_Long() [TestMethod] public void Decimal_NotEquals_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquals_Decimal: 1.0 != 2.0 @@ -770,7 +770,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -781,7 +781,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquals_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquals_Decimal_False: 1.0 != 1.0 @@ -826,7 +826,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -837,7 +837,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquals_Decimal: 1.0 != 2 @@ -882,7 +882,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -893,7 +893,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquals_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_DoesNotEqual_Decimal: 2.0 != 2L @@ -938,7 +938,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -950,7 +950,7 @@ library EqualsTest version '1.0.0' public void Decimal_NotEquals_Quantity() { // 1.0 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquals_Quantity: 1.0 != 2.0 'g' @@ -995,7 +995,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1006,7 +1006,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_DoesNotEqual_Quantity: 1.0 != 1.0 '1' @@ -1051,7 +1051,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1062,7 +1062,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 != null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 != null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1070,7 +1070,7 @@ public void Decimal_NotEquals_Null() [TestMethod] public void Null_NotEquals_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("null != 1.0"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null != 1.0"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); @@ -1083,7 +1083,7 @@ public void Null_NotEquals_Decimal() [TestMethod] public void Quantity_NotEquals_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquals_Quantity: 1.0 '1' != 1.01 '1' @@ -1128,7 +1128,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1139,7 +1139,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquals_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquals_Quantity_False: 1.0 '1' != 1.0 '1' @@ -1184,7 +1184,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1195,7 +1195,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquals_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquals_Quantity: 1.0 '1' != 2 @@ -1240,7 +1240,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1251,7 +1251,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquals_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_DoesNotEqual_Quantity: 2.0 '1' != 2L @@ -1296,7 +1296,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1308,7 +1308,7 @@ library EqualsTest version '1.0.0' public void Quantity_NotEquals_Decimal() { // 1.0 converts to 1.0 '1' and '1' units are equal to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquals_Decimal: 1.0 'g' != 2.0 @@ -1353,7 +1353,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1364,7 +1364,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_DoesNotEqual_Quantity: 1.0 != 1.0 '1' @@ -1409,7 +1409,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1420,7 +1420,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 '1' != null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 '1' != null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1428,7 +1428,7 @@ public void Quantity_NotEquals_Null() [TestMethod] public void Null_NotEquals_Quantity() { - var library = CreateCqlApi().MakeLibraryFromExpression("null != 1.0 '1'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null != 1.0 '1'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1439,7 +1439,7 @@ public void Null_NotEquals_Quantity() [TestMethod] public void String_NotEquals_String() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private String_NotEquals_String: 'hello' != 'world' @@ -1484,7 +1484,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}String", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(equal); + var lambda = CreateElmFluentToolkit().Lambda(equal); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1495,7 +1495,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void String_NotEquals_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("'hello' != null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("'hello' != null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1503,7 +1503,7 @@ public void String_NotEquals_Null() [TestMethod] public void Null_NotEquals_String() { - var library = CreateCqlApi().MakeLibraryFromExpression("null != 'hello'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null != 'hello'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertNullResult(equal); } @@ -1511,7 +1511,7 @@ public void Null_NotEquals_String() [TestMethod] public void Tuple_Equal_Tuple_Null_Equals_NotNull() { - var lib = CreateCqlApi().MakeLibraryFromExpression("{ x: 1, y: null } = { x: 1, y: 2 }"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("{ x: 1, y: null } = { x: 1, y: 2 }"); var equal = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var eq = Run(equal, lib); eq.Should().BeNull(); @@ -1520,7 +1520,7 @@ public void Tuple_Equal_Tuple_Null_Equals_NotNull() [TestMethod] public void Tuple_Equal_Tuple_Null_Equals_Null() { - var lib = CreateCqlApi().MakeLibraryFromExpression("{ x: 1, y: null } = { x: 1, y: null }"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("{ x: 1, y: null } = { x: 1, y: null }"); var equal = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var eq = Run(equal, lib); eq.Should().BeTrue(); diff --git a/Cql/CqlToElmTests/(tests)/NotEquivalentTest.cs b/Cql/CqlToElmTests/(tests)/NotEquivalentTest.cs index 75177ba40..1b952b9ba 100644 --- a/Cql/CqlToElmTests/(tests)/NotEquivalentTest.cs +++ b/Cql/CqlToElmTests/(tests)/NotEquivalentTest.cs @@ -11,7 +11,7 @@ public class NotEquivalentTest : Base [TestMethod] public void Integer_NotEquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquivalentTo_Integer: 1 !~ 2 @@ -58,7 +58,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -69,7 +69,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquivalentTo_Integer_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquivalentTo_Integer_False: 1 !~ 1 @@ -116,7 +116,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -127,7 +127,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquivalentTo_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquivalentTo_Long: 1 !~ 2L @@ -173,7 +173,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -184,7 +184,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquivalentTo_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquivalentTo_Decimal_False: 1 !~ 1.0 @@ -230,7 +230,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -242,7 +242,7 @@ library EqualsTest version '1.0.0' public void Integer_NotEquivalentTo_Quantity() { // 1 converts to 1.0 '1' and '1' units are equivalent to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquivalentTo_Quantity: 1 !~ 2.0 'g' @@ -288,7 +288,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -299,7 +299,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquivalentTo_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Integer_NotEquivalentTo_Quantity_False: 1 !~ 1.0 '1' @@ -345,7 +345,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -356,7 +356,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Integer_NotEquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1 !~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1 !~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -364,7 +364,7 @@ public void Integer_NotEquivalentTo_Null() [TestMethod] public void Null_NotEquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibraryFromExpression("null !~ 1"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null !~ 1"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -376,7 +376,7 @@ public void Null_NotEquivalentTo_Integer() [TestMethod] public void Long_NotEquivalentTo_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquivalentTo_Long: 1L !~ 2L @@ -424,7 +424,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -435,7 +435,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquivalentTo_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquivalentTo_Long_False: 1L !~ 1L @@ -482,7 +482,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -493,7 +493,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquivalentTo_Long: 1L !~ 2 @@ -540,7 +540,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -551,7 +551,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquivalentTo_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_DoesNotEqual_Decimal: 1L !~ 1.0 @@ -598,7 +598,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -610,7 +610,7 @@ library EqualsTest version '1.0.0' public void Long_NotEquivalentTo_Quantity() { // 1L converts to 1.0 '1' and '1' units are equivalent to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_NotEquivalentTo_Quantity: 1L !~ 2.0 'g' @@ -656,7 +656,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -667,7 +667,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Long_DoesNotEqual_Quantity: 1L !~ 1.0 '1' @@ -713,7 +713,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -724,7 +724,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Long_NotEquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1L !~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1L !~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -732,7 +732,7 @@ public void Long_NotEquivalentTo_Null() [TestMethod] public void Null_NotEquivalentTo_Long() { - var library = CreateCqlApi().MakeLibraryFromExpression("null !~ 1L"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null !~ 1L"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -744,7 +744,7 @@ public void Null_NotEquivalentTo_Long() [TestMethod] public void Decimal_NotEquivalentTo_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquivalentTo_Decimal: 1.0 !~ 2.0 @@ -791,7 +791,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -802,7 +802,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquivalentTo_Decimal_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquivalentTo_Decimal_False: 1.0 !~ 1.0 @@ -849,7 +849,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -860,7 +860,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquivalentTo_Decimal: 1.0 !~ 2 @@ -907,7 +907,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -918,7 +918,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquivalentTo_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_DoesNotEqual_Decimal: 2.0 !~ 2L @@ -965,7 +965,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -977,7 +977,7 @@ library EqualsTest version '1.0.0' public void Decimal_NotEquivalentTo_Quantity() { // 1.0 converts to 1.0 '1' and '1' units are equivalent to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_NotEquivalentTo_Quantity: 1.0 !~ 2.0 'g' @@ -1024,7 +1024,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1035,7 +1035,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Decimal_DoesNotEqual_Quantity: 1.0 !~ 1.0 '1' @@ -1082,7 +1082,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1093,7 +1093,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Decimal_NotEquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 !~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 !~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -1101,7 +1101,7 @@ public void Decimal_NotEquivalentTo_Null() [TestMethod] public void Null_NotEquivalentTo_Decimal() { - var library = CreateCqlApi().MakeLibraryFromExpression("null !~ 1.0"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null !~ 1.0"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -1113,7 +1113,7 @@ public void Null_NotEquivalentTo_Decimal() [TestMethod] public void Quantity_NotEquivalentTo_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquivalentTo_Quantity: 1.0 '1' !~ 2 '1' @@ -1160,7 +1160,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1171,7 +1171,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquivalentTo_Quantity_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquivalentTo_Quantity_False: 1.0 '1' !~ 1.0 '1' @@ -1218,7 +1218,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1229,7 +1229,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquivalentTo_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquivalentTo_Quantity: 1.0 '1' !~ 2 @@ -1276,7 +1276,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1287,7 +1287,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquivalentTo_Long_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_DoesNotEqual_Quantity: 2.0 '1' !~ 2L @@ -1334,7 +1334,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1346,7 +1346,7 @@ library EqualsTest version '1.0.0' public void Quantity_NotEquivalentTo_Decimal() { // 1.0 converts to 1.0 '1' and '1' units are equivalent to all units - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_NotEquivalentTo_Decimal: 1.0 'g' !~ 2.0 @@ -1393,7 +1393,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1404,7 +1404,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_DoesNotEqual_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private Quantity_DoesNotEqual_Quantity: 1.0 !~ 1.0 '1' @@ -1451,7 +1451,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1462,7 +1462,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void Quantity_NotEquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("1.0 '1' !~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("1.0 '1' !~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -1470,7 +1470,7 @@ public void Quantity_NotEquivalentTo_Null() [TestMethod] public void Null_NotEquivalentTo_Quantity() { - var library = CreateCqlApi().MakeLibraryFromExpression("null !~ 1.0 '1'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null !~ 1.0 '1'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -1481,7 +1481,7 @@ public void Null_NotEquivalentTo_Quantity() [TestMethod] public void String_NotEquivalentTo_String() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EqualsTest version '1.0.0' define private String_NotEquivalentTo_String: 'hello' !~ 'world' @@ -1528,7 +1528,7 @@ library EqualsTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}String", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -1539,7 +1539,7 @@ library EqualsTest version '1.0.0' [TestMethod] public void String_NotEquivalentTo_Null() { - var library = CreateCqlApi().MakeLibraryFromExpression("'hello' !~ null"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("'hello' !~ null"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } @@ -1547,7 +1547,7 @@ public void String_NotEquivalentTo_Null() [TestMethod] public void Null_NotEquivalentTo_String() { - var library = CreateCqlApi().MakeLibraryFromExpression("null !~ 'hello'"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("null !~ 'hello'"); var equal = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); AssertResult(equal, true); } diff --git a/Cql/CqlToElmTests/(tests)/NotTest.cs b/Cql/CqlToElmTests/(tests)/NotTest.cs index 8fd9554a8..81994116f 100644 --- a/Cql/CqlToElmTests/(tests)/NotTest.cs +++ b/Cql/CqlToElmTests/(tests)/NotTest.cs @@ -9,7 +9,7 @@ public class NotTest : Base [TestMethod] public void Not_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library NotTest version '1.0.0' define private Not_True: not true @@ -44,7 +44,7 @@ library NotTest version '1.0.0' } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -55,7 +55,7 @@ library NotTest version '1.0.0' [TestMethod] public void Not_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library NotTest version '1.0.0' define private Not_False: not false @@ -89,7 +89,7 @@ library NotTest version '1.0.0' } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -100,7 +100,7 @@ library NotTest version '1.0.0' [TestMethod] public void Not_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library NotTest version '1.0.0' define private Not_Null: not null @@ -134,7 +134,7 @@ library NotTest version '1.0.0' } - var lambda = CreateElmApi().Lambda(not); + var lambda = CreateElmFluentToolkit().Lambda(not); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -143,7 +143,7 @@ library NotTest version '1.0.0' [TestMethod] public void Not_1() => - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library NotTest version '1.0.0' define private Not_1: not 1 diff --git a/Cql/CqlToElmTests/(tests)/OrTest.cs b/Cql/CqlToElmTests/(tests)/OrTest.cs index 93f280719..6937b140e 100644 --- a/Cql/CqlToElmTests/(tests)/OrTest.cs +++ b/Cql/CqlToElmTests/(tests)/OrTest.cs @@ -9,7 +9,7 @@ public class OrTest : Base [TestMethod] public void True_Or_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private True_Or_False: true or false @@ -54,7 +54,7 @@ library OrTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(or); + var lambda = CreateElmFluentToolkit().Lambda(or); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -65,7 +65,7 @@ library OrTest version '1.0.0' [TestMethod] public void True_Or_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private True_Or_True: true or true @@ -110,7 +110,7 @@ library OrTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(or); + var lambda = CreateElmFluentToolkit().Lambda(or); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -121,7 +121,7 @@ library OrTest version '1.0.0' [TestMethod] public void False_Or_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private False_Or_False: false or false @@ -166,7 +166,7 @@ library OrTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(or); + var lambda = CreateElmFluentToolkit().Lambda(or); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -177,7 +177,7 @@ library OrTest version '1.0.0' [TestMethod] public void True_Or_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private True_Or_Null: true or null @@ -222,7 +222,7 @@ library OrTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(or); + var lambda = CreateElmFluentToolkit().Lambda(or); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -233,7 +233,7 @@ library OrTest version '1.0.0' [TestMethod] public void Null_Or_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private Null_Or_False: null or false @@ -278,7 +278,7 @@ library OrTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(or); + var lambda = CreateElmFluentToolkit().Lambda(or); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -289,7 +289,7 @@ library OrTest version '1.0.0' [TestMethod] public void Null_Or_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private Null_Or_Null: null or null @@ -334,7 +334,7 @@ library OrTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(or); + var lambda = CreateElmFluentToolkit().Lambda(or); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -344,7 +344,7 @@ library OrTest version '1.0.0' [TestMethod] public void True_Or_1() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library OrTest version '1.0.0' define private True_Or_1: true or 1 diff --git a/Cql/CqlToElmTests/(tests)/OrderingTest.cs b/Cql/CqlToElmTests/(tests)/OrderingTest.cs index 5b3a90c39..18cf01e4f 100644 --- a/Cql/CqlToElmTests/(tests)/OrderingTest.cs +++ b/Cql/CqlToElmTests/(tests)/OrderingTest.cs @@ -8,7 +8,7 @@ public class OrderingTest : Base [TestMethod] public void Order_Simple() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Test version '1.0.0' define a: b define b: true """); @@ -20,7 +20,7 @@ public void Order_Simple() [TestMethod] public void Order_Indirection_2() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Test version '1.0.0' define a: b define b: c define c: true @@ -34,7 +34,7 @@ public void Order_Indirection_2() [TestMethod] public void Function_Simple() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Test version '1.0.0' define a: b() define function b(): true """); @@ -45,7 +45,7 @@ define function b(): true [TestMethod] public void Function_Indirection_2() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Test version '1.0.0' define a: b() define function b(): c() define function c(): true diff --git a/Cql/CqlToElmTests/(tests)/OverlapsTest.cs b/Cql/CqlToElmTests/(tests)/OverlapsTest.cs index abced2c1c..ac30ada60 100644 --- a/Cql/CqlToElmTests/(tests)/OverlapsTest.cs +++ b/Cql/CqlToElmTests/(tests)/OverlapsTest.cs @@ -8,7 +8,7 @@ public class OverlapsTest : Base [TestMethod] public void Overlaps() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OverlapsTest version '1.0.0' define private Overlaps: Interval[0, 4] overlaps Interval[1, 4] @@ -37,7 +37,7 @@ library OverlapsTest version '1.0.0' [TestMethod] public void Overlaps_Before() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OverlapsTest version '1.0.0' define private Overlaps_Before: Interval[0, 4] overlaps before Interval[1, 4] @@ -66,7 +66,7 @@ library OverlapsTest version '1.0.0' [TestMethod] public void Overlaps_After() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OverlapsTest version '1.0.0' define private Overlaps_After: Interval[0, 4] overlaps after Interval[1, 4] @@ -95,7 +95,7 @@ library OverlapsTest version '1.0.0' [TestMethod] public void Overlaps_Is_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OverlapsTest version '1.0.0' define private Overlaps_Is_Null: Interval[6, 10] overlaps (null as Interval) @@ -123,7 +123,7 @@ library OverlapsTest version '1.0.0' [TestMethod] public void Overlaps_After_Day() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OverlapsTest version '1.0.0' define private Overlaps_After_Day: Interval[@2023-03-01, @2023-06-01] overlaps after month of Interval[@2023-01-01, @2023-03-01] @@ -152,7 +152,7 @@ library OverlapsTest version '1.0.0' [TestMethod] public void Overlaps_Day() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library OverlapsTest version '1.0.0' define private Overlaps_Day: Interval[@2023-01-01, @2023-06-01] overlaps month of Interval[@2023-07-01, @2023-10-01] diff --git a/Cql/CqlToElmTests/(tests)/PointFromTest.cs b/Cql/CqlToElmTests/(tests)/PointFromTest.cs index a86fe8e68..3633ad5b1 100644 --- a/Cql/CqlToElmTests/(tests)/PointFromTest.cs +++ b/Cql/CqlToElmTests/(tests)/PointFromTest.cs @@ -9,7 +9,7 @@ public class PointFromTest : Base [TestMethod] public void Point_From_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers: point from Interval[4,4] @@ -30,7 +30,7 @@ library PointFromTest version '1.0.0' var interval = (Interval)pointFrom.operand; AssertIntervalType(interval.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(pointFrom); + var lambda = CreateElmFluentToolkit().Lambda(pointFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -43,7 +43,7 @@ library PointFromTest version '1.0.0' [TestMethod] public void Point_From_Integer_Closed() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers: point from Interval[4,5) @@ -64,7 +64,7 @@ library PointFromTest version '1.0.0' var interval = (Interval)pointFrom.operand; AssertIntervalType(interval.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(pointFrom); + var lambda = CreateElmFluentToolkit().Lambda(pointFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -78,7 +78,7 @@ library PointFromTest version '1.0.0' [TestMethod] public void Point_From_Integers_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers_Null: point from (null as Interval) @@ -100,7 +100,7 @@ library PointFromTest version '1.0.0' Assert.IsInstanceOfType(@as.operand, typeof(Null)); AssertIntervalType(@as.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(pointFrom); + var lambda = CreateElmFluentToolkit().Lambda(pointFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -111,7 +111,7 @@ library PointFromTest version '1.0.0' [TestMethod] public void Point_From_Integers_Error() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers_Error: point from Interval[1,4] @@ -132,7 +132,7 @@ library PointFromTest version '1.0.0' var list = (Interval)pointFrom.operand; AssertIntervalType(list.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(pointFrom); + var lambda = CreateElmFluentToolkit().Lambda(pointFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); Assert.ThrowsException(() => dg.DynamicInvoke(ctx)); diff --git a/Cql/CqlToElmTests/(tests)/PowerTest.cs b/Cql/CqlToElmTests/(tests)/PowerTest.cs index 8bc995636..161704b98 100644 --- a/Cql/CqlToElmTests/(tests)/PowerTest.cs +++ b/Cql/CqlToElmTests/(tests)/PowerTest.cs @@ -11,7 +11,7 @@ public class PowerTest : Base [TestMethod] public void Power_Integer_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_to_Integer version '1.0.0' define private Power_Integer_to_Integer: 2 ^ 3 @@ -56,7 +56,7 @@ library Power_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(int?)); @@ -67,7 +67,7 @@ library Power_Integer_to_Integer version '1.0.0' [TestMethod] public void Power_Integer_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_to_Integer version '1.0.0' define private Power_Integer_to_Integer: 2 ^ 3L @@ -112,7 +112,7 @@ library Power_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -123,7 +123,7 @@ library Power_Integer_to_Integer version '1.0.0' [TestMethod] public void Power_Integer_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_to_Integer version '1.0.0' define private Power_Integer_to_Integer: 2 ^ 3.0 @@ -168,7 +168,7 @@ library Power_Integer_to_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -179,7 +179,7 @@ library Power_Integer_to_Integer version '1.0.0' [TestMethod] public void Power_Integer_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_by_Null version '1.0.0' define private Product: 1 ^ null @@ -223,7 +223,7 @@ library Power_Integer_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -233,7 +233,7 @@ library Power_Integer_by_Null version '1.0.0' [TestMethod] public void Power_Null_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_by_Null version '1.0.0' define private Product: null ^ 1 @@ -277,7 +277,7 @@ library Power_Integer_by_Null version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -291,7 +291,7 @@ library Power_Integer_by_Null version '1.0.0' [TestMethod] public void Power_Long_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Long_by_Integer version '1.0.0' define private Power_Integer_to_Integer: -2L ^ 3 @@ -336,7 +336,7 @@ library Power_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -347,7 +347,7 @@ library Power_Long_by_Integer version '1.0.0' [TestMethod] public void Power_Long_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Long_by_Integer version '1.0.0' define private Power_Integer_to_Integer: -2L ^ 3L @@ -392,7 +392,7 @@ library Power_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -403,7 +403,7 @@ library Power_Long_by_Integer version '1.0.0' [TestMethod] public void Power_Long_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Long_by_Integer version '1.0.0' define private Power_Integer_to_Integer: -2L ^ 3.0 @@ -448,7 +448,7 @@ library Power_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -459,7 +459,7 @@ library Power_Long_by_Integer version '1.0.0' [TestMethod] public void Power_Long_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Long_by_Null version '1.0.0' define private Product: 1L ^ null @@ -503,7 +503,7 @@ library Power_Long_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -513,7 +513,7 @@ library Power_Long_by_Null version '1.0.0' [TestMethod] public void Power_Null_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_by_Null version '1.0.0' define private Product: null ^ 1L @@ -557,7 +557,7 @@ library Power_Integer_by_Null version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -571,7 +571,7 @@ library Power_Integer_by_Null version '1.0.0' [TestMethod] public void Power_Decimal_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Decimal_by_Integer version '1.0.0' define private Power_Integer_to_Integer: 0.0 ^ 3 @@ -616,7 +616,7 @@ library Power_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -627,7 +627,7 @@ library Power_Decimal_by_Integer version '1.0.0' [TestMethod] public void Power_Decimal_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Decimal_by_Integer version '1.0.0' define private Power_Integer_to_Integer: 5.0 ^ 5L @@ -672,7 +672,7 @@ library Power_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -683,7 +683,7 @@ library Power_Decimal_by_Integer version '1.0.0' [TestMethod] public void Power_Decimal_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Decimal_by_Integer version '1.0.0' define private Power_Integer_to_Integer: -10.0 ^ 10.0 @@ -728,7 +728,7 @@ library Power_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -739,7 +739,7 @@ library Power_Decimal_by_Integer version '1.0.0' [TestMethod] public void Power_Decimal_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Decimal_by_Null version '1.0.0' define private Product: 1.0 ^ null @@ -783,7 +783,7 @@ library Power_Decimal_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -793,7 +793,7 @@ library Power_Decimal_by_Null version '1.0.0' [TestMethod] public void Power_Null_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Power_Integer_by_Null version '1.0.0' define private Product: null ^ 1.0 @@ -837,7 +837,7 @@ library Power_Integer_by_Null version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(power); + var lambda = CreateElmFluentToolkit().Lambda(power); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); diff --git a/Cql/CqlToElmTests/(tests)/PredecessorTest.cs b/Cql/CqlToElmTests/(tests)/PredecessorTest.cs index 2cba10b3e..fa29680e4 100644 --- a/Cql/CqlToElmTests/(tests)/PredecessorTest.cs +++ b/Cql/CqlToElmTests/(tests)/PredecessorTest.cs @@ -10,7 +10,7 @@ public class PredecessorTest : Base [TestMethod] public void Predecessor_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers: predecessor of 2 @@ -30,7 +30,7 @@ library PointFromTest version '1.0.0' Assert.IsInstanceOfType(predecessor.operand, typeof(Literal)); - var lambda = CreateElmApi().Lambda(predecessor); + var lambda = CreateElmFluentToolkit().Lambda(predecessor); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -43,7 +43,7 @@ library PointFromTest version '1.0.0' [TestMethod] public void Predecessor_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers: predecessor of (null as Integer) @@ -63,7 +63,7 @@ library PointFromTest version '1.0.0' Assert.IsInstanceOfType(predecessor.operand, typeof(As)); - var lambda = CreateElmApi().Lambda(predecessor); + var lambda = CreateElmFluentToolkit().Lambda(predecessor); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); diff --git a/Cql/CqlToElmTests/(tests)/QueryTest.cs b/Cql/CqlToElmTests/(tests)/QueryTest.cs index 3041ffec4..3e5d07eae 100644 --- a/Cql/CqlToElmTests/(tests)/QueryTest.cs +++ b/Cql/CqlToElmTests/(tests)/QueryTest.cs @@ -8,7 +8,7 @@ public class QueryTest : Base [TestMethod] public void String_lengths() { - var lib = CreateCqlApi().MakeLibraryFromExpression("from ({'hello', 'world'}) str return Length(str)"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("from ({'hello', 'world'}) str return Length(str)"); var query = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); query.Should().HaveType(SystemTypes.IntegerType.ToListType()); } @@ -17,7 +17,7 @@ public void String_lengths() [TestMethod] public void Sort_asc() { - var lib = CreateCqlApi().MakeLibraryFromExpression("({4, 5, 1, 6, 2, 1}) sL sort asc"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("({4, 5, 1, 6, 2, 1}) sL sort asc"); var query = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); query.Should().HaveType(SystemTypes.IntegerType.ToListType()); @@ -26,7 +26,7 @@ public void Sort_asc() [TestMethod] public void Scalar_source() { - var lib = CreateCqlApi().MakeLibraryFromExpression("from (true) t return t and false"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("from (true) t return t and false"); var query = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); query.Should().HaveType(SystemTypes.BooleanType); query.@return.Should().HaveType(SystemTypes.BooleanType); @@ -34,7 +34,7 @@ public void Scalar_source() [TestMethod] public void Vector_source() { - var lib = CreateCqlApi().MakeLibraryFromExpression("from ({ true, false }) t return t and false"); + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression("from ({ true, false }) t return t and false"); var query = lib.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); query.Should().HaveType(SystemTypes.BooleanType.ToListType()); query.@return.Should().HaveType(SystemTypes.BooleanType.ToListType()); @@ -42,7 +42,7 @@ public void Vector_source() [TestMethod] public void Relationship_with_scalar_sources() { - var lib = CreateCqlApi().MakeLibraryFromExpression(""" + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression(""" from(true) t with(false) f such that t != f @@ -54,7 +54,7 @@ where t [TestMethod] public void Relationship_with_bad_identifier() { - CreateCqlApi().MakeLibrary($""" + CreateCqlFluentToolkit().MakeLibrary($""" library Test version '1.0.0' define f: from (true) t @@ -68,7 +68,7 @@ where t is true [TestMethod] public void Multi_scalar_source() { - var lib = CreateCqlApi().MakeLibraryFromExpression(""" + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression(""" from (1) Num1, (2) Num2 @@ -85,7 +85,7 @@ public void Multi_scalar_source() [TestMethod] public void Multi_vector_source() { - var lib = CreateCqlApi().MakeLibraryFromExpression(""" + var lib = CreateCqlFluentToolkit().MakeLibraryFromExpression(""" from ( { 1, 2 } ) Num1, ( { 3, 4 } ) Num2 @@ -102,7 +102,7 @@ public void Multi_vector_source() [TestMethod] public void Sort_Calls_Function() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Sort_Calls_Fluent version '1.0.0' define function foo(): 1 @@ -130,7 +130,7 @@ define function foo(): 1 [TestMethod] public void Sort_Calls_Fluent() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Sort_Calls_Fluent version '1.0.0' define fluent function foo(i Integer): i @@ -160,7 +160,7 @@ define fluent function foo(i Integer): i [TestMethod] public void Sort_Prefers_Fluent() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Sort_Calls_Fluent version '1.0.0' define fluent function foo(i Integer): i @@ -190,7 +190,7 @@ define function foo(): 1 [TestMethod] public void Let() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Let version '1.0.0' define q: from @@ -209,7 +209,7 @@ where x > 0 public void Let_Redefinition() { // TODO: make this optionally fail w/ config options - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Let version '1.0.0' define q: from @@ -225,7 +225,7 @@ public void Let_Redefine_Operand() { // TODO: make this optionally fail w/ config options - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Let version '1.0.0' define function q(x Integer): from @@ -240,7 +240,7 @@ where x > 0 [TestMethod] public void Claims_Query() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Claims version '1.0.0' using FHIR version '4.0.1' @@ -259,7 +259,7 @@ such that careTeam.provider is FHIR.Reference [TestMethod] public void Return_Query() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Claims version '1.0.0' using FHIR version '4.0.1' @@ -276,7 +276,7 @@ library Claims version '1.0.0' [TestMethod] public void Aggregate_Factorial() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Claims version '1.0.0' using FHIR version '4.0.1' @@ -300,7 +300,7 @@ library Claims version '1.0.0' [TestMethod] public void Aggregate_Factorial_Distinct() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Claims version '1.0.0' using FHIR version '4.0.1' @@ -323,7 +323,7 @@ library Claims version '1.0.0' [TestMethod] public void Aggregate_Factorial_No_Starting() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Claims version '1.0.0' using FHIR version '4.0.1' @@ -346,7 +346,7 @@ library Claims version '1.0.0' [TestMethod] public void Aggregate_List_Accumulator() { - var lib = CreateCqlApi().MakeLibrary(""" + var lib = CreateCqlFluentToolkit().MakeLibrary(""" library Claims version '1.0.0' using FHIR version '4.0.1' diff --git a/Cql/CqlToElmTests/(tests)/RefTest.cs b/Cql/CqlToElmTests/(tests)/RefTest.cs index b37c9014b..14315594e 100644 --- a/Cql/CqlToElmTests/(tests)/RefTest.cs +++ b/Cql/CqlToElmTests/(tests)/RefTest.cs @@ -14,7 +14,7 @@ public class RefTest : Base [TestMethod] public void ValueSet_Local() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' valueset "vs": 'http://xyz.com' @@ -35,7 +35,7 @@ public void ValueSet_Local() [Ignore("Will fix in https://github.com/FirelyTeam/firely-cql-sdk/issues/519")] public void CodeSystem_Local() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' private codesystem CS: 'id' version 'version string' @@ -55,7 +55,7 @@ public void CodeSystem_Local() [TestMethod] public void Code_Local() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' private codesystem CS: 'id' version 'version string' @@ -76,7 +76,7 @@ public void Code_Local() [TestMethod] public void Concept_Local() { - var library = CreateCqlApi().MakeLibrary($$""" + var library = CreateCqlFluentToolkit().MakeLibrary($$""" library {{nameof(RefTest)}} version '1.0.0' private codesystem CS: 'id' version 'version string' @@ -98,7 +98,7 @@ public void Concept_Local() [TestMethod] public void Parameter() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' private parameter "Measurement Year" System.Integer default 2023 @@ -118,7 +118,7 @@ public void Parameter() private static T? Run(Library library, string member, Hl7.Fhir.Model.Bundle? bundle = null) { - var lambdas = CreateElmApi().ProcessLibrary(library); + var lambdas = CreateElmFluentToolkit().ProcessLibrary(library); var delegates = lambdas.CompileAll(); var dg = delegates[library.GetVersionedIdentifier()!, member]; var ctx = FhirCqlContext.ForBundle(bundle, delegates: delegates); @@ -140,7 +140,7 @@ private ExpressionDef shouldDefineExpression(Library l, string name) => [TestMethod] public void Expression() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' define private four: 4 @@ -161,7 +161,7 @@ public void Expression() [Ignore("Will fix in https://github.com/FirelyTeam/firely-cql-sdk/issues/397")] public void Function() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' define private function double(a Decimal): a*2 @@ -181,7 +181,7 @@ define private function double(a Decimal): a*2 [TestMethod] public void FunctionIncorrectNumParam() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' define private function double(a Decimal): a*2 @@ -193,7 +193,7 @@ define private function double(a Decimal): a*2 [TestMethod] public void FunctionIncorrectParam() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)} version '1.0.0' define private function double(a Decimal): a*2 @@ -205,23 +205,23 @@ define private function double(a Decimal): a*2 [TestMethod] public void FunctionVariableParamCount() { - var library1 = CreateCqlApi().MakeLibrary($""" + var library1 = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)}1 version '1.0.0' define private {nameof(Function)}: Date(1) """); - var library2 = CreateCqlApi().MakeLibrary($""" + var library2 = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)}2 version '1.0.0' define private {nameof(Function)}: Date(1,2) """); - var library3 = CreateCqlApi().MakeLibrary($""" + var library3 = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)}3 version '1.0.0' define private {nameof(Function)}: Date(1,2,3) """); - var library4 = CreateCqlApi().MakeLibrary($""" + var library4 = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)}4 version '1.0.0' define private {nameof(Function)}: Date(1,2,3,4) """, "Could not resolve *"); - var library5 = CreateCqlApi().MakeLibrary($""" + var library5 = CreateCqlFluentToolkit().MakeLibrary($""" library {nameof(RefTest)}5 version '1.0.0' define private {nameof(Function)}: Date() """, "Could not resolve *"); @@ -230,7 +230,7 @@ public void FunctionVariableParamCount() [TestMethod] public void InvokeParameter() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' parameter x default 'bla' @@ -242,7 +242,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeExpression() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' define pi: 3.14 @@ -254,7 +254,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeNonLocalFunction() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' include Math @@ -266,7 +266,7 @@ include Math [TestMethod] public void InvokeLibrary() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' include Math @@ -279,7 +279,7 @@ include Math [TestMethod] public void InvokeNonLocalExpression() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' include Math @@ -292,7 +292,7 @@ include Math [TestMethod] public void InvokeNonexistentFluentFunction() { - _ = CreateCqlApi().MakeLibrary($""" + _ = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -306,7 +306,7 @@ context Patient [Ignore("Will fix in https://github.com/FirelyTeam/firely-cql-sdk/issues/397")] public void InvokeFluentFunction() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' define fluent function double(a Integer): a*2 @@ -325,7 +325,7 @@ define fluent function double(a Integer): a*2 [TestMethod] public void InvokeIntervalMember() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' define lowI: Interval[1,3].low @@ -342,7 +342,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeIntervalClosedMember() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' define closed: Interval[1,3].highClosed @@ -359,7 +359,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeTupleMember() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library BareMinimum version '0.0.1' define tupleMember: Tuple { name: 'Ewout' }.name @@ -376,7 +376,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeNonFluentFunctionFluently() { - _ = CreateCqlApi().MakeLibrary($""" + _ = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' define function double(a Integer): a*2 @@ -387,7 +387,7 @@ define function double(a Integer): a*2 [TestMethod] public void InvokeModel() { - _ = CreateCqlApi().MakeLibrary($""" + _ = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -398,7 +398,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeQualifiedType() { - _ = CreateCqlApi().MakeLibrary($""" + _ = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -409,7 +409,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeNoMembers() { - _ = CreateCqlApi().MakeLibrary($""" + _ = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -420,7 +420,7 @@ library BareMinimum version '0.0.1' [TestMethod] public void InvokeChoiceMembers() { - _ = CreateCqlApi().MakeLibrary($""" + _ = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -432,7 +432,7 @@ define function choice() returns Choice : external [TestMethod] public void InvokeType() { - _ = CreateCqlApi().MakeLibrary(""" + _ = CreateCqlFluentToolkit().MakeLibrary(""" library BareMinimum version '0.0.1' using FHIR @@ -445,7 +445,7 @@ include Math [TestMethod] public void InvokeProperty() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -467,7 +467,7 @@ context Patient [TestMethod] public void InvokeListProperty() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -489,7 +489,7 @@ context Patient [TestMethod] public void InvokeThroughListProperty() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -509,7 +509,7 @@ context Patient [TestMethod] public void InvokeListPropertyThroughListProperty() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR @@ -530,7 +530,7 @@ context Patient [Ignore("Will fix in https://github.com/FirelyTeam/firely-cql-sdk/issues/397")] public void InvokeListPropertyViaFunction() { - var library = CreateCqlApi().MakeLibrary($""" + var library = CreateCqlFluentToolkit().MakeLibrary($""" library BareMinimum version '0.0.1' using FHIR diff --git a/Cql/CqlToElmTests/(tests)/RetrieveTest.cs b/Cql/CqlToElmTests/(tests)/RetrieveTest.cs index af1eca365..fb0d52a86 100644 --- a/Cql/CqlToElmTests/(tests)/RetrieveTest.cs +++ b/Cql/CqlToElmTests/(tests)/RetrieveTest.cs @@ -12,7 +12,7 @@ public class RetrieveTest : Base [TestMethod] public void Retrieve_AllTerms() { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var cqlLibraryString = CqlLibraryString.Parse(""" library RetrieveTest version '1.0.0' diff --git a/Cql/CqlToElmTests/(tests)/SingletonTest.cs b/Cql/CqlToElmTests/(tests)/SingletonTest.cs index 638484a7d..8985c72d2 100644 --- a/Cql/CqlToElmTests/(tests)/SingletonTest.cs +++ b/Cql/CqlToElmTests/(tests)/SingletonTest.cs @@ -9,7 +9,7 @@ public class SingletonTest : Base [TestMethod] public void Singleton_From_Integers() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library SingletonTest version '1.0.0' define private Singleton_From_Integers: singleton from { 1 } @@ -31,7 +31,7 @@ library SingletonTest version '1.0.0' AssertListType(list.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); AssertList(list, new int?[] { 1 }); - var lambda = CreateElmApi().Lambda(singletonFrom); + var lambda = CreateElmFluentToolkit().Lambda(singletonFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -44,7 +44,7 @@ library SingletonTest version '1.0.0' [TestMethod] public void Singleton_From_Empty() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library SingletonTest version '1.0.0' define private Singleton_From_Empty: singleton from ({} as List) @@ -67,7 +67,7 @@ library SingletonTest version '1.0.0' var list = (List)@as.operand; Assert.IsInstanceOfType(@as.operand, typeof(List)); AssertList(list, Array.Empty()); // empty list typed as Any - var lambda = CreateElmApi().Lambda(singletonFrom); + var lambda = CreateElmFluentToolkit().Lambda(singletonFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -78,7 +78,7 @@ library SingletonTest version '1.0.0' [TestMethod] public void Singleton_From_Integers_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library SingletonTest version '1.0.0' define private Singleton_From_Integers_Null: singleton from (null as List) @@ -100,7 +100,7 @@ library SingletonTest version '1.0.0' Assert.IsInstanceOfType(@as.operand, typeof(Null)); AssertListType(@as.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(singletonFrom); + var lambda = CreateElmFluentToolkit().Lambda(singletonFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -111,7 +111,7 @@ library SingletonTest version '1.0.0' [TestMethod] public void Singleton_From_Integers_Error() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library SingletonTest version '1.0.0' define private Singleton_From_Integers_Error: singleton from { 1, 2, 3 } @@ -133,7 +133,7 @@ library SingletonTest version '1.0.0' AssertListType(list.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); AssertList(list, new int?[] { 1, 2, 3 }); - var lambda = CreateElmApi().Lambda(singletonFrom); + var lambda = CreateElmFluentToolkit().Lambda(singletonFrom); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); Assert.ThrowsException(() => dg.DynamicInvoke(ctx)); @@ -143,7 +143,7 @@ library SingletonTest version '1.0.0' [TestMethod] public void Singleton_From_Integer_With_List_Promotion() { - var library = CreateCqlApi(EnableListPromotion:true).MakeLibrary(""" + var library = CreateCqlFluentToolkit(EnableListPromotion:true).MakeLibrary(""" library SingletonTest version '1.0.0' define private Singleton_From_Integer_With_List_Promotion: singleton from 1 diff --git a/Cql/CqlToElmTests/(tests)/StartEndTest.cs b/Cql/CqlToElmTests/(tests)/StartEndTest.cs index 10bfd696f..cf4d73bdc 100644 --- a/Cql/CqlToElmTests/(tests)/StartEndTest.cs +++ b/Cql/CqlToElmTests/(tests)/StartEndTest.cs @@ -8,7 +8,7 @@ public class StartEndTest : Base [TestMethod] public void Start_of() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library StartEndTest version '1.0.0' define private Start_of: start of Interval[1, 3] @@ -34,7 +34,7 @@ library StartEndTest version '1.0.0' [TestMethod] public void Start_of_null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library StartEndTest version '1.0.0' define private Start_of_null: start of (null as Interval) @@ -59,7 +59,7 @@ library StartEndTest version '1.0.0' [TestMethod] public void Start_of_point_null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library StartEndTest version '1.0.0' define private Start_of_point_null: start of Interval(null, 10] @@ -85,7 +85,7 @@ library StartEndTest version '1.0.0' [TestMethod] public void End_of() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EndEndTest version '1.0.0' define private End_of: end of Interval[1, 3] @@ -111,7 +111,7 @@ library EndEndTest version '1.0.0' [TestMethod] public void End_of_null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EndEndTest version '1.0.0' define private End_of_null: end of (null as Interval) @@ -136,7 +136,7 @@ library EndEndTest version '1.0.0' [TestMethod] public void End_of_point_null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library EndEndTest version '1.0.0' define private End_of_point_null: end of Interval[10, null) diff --git a/Cql/CqlToElmTests/(tests)/StartsEndsTest.cs b/Cql/CqlToElmTests/(tests)/StartsEndsTest.cs index e11dd1021..529b7344a 100644 --- a/Cql/CqlToElmTests/(tests)/StartsEndsTest.cs +++ b/Cql/CqlToElmTests/(tests)/StartsEndsTest.cs @@ -8,7 +8,7 @@ public class StartsEndsTest : Base [TestMethod] public void Starts_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library StartsEndsTest version '1.0.0' define private Starts_False: Interval[@2023-01-01, @2023-06-30] starts Interval[@2023-04-01, @2023-04-30] @@ -37,7 +37,7 @@ library StartsEndsTest version '1.0.0' [TestMethod] public void Starts_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library StartsEndsTest version '1.0.0' define private Starts_True: Interval[0, 5] starts Interval[0,7] @@ -66,7 +66,7 @@ library StartsEndsTest version '1.0.0' [TestMethod] public void Ends_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library StartsEndsTest version '1.0.0' define private Ends_False: Interval[-1, 7] ends Interval[0,7] diff --git a/Cql/CqlToElmTests/(tests)/StringTest.cs b/Cql/CqlToElmTests/(tests)/StringTest.cs index 848ce54be..0273d2a34 100644 --- a/Cql/CqlToElmTests/(tests)/StringTest.cs +++ b/Cql/CqlToElmTests/(tests)/StringTest.cs @@ -8,7 +8,7 @@ public class StringTest : Base [TestMethod] public void ReplaceMatchesSpaces() { - var library = CreateCqlApi().MakeLibraryFromExpression("ReplaceMatches('All that glitters is not gold', '\\\\s', '\\$')"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("ReplaceMatches('All that glitters is not gold', '\\\\s', '\\$')"); var replace = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(replace, library); result.Should().Be("All$that$glitters$is$not$gold"); diff --git a/Cql/CqlToElmTests/(tests)/SubtractionTest.cs b/Cql/CqlToElmTests/(tests)/SubtractionTest.cs index b91d2d204..7793c58ce 100644 --- a/Cql/CqlToElmTests/(tests)/SubtractionTest.cs +++ b/Cql/CqlToElmTests/(tests)/SubtractionTest.cs @@ -14,7 +14,7 @@ public class SubtractionTest : Base [TestMethod] public void Subtract_Integer_from_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Integer_from_Integer version '1.0.0' define private Subtract: 2 - 1 @@ -59,7 +59,7 @@ library Subtract_Integer_from_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(int?)); @@ -73,7 +73,7 @@ library Subtract_Integer_from_Integer version '1.0.0' [TestMethod] public void Subtract_Long_from_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Long_from_Long version '1.0.0' define private Subtract: 1L - 2L @@ -118,7 +118,7 @@ library Subtract_Long_from_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -129,7 +129,7 @@ library Subtract_Long_from_Long version '1.0.0' [TestMethod] public void Subtract_Decimal_from_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Decimal version '1.0.0' define private Subtract: 2.0 - 1.0 @@ -175,7 +175,7 @@ library Subtract_Decimal_from_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -186,7 +186,7 @@ library Subtract_Decimal_from_Decimal version '1.0.0' [TestMethod] public void Subtract_Quantity_from_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Quantity version '1.0.0' define private Subtract: -1.0 '1' - 2.0 '1' @@ -231,7 +231,7 @@ library Subtract_Decimal_from_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -249,7 +249,7 @@ library Subtract_Decimal_from_Quantity version '1.0.0' [TestMethod] public void Subtract_Integer_from_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Integer_from_Long version '1.0.0' define private Subtract: 2 - 1L @@ -294,7 +294,7 @@ library Subtract_Integer_from_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -308,7 +308,7 @@ library Subtract_Integer_from_Long version '1.0.0' [TestMethod] public void Subtract_Integer_from_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Integer_from_Decimal version '1.0.0' define private Subtract: 2 - 1.0 @@ -353,7 +353,7 @@ library Subtract_Integer_from_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -367,7 +367,7 @@ library Subtract_Integer_from_Decimal version '1.0.0' [TestMethod] public void Subtract_Integer_from_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Integer_from_Quantity version '1.0.0' define private Subtract: 2 - 1.0 '1' @@ -412,7 +412,7 @@ library Subtract_Integer_from_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -426,7 +426,7 @@ library Subtract_Integer_from_Quantity version '1.0.0' [TestMethod] public void Subtract_Long_from_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Long_from_Decimal version '1.0.0' define private Subtract: 1L - 2.0 @@ -471,7 +471,7 @@ library Subtract_Long_from_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -485,7 +485,7 @@ library Subtract_Long_from_Decimal version '1.0.0' [TestMethod] public void Subtract_Long_from_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Integer_from_Quantity version '1.0.0' define private Subtract: 1L - 2.0 '1' @@ -530,7 +530,7 @@ library Subtract_Integer_from_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -544,7 +544,7 @@ library Subtract_Integer_from_Quantity version '1.0.0' [TestMethod] public void Subtract_Decimal_from_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Quantity version '1.0.0' define private Subtract: -1.0 - 2.0 '1' @@ -591,7 +591,7 @@ library Subtract_Decimal_from_Quantity version '1.0.0' Assert.AreEqual(UCUMUnits.Default, rhs.unit); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -612,7 +612,7 @@ library Subtract_Decimal_from_Quantity version '1.0.0' [TestMethod] public void Subtract_Long_from_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Long_from_Integer version '1.0.0' define private Subtract: 1L - 2 @@ -657,7 +657,7 @@ library Subtract_Long_from_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -668,7 +668,7 @@ library Subtract_Long_from_Integer version '1.0.0' [TestMethod] public void Subtract_Decimal_from_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Integer version '1.0.0' define private Subtract: 5.25 - 2 @@ -713,7 +713,7 @@ library Subtract_Decimal_from_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -724,7 +724,7 @@ library Subtract_Decimal_from_Integer version '1.0.0' [TestMethod] public void Subtract_Quantity_from_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Integer version '1.0.0' define private Subtract: 5.25 '1' - 2 @@ -769,7 +769,7 @@ library Subtract_Decimal_from_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -783,7 +783,7 @@ library Subtract_Decimal_from_Integer version '1.0.0' [TestMethod] public void Subtract_Decimal_from_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Long version '1.0.0' define private Subtract: 5.25 - 2L @@ -828,7 +828,7 @@ library Subtract_Decimal_from_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -839,7 +839,7 @@ library Subtract_Decimal_from_Long version '1.0.0' [TestMethod] public void Subtract_Quantity_from_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Quantity_from_Long version '1.0.0' define private Subtract: 5.25 '1' - 2L @@ -884,7 +884,7 @@ library Subtract_Quantity_from_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -898,7 +898,7 @@ library Subtract_Quantity_from_Long version '1.0.0' [TestMethod] public void Subtract_Quantity_from_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Quantity_from_Decimal version '1.0.0' define private Subtract: 5.25 '1' - 2.0 @@ -943,7 +943,7 @@ library Subtract_Quantity_from_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -959,7 +959,7 @@ library Subtract_Quantity_from_Decimal version '1.0.0' [TestMethod] public void Subtract_Three_Decimals() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Decimal version '1.0.0' define private Subtract: 6.0 - (2.0 - 3.0) @@ -1004,7 +1004,7 @@ library Subtract_Decimal_from_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -1015,7 +1015,7 @@ library Subtract_Decimal_from_Decimal version '1.0.0' [TestMethod] public void Subtract_Quantity_from_Two_Decimals() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library Subtract_Decimal_from_Decimal version '1.0.0' define private Subtract: 6.0 '1' - (2.0 - 3.0) @@ -1060,7 +1060,7 @@ library Subtract_Decimal_from_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(add); + var lambda = CreateElmFluentToolkit().Lambda(add); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); diff --git a/Cql/CqlToElmTests/(tests)/SuccessorTest.cs b/Cql/CqlToElmTests/(tests)/SuccessorTest.cs index cb64e04eb..a3492ab10 100644 --- a/Cql/CqlToElmTests/(tests)/SuccessorTest.cs +++ b/Cql/CqlToElmTests/(tests)/SuccessorTest.cs @@ -10,7 +10,7 @@ public class SuccessorTest : Base [TestMethod] public void Successor_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers: successor of 2 @@ -30,7 +30,7 @@ library PointFromTest version '1.0.0' Assert.IsInstanceOfType(successor.operand, typeof(Literal)); - var lambda = CreateElmApi().Lambda(successor); + var lambda = CreateElmFluentToolkit().Lambda(successor); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -43,7 +43,7 @@ library PointFromTest version '1.0.0' [TestMethod] public void Successor_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library PointFromTest version '1.0.0' define private Point_From_Integers: successor of (null as Integer) @@ -63,7 +63,7 @@ library PointFromTest version '1.0.0' Assert.IsInstanceOfType(successor.operand, typeof(As)); - var lambda = CreateElmApi().Lambda(successor); + var lambda = CreateElmFluentToolkit().Lambda(successor); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); diff --git a/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs b/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs index a174af0be..82bedbd58 100644 --- a/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs +++ b/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs @@ -12,7 +12,7 @@ namespace Hl7.Cql.CqlToElm.Test public class SymbolTableTest : Base { private static VersionedIdentifier TestId => new VersionedIdentifier { id = "Test", version = "1.0.0" }; - private static SystemLibrary SystemLibrary => CreateCqlApi().GetSystemLibrary(); + private static SystemLibrary SystemLibrary => CreateCqlFluentToolkit().GetSystemLibrary(); [TestMethod] public void Add_Local_Expression() diff --git a/Cql/CqlToElmTests/(tests)/TagsTest.cs b/Cql/CqlToElmTests/(tests)/TagsTest.cs index ca92cb72e..bb0e3495a 100644 --- a/Cql/CqlToElmTests/(tests)/TagsTest.cs +++ b/Cql/CqlToElmTests/(tests)/TagsTest.cs @@ -1,5 +1,4 @@ using CqlSdkPrototype.Cql.Extensions; -using CqlSdkPrototype.Elm.Extensibility; using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Runtime.Extensions; @@ -43,11 +42,11 @@ context Patient [Condition: "Injury due to falling rock"] C where (C.onset.value as DateTime) during "Measurement Period" """); - var cql = CreateCqlApi().AddCqlLibraryString(cqlLibraryString).Translate(); + var cql = CreateCqlFluentToolkit().AddCqlLibraryString(cqlLibraryString).ProcessCqlToElm(); - var elm = cql.CreateElmApi().Compile(); + var elm = cql.CreateElmApi().ProcessElmToAssemblies(); - _ = elm.AsExtendable().Entries.First().Value.CSharpSourceCode; // Debug this line to see the C# code generated by the CQL-to-ELM compiler + _ = elm.ElmToAssemblyConversions.First().Value.CSharpSourceCode; // Debug this line to see the C# code generated by the CQL-to-ELM compiler using var runtime = elm.CreateRuntimeScope(); _ = runtime.Libraries[cqlLibraryString.VersionedLibraryIdentifier] diff --git a/Cql/CqlToElmTests/(tests)/TimingExpressionTest.cs b/Cql/CqlToElmTests/(tests)/TimingExpressionTest.cs index 7df691ea8..de79d15ba 100644 --- a/Cql/CqlToElmTests/(tests)/TimingExpressionTest.cs +++ b/Cql/CqlToElmTests/(tests)/TimingExpressionTest.cs @@ -9,7 +9,7 @@ public class TimingExpressionTest : Base public void OnOrAfterMonthOf() { // https://cql.hl7.org/09-b-cqlreference.html#same-or-after-2 - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[@2012-12-01, @2013-12-01] on or after month of @2012-11-15"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[@2012-12-01, @2013-12-01] on or after month of @2012-11-15"); var sameOrAfter = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); sameOrAfter.Should().HaveType(SystemTypes.BooleanType); sameOrAfter.operand.Should().NotBeNull(); @@ -23,7 +23,7 @@ public void OnOrAfterMonthOf() [TestMethod] public void Starts1DayOrLessOnOrAfter() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library IntervalTest version '1.0.0' define private Issue32: Interval[@2017-12-20T10:30:00, @2017-12-20T12:00:00] starts 1 day or less on or after day of start of Interval[@2017-12-20T11:00:00, @2017-12-21T21:00:00] @@ -136,7 +136,7 @@ library IntervalTest version '1.0.0' [TestMethod] public void Overlaps() { - var library = CreateCqlApi( + var library = CreateCqlFluentToolkit( EnableListPromotion: true, EnableListDemotion: true, EnableIntervalPromotion: true, @@ -155,7 +155,7 @@ public void Overlaps() [TestMethod] public void TestOnOrAfterDateTrue() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[@2012-12-01, @2013-12-01] on or after month of @2012-11-15"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[@2012-12-01, @2013-12-01] on or after month of @2012-11-15"); var sameOrAfter = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(sameOrAfter, library); result.Should().BeTrue(); @@ -164,7 +164,7 @@ public void TestOnOrAfterDateTrue() [TestMethod] public void TestOnOrBeforeDateTrue() { - var library = CreateCqlApi().MakeLibraryFromExpression("Interval[@2012-10-01, @2012-11-01] on or before month of @2012-11-15"); + var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("Interval[@2012-10-01, @2012-11-01] on or before month of @2012-11-15"); var sameOrBefore = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); var result = Run(sameOrBefore, library); result.Should().BeTrue(); diff --git a/Cql/CqlToElmTests/(tests)/TruncatedDivisionTest.cs b/Cql/CqlToElmTests/(tests)/TruncatedDivisionTest.cs index ee806e131..57c7a09ff 100644 --- a/Cql/CqlToElmTests/(tests)/TruncatedDivisionTest.cs +++ b/Cql/CqlToElmTests/(tests)/TruncatedDivisionTest.cs @@ -13,7 +13,7 @@ public class TruncatedDivisionTest : Base [TestMethod] public void TruncatedDivide_Integer_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Integer_by_Integer version '1.0.0' define private TruncatedDivide_Integer_by_Integer: 2 div 4 @@ -58,7 +58,7 @@ library TruncatedDivide_Integer_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(int?)); @@ -69,7 +69,7 @@ library TruncatedDivide_Integer_by_Integer version '1.0.0' [TestMethod] public void TruncatedDivide_Integer_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Integer_by_Long version '1.0.0' define private TruncatedDivide_Integer_by_Long: 2 div 3L @@ -114,7 +114,7 @@ library TruncatedDivide_Integer_by_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -125,7 +125,7 @@ library TruncatedDivide_Integer_by_Long version '1.0.0' [TestMethod] public void TruncatedDivide_Integer_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Integer_by_Decimal version '1.0.0' define private TruncatedDivide_Integer_by_Decimal: 2 div 3.0 @@ -170,7 +170,7 @@ library TruncatedDivide_Integer_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -181,7 +181,7 @@ library TruncatedDivide_Integer_by_Decimal version '1.0.0' [TestMethod] public void TruncatedDivide_Integer_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Integer_by_Quantity version '1.0.0' define private TruncatedDivide_Integer_by_Quantity: 10 div 2.0 '1' @@ -226,7 +226,7 @@ library TruncatedDivide_Integer_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -241,7 +241,7 @@ library TruncatedDivide_Integer_by_Quantity version '1.0.0' [TestMethod] public void TruncatedDivide_Integer_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Integer_by_Null version '1.0.0' define private TruncatedDivide_Integer_by_Null: 1 div null @@ -285,7 +285,7 @@ library TruncatedDivide_Integer_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -295,7 +295,7 @@ library TruncatedDivide_Integer_by_Null version '1.0.0' [TestMethod] public void TruncatedDivide_Null_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Null_by_Integer version '1.0.0' define private TruncatedDivide_Null_by_Integer: null div 1 @@ -339,7 +339,7 @@ library TruncatedDivide_Null_by_Integer version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -353,7 +353,7 @@ library TruncatedDivide_Null_by_Integer version '1.0.0' [TestMethod] public void TruncatedDivide_Long_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Long_by_Integer version '1.0.0' define private TruncatedDivide_Long_by_Integer: 10L div 2 @@ -398,7 +398,7 @@ library TruncatedDivide_Long_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -409,7 +409,7 @@ library TruncatedDivide_Long_by_Integer version '1.0.0' [TestMethod] public void TruncatedDivide_Long_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Long_by_Long version '1.0.0' define private TruncatedDivide_Long_by_Long: 100L div 10L @@ -454,7 +454,7 @@ library TruncatedDivide_Long_by_Long version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(long?)); @@ -465,7 +465,7 @@ library TruncatedDivide_Long_by_Long version '1.0.0' [TestMethod] public void TruncatedDivide_Long_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Long_by_Decimal version '1.0.0' define private TruncatedDivide_Long_by_Decimal: -3L div 2.0 @@ -510,7 +510,7 @@ library TruncatedDivide_Long_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -521,7 +521,7 @@ library TruncatedDivide_Long_by_Decimal version '1.0.0' [TestMethod] public void TruncatedDivide_Long_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Long_by_Quantity version '1.0.0' define private TruncatedDivide_Long_by_Quantity: 20L div 5.0 '1' @@ -566,7 +566,7 @@ library TruncatedDivide_Long_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -580,7 +580,7 @@ library TruncatedDivide_Long_by_Quantity version '1.0.0' [TestMethod] public void TruncatedDivide_Long_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Long_by_Null version '1.0.0' define private TruncatedDivide_Long_by_Null: 1L div null @@ -624,7 +624,7 @@ library TruncatedDivide_Long_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -634,7 +634,7 @@ library TruncatedDivide_Long_by_Null version '1.0.0' [TestMethod] public void TruncatedDivide_Null_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Null_by_Long version '1.0.0' define private TruncatedDivide_Null_by_Long: null div 1L @@ -678,7 +678,7 @@ library TruncatedDivide_Null_by_Long version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -692,7 +692,7 @@ library TruncatedDivide_Null_by_Long version '1.0.0' [TestMethod] public void TruncatedDivide_Decimal_by_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Decimal_by_Integer version '1.0.0' define private TruncatedDivide_Decimal_by_Integer: 0.0 div 3 @@ -737,7 +737,7 @@ library TruncatedDivide_Decimal_by_Integer version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -748,7 +748,7 @@ library TruncatedDivide_Decimal_by_Integer version '1.0.0' [TestMethod] public void TruncatedDivide_Decimal_by_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library DefaultConverter version '1.0.0' define private DefaultConverter: 5.0 div 5L @@ -793,7 +793,7 @@ library DefaultConverter version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -804,7 +804,7 @@ library DefaultConverter version '1.0.0' [TestMethod] public void TruncatedDivide_Decimal_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Decimal_by_Decimal version '1.0.0' define private TruncatedDivide_Decimal_by_Decimal: -10.0 div 10.0 @@ -849,7 +849,7 @@ library TruncatedDivide_Decimal_by_Decimal version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(decimal?)); @@ -860,7 +860,7 @@ library TruncatedDivide_Decimal_by_Decimal version '1.0.0' [TestMethod] public void TruncatedDivide_Decimal_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Decimal_by_Quantity version '1.0.0' define private TruncatedDivide_Decimal_by_Quantity: 3.0 div 2.0 '1' @@ -905,7 +905,7 @@ library TruncatedDivide_Decimal_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -919,7 +919,7 @@ library TruncatedDivide_Decimal_by_Quantity version '1.0.0' [TestMethod] public void TruncatedDivide_Decimal_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Decimal_by_Null version '1.0.0' define private TruncatedDivide_Decimal_by_Null: 1.0 div null @@ -963,7 +963,7 @@ library TruncatedDivide_Decimal_by_Null version '1.0.0' Assert.IsNotNull(lhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", lhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -973,7 +973,7 @@ library TruncatedDivide_Decimal_by_Null version '1.0.0' [TestMethod] public void TruncatedDivide_Null_by_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Null_by_Decimal version '1.0.0' define private TruncatedDivide_Null_by_Decimal: null div 1.0 @@ -1017,7 +1017,7 @@ library TruncatedDivide_Null_by_Decimal version '1.0.0' Assert.IsNotNull(rhsnts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.AreEqual(null, result); @@ -1031,7 +1031,7 @@ library TruncatedDivide_Null_by_Decimal version '1.0.0' [TestMethod] public void TruncatedDivide_Quantity_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Quantity_by_Quantity version '1.0.0' define private TruncatedDivide_Quantity_by_Quantity: 3.0 '1' div 2.0 '1' @@ -1076,7 +1076,7 @@ library TruncatedDivide_Quantity_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -1090,7 +1090,7 @@ library TruncatedDivide_Quantity_by_Quantity version '1.0.0' [TestMethod] public void TruncatedDivide_Quantity_by_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Quantity_by_Null version '1.0.0' define private TruncatedDivide_Quantity_by_Null: 3.0 '1' div null @@ -1135,7 +1135,7 @@ library TruncatedDivide_Quantity_by_Null version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -1145,7 +1145,7 @@ library TruncatedDivide_Quantity_by_Null version '1.0.0' [TestMethod] public void TruncatedDivide_Null_by_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TruncatedDivide_Null_by_Quantity version '1.0.0' define private TruncatedDivide_Null_by_Quantity: null div 3.0 '1' @@ -1190,7 +1190,7 @@ library TruncatedDivide_Null_by_Quantity version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Quantity", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(divide); + var lambda = CreateElmFluentToolkit().Lambda(divide); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); diff --git a/Cql/CqlToElmTests/(tests)/TypeExtentTest.cs b/Cql/CqlToElmTests/(tests)/TypeExtentTest.cs index 7dabd563a..30e52cc73 100644 --- a/Cql/CqlToElmTests/(tests)/TypeExtentTest.cs +++ b/Cql/CqlToElmTests/(tests)/TypeExtentTest.cs @@ -11,7 +11,7 @@ public class TypeExtentTest : Base [TestMethod] public void TypeExtent_Minimum_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_Integer: minimum Integer @@ -32,7 +32,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -45,7 +45,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_Integer: maximum Integer @@ -66,7 +66,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Integer", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -79,7 +79,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Minimum_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_Long: minimum Long @@ -100,7 +100,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -113,7 +113,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_Long() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_Long: maximum Long @@ -134,7 +134,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Long", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -147,7 +147,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Minimum_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_Decimal: minimum Decimal @@ -168,7 +168,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -181,7 +181,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_Decimal() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_Decimal: maximum Decimal @@ -202,7 +202,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Decimal", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -214,7 +214,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Minimum_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_Quantity: minimum Quantity @@ -235,7 +235,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Quantity", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -250,7 +250,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_Quantity() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_Quantity: maximum Quantity @@ -271,7 +271,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Quantity", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -286,7 +286,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Minimum_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_Date: minimum Date @@ -307,7 +307,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Date", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -319,7 +319,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_Date() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_Date: maximum Date @@ -340,7 +340,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Date", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -352,7 +352,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Minimum_DateTime() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_DateTime: minimum DateTime @@ -373,7 +373,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}DateTime", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -385,7 +385,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_DateTime() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_DateTime: maximum DateTime @@ -406,7 +406,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}DateTime", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -418,7 +418,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Minimum_Time() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Minimum_Time: minimum Time @@ -439,7 +439,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Time", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); @@ -451,7 +451,7 @@ library TypeExtentTest version '1.0.0' [TestMethod] public void TypeExtent_Maximum_Time() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library TypeExtentTest version '1.0.0' define private TypeExtent_Maximum_Time: maximum Time @@ -472,7 +472,7 @@ library TypeExtentTest version '1.0.0' Assert.IsNotNull(nts.name.Name); Assert.AreEqual($"{{{SystemUri}}}Time", nts.name.Name); - var lambda = CreateElmApi().Lambda(extent); + var lambda = CreateElmFluentToolkit().Lambda(extent); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNotNull(result); diff --git a/Cql/CqlToElmTests/(tests)/WidthTest.cs b/Cql/CqlToElmTests/(tests)/WidthTest.cs index 5b592e0f0..9cae7a1b6 100644 --- a/Cql/CqlToElmTests/(tests)/WidthTest.cs +++ b/Cql/CqlToElmTests/(tests)/WidthTest.cs @@ -9,7 +9,7 @@ public class WidthTest : Base [TestMethod] public void Width_Integer() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library WidthTest version '1.0.0' define private Width_Integers: width of Interval[3,7] @@ -30,7 +30,7 @@ library WidthTest version '1.0.0' var interval = (Interval)width.operand; AssertIntervalType(interval.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(width); + var lambda = CreateElmFluentToolkit().Lambda(width); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -44,7 +44,7 @@ library WidthTest version '1.0.0' [TestMethod] public void Width_Integers_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library WidthTest version '1.0.0' define private Width_Integers_Null: width of (null as Interval) @@ -66,7 +66,7 @@ library WidthTest version '1.0.0' Assert.IsInstanceOfType(@as.operand, typeof(Null)); AssertIntervalType(@as.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(width); + var lambda = CreateElmFluentToolkit().Lambda(width); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -77,7 +77,7 @@ library WidthTest version '1.0.0' [TestMethod] public void Width_Integers_Null_Interval() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library WidthTest version '1.0.0' define private Width_Integers_Error: width of Interval[1,null) @@ -98,7 +98,7 @@ library WidthTest version '1.0.0' var list = (Interval)width.operand; AssertIntervalType(list.resultTypeSpecifier, $"{{{SystemUri}}}Integer"); - var lambda = CreateElmApi().Lambda(width); + var lambda = CreateElmFluentToolkit().Lambda(width); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); diff --git a/Cql/CqlToElmTests/(tests)/XmlTest.cs b/Cql/CqlToElmTests/(tests)/XmlTest.cs index 41d40da56..4a5e7888f 100644 --- a/Cql/CqlToElmTests/(tests)/XmlTest.cs +++ b/Cql/CqlToElmTests/(tests)/XmlTest.cs @@ -30,7 +30,7 @@ public void Run(TestCase testCase) // if (testCase.TestName != "AgeInYearsAt") // Assert.Inconclusive("Skipped!"); - var cqlApi = CreateCqlApi(AllowNullIntervals:true); + var cqlApi = CreateCqlFluentToolkit(AllowNullIntervals:true); var expression = cqlApi.Expression(testCase.Expression); var expressionErrors = expression.GetErrors(); if (expressionErrors.Any()) @@ -60,22 +60,22 @@ public void Run(TestCase testCase) } Expression equal = Equals(expression, expectation); - var equalLambda = CreateElmApi().Lambda(equal); + var equalLambda = CreateElmFluentToolkit().Lambda(equal); var equalDelegate = equalLambda.Compile(); // TODO: These needs to be changed to run through the AssemblyCompiler too var equalResult = (bool?)equalDelegate.DynamicInvoke(CqlContext); if (equalResult != true) { - var expressionValue = CreateElmApi().Lambda(expression).Compile().DynamicInvoke(CqlContext); - var expectationValue = CreateElmApi().Lambda(expectation).Compile().DynamicInvoke(CqlContext); + var expressionValue = CreateElmFluentToolkit().Lambda(expression).Compile().DynamicInvoke(CqlContext); + var expectationValue = CreateElmFluentToolkit().Lambda(expectation).Compile().DynamicInvoke(CqlContext); Assert.Fail($"Case {testFullName} assertion failed. Expected '{expectationValue}', but got '{expressionValue}'."); } } private static Expression Equals(Expression expression, Expression expectation) { - var cqlApi = CreateCqlApi(); + var cqlApi = CreateCqlFluentToolkit(); var invocationBuilder = cqlApi.GetInvocationBuilder(); var elmFactory = cqlApi.GetElmFactory(); var equal = invocationBuilder.Invoke(SystemLibrary.Equal, expression, expectation); diff --git a/Cql/CqlToElmTests/(tests)/XorTest.cs b/Cql/CqlToElmTests/(tests)/XorTest.cs index 589da4940..f786392ca 100644 --- a/Cql/CqlToElmTests/(tests)/XorTest.cs +++ b/Cql/CqlToElmTests/(tests)/XorTest.cs @@ -9,7 +9,7 @@ public class XorTest : Base [TestMethod] public void True_Xor_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private True_Xor_False: true xor false @@ -54,7 +54,7 @@ library XorTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(xor); + var lambda = CreateElmFluentToolkit().Lambda(xor); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -65,7 +65,7 @@ library XorTest version '1.0.0' [TestMethod] public void True_Xor_True() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private True_Xor_True: true xor true @@ -110,7 +110,7 @@ library XorTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(xor); + var lambda = CreateElmFluentToolkit().Lambda(xor); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -121,7 +121,7 @@ library XorTest version '1.0.0' [TestMethod] public void False_Xor_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private False_Xor_False: false xor false @@ -166,7 +166,7 @@ library XorTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(xor); + var lambda = CreateElmFluentToolkit().Lambda(xor); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsInstanceOfType(result, typeof(bool?)); @@ -177,7 +177,7 @@ library XorTest version '1.0.0' [TestMethod] public void True_Xor_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private True_Xor_Null: true xor null @@ -222,7 +222,7 @@ library XorTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(xor); + var lambda = CreateElmFluentToolkit().Lambda(xor); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -232,7 +232,7 @@ library XorTest version '1.0.0' [TestMethod] public void Null_Xor_False() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private Null_Xor_False: null xor false @@ -277,7 +277,7 @@ library XorTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(xor); + var lambda = CreateElmFluentToolkit().Lambda(xor); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -288,7 +288,7 @@ library XorTest version '1.0.0' [TestMethod] public void Null_Xor_Null() { - var library = CreateCqlApi().MakeLibrary(""" + var library = CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private Null_Xor_Null: null xor null @@ -333,7 +333,7 @@ library XorTest version '1.0.0' Assert.AreEqual($"{{{SystemUri}}}Boolean", rhsnts.name.Name); } - var lambda = CreateElmApi().Lambda(xor); + var lambda = CreateElmFluentToolkit().Lambda(xor); var dg = lambda.Compile(); var result = dg.DynamicInvoke(FhirCqlContext.ForBundle()); Assert.IsNull(result); @@ -343,7 +343,7 @@ library XorTest version '1.0.0' [TestMethod] public void True_Xor_1() { - CreateCqlApi().MakeLibrary(""" + CreateCqlFluentToolkit().MakeLibrary(""" library XorTest version '1.0.0' define private True_Xor_1: true xor 1 diff --git a/Cql/CqlToElmTests/Base.cs b/Cql/CqlToElmTests/Base.cs index 8b08fc35d..3dbe556d2 100644 --- a/Cql/CqlToElmTests/Base.cs +++ b/Cql/CqlToElmTests/Base.cs @@ -31,15 +31,15 @@ public class Base CqlContext? ctx = null) { ctx ??= DefaultCqlContext; - var elmApi = CreateElmApi(); + var elmApi = CreateElmFluentToolkit(); var lambda = elmApi.Lambda(expression); var expressionName = "TempExpression"; - var state = elmApi.State; + var elmApiServices = elmApi.ForTesting(); LibrarySet librarySet = new("TempLibrarySet", library); DefinitionDictionary definitions = new(); definitions.Add(library.GetVersionedIdentifier()!, expressionName, lambda); - var generateCSharp = state.LibrarySetCSharpCodeGenerator.GenerateCSharp(librarySet, definitions); - var compile = state.AssemblyCompiler.Compile(librarySet, generateCSharp, state.Options.AssemblyCompilerDebugInformationFormat); + var generateCSharp = elmApiServices.GetLibrarySetCSharpCodeGenerator().GenerateCSharp(librarySet, definitions); + var compile = elmApiServices.GetAssemblyCompiler().Compile(librarySet, generateCSharp, elmApi.Settings.AssemblyCompilerDebugInformationFormat); var assemblyBytes = compile.Single().assemblyDataWithSourceCode.AssemblyBytes; using var scope = new RuntimeApi() @@ -59,7 +59,7 @@ public class Base protected static void AssertResult(Expression be, T expected) { - var lambda = CreateElmApi().Lambda(@be); + var lambda = CreateElmFluentToolkit().Lambda(@be); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); @@ -78,7 +78,7 @@ protected static void AssertResult(Expression be, T expected) protected static void AssertNullResult(Expression be) { - var lambda = CreateElmApi().Lambda(@be); + var lambda = CreateElmFluentToolkit().Lambda(@be); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); @@ -161,7 +161,7 @@ protected static void AssertList( Assert.IsNotNull(list.element); Assert.AreEqual(expectedValues.Length, list.element.Length); - var lambda = CreateElmApi().Lambda(list); + var lambda = CreateElmFluentToolkit().Lambda(list); var dg = lambda.Compile(); var ctx = FhirCqlContext.ForBundle(); var result = dg.DynamicInvoke(ctx); @@ -179,7 +179,7 @@ protected static void AssertList( .BuildServiceProvider() .GetRequiredService(); - protected static CqlToolkit CreateCqlApi( + protected static CqlToolkit CreateCqlFluentToolkit( ImmutableHashSet? Models = null, ImmutableHashSet? ModelInfos = null, AmbiguousTypeBehavior AmbiguousTypeBehavior = AmbiguousTypeBehavior.Error, @@ -202,13 +202,13 @@ protected static CqlToolkit CreateCqlApi( AllowNullInterval: AllowNullIntervals )); - internal static ElmApi CreateElmApi( + internal static IElmFluentToolkit CreateElmFluentToolkit( ImmutableHashSet? models = null, ImmutableHashSet? modelInfos = null, AmbiguousTypeBehavior ambiguousTypeBehavior = AmbiguousTypeBehavior.Error, bool enableListPromotion = false) => - CreateCqlApi(models, modelInfos, ambiguousTypeBehavior, enableListPromotion) - .CreateElmApi(_ => new ElmApiOptions( + CreateCqlFluentToolkit(models, modelInfos, ambiguousTypeBehavior, enableListPromotion) + .CreateElmApi(_ => new ElmToolkitSettings( ProcessBatchItemExceptionHandling.ThrowException, Debugger.IsAttached ? AssemblyCompilerDebugInformationFormat.Embedded : AssemblyCompilerDebugInformationFormat.None)); } diff --git a/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs b/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs new file mode 100644 index 000000000..50db61c69 --- /dev/null +++ b/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs @@ -0,0 +1,29 @@ +using CqlSdkPrototype.Cql; +using CqlSdkPrototype.Internal; +using Hl7.Cql.CqlToElm.Builtin; + +namespace Hl7.Cql.CqlToElm.Test; + +internal static class CqlServiceProviderAccessorForTesting +{ + private static TService GetCqlRequiredService(this IServiceProviderAccessorForTesting spAccessor) where TService : notnull => + spAccessor.ServiceProvider.GetRequiredService(); + + public static CqlToElmConverter GetCqlToElmConverter(this IServiceProviderAccessorForTesting spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static CoercionProvider GetCoercionProvider(this IServiceProviderAccessorForTesting spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static ElmFactory GetElmFactory(this IServiceProviderAccessorForTesting spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static MessageProvider GetMessageProvider(this IServiceProviderAccessorForTesting spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static InvocationBuilder GetInvocationBuilder(this IServiceProviderAccessorForTesting spAccessor) => + spAccessor.GetCqlRequiredService(); + + public static SystemLibrary GetSystemLibrary(this IServiceProviderAccessorForTesting spAccessor) => + spAccessor.GetCqlRequiredService(); +} \ No newline at end of file diff --git a/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs b/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs deleted file mode 100644 index ee5c43bc1..000000000 --- a/Cql/CqlToElmTests/CqlTestingOnlyServiceProviderAccessorExtensions.cs +++ /dev/null @@ -1,29 +0,0 @@ -using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Internal; -using Hl7.Cql.CqlToElm.Builtin; - -namespace Hl7.Cql.CqlToElm.Test; - -internal static class CqlTestingOnlyServiceProviderAccessorExtensions -{ - private static TService GetCqlRequiredService(this ITestingOnlyServiceProviderAccessor spAccessor) where TService : notnull => - spAccessor.ServiceProvider.GetRequiredService(); - - public static CqlToElmConverter GetCqlToElmConverter(this ITestingOnlyServiceProviderAccessor spAccessor) => - spAccessor.GetCqlRequiredService(); - - public static CoercionProvider GetCoercionProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => - spAccessor.GetCqlRequiredService(); - - public static ElmFactory GetElmFactory(this ITestingOnlyServiceProviderAccessor spAccessor) => - spAccessor.GetCqlRequiredService(); - - public static MessageProvider GetMessageProvider(this ITestingOnlyServiceProviderAccessor spAccessor) => - spAccessor.GetCqlRequiredService(); - - public static InvocationBuilder GetInvocationBuilder(this ITestingOnlyServiceProviderAccessor spAccessor) => - spAccessor.GetCqlRequiredService(); - - public static SystemLibrary GetSystemLibrary(this ITestingOnlyServiceProviderAccessor spAccessor) => - spAccessor.GetCqlRequiredService(); -} \ No newline at end of file diff --git a/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs b/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs new file mode 100644 index 000000000..87d546702 --- /dev/null +++ b/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs @@ -0,0 +1,24 @@ +using CqlSdkPrototype.Elm; +using CqlSdkPrototype.Internal; +using Hl7.Cql.CodeGeneration.NET; +using Hl7.Cql.Compiler; + +namespace Hl7.Cql.CqlToElm.Test; + +internal static class ElmServiceProviderAccessorForTesting +{ + private static TService GetCqlRequiredService(this IServiceProviderAccessorForTesting spAccessor) where TService : notnull => + spAccessor.ServiceProvider.GetRequiredService(); + + public static LibrarySetCSharpCodeGenerator GetLibrarySetCSharpCodeGenerator(this IServiceProviderAccessorForTesting scope) => + scope.ServiceProvider.GetRequiredService(); + + public static AssemblyCompiler GetAssemblyCompiler(this IServiceProviderAccessorForTesting scope) => + scope.ServiceProvider.GetRequiredService(); + + public static ElmToolkitServiceScope CreateScope(this IServiceProviderAccessorForTesting spAccessor) => + new (spAccessor.ServiceProvider.CreateScope()); + + public static LibraryExpressionBuilder GetLibraryExpressionBuilder(this ElmToolkitServiceScope scope) => + scope.ServiceProvider.GetRequiredService(); +} \ No newline at end of file diff --git a/Cql/CqlToElmTests/ElmToolkitServiceScope.cs b/Cql/CqlToElmTests/ElmToolkitServiceScope.cs new file mode 100644 index 000000000..811a98320 --- /dev/null +++ b/Cql/CqlToElmTests/ElmToolkitServiceScope.cs @@ -0,0 +1,6 @@ +namespace Hl7.Cql.CqlToElm.Test; + +internal class ElmToolkitServiceScope(IServiceScope serviceScope) : IServiceScope { + public void Dispose() => serviceScope.Dispose(); + public IServiceProvider ServiceProvider => serviceScope.ServiceProvider; +} \ No newline at end of file diff --git a/Cql/CqlToElmTests/TestExtensions.cs b/Cql/CqlToElmTests/TestExtensions.cs index 41b13ea38..cc620818a 100644 --- a/Cql/CqlToElmTests/TestExtensions.cs +++ b/Cql/CqlToElmTests/TestExtensions.cs @@ -1,8 +1,8 @@ using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Cql.Extensibility; using CqlSdkPrototype.Cql.Extensions; using CqlSdkPrototype.Elm; using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Internal; using FluentAssertions.Collections; using Hl7.Cql.Compiler; using Hl7.Cql.Elm; @@ -18,10 +18,10 @@ internal static class TestExtensions private static Library Library { get; } = new(identifier: new VersionedIdentifier { id = "Lambdas", version = "1.0.0" }); - public static ICqlToolkit AddFHIRHelpers(this ICqlToolkit cqlToolkit) => cqlToolkit.AddCqlLibraryString(FHIRHelpers); + public static ICqlFluentToolkit AddFHIRHelpers(this ICqlFluentToolkit cqlToolkit) => cqlToolkit.AddCqlLibraryString(FHIRHelpers); public static Library MakeLibrary( - this ICqlToolkit cqlToolkit, + this ICqlFluentToolkit cqlToolkit, string cql, params string[] expectedErrors) { @@ -29,9 +29,8 @@ public static Library MakeLibrary( var library = cqlToolkit .AddCqlLibraryString(cqlLibraryString) - .Translate() - .AsExtendable() - .ProcessItems[cqlLibraryString.VersionedLibraryIdentifier] + .ProcessCqlToElm() + .CqlToElmConversions[cqlLibraryString.VersionedLibraryIdentifier] .ElmLibrary!; if (expectedErrors.Any()) @@ -43,7 +42,7 @@ public static Library MakeLibrary( } public static Library MakeLibraryFromExpression( - this ICqlToolkit cqlToolkit, + this ICqlFluentToolkit cqlToolkit, string expression, string[]? expectedErrors = null, [System.Runtime.CompilerServices.CallerMemberName] string memberName = "") @@ -57,27 +56,24 @@ library Test version '1.0.0' return lib; } + internal static IServiceProviderAccessorForTesting ForTesting(this IElmFluentToolkit elmToolkit) => + elmToolkit.ElmToolkit; + internal static DefinitionDictionary ProcessLibrary( - this ElmApi elmApi, + this IElmFluentToolkit elmToolkit, Library library) { - using var scope = elmApi - .State - .ServiceProvider - .CreateScope(); - var libraryExpressionBuilder = scope.ServiceProvider.GetRequiredService(); + using var scope = elmToolkit.ForTesting().CreateScope(); + var libraryExpressionBuilder = scope.GetLibraryExpressionBuilder(); return libraryExpressionBuilder.ProcessLibrary(library); } internal static LambdaExpression Lambda( - this ElmApi elmApi, + this IElmFluentToolkit elmToolkit, Expression expression) { - using var scope = elmApi - .State - .ServiceProvider - .CreateScope(); - var libraryExpressionBuilder = scope.ServiceProvider.GetRequiredService(); + using var scope = elmToolkit.ForTesting().CreateScope(); + var libraryExpressionBuilder = scope.GetLibraryExpressionBuilder(); DefinitionDictionary lambdas = new DefinitionDictionary(); var ctx = libraryExpressionBuilder.NewExpressionBuilderContext(Library, lambdas); @@ -94,7 +90,7 @@ public static A ContainSingleOfType(this GenericCollectionAssertions().And.ContainSingle().Subject!; public static Expression Expression( - this ICqlToolkit cqlToolkit, + this ICqlFluentToolkit cqlToolkit, string expression, [System.Runtime.CompilerServices.CallerMemberName] string memberName = "") diff --git a/Cql/PackagerCLI/PackagerCli.cs b/Cql/PackagerCLI/PackagerCli.cs index bb64adaad..154b0cb44 100644 --- a/Cql/PackagerCLI/PackagerCli.cs +++ b/Cql/PackagerCLI/PackagerCli.cs @@ -9,7 +9,6 @@ using CqlSdkPrototype.Cql; using CqlSdkPrototype.Cql.Extensions; using CqlSdkPrototype.Elm; -using CqlSdkPrototype.Elm.Extensibility; using CqlSdkPrototype.Elm.Extensions; using Hl7.Cql.CodeGeneration.NET; using Hl7.Cql.Compiler; @@ -19,7 +18,8 @@ namespace Hl7.Cql.Packager; -internal class PackagerCli( +internal class PackagerCli +( ILoggerFactory loggerFactory, ILogger logger, OptionsConsoleDumper optionsConsoleDumper, @@ -34,76 +34,77 @@ public int Run(bool translateCql = false) optionsConsoleDumper.DumpToConsole(); var opt = packagerCliOptions.Value; - ElmApi elmApi; + IElmFluentToolkit elmToolkit; if (translateCql) { - elmApi = new CqlToolkit( - loggerFactory, - new CqlToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) - .OnValueSelect( - valueSelector: _ => opt.CqlInDirectory, - ifHasValue: (api, cql) => api.AddCqlLibrariesFromDirectory(cql), - ifNoValue: _ => logger.LogWarning("No input directory specified for ELM. Nothing to do.")) - .Translate() - .OnValueSelect( - valueSelector: _ => opt.ElmOutDirectory, - ifHasValue: (api, elm) => - { - elm.Recreate(); - api.SaveElmFileToDirectory(elm); - }, - ifNoValue: _ => logger.LogInformation("No out directory specified for ELM.")) - .Compile(); + elmToolkit = new CqlToolkit( + loggerFactory, + new CqlToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) + .AsFluent() + .WithValueSwitch( + valueSelector: _ => opt.CqlInDirectory, + ifHasValue: (api, cql) => api.AddCqlLibrariesFromDirectory(cql), + ifNoValue: _ => logger.LogWarning("No input directory specified for ELM. Nothing to do.")) + .ProcessCqlToElm() + .WithValueSwitch( + valueSelector: _ => opt.ElmOutDirectory, + ifHasValue: (api, elm) => + { + elm.Recreate(); + api.SaveElmFileToDirectory(elm); + }, + ifNoValue: _ => logger.LogInformation("No out directory specified for ELM.")) + .ProcessCqlToAssemblies(); } else { - elmApi = new ElmApi(loggerFactory, new ElmApiOptions(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) - .OnValueSelect( - _ => opt.ElmInDirectory, - ifHasValue: (api, elm) => api.AddElmFilesFromDirectory(elm, filePredicate: file => !HardCodedSkipElmFiles.FileNames.Contains(file.Name)), - ifNoValue: _ => logger.LogWarning("No input directory specified for ELM. Nothing to do.")) - .Compile(); + elmToolkit = new ElmToolkit(loggerFactory, new ElmToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) + .AsFluent() + .WithValueSwitch( + _ => opt.ElmInDirectory, + ifHasValue: (api, elm) => + api.AddElmFilesFromDirectory(elm, filePredicate: file => !HardCodedSkipElmFiles.FileNames.Contains(file.Name)), + ifNoValue: _ => logger.LogWarning("No input directory specified for ELM. Nothing to do.")) + .ProcessElmToAssemblies(); } if (opt.CSharpOutDirectory is { } dirOutCS - && elmApi.AsExtendable().Entries.Any(e => e.Value.CSharpSourceCode is not null)) + && elmToolkit.ElmToAssemblyConversions.Any(e => e.Value.CSharpSourceCode is not null)) { dirOutCS.Recreate(); - elmApi.SaveCSharpFilesToDirectory(dirOutCS); + elmToolkit.SaveCSharpFilesToDirectory(dirOutCS); } if (opt.AssemblyOutDirectory is { } dirOutDll - && elmApi.AsExtendable().Entries.Any(e => e.Value.AssemblyBinary is not null)) + && elmToolkit.ElmToAssemblyConversions.Any(e => e.Value.AssemblyBinary is not null)) { dirOutDll.Recreate(); - elmApi.SaveAssemblyBinariesToDirectory(dirOutDll); + elmToolkit.SaveAssemblyBinariesToDirectory(dirOutDll); } if (opt is - // Check that we have all the required options - { - CqlInDirectory: { } cqlInDir, - ElmInDirectory: { } elmInDir, - FhirOutDirectory: { } fhirOutDir, - FhirCanonicalRootUrl: var canonicalRootUrl, - FhirOverrideDate: var overrideDate - } + // Check that we have all the required options + { + CqlInDirectory: { } cqlInDir, + ElmInDirectory: { } elmInDir, + FhirOutDirectory: { } fhirOutDir, + FhirCanonicalRootUrl: var canonicalRootUrl, + FhirOverrideDate: var overrideDate + } // Check that we have the libraries produced by the ElmApi - && elmApi.AsExtendable() - .Entries - .Select(e => e.Value.ElmLibrary) - .ToArray() is {Length:>0} libraries + && elmToolkit.ElmToAssemblyConversions + .Select(e => e.Value.ElmLibrary) + .ToArray() is { Length: > 0 } libraries // Check that we have the assemblies produced by the ElmApi - && elmApi.AsExtendable() - .Entries - .Where(e => e.Value is {AssemblyBinary: { }, CSharpSourceCode: { }}) - .ToDictionary( - e => e.Key.ToString(), - e => new AssemblyDataWithSourceCode( - assemblyBytes: e.Value.AssemblyBinary!, - sourceCodeFileName: "", // Won't get used - sourceCode: e.Value.CSharpSourceCode!, - debugSymbolsBytes: e.Value.DebugSymbolsBinary)) is {} assembliesByLibraryName) + && elmToolkit.ElmToAssemblyConversions + .Where(e => e.Value is { AssemblyBinary: { }, CSharpSourceCode: { } }) + .ToDictionary( + e => e.Key.ToString(), + e => new AssemblyDataWithSourceCode( + assemblyBytes: e.Value.AssemblyBinary!, + sourceCodeFileName: "", // Won't get used + sourceCode: e.Value.CSharpSourceCode!, + debugSymbolsBytes: e.Value.DebugSymbolsBinary)) is { } assembliesByLibraryName) { _ = resourcePackager; LibrarySet elmLibrarySet = new LibrarySet("", libraries); @@ -133,7 +134,7 @@ public int Run(bool translateCql = false) file static class X { - public static TSelf OnValueSelect( + public static TSelf WithValueSwitch( this TSelf self, Func valueSelector, Action? ifHasValue = null, diff --git a/Demo/API/Program.cs b/Demo/API/Program.cs index 0471fcb14..a57ce4370 100644 --- a/Demo/API/Program.cs +++ b/Demo/API/Program.cs @@ -24,16 +24,16 @@ private static void Main(string[] args) // Get CqlApi from DI IServiceProvider serviceProvider = services.BuildServiceProvider(); - var cqlApi = serviceProvider.GetRequiredService(); + ICqlFluentToolkit cqlApi = serviceProvider.GetRequiredService(); // Setup and use CqlApi cqlApi.AddCqlLibrariesFromDirectory(new DirectoryInfo("input/cql/")); - cqlApi.Translate(); + cqlApi.ProcessCqlToElm(); cqlApi.SaveElmFileToDirectory(new DirectoryInfo("output/elm/")); // Setup and use ElmApi var elmApi = cqlApi.CreateElmApi(); - elmApi.Compile(); + elmApi.ProcessElmToAssemblies(); elmApi.SaveCSharpFilesToDirectory(new DirectoryInfo("output/csharp/")); elmApi.SaveAssemblyBinariesToDirectory(new DirectoryInfo("output/assemblies/")); diff --git a/Demo/Test.Measures.Demo/MeasuresTest.cs b/Demo/Test.Measures.Demo/MeasuresTest.cs index 3c7537dbc..d88818a0d 100644 --- a/Demo/Test.Measures.Demo/MeasuresTest.cs +++ b/Demo/Test.Measures.Demo/MeasuresTest.cs @@ -151,12 +151,13 @@ public static RuntimeScope CreateRuntimeScopeFromElmLibraryFile( LibrarySet librarySet = new(); librarySet.LoadLibraryAndDependencies(elmDirectory, lib, version); - var elmApiOptions = ElmApiOptions.Default; + var elmApiOptions = ElmToolkitSettings.Default; if (Debugger.IsAttached) elmApiOptions = elmApiOptions with { AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.Embedded }; - var elmApi = new ElmApi(loggerFactory, elmApiOptions); + var elmApi = new ElmToolkit(loggerFactory, elmApiOptions); return elmApi + .AsFluent() .AddElmLibraries(librarySet) .CreateRuntimeScope(configureOptions); } diff --git a/submodules/Ncqa.DQIC b/submodules/Ncqa.DQIC index f2705bdc4..a9e1e4432 160000 --- a/submodules/Ncqa.DQIC +++ b/submodules/Ncqa.DQIC @@ -1 +1 @@ -Subproject commit f2705bdc49fc70d2fb36c5f1f779f2e69ad4384b +Subproject commit a9e1e44328a2cd20e7a70b011a2423bbb58f4a57 From ae54a52425b99ef27e01c80ff59f1f1abfba48a4 Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Mon, 27 Jan 2025 17:05:46 +0100 Subject: [PATCH 07/39] Build elm to csharp in release build --- Demo/cql-demo.props | 3 ++- cql-base.props | 3 ++- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/Demo/cql-demo.props b/Demo/cql-demo.props index 6ab377b69..c543b548b 100644 --- a/Demo/cql-demo.props +++ b/Demo/cql-demo.props @@ -35,7 +35,8 @@ false - false + false + true diff --git a/cql-base.props b/cql-base.props index 54259bbd8..afcc70567 100644 --- a/cql-base.props +++ b/cql-base.props @@ -31,7 +31,8 @@ false - false + false + true From dd6a011766cfc601925bc168235af6aab519a014 Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Mon, 27 Jan 2025 22:54:34 +0100 Subject: [PATCH 08/39] cql --- Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs | 43 ++++++++++ .../{CqlToolkit.cs => CqlToElmProcessor.cs} | 84 +++++++------------ ...ttings.cs => CqlToElmProcessorSettings.cs} | 9 +- Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs | 4 +- ... => CqlToElmConversionsLibraryProvider.cs} | 8 +- ...rvices.cs => CqlToElmProcessorServices.cs} | 30 ++++--- Cql/CqlSdkPrototype/Elm/ElmToolkit.cs | 4 +- ...Testing.cs => IServiceProviderAccessor.cs} | 2 +- Cql/CqlSdkPrototype/Program.cs | 8 +- Cql/CqlToElmTests/(tests)/CoercionTest.cs | 57 ++++++++----- Cql/CqlToElmTests/(tests)/IfThenElseTest.cs | 7 +- .../(tests)/InvocationBuilderTests.cs | 8 +- Cql/CqlToElmTests/(tests)/LibraryTest.cs | 7 +- Cql/CqlToElmTests/(tests)/LiteralTest.cs | 2 - Cql/CqlToElmTests/(tests)/SymbolTableTest.cs | 2 - Cql/CqlToElmTests/(tests)/XmlTest.cs | 8 +- Cql/CqlToElmTests/Base.cs | 10 +-- .../CqlServiceProviderAccessorForTesting.cs | 29 ++++--- .../ElmServiceProviderAccessorForTesting.cs | 23 ++--- Cql/CqlToElmTests/ElmToolkitServiceScope.cs | 6 -- Cql/CqlToElmTests/TestExtensions.cs | 2 +- Cql/PackagerCLI/PackagerCli.cs | 9 +- Demo/API/Program.cs | 27 +++--- 23 files changed, 207 insertions(+), 182 deletions(-) create mode 100644 Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs rename Cql/CqlSdkPrototype/Cql/{CqlToolkit.cs => CqlToElmProcessor.cs} (57%) rename Cql/CqlSdkPrototype/Cql/{CqlToolkitSettings.cs => CqlToElmProcessorSettings.cs} (94%) rename Cql/CqlSdkPrototype/Cql/Internal/{CqlToolkitProcessItemsLibraryProvider.cs => CqlToElmConversionsLibraryProvider.cs} (70%) rename Cql/CqlSdkPrototype/Cql/Internal/{CqlToolkitServices.cs => CqlToElmProcessorServices.cs} (67%) rename Cql/CqlSdkPrototype/Internal/{IServiceProviderAccessorForTesting.cs => IServiceProviderAccessor.cs} (59%) delete mode 100644 Cql/CqlToElmTests/ElmToolkitServiceScope.cs diff --git a/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs b/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs new file mode 100644 index 000000000..c7dd2d713 --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs @@ -0,0 +1,43 @@ +using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Internal; + +namespace CqlSdkPrototype.Cql; + +public class CqlFluentToolkit(CqlToElmProcessor cqlToElmProcessor) : + ICqlFluentToolkit +{ + public CqlFluentToolkit( + ILoggerFactory? loggerFactory = null, + CqlToElmProcessorSettings? settings = null) : this(new CqlToElmProcessor(loggerFactory, settings)) + { + } + + /// + /// For testing purposes only. + /// + internal ServiceProvider ServiceProvider => cqlToElmProcessor.ServiceProviderAccessor; + + public ILoggerFactory LoggerFactory => ServiceProvider.GetRequiredService(); + + public CqlToElmProcessorSettings Settings => cqlToElmProcessor.Settings; + + public CqlToElmConversionReadOnlyDictionary CqlToElmConversions => cqlToElmProcessor.Conversions; + + public ICqlFluentToolkit ReplaceSettings(Func replace) + { + cqlToElmProcessor.SetSettings(replace(Settings)); + return this; + } + + public ICqlFluentToolkit AddCqlLibraries(IEnumerable libraries) + { + cqlToElmProcessor.AddCqlLibraries(libraries); + return this; + } + + public ICqlFluentToolkit ProcessCqlToElm() + { + cqlToElmProcessor.ProcessCqlToElm(); + return this; + } +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs similarity index 57% rename from Cql/CqlSdkPrototype/Cql/CqlToolkit.cs rename to Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs index 9f8e37af5..fe63e106e 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlToolkit.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs @@ -6,76 +6,51 @@ namespace CqlSdkPrototype.Cql; -public class CqlToolkit : - ICqlFluentToolkit, - IServiceProviderAccessorForTesting +public class CqlToElmProcessor { - public CqlToolkit( + public CqlToElmProcessor( ILoggerFactory? loggerFactory = null, - CqlToolkitSettings? settings = null) + CqlToElmProcessorSettings? settings = null) { - settings ??= CqlToolkitSettings.Default; - var processItems = CqlToElmConversionDictionary.Empty; - var entriesBuilder = processItems.ToBuilder(); - var libraryProvider = new CqlToolkitProcessItemsLibraryProvider(entriesBuilder); - _cqlToElmConversions = processItems; - _services = CqlToolkitServices.Create(loggerFactory ?? NullLoggerFactory.Instance, settings, libraryProvider); + settings ??= CqlToElmProcessorSettings.Default; + loggerFactory ??= NullLoggerFactory.Instance; + _conversions = CqlToElmConversionDictionary.Empty; _settings = settings; - SetSettings(settings); + _services = CqlToElmProcessorServices.Create(settings, loggerFactory, _conversions); } - public ICqlFluentToolkit AsFluent() => this; + private CqlToElmConversionDictionary _conversions; + private CqlToElmProcessorServices _services; + private CqlToElmProcessorSettings _settings; - private CqlToElmConversionDictionary _cqlToElmConversions; - private CqlToolkitServices _services; - private CqlToolkitSettings _settings; + /// + /// For testing purposes only. + /// + internal ServiceProvider ServiceProviderAccessor => _services.ServiceProvider; - ServiceProvider IServiceProviderAccessorForTesting.ServiceProvider => _services.ServiceProvider; + public CqlToElmProcessorSettings Settings => _settings; - ILoggerFactory ICqlFluentToolkit.LoggerFactory => _services.LoggerFactory; + public CqlToElmConversionReadOnlyDictionary Conversions => _conversions; - public CqlToolkitSettings Settings => _settings; - - public CqlToElmConversionReadOnlyDictionary CqlToElmConversions => _cqlToElmConversions; - - ICqlFluentToolkit ICqlFluentToolkit.ReplaceSettings(Func replace) - { - SetSettings(replace(Settings)); - return this; - } - - ICqlFluentToolkit ICqlFluentToolkit.AddCqlLibraries(IEnumerable libraries) - { - AddCqlLibraries(libraries); - return this; - } - - ICqlFluentToolkit ICqlFluentToolkit.ProcessCqlToElm() - { - ProcessCqlToElm(); - return this; - } - - private void SetItems( + public void SetConversions( CqlToElmConversionDictionary conversions) { - _cqlToElmConversions = conversions; - _services.LibraryProvider.ProcessItemsBuilder = conversions.ToBuilder(); + _conversions = conversions; + _services.LibraryProvider.Builder = conversions.ToBuilder(); } - private void SetSettings( - CqlToolkitSettings settings) + public void SetSettings( + CqlToElmProcessorSettings settings) { - var libraryProvider = _services.LibraryProvider; _services.ServiceProvider.Dispose(); _settings = settings; - _services = CqlToolkitServices.Create(_services.LoggerFactory, Settings, libraryProvider); + _services = CqlToElmProcessorServices.Create(Settings, _services.LoggerFactory, _conversions); } - private void AddCqlLibraries(IEnumerable cqlLibraries) + public void AddCqlLibraries(IEnumerable cqlLibraries) { var logger = _services.Logger; - var entriesBuilder = _services.LibraryProvider.ProcessItemsBuilder; + var entriesBuilder = _services.LibraryProvider.Builder; var cqlToElmConverter = _services.CqlToElmConverter; using var scope = _services.ServiceProvider.CreateScope()!; var hasChanged = false; @@ -98,19 +73,19 @@ private void AddCqlLibraries(IEnumerable cqlLibraries) } if (hasChanged) - SetItems(conversions: entriesBuilder.ToImmutable()); + SetConversions(conversions: entriesBuilder.ToImmutable()); } - private void ProcessCqlToElm() + public void ProcessCqlToElm() { - CqlToElmConversionDictionary.Builder processItemsBuilder = _services.LibraryProvider.ProcessItemsBuilder; + CqlToElmConversionDictionary.Builder processItemsBuilder = _services.LibraryProvider.Builder; var logger = _services.Logger; bool atFirst = true; IEnumerable<(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToElmConversion cqlTranslationEntry)> GetLibrariesForProcessing() { foreach (var (versionedIdentifier, cqlTranslationEntry) in - _cqlToElmConversions.Where(kv => kv.Value.ElmLibrary is null)) + _conversions.Where(kv => kv.Value.ElmLibrary is null)) { if (atFirst) { @@ -138,8 +113,7 @@ private void ProcessCqlToElm() ; if (changedCount > 0) - SetItems(conversions: processItemsBuilder.ToImmutable()); - return; + SetConversions(conversions: processItemsBuilder.ToImmutable()); void ProcessLibrary(CqlVersionedLibraryIdentifier versionedIdentifier, CqlToElmConversion cqlTranslationEntry) { diff --git a/Cql/CqlSdkPrototype/Cql/CqlToolkitSettings.cs b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs similarity index 94% rename from Cql/CqlSdkPrototype/Cql/CqlToolkitSettings.cs rename to Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs index ff67a7be2..41a38ff82 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlToolkitSettings.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs @@ -4,7 +4,7 @@ namespace CqlSdkPrototype.Cql; -public record CqlToolkitSettings +public record CqlToElmProcessorSettings ( ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, ImmutableHashSet? Models = null, @@ -14,10 +14,9 @@ public record CqlToolkitSettings bool EnableListPromotion = false, bool EnableIntervalPromotion = false, bool EnableIntervalDemotion = false, - bool AllowNullInterval = false - ) + bool AllowNullInterval = false) { - public static CqlToolkitSettings Default { get; } = new(); + public static CqlToElmProcessorSettings Default { get; } = new(); public ImmutableHashSet Models { get; init; } = Models ?? []; @@ -84,7 +83,7 @@ public record CqlToolkitSettings internal static class CqlApiOptionsExtensions { - internal static void ApplyToCqlToElmOptions(this CqlToolkitSettings options, CqlToElmOptions opt) + internal static void ApplyToCqlToElmOptions(this CqlToElmProcessorSettings options, CqlToElmOptions opt) { opt.AmbiguousTypeBehavior = options.AmbiguousTypeBehavior; opt.EnableListPromotion = options.EnableListPromotion; diff --git a/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs b/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs index cc4dd569c..5eb961be5 100644 --- a/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs +++ b/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs @@ -5,9 +5,9 @@ namespace CqlSdkPrototype.Cql; public interface ICqlFluentToolkit { ILoggerFactory LoggerFactory { get; } - CqlToolkitSettings Settings { get; } + CqlToElmProcessorSettings Settings { get; } CqlToElmConversionReadOnlyDictionary CqlToElmConversions { get; } - ICqlFluentToolkit ReplaceSettings(Func replace); + ICqlFluentToolkit ReplaceSettings(Func replace); ICqlFluentToolkit AddCqlLibraries(IEnumerable libraries); ICqlFluentToolkit ProcessCqlToElm(); } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmConversionsLibraryProvider.cs similarity index 70% rename from Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs rename to Cql/CqlSdkPrototype/Cql/Internal/CqlToElmConversionsLibraryProvider.cs index a21fab6a8..fdb7c7757 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitProcessItemsLibraryProvider.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmConversionsLibraryProvider.cs @@ -6,11 +6,11 @@ namespace CqlSdkPrototype.Cql.Internal; /// /// Provides the implementation for which resolves library builders given a library name and version on a . /// 00 -/// -internal class CqlToolkitProcessItemsLibraryProvider(CqlToElmConversionDictionary.Builder processItemsBuilder) +/// +internal class CqlToElmConversionsLibraryProvider(CqlToElmConversionDictionary.Builder builder) : ILibraryProvider { - public CqlToElmConversionDictionary.Builder ProcessItemsBuilder { get; set; } = processItemsBuilder; + public CqlToElmConversionDictionary.Builder Builder { get; set; } = builder; public bool TryResolveLibrary( string libraryName, @@ -25,7 +25,7 @@ public bool TryResolveLibrary( CqlLibraryIdentifier.Parse(libraryName), version is null ? null : CqlLibraryVersion.Parse(version)); - if (ProcessItemsBuilder.TryGetValue(libVer, out var processItem) && processItem.ElmLibraryBuilder is { } lb) + if (Builder.TryGetValue(libVer, out var processItem) && processItem.ElmLibraryBuilder is { } lb) { libraryBuilder = lb; return true; diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitServices.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs similarity index 67% rename from Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitServices.cs rename to Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs index 8afecd53f..e9549d2b3 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlToolkitServices.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs @@ -8,25 +8,33 @@ namespace CqlSdkPrototype.Cql.Internal; -internal readonly record struct CqlToolkitServices( +internal readonly record struct CqlToElmProcessorServices( ILoggerFactory LoggerFactory, ServiceProvider ServiceProvider, CqlToElmConverter CqlToElmConverter, - CqlToolkitProcessItemsLibraryProvider LibraryProvider) + CqlToElmConversionsLibraryProvider LibraryProvider) { private static readonly (CqlModel CqlModel, ModelInfo ModelInfo)[] AllMappedModelsInOrder = [ (CqlModel.ElmR1, Models.ElmR1), (CqlModel.Fhir401, Models.Fhir401)]; - public static CqlToolkitServices Create(ILoggerFactory loggerFactory, CqlToolkitSettings options, CqlToolkitProcessItemsLibraryProvider libraryProvider) + public static CqlToElmProcessorServices Create( + CqlToElmProcessorSettings settings, + ILoggerFactory? loggerFactory = null, + CqlToElmConversionDictionary? conversions = null) { + loggerFactory ??= NullLoggerFactory.Instance; + + var builder = (conversions ?? CqlToElmConversionDictionary.Empty).ToBuilder(); + var libraryProvider = new CqlToElmConversionsLibraryProvider(builder); + var services = new ServiceCollection(); services.AddExternalLogging(loggerFactory); - AddCqlServices(services, options, libraryProvider); + AddCqlServices(services, settings, libraryProvider); var serviceProvider = services.BuildServiceProvider(validateScopes: true); var cqlToElmConverter = serviceProvider.GetRequiredService(); - return new CqlToolkitServices( + return new CqlToElmProcessorServices( loggerFactory, serviceProvider, cqlToElmConverter, @@ -35,7 +43,7 @@ public static CqlToolkitServices Create(ILoggerFactory loggerFactory, CqlToolkit private static void AddCqlServices( IServiceCollection serviceCollection, - CqlToolkitSettings options, + CqlToElmProcessorSettings settings, ILibraryProvider libraryProvider) { SuppressCqlDebugAssertions(); @@ -50,14 +58,14 @@ private static void AddCqlServices( Action ConfigureCqlToElmOptions() { - return options.ApplyToCqlToElmOptions; + return settings.ApplyToCqlToElmOptions; } Action ConfigureModelProvider() { var modelInfos = AllMappedModelsInOrder - .SelectWhereNotNull(t => options.Models.Contains(t.CqlModel) ? t.ModelInfo : null) - .Concat(options.ModelInfos); + .SelectWhereNotNull(t => settings.Models.Contains(t.CqlModel) ? t.ModelInfo : null) + .Concat(settings.ModelInfos); return modelProvider => { foreach (var modelInfo in modelInfos) @@ -75,7 +83,7 @@ private static void SuppressCqlDebugAssertions() public ILoggerFactory LoggerFactory { get; } = LoggerFactory; public ServiceProvider ServiceProvider { get; } = ServiceProvider!; - public ILogger Logger { get; } = ServiceProvider.GetLogger(); + public ILogger Logger { get; } = ServiceProvider.GetLogger(); public CqlToElmConverter CqlToElmConverter { get; } = CqlToElmConverter!; - public CqlToolkitProcessItemsLibraryProvider LibraryProvider { get; } = LibraryProvider!; + public CqlToElmConversionsLibraryProvider LibraryProvider { get; } = LibraryProvider!; } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs b/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs index fc64e960c..a675da1da 100644 --- a/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs +++ b/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs @@ -10,7 +10,7 @@ namespace CqlSdkPrototype.Elm; public class ElmToolkit : IElmFluentToolkit, - IServiceProviderAccessorForTesting + IServiceProviderAccessor { public ElmToolkit( ILoggerFactory? loggerFactory = null, @@ -30,7 +30,7 @@ public ElmToolkit( ElmToolkit IElmFluentToolkit.ElmToolkit => this; - ServiceProvider IServiceProviderAccessorForTesting.ServiceProvider => _state.ServiceProvider; + ServiceProvider IServiceProviderAccessor.ServiceProvider => _state.ServiceProvider; IElmFluentToolkit IElmFluentToolkit.ReplaceSettings(Func replace) { diff --git a/Cql/CqlSdkPrototype/Internal/IServiceProviderAccessorForTesting.cs b/Cql/CqlSdkPrototype/Internal/IServiceProviderAccessor.cs similarity index 59% rename from Cql/CqlSdkPrototype/Internal/IServiceProviderAccessorForTesting.cs rename to Cql/CqlSdkPrototype/Internal/IServiceProviderAccessor.cs index 7fe7a6ffe..5c642c204 100644 --- a/Cql/CqlSdkPrototype/Internal/IServiceProviderAccessorForTesting.cs +++ b/Cql/CqlSdkPrototype/Internal/IServiceProviderAccessor.cs @@ -1,6 +1,6 @@ namespace CqlSdkPrototype.Internal; -internal interface IServiceProviderAccessorForTesting +internal interface IServiceProviderAccessor { ServiceProvider ServiceProvider { get; } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Program.cs b/Cql/CqlSdkPrototype/Program.cs index 5aa88edc1..f0c08ab5b 100644 --- a/Cql/CqlSdkPrototype/Program.cs +++ b/Cql/CqlSdkPrototype/Program.cs @@ -26,8 +26,8 @@ static void Main(string[] args) .BuildServiceProvider(); var loggerFactory = serviceProvider.GetRequiredService(); - var cqlApiOptions = new CqlToolkitSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401]); - var cqlApi = new CqlToolkit(loggerFactory, cqlApiOptions); + var cqlToElmProcessorSettings = new CqlToElmProcessorSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401]); + var cqlFluentToolkit = new CqlFluentToolkit(loggerFactory, cqlToElmProcessorSettings); var logger = serviceProvider.GetLogger(); @@ -36,7 +36,7 @@ static void Main(string[] args) //InvokeCqlFromExamplesFolder(logger: logger, cqlApi: cqlApi); // foreach (var librarySetName in (string[]) ["CMS"])//"Authoring", "CMS", "Demo", "Examples"]) - VerboseExample(logger: logger, cqlToolkit: cqlApi, librarySetName: librarySetName, shouldBuildCqlToElm:false); + VerboseExample(logger: logger, cqlToolkit: cqlFluentToolkit, librarySetName: librarySetName, shouldBuildCqlToElm:false); // VerboseExample(logger, cqlApi, "CMS"); } @@ -72,7 +72,7 @@ private static void InvokeCqlFromExamplesFolder( } } - private static void InvokeCqlExample(CqlToolkit cqlToolkit) + private static void InvokeCqlExample(ICqlFluentToolkit cqlToolkit) { // INTRO: // This example demonstrates how to add a CqlLibraryString to the CqlApi and invoke a library declaration directly. diff --git a/Cql/CqlToElmTests/(tests)/CoercionTest.cs b/Cql/CqlToElmTests/(tests)/CoercionTest.cs index 7cdb23485..299313bf8 100644 --- a/Cql/CqlToElmTests/(tests)/CoercionTest.cs +++ b/Cql/CqlToElmTests/(tests)/CoercionTest.cs @@ -1,6 +1,4 @@ -using CqlSdkPrototype.Cql; using Hl7.Cql.Elm; -using CqlSdkPrototype.Cql.Internal; namespace Hl7.Cql.CqlToElm.Test { @@ -10,28 +8,42 @@ namespace Hl7.Cql.CqlToElm.Test [TestClass] public class CoercionTest : Base { - private static CoercionProvider CoercionProvider => CreateCqlFluentToolkit( - EnableListPromotion:true, - EnableListDemotion:true, - EnableIntervalPromotion:true, - EnableIntervalDemotion:true) - .GetCoercionProvider(); + static CoercionTest() + { + var cqlFluentToolkit = CreateCqlFluentToolkit( + EnableListPromotion: true, + EnableListDemotion: true, + EnableIntervalPromotion: true, + EnableIntervalDemotion: true); + ElmFactory = cqlFluentToolkit.GetElmFactory(); + CoercionProvider = cqlFluentToolkit.GetCoercionProvider(); + } + + private static readonly CoercionProvider CoercionProvider; - private static ElmFactory ElmFactory => CreateCqlFluentToolkit().GetElmFactory(); + private static readonly ElmFactory ElmFactory; private static Null Null() => new Null().WithResultType(SystemTypes.AnyType); private static Null Null(TypeSpecifier type) => new Null().WithResultType(type); private static Literal String(string value = "") => ElmFactory.Literal(value); - private static Literal Integer(int value = 1) => ElmFactory.Literal(value); private static Interval Interval(Expression low, Expression high) => new Interval { low = low, high = high }.WithResultType(low.resultTypeSpecifier.ToIntervalType()); + private static Literal Integer(int value = 1) => ElmFactory.Literal(value); + + private static Interval Interval(Expression low, Expression high) => + new Interval { low = low, high = high }.WithResultType(low.resultTypeSpecifier.ToIntervalType()); + + private static ValueSetRef ValueSet(string url = "http://hl7.org") => + new ValueSetRef { name = "TestValueSet" }.WithResultType(SystemTypes.ValueSetType); + + private static List List(TypeSpecifier elementType, params Expression[] elements) => + new List { element = elements }.WithResultType(elementType.ToListType()); - private static ValueSetRef ValueSet(string url = "http://hl7.org") => new ValueSetRef { name = "TestValueSet" }.WithResultType(SystemTypes.ValueSetType); - private static List List(TypeSpecifier elementType, params Expression[] elements) => new List { element = elements }.WithResultType(elementType.ToListType()); private static ChoiceTypeSpecifier Choice(params TypeSpecifier[] types) => new ChoiceTypeSpecifier(types); private static Tuple Tuple(params (string name, Expression value)[] tuple) => new Tuple { element = tuple.Select(t => new TupleElement { name = t.name, value = t.value }).ToArray() } - .WithResultType(TupleType(tuple.Select(t => (t.name, t.value.resultTypeSpecifier)).ToArray())); + .WithResultType(TupleType(tuple.Select(t => (t.name, t.value.resultTypeSpecifier)).ToArray())); + private static TypeSpecifier TupleType(params (string name, TypeSpecifier type)[] tuple) => new TupleTypeSpecifier { element = tuple.Select(t => new TupleElementDefinition { name = t.name, elementType = t.type }).ToArray() }; @@ -181,6 +193,7 @@ public void IntervalCanBeDemoted() Assert.IsTrue(result.Success); Assert.AreEqual(CoercionCost.IntervalDemotion, result.Cost); } + [TestMethod] public void ListCanBeDemoted() { @@ -189,6 +202,7 @@ public void ListCanBeDemoted() Assert.IsTrue(result.Success); Assert.AreEqual(CoercionCost.ListDemotion, result.Cost); } + [TestMethod] public void IntegerPromotedToDecimal() { @@ -198,6 +212,7 @@ public void IntegerPromotedToDecimal() Assert.IsInstanceOfType(result.Result, typeof(ToDecimal)); Assert.AreEqual(CoercionCost.ImplicitToSimpleType, result.Cost); } + [TestMethod] public void ListAnyCanBeCastToListInteger() { @@ -206,6 +221,7 @@ public void ListAnyCanBeCastToListInteger() Assert.IsTrue(result.Success); Assert.AreEqual(CoercionCost.MoreCompatible, result.Cost); } + [TestMethod] public void ListIsSubtypeOfAny() { @@ -218,20 +234,20 @@ public void ListIsSubtypeOfAny() [TestMethod] public void IntegerCanBeCastAsInteger() => CoercionProvider.CanBeCast(SystemTypes.IntegerType, SystemTypes.IntegerType) - .Should().BeTrue(); + .Should().BeTrue(); [TestMethod] public void AnyCanBeCastAsIntervalAny() => CoercionProvider.CanBeCast(SystemTypes.AnyType, SystemTypes.AnyType.ToIntervalType()) - .Should().BeTrue(); + .Should().BeTrue(); [TestMethod] public void ListIntervalIntegerToListIntervalDecimal() { var expression = List(SystemTypes.IntegerType.ToIntervalType(), - Interval(Integer(1), Integer(2))); + Interval(Integer(1), Integer(2))); var result = CoercionProvider.Coerce(expression, - SystemTypes.DecimalType.ToIntervalType().ToListType()); + SystemTypes.DecimalType.ToIntervalType().ToListType()); result.Success.Should().BeTrue(); result.Cost.Should().Be(CoercionCost.ImplicitToSimpleType); result.Result.Should().BeOfType(); @@ -243,7 +259,7 @@ public void IntervalIntegerToIntervalDecimal() { var expression = Interval(Integer(1), Integer(2)); var result = CoercionProvider.Coerce(expression, - SystemTypes.DecimalType.ToIntervalType()); + SystemTypes.DecimalType.ToIntervalType()); Assert.IsTrue(result.Success); Assert.AreEqual(CoercionCost.ImplicitToSimpleType, result.Cost); } @@ -253,7 +269,7 @@ public void ValueSetToListCode() { var expression = ValueSet(); var result = CoercionProvider.Coerce(expression, - SystemTypes.CodeType.ToListType()); + SystemTypes.CodeType.ToListType()); Assert.IsTrue(result.Success); Assert.AreEqual(CoercionCost.ImplicitToClassType, result.Cost); } @@ -303,6 +319,5 @@ public void FhirDateToSystemDate() Assert.IsInstanceOfType(fr.operand![0], typeof(Null)); Assert.AreEqual(SystemTypes.DateType, fr.resultTypeSpecifier); } - } -} +} \ No newline at end of file diff --git a/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs b/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs index 94ded2b04..3544b3716 100644 --- a/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs +++ b/Cql/CqlToElmTests/(tests)/IfThenElseTest.cs @@ -1,5 +1,3 @@ -using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Cql.Internal; using Hl7.Cql.Elm; namespace Hl7.Cql.CqlToElm.Test @@ -76,9 +74,10 @@ public void True_Decimal_String() [TestMethod] public void String_Integer_Integer() { - var messageProvider = CreateCqlFluentToolkit().GetMessageProvider(); + var cqlFluentToolkit = CreateCqlFluentToolkit(); + var messageProvider = cqlFluentToolkit.GetMessageProvider(); string[] expectedErrors = [messageProvider.TypeFoundIsNotExpected(SystemTypes.StringType, SystemTypes.BooleanType)]; - var library = CreateCqlFluentToolkit().MakeLibraryFromExpression("if 'hello' then 4 else 5", expectedErrors); + var library = cqlFluentToolkit.MakeLibraryFromExpression("if 'hello' then 4 else 5", expectedErrors); var @if = library.Should().BeACorrectlyInitializedLibraryWithStatementOfType(); @if.resultTypeSpecifier.Should().Be(SystemTypes.IntegerType); diff --git a/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs b/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs index a6fb324f6..199a02549 100644 --- a/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs +++ b/Cql/CqlToElmTests/(tests)/InvocationBuilderTests.cs @@ -1,7 +1,5 @@ -using CqlSdkPrototype.Cql; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.Elm; -using CqlSdkPrototype.Cql.Internal; namespace Hl7.Cql.CqlToElm.Test { @@ -12,9 +10,9 @@ public class InvocationBuilderTest : Base { static InvocationBuilderTest() { - var cqlApi = CreateCqlFluentToolkit(); - InvocationBuilder = cqlApi.GetInvocationBuilder(); - ElmFactory = cqlApi.GetElmFactory(); + var cqlFluentToolkit = CreateCqlFluentToolkit(); + InvocationBuilder = cqlFluentToolkit.GetInvocationBuilder(); + ElmFactory = cqlFluentToolkit.GetElmFactory(); } private static InvocationBuilder InvocationBuilder { get; } diff --git a/Cql/CqlToElmTests/(tests)/LibraryTest.cs b/Cql/CqlToElmTests/(tests)/LibraryTest.cs index 2d0fbaac6..870a77441 100644 --- a/Cql/CqlToElmTests/(tests)/LibraryTest.cs +++ b/Cql/CqlToElmTests/(tests)/LibraryTest.cs @@ -1,6 +1,4 @@ -using CqlSdkPrototype.Cql; using Hl7.Cql.Elm; -using CqlSdkPrototype.Cql.Internal; namespace Hl7.Cql.CqlToElm.Test { @@ -10,9 +8,10 @@ public class LibraryTest : Base [TestMethod] public void Empty() { - Assert.ThrowsException(() => CreateCqlFluentToolkit().MakeLibrary(string.Empty)); + var cqlFluentToolkit = CreateCqlFluentToolkit(); + Assert.ThrowsException(() => cqlFluentToolkit.MakeLibrary(string.Empty)); var ms = new MemoryStream(); - Assert.ThrowsException(() => CreateCqlFluentToolkit().GetCqlToElmConverter().ConvertLibrary(ms)); + Assert.ThrowsException(() => cqlFluentToolkit.GetCqlToElmConverter().ConvertLibrary(ms)); } #region Identifier diff --git a/Cql/CqlToElmTests/(tests)/LiteralTest.cs b/Cql/CqlToElmTests/(tests)/LiteralTest.cs index d6d213684..44b528e06 100644 --- a/Cql/CqlToElmTests/(tests)/LiteralTest.cs +++ b/Cql/CqlToElmTests/(tests)/LiteralTest.cs @@ -1,5 +1,3 @@ -using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Cql.Internal; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.Elm; diff --git a/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs b/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs index 82bedbd58..fecd69142 100644 --- a/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs +++ b/Cql/CqlToElmTests/(tests)/SymbolTableTest.cs @@ -1,8 +1,6 @@ -using CqlSdkPrototype.Cql; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.CqlToElm.Scopes; using Hl7.Cql.Elm; -using CqlSdkPrototype.Cql.Internal; namespace Hl7.Cql.CqlToElm.Test { diff --git a/Cql/CqlToElmTests/(tests)/XmlTest.cs b/Cql/CqlToElmTests/(tests)/XmlTest.cs index 4a5e7888f..dafb0d307 100644 --- a/Cql/CqlToElmTests/(tests)/XmlTest.cs +++ b/Cql/CqlToElmTests/(tests)/XmlTest.cs @@ -1,9 +1,7 @@ -using CqlSdkPrototype.Cql; using Hl7.Cql.CqlToElm.Builtin; using Hl7.Cql.Elm; using Hl7.Cql.Fhir; using Hl7.Cql.Runtime; -using CqlSdkPrototype.Cql.Internal; namespace Hl7.Cql.CqlToElm.Test { @@ -75,9 +73,9 @@ public void Run(TestCase testCase) private static Expression Equals(Expression expression, Expression expectation) { - var cqlApi = CreateCqlFluentToolkit(); - var invocationBuilder = cqlApi.GetInvocationBuilder(); - var elmFactory = cqlApi.GetElmFactory(); + var cqlFluentToolkit = CreateCqlFluentToolkit(); + var invocationBuilder = cqlFluentToolkit.GetInvocationBuilder(); + var elmFactory = cqlFluentToolkit.GetElmFactory(); var equal = invocationBuilder.Invoke(SystemLibrary.Equal, expression, expectation); var @if = new If { diff --git a/Cql/CqlToElmTests/Base.cs b/Cql/CqlToElmTests/Base.cs index 3dbe556d2..0175164b6 100644 --- a/Cql/CqlToElmTests/Base.cs +++ b/Cql/CqlToElmTests/Base.cs @@ -173,13 +173,13 @@ protected static void AssertList( Assert.AreEqual(true, ctx.Operators.Comparer.Equals(expectedValues[i], array[i], precision)); } - protected static ILoggerFactory LoggerFactory { get; } = + private static ILoggerFactory LoggerFactory { get; } = new ServiceCollection() .AddLogging(lb => lb.AddConsole()) .BuildServiceProvider() .GetRequiredService(); - protected static CqlToolkit CreateCqlFluentToolkit( + protected static CqlFluentToolkit CreateCqlFluentToolkit( ImmutableHashSet? Models = null, ImmutableHashSet? ModelInfos = null, AmbiguousTypeBehavior AmbiguousTypeBehavior = AmbiguousTypeBehavior.Error, @@ -188,9 +188,9 @@ protected static CqlToolkit CreateCqlFluentToolkit( bool EnableIntervalPromotion = false, bool EnableIntervalDemotion = false, bool AllowNullIntervals = false) => - new CqlToolkit( + new( LoggerFactory, - new CqlToolkitSettings( + new CqlToElmProcessorSettings( ProcessBatchItemExceptionHandling: ProcessBatchItemExceptionHandling.ThrowException, Models: Models ?? [CqlModel.ElmR1, CqlModel.Fhir401], ModelInfos: ModelInfos, @@ -200,7 +200,7 @@ protected static CqlToolkit CreateCqlFluentToolkit( EnableIntervalDemotion: EnableIntervalDemotion, EnableIntervalPromotion: EnableIntervalPromotion, AllowNullInterval: AllowNullIntervals - )); + )); internal static IElmFluentToolkit CreateElmFluentToolkit( ImmutableHashSet? models = null, diff --git a/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs b/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs index 50db61c69..9c8715851 100644 --- a/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs +++ b/Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs @@ -1,29 +1,28 @@ using CqlSdkPrototype.Cql; -using CqlSdkPrototype.Internal; using Hl7.Cql.CqlToElm.Builtin; namespace Hl7.Cql.CqlToElm.Test; internal static class CqlServiceProviderAccessorForTesting { - private static TService GetCqlRequiredService(this IServiceProviderAccessorForTesting spAccessor) where TService : notnull => - spAccessor.ServiceProvider.GetRequiredService(); + private static TService GetCqlRequiredService(this CqlFluentToolkit cqlFluentToolkit) where TService : notnull => + cqlFluentToolkit.ServiceProvider.GetRequiredService(); - public static CqlToElmConverter GetCqlToElmConverter(this IServiceProviderAccessorForTesting spAccessor) => - spAccessor.GetCqlRequiredService(); + public static CqlToElmConverter GetCqlToElmConverter(this CqlFluentToolkit cqlFluentToolkit) => + cqlFluentToolkit.GetCqlRequiredService(); - public static CoercionProvider GetCoercionProvider(this IServiceProviderAccessorForTesting spAccessor) => - spAccessor.GetCqlRequiredService(); + public static CoercionProvider GetCoercionProvider(this CqlFluentToolkit cqlFluentToolkit) => + cqlFluentToolkit.GetCqlRequiredService(); - public static ElmFactory GetElmFactory(this IServiceProviderAccessorForTesting spAccessor) => - spAccessor.GetCqlRequiredService(); + public static ElmFactory GetElmFactory(this CqlFluentToolkit cqlFluentToolkit) => + cqlFluentToolkit.GetCqlRequiredService(); - public static MessageProvider GetMessageProvider(this IServiceProviderAccessorForTesting spAccessor) => - spAccessor.GetCqlRequiredService(); + public static MessageProvider GetMessageProvider(this CqlFluentToolkit cqlFluentToolkit) => + cqlFluentToolkit.GetCqlRequiredService(); - public static InvocationBuilder GetInvocationBuilder(this IServiceProviderAccessorForTesting spAccessor) => - spAccessor.GetCqlRequiredService(); + public static InvocationBuilder GetInvocationBuilder(this CqlFluentToolkit cqlFluentToolkit) => + cqlFluentToolkit.GetCqlRequiredService(); - public static SystemLibrary GetSystemLibrary(this IServiceProviderAccessorForTesting spAccessor) => - spAccessor.GetCqlRequiredService(); + public static SystemLibrary GetSystemLibrary(this CqlFluentToolkit cqlFluentToolkit) => + cqlFluentToolkit.GetCqlRequiredService(); } \ No newline at end of file diff --git a/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs b/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs index 87d546702..92d6ebeba 100644 --- a/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs +++ b/Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs @@ -7,18 +7,21 @@ namespace Hl7.Cql.CqlToElm.Test; internal static class ElmServiceProviderAccessorForTesting { - private static TService GetCqlRequiredService(this IServiceProviderAccessorForTesting spAccessor) where TService : notnull => - spAccessor.ServiceProvider.GetRequiredService(); + public static LibrarySetCSharpCodeGenerator GetLibrarySetCSharpCodeGenerator(this IServiceProviderAccessor elmFluentToolkit) => + elmFluentToolkit.ServiceProvider.GetRequiredService(); - public static LibrarySetCSharpCodeGenerator GetLibrarySetCSharpCodeGenerator(this IServiceProviderAccessorForTesting scope) => - scope.ServiceProvider.GetRequiredService(); + public static AssemblyCompiler GetAssemblyCompiler(this IServiceProviderAccessor elmFluentToolkit) => + elmFluentToolkit.ServiceProvider.GetRequiredService(); - public static AssemblyCompiler GetAssemblyCompiler(this IServiceProviderAccessorForTesting scope) => - scope.ServiceProvider.GetRequiredService(); + public static Scope CreateScope(this IServiceProviderAccessor elmFluentToolkit) => + new (elmFluentToolkit.ServiceProvider.CreateScope()); - public static ElmToolkitServiceScope CreateScope(this IServiceProviderAccessorForTesting spAccessor) => - new (spAccessor.ServiceProvider.CreateScope()); + public static LibraryExpressionBuilder GetLibraryExpressionBuilder(this Scope elmFluentFluentToolkitScope) => + elmFluentFluentToolkitScope.ServiceProvider.GetRequiredService(); - public static LibraryExpressionBuilder GetLibraryExpressionBuilder(this ElmToolkitServiceScope scope) => - scope.ServiceProvider.GetRequiredService(); + internal class Scope(IServiceScope serviceScope) : IServiceScope + { + public void Dispose() => serviceScope.Dispose(); + public IServiceProvider ServiceProvider => serviceScope.ServiceProvider; + } } \ No newline at end of file diff --git a/Cql/CqlToElmTests/ElmToolkitServiceScope.cs b/Cql/CqlToElmTests/ElmToolkitServiceScope.cs deleted file mode 100644 index 811a98320..000000000 --- a/Cql/CqlToElmTests/ElmToolkitServiceScope.cs +++ /dev/null @@ -1,6 +0,0 @@ -namespace Hl7.Cql.CqlToElm.Test; - -internal class ElmToolkitServiceScope(IServiceScope serviceScope) : IServiceScope { - public void Dispose() => serviceScope.Dispose(); - public IServiceProvider ServiceProvider => serviceScope.ServiceProvider; -} \ No newline at end of file diff --git a/Cql/CqlToElmTests/TestExtensions.cs b/Cql/CqlToElmTests/TestExtensions.cs index cc620818a..7e5cb6138 100644 --- a/Cql/CqlToElmTests/TestExtensions.cs +++ b/Cql/CqlToElmTests/TestExtensions.cs @@ -56,7 +56,7 @@ library Test version '1.0.0' return lib; } - internal static IServiceProviderAccessorForTesting ForTesting(this IElmFluentToolkit elmToolkit) => + internal static IServiceProviderAccessor ForTesting(this IElmFluentToolkit elmToolkit) => elmToolkit.ElmToolkit; internal static DefinitionDictionary ProcessLibrary( diff --git a/Cql/PackagerCLI/PackagerCli.cs b/Cql/PackagerCLI/PackagerCli.cs index 154b0cb44..b6e32a74a 100644 --- a/Cql/PackagerCLI/PackagerCli.cs +++ b/Cql/PackagerCLI/PackagerCli.cs @@ -37,10 +37,10 @@ public int Run(bool translateCql = false) IElmFluentToolkit elmToolkit; if (translateCql) { - elmToolkit = new CqlToolkit( + var cqlToElmProcessorSettings = new CqlToElmProcessorSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue); + elmToolkit = new CqlFluentToolkit( loggerFactory, - new CqlToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) - .AsFluent() + cqlToElmProcessorSettings) .WithValueSwitch( valueSelector: _ => opt.CqlInDirectory, ifHasValue: (api, cql) => api.AddCqlLibrariesFromDirectory(cql), @@ -58,7 +58,8 @@ public int Run(bool translateCql = false) } else { - elmToolkit = new ElmToolkit(loggerFactory, new ElmToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue)) + var elmToolkitSettings = new ElmToolkitSettings(ProcessBatchItemExceptionHandling: IgnoreExceptionAndContinue); + elmToolkit = new ElmToolkit(loggerFactory, elmToolkitSettings) .AsFluent() .WithValueSwitch( _ => opt.ElmInDirectory, diff --git a/Demo/API/Program.cs b/Demo/API/Program.cs index a57ce4370..8c7cb8e8e 100644 --- a/Demo/API/Program.cs +++ b/Demo/API/Program.cs @@ -16,26 +16,25 @@ private static void Main(string[] args) { //Setup DI var services = new ServiceCollection(); - services.AddLogging(builder => builder.AddConsole()); - - services.AddSingleton(new CqlToolkitSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401])); - services.AddSingleton(); - - // Get CqlApi from DI IServiceProvider serviceProvider = services.BuildServiceProvider(); - ICqlFluentToolkit cqlApi = serviceProvider.GetRequiredService(); + var loggerFactory = serviceProvider.GetRequiredService(); + + // Create CqlApi + var cqlToolkitSettings = new CqlToElmProcessorSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401]); + ICqlFluentToolkit cqlToolkit = new CqlFluentToolkit(loggerFactory, cqlToolkitSettings); // Setup and use CqlApi - cqlApi.AddCqlLibrariesFromDirectory(new DirectoryInfo("input/cql/")); - cqlApi.ProcessCqlToElm(); - cqlApi.SaveElmFileToDirectory(new DirectoryInfo("output/elm/")); + cqlToolkit + .AddCqlLibrariesFromDirectory(new DirectoryInfo("input/cql/")) + .ProcessCqlToElm() + .SaveElmFileToDirectory(new DirectoryInfo("output/elm/")); // Setup and use ElmApi - var elmApi = cqlApi.CreateElmApi(); - elmApi.ProcessElmToAssemblies(); - elmApi.SaveCSharpFilesToDirectory(new DirectoryInfo("output/csharp/")); - elmApi.SaveAssemblyBinariesToDirectory(new DirectoryInfo("output/assemblies/")); + var elmApi = cqlToolkit.CreateElmApi(); + elmApi.ProcessElmToAssemblies() + .SaveCSharpFilesToDirectory(new DirectoryInfo("output/csharp/")) + .SaveAssemblyBinariesToDirectory(new DirectoryInfo("output/assemblies/")); // Setup RuntimeApi var runtimeApi = elmApi.CreateRuntimeApi(); From 51bd309725678d1ea638487a6f93d140aed12e20 Mon Sep 17 00:00:00 2001 From: Paul den Boer Date: Tue, 28 Jan 2025 00:00:19 +0100 Subject: [PATCH 09/39] elm --- .../ExpressionBuilderContextTests.cs | 4 +- Cql/CoreTests/ExpressionBuilderTests.cs | 4 +- .../LibrarySetExpressionBuilderTests.cs | 4 +- Cql/CoreTests/PrimitiveTests.cs | 3 +- Cql/CoreTests/QueriesTest.cs | 4 +- Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs | 12 +- Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs | 9 +- .../Cql/CqlToElmProcessorSettings.cs | 27 +- ...s => CqlFluentToolkitExtensions.Adding.cs} | 14 +- ...s => CqlFluentToolkitExtensions.Saving.cs} | 6 +- .../Extensions/CqlFluentToolkitExtensions.cs | 8 + .../Cql/Extensions/CqlToolkitExtensions.cs | 8 - Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs | 13 - .../Cql/Internal/CqlToElmProcessorServices.cs | 7 +- Cql/CqlSdkPrototype/Elm/ElmApiState.cs | 98 - Cql/CqlSdkPrototype/Elm/ElmFluentToolkit.cs | 42 + ...lmToolkit.cs => ElmToAssemblyProcessor.cs} | 148 +- .../Elm/ElmToAssemblySettings.cs | 11 + Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs | 13 - ...s => ElmFluentToolkitExtensions.Adding.cs} | 35 +- ...l.cs => ElmFluentToolkitExtensions.Cql.cs} | 6 +- ...s => ElmFluentToolkitExtensions.Saving.cs} | 15 +- .../Extensions/ElmFluentToolkitExtensions.cs | 7 + .../Elm/Extensions/ElmToolkitExtensions.cs | 7 - Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs | 14 - .../Elm/{ => Internal}/ElmApiScopedState.cs | 2 +- .../Elm/Internal/ElmToAssemblyServices.cs | 74 + Cql/CqlSdkPrototype/Program.cs | 11 +- .../Extensions/RuntimeApiExtensions.Cql.cs | 14 +- .../Extensions/RuntimeApiExtensions.Elm.cs | 4 +- .../CMS/CSharp/AHAOverall-2.8.000.g.cs | 871 +++++ .../CMS/CSharp/ALARACTOQRFHIR-0.4.000.g.cs | 266 ++ .../AdultOutpatientEncounters-4.11.000.g.cs | 136 + .../AdvancedIllnessandFrailty-1.16.000.g.cs | 402 ++ .../CSharp/AlaraCTClinicalFHIR-0.4.000.g.cs | 234 ++ .../CMS/CSharp/AlaraCTIQRFHIR-0.4.000.g.cs | 268 ++ .../CSharp/AlaraCommonFunctions-1.5.000.g.cs | 345 ++ .../CMS/CSharp/Antibiotic-1.7.000.g.cs | 175 + ...AtrialFibrillationFlutterFHIR-0.3.000.g.cs | 619 ++++ ...ssantMedicationManagementFHIR-0.1.001.g.cs | 513 +++ ...teDXAScansForWomenUnder65FHIR-0.2.001.g.cs | 1195 ++++++ ...iateTestingforPharyngitisFHIR-0.1.001.g.cs | 641 ++++ ...ropriateTreatmentforSTEMIFHIR-1.2.000.g.cs | 1168 ++++++ ...erRespiratoryInfectionURIFHIR-0.1.001.g.cs | 588 +++ ...ndrogenDeprivationTherapyFHIR-1.4.000.g.cs | 881 +++++ .../BreastCancerScreeningFHIR-0.0.001.g.cs | 487 +++ .../CMS/CSharp/CQMCommon-2.2.000.g.cs | 3297 +++++++++++++++++ ...ReceiptofSpecialistReportFHIR-0.3.000.g.cs | 538 +++ ...racts2040BCVAwithin90DaysFHIR-0.1.000.g.cs | 786 ++++ .../CervicalCancerScreeningFHIR-0.0.001.g.cs | 513 +++ .../CMS/CSharp/CesareanBirthFHIR-0.2.000.g.cs | 1940 ++++++++++ ...rMDDSuicideRiskAssessmentFHIR-0.1.000.g.cs | 354 ++ ...ildhoodImmunizationStatusFHIR-0.1.000.g.cs | 2489 +++++++++++++ ...HaveDentalDecayOrCavitiesFHIR-0.0.001.g.cs | 248 ++ ...ChlamydiaScreeninginWomenFHIR-0.1.000.g.cs | 852 +++++ .../ColonCancerScreeningFHIR-0.1.000.g.cs | 530 +++ ...trollingHighBloodPressureFHIR-0.1.000.g.cs | 611 +++ .../CumulativeMedicationDuration-4.1.000.g.cs | 2603 +++++++++++++ ...PhysicianManagingDiabetesFHIR-0.1.000.g.cs | 737 ++++ ...mentiaCognitiveAssessmentFHIR-0.1.000.g.cs | 481 +++ ...onRemissionatTwelveMonthsFHIR-0.2.000.g.cs | 920 +++++ .../CSharp/DiabetesEyeExamFHIR-0.0.002.g.cs | 337 ++ ...ssmentGreaterThan9PercentFHIR-0.1.002.g.cs | 475 +++ ...edonAntithromboticTherapyFHIR-0.9.000.g.cs | 409 ++ ...ationofCurrentMedicationsFHIR-0.2.000.g.cs | 270 ++ .../CMS/CSharp/FHIRHelpers-4.4.000.g.cs | 2803 ++++++++++++++ ...creeningForFutureFallRiskFHIR-0.2.001.g.cs | 314 ++ ...escribedADHDMedicationADDFHIR-0.1.001.g.cs | 1349 +++++++ ...entforTotalHipReplacementFHIR-0.0.008.g.cs | 1605 ++++++++ ...ssessmentsforHeartFailureFHIR-0.1.000.g.cs | 1954 ++++++++++ ...obalMalnutritionCompositeFHIR-0.2.000.g.cs | 1161 ++++++ .../HFACEIorARBorARNIforLVSDFHIR-0.2.000.g.cs | 478 +++ ...BetaBlockerTherapyforLVSDFHIR-1.4.000.g.cs | 681 ++++ .../CMS/CSharp/HIVRetentionFHIR-0.1.000.g.cs | 709 ++++ .../CMS/CSharp/HIVSTITestingFHIR-0.2.000.g.cs | 570 +++ .../CMS/CSharp/HIVScreeningFHIR-0.2.000.g.cs | 406 ++ .../HIVViralSuppressionFHIR-0.1.000.g.cs | 416 +++ .../CMS/CSharp/Hospice-6.12.000.g.cs | 242 ++ ...spitalHarmFallsWithInjuryFHIR-0.0.024.g.cs | 2182 +++++++++++ ...miainHospitalizedPatientsFHIR-0.1.000.g.cs | 1587 ++++++++ ...pioidRelatedAdverseEventsFHIR-0.1.000.g.cs | 443 +++ ...ospitalHarmPressureInjuryFHIR-0.1.000.g.cs | 786 ++++ ...talHarmSevereHypoglycemiaFHIR-0.1.000.g.cs | 1041 ++++++ ...bridHospitalWideMortalityFHIR-0.0.001.g.cs | 2436 ++++++++++++ ...idHospitalWideReadmissionFHIR-0.0.001.g.cs | 2692 ++++++++++++++ ...tteGuerinForBladderCancerFHIR-1.4.000.g.cs | 1200 ++++++ .../KidneyHealthEvaluationFHIR-0.1.000.g.cs | 462 +++ ...gyPainIntensityQuantifiedFHIR-0.1.000.g.cs | 487 +++ .../CMS/CSharp/PCMaternal-5.19.000.g.cs | 1014 +++++ .../PCSBMIScreenAndFollowUpFHIR-0.2.000.g.cs | 1051 ++++++ .../PCSBPScreeningFollowUpFHIR-0.2.000.g.cs | 2728 ++++++++++++++ .../POAGOpticNerveEvaluationFHIR-0.1.000.g.cs | 552 +++ .../CMS/CSharp/PalliativeCare-1.11.000.g.cs | 157 + ...gAndCessationInterventionFHIR-0.0.001.g.cs | 812 ++++ ...entionasOfferedbyDentistsFHIR-0.0.002.g.cs | 274 ++ ...aAvoidanceBoneScanOveruseFHIR-0.3.000.g.cs | 721 ++++ .../CMS/CSharp/QICoreCommon-2.1.000.g.cs | 2210 +++++++++++ ...oidsConcurrentPrescribingFHIR-0.2.000.g.cs | 595 +++ ...ereObstetricComplicationsFHIR-0.1.000.g.cs | 2699 ++++++++++++++ ...ntofCardiovascularDiseaseFHIR-0.2.000.g.cs | 1140 ++++++ .../generated/CMS/CSharp/Status-1.8.000.g.cs | 589 +++ .../SupplementalDataElements-3.5.000.g.cs | 420 +++ .../CMS/CSharp/TJCOverall-8.14.000.g.cs | 330 ++ ...enignProstaticHyperplasiaFHIR-1.4.000.g.cs | 1112 ++++++ ...skMedicationsintheElderlyFHIR-0.2.001.g.cs | 1377 +++++++ .../generated/CMS/CSharp/VTE-8.8.000.g.cs | 187 + ...forChildrenandAdolescentsFHIR-0.1.001.g.cs | 457 +++ Cql/CqlToElmTests/Base.cs | 6 +- .../CqlFluentToolkitExtensions.cs | 81 + .../CqlServiceProviderAccessorForTesting.cs | 28 - .../ElmFluentToolkitExtensions.cs | 58 + .../ElmServiceProviderAccessorForTesting.cs | 27 - Cql/CqlToElmTests/TestExtensions.cs | 85 - Cql/PackagerCLI/PackagerCli.cs | 7 +- Demo/API/Program.cs | 2 +- Demo/Test.Measures.Demo/MeasuresTest.cs | 13 +- submodules/Ncqa.DQIC | 2 +- 117 files changed, 72057 insertions(+), 484 deletions(-) rename Cql/CqlSdkPrototype/Cql/Extensions/{CqlToolkitExtensions.Adding.cs => CqlFluentToolkitExtensions.Adding.cs} (75%) rename Cql/CqlSdkPrototype/Cql/Extensions/{CqlToolkitExtensions.Saving.cs => CqlFluentToolkitExtensions.Saving.cs} (81%) create mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/ElmApiState.cs create mode 100644 Cql/CqlSdkPrototype/Elm/ElmFluentToolkit.cs rename Cql/CqlSdkPrototype/Elm/{ElmToolkit.cs => ElmToAssemblyProcessor.cs} (63%) create mode 100644 Cql/CqlSdkPrototype/Elm/ElmToAssemblySettings.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs rename Cql/CqlSdkPrototype/Elm/Extensions/{ElmToolkitExtensions.Adding.cs => ElmFluentToolkitExtensions.Adding.cs} (73%) rename Cql/CqlSdkPrototype/Elm/Extensions/{ElmToolkitExtensions.Cql.cs => ElmFluentToolkitExtensions.Cql.cs} (59%) rename Cql/CqlSdkPrototype/Elm/Extensions/{ElmToolkitExtensions.Saving.cs => ElmFluentToolkitExtensions.Saving.cs} (83%) create mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs delete mode 100644 Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs rename Cql/CqlSdkPrototype/Elm/{ => Internal}/ElmApiScopedState.cs (88%) create mode 100644 Cql/CqlSdkPrototype/Elm/Internal/ElmToAssemblyServices.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AHAOverall-2.8.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ALARACTOQRFHIR-0.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AdultOutpatientEncounters-4.11.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AdvancedIllnessandFrailty-1.16.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTClinicalFHIR-0.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTIQRFHIR-0.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCommonFunctions-1.5.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/Antibiotic-1.7.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AnticoagulationTherapyforAtrialFibrillationFlutterFHIR-0.3.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AntidepressantMedicationManagementFHIR-0.1.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateDXAScansForWomenUnder65FHIR-0.2.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTestingforPharyngitisFHIR-0.1.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforSTEMIFHIR-1.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR-0.1.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR-1.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/BreastCancerScreeningFHIR-0.0.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/CQMCommon-2.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/CRLReceiptofSpecialistReportFHIR-0.3.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/Cataracts2040BCVAwithin90DaysFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/CervicalCancerScreeningFHIR-0.0.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/CesareanBirthFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildhoodImmunizationStatusFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildrenWhoHaveDentalDecayOrCavitiesFHIR-0.0.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ChlamydiaScreeninginWomenFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ColonCancerScreeningFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ControllingHighBloodPressureFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/CumulativeMedicationDuration-4.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DRCommunicationWithPhysicianManagingDiabetesFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DementiaCognitiveAssessmentFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DepressionRemissionatTwelveMonthsFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DiabetesEyeExamFHIR-0.0.002.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DiabetesGlycemicStatusAssessmentGreaterThan9PercentFHIR-0.1.002.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DischargedonAntithromboticTherapyFHIR-0.9.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/DocumentationofCurrentMedicationsFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/FHIRHelpers-4.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/FallsScreeningForFutureFallRiskFHIR-0.2.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/FollowUpCareforChildrenPrescribedADHDMedicationADDFHIR-0.1.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/FunctionalStatusAssessmentforTotalHipReplacementFHIR-0.0.008.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/FunctionalStatusAssessmentsforHeartFailureFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/GlobalMalnutritionCompositeFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HFACEIorARBorARNIforLVSDFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HFBetaBlockerTherapyforLVSDFHIR-1.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HIVRetentionFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HIVSTITestingFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HIVScreeningFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HIVViralSuppressionFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/Hospice-6.12.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HospitalHarmFallsWithInjuryFHIR-0.0.024.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HospitalHarmHyperglycemiainHospitalizedPatientsFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HospitalHarmOpioidRelatedAdverseEventsFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HospitalHarmPressureInjuryFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HospitalHarmSevereHypoglycemiaFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HybridHospitalWideMortalityFHIR-0.0.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/HybridHospitalWideReadmissionFHIR-0.0.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/IntravesicalBacillusCalmetteGuerinForBladderCancerFHIR-1.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/KidneyHealthEvaluationFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/OncologyPainIntensityQuantifiedFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/PCMaternal-5.19.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/PCSBMIScreenAndFollowUpFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/PCSBPScreeningFollowUpFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/POAGOpticNerveEvaluationFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/PalliativeCare-1.11.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/PreventiveCareAndTobaccoUseScreeningAndCessationInterventionFHIR-0.0.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/PrimaryCariesPreventionasOfferedbyDentistsFHIR-0.0.002.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/ProstateCaAvoidanceBoneScanOveruseFHIR-0.3.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/QICoreCommon-2.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/SafeUseofOpioidsConcurrentPrescribingFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/SevereObstetricComplicationsFHIR-0.1.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/StatinTherapyforthePreventionandTreatmentofCardiovascularDiseaseFHIR-0.2.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/Status-1.8.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/SupplementalDataElements-3.5.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/TJCOverall-8.14.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/UrinarySymptomScoreChangeAfterBenignProstaticHyperplasiaFHIR-1.4.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/UseofHighRiskMedicationsintheElderlyFHIR-0.2.001.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/VTE-8.8.000.g.cs create mode 100644 Cql/CqlSdkPrototype/generated/CMS/CSharp/WeightAssessmentandCounselingforNutritionandPhysicalActivityforChildrenandAdolescentsFHIR-0.1.001.g.cs create mode 100644 Cql/CqlToElmTests/CqlFluentToolkitExtensions.cs delete mode 100644 Cql/CqlToElmTests/CqlServiceProviderAccessorForTesting.cs create mode 100644 Cql/CqlToElmTests/ElmFluentToolkitExtensions.cs delete mode 100644 Cql/CqlToElmTests/ElmServiceProviderAccessorForTesting.cs diff --git a/Cql/CoreTests/ExpressionBuilderContextTests.cs b/Cql/CoreTests/ExpressionBuilderContextTests.cs index 148d5dba2..96a0f4ec4 100644 --- a/Cql/CoreTests/ExpressionBuilderContextTests.cs +++ b/Cql/CoreTests/ExpressionBuilderContextTests.cs @@ -1,4 +1,4 @@ -using CqlSdkPrototype.Elm; +using CqlSdkPrototype.Elm.Internal; using Hl7.Cql.Abstractions; using Hl7.Cql.Compiler; using Hl7.Cql.Runtime.Hosting; @@ -13,7 +13,7 @@ public class ExpressionBuilderContextTests [TestMethod] public void Get_Property_Uses_TypeResolver() { - using var serviceProvider = ElmApiState.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); + using var serviceProvider = ElmToAssemblyServices.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); var property = ExpressionBuilderContext.GetProperty(typeof(MeasureReport.PopulationComponent), "id", serviceProvider.GetRequiredService())!; Assert.AreEqual(typeof(Element), property.DeclaringType); Assert.AreEqual(nameof(Element.ElementId), property.Name); diff --git a/Cql/CoreTests/ExpressionBuilderTests.cs b/Cql/CoreTests/ExpressionBuilderTests.cs index 1579f49e8..ee8c486a8 100644 --- a/Cql/CoreTests/ExpressionBuilderTests.cs +++ b/Cql/CoreTests/ExpressionBuilderTests.cs @@ -1,14 +1,14 @@ using Hl7.Fhir.Model; -using CqlSdkPrototype.Elm; using Hl7.Cql.Compiler; using Hl7.Cql.Runtime.Hosting; +using CqlSdkPrototype.Elm.Internal; namespace CoreTests { [TestClass] public class LibraryExpressionBuilderTests { - private static ServiceProvider BuildServiceProvider() => ElmApiState.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); + private static ServiceProvider BuildServiceProvider() => ElmToAssemblyServices.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); [TestMethod] public void AggregateQueries_1_0_0() diff --git a/Cql/CoreTests/LibrarySetExpressionBuilderTests.cs b/Cql/CoreTests/LibrarySetExpressionBuilderTests.cs index 7c8c3fd84..db5810663 100644 --- a/Cql/CoreTests/LibrarySetExpressionBuilderTests.cs +++ b/Cql/CoreTests/LibrarySetExpressionBuilderTests.cs @@ -1,4 +1,4 @@ -using CqlSdkPrototype.Elm; +using CqlSdkPrototype.Elm.Internal; using Hl7.Cql.Abstractions; using Hl7.Cql.Compiler; using Hl7.Cql.Primitives; @@ -16,7 +16,7 @@ public class LibrarySetExpressionBuilderTests [TestMethod] public void LoadLibraryAndDependencies_CrossLibraryCodeSystems() { - var serviceProvider = ElmApiState.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); + var serviceProvider = ElmToAssemblyServices.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); using var servicesScope = serviceProvider.CreateScope(); LibrarySet librarySet = new(); librarySet.LoadLibraryAndDependencies(LibrarySetsDirs.Cms.ElmDir, "CumulativeMedicationDuration"); diff --git a/Cql/CoreTests/PrimitiveTests.cs b/Cql/CoreTests/PrimitiveTests.cs index ba9b46904..6d79a89f7 100644 --- a/Cql/CoreTests/PrimitiveTests.cs +++ b/Cql/CoreTests/PrimitiveTests.cs @@ -3408,8 +3408,7 @@ public void Aggregate_Query_Test() Assert.That.DoesNotThrow(() => { - new ElmToolkit(loggerFactory) - .AsFluent() + new ElmFluentToolkit(loggerFactory) .AddElmLibraries(librarySet) .ProcessElmToAssemblies(); }); diff --git a/Cql/CoreTests/QueriesTest.cs b/Cql/CoreTests/QueriesTest.cs index b474c6a82..20de3001a 100644 --- a/Cql/CoreTests/QueriesTest.cs +++ b/Cql/CoreTests/QueriesTest.cs @@ -3,9 +3,9 @@ using Hl7.Cql.Runtime; using Hl7.Cql.ValueSets; using Hl7.Fhir.Model; -using CqlSdkPrototype.Elm; using Hl7.Cql.Compiler; using Hl7.Cql.Runtime.Hosting; +using CqlSdkPrototype.Elm.Internal; namespace CoreTests { @@ -15,7 +15,7 @@ public class QueriesTest [ClassInitialize] public static void Initialize(TestContext context) { - using var serviceProvider = ElmApiState.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); + using var serviceProvider = ElmToAssemblyServices.AddCqlCompilerServices(new ServiceCollection().AddDebugLogging()).BuildServiceProvider(validateScopes: true); using var servicesScope = serviceProvider.CreateScope(); var elm = new FileInfo(@"Input\ELM\Test\QueriesTest-1.0.0.json"); diff --git a/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs b/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs index c7dd2d713..84266df69 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlFluentToolkit.cs @@ -1,10 +1,8 @@ using CqlSdkPrototype.Infrastructure; -using CqlSdkPrototype.Internal; namespace CqlSdkPrototype.Cql; -public class CqlFluentToolkit(CqlToElmProcessor cqlToElmProcessor) : - ICqlFluentToolkit +public sealed class CqlFluentToolkit(CqlToElmProcessor cqlToElmProcessor) { public CqlFluentToolkit( ILoggerFactory? loggerFactory = null, @@ -15,7 +13,7 @@ public CqlFluentToolkit( /// /// For testing purposes only. /// - internal ServiceProvider ServiceProvider => cqlToElmProcessor.ServiceProviderAccessor; + internal ServiceProvider ServiceProvider => cqlToElmProcessor.ServiceProvider; public ILoggerFactory LoggerFactory => ServiceProvider.GetRequiredService(); @@ -23,19 +21,19 @@ public CqlFluentToolkit( public CqlToElmConversionReadOnlyDictionary CqlToElmConversions => cqlToElmProcessor.Conversions; - public ICqlFluentToolkit ReplaceSettings(Func replace) + public CqlFluentToolkit ReplaceSettings(Func replace) { cqlToElmProcessor.SetSettings(replace(Settings)); return this; } - public ICqlFluentToolkit AddCqlLibraries(IEnumerable libraries) + public CqlFluentToolkit AddCqlLibraries(IEnumerable libraries) { cqlToElmProcessor.AddCqlLibraries(libraries); return this; } - public ICqlFluentToolkit ProcessCqlToElm() + public CqlFluentToolkit ProcessCqlToElm() { cqlToElmProcessor.ProcessCqlToElm(); return this; diff --git a/Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs index fe63e106e..8572be60b 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessor.cs @@ -26,13 +26,13 @@ public CqlToElmProcessor( /// /// For testing purposes only. /// - internal ServiceProvider ServiceProviderAccessor => _services.ServiceProvider; + internal ServiceProvider ServiceProvider => _services.ServiceProvider; public CqlToElmProcessorSettings Settings => _settings; public CqlToElmConversionReadOnlyDictionary Conversions => _conversions; - public void SetConversions( + private void SetConversions( CqlToElmConversionDictionary conversions) { _conversions = conversions; @@ -42,9 +42,12 @@ public void SetConversions( public void SetSettings( CqlToElmProcessorSettings settings) { + if (_settings == settings) + return; + _services.ServiceProvider.Dispose(); _settings = settings; - _services = CqlToElmProcessorServices.Create(Settings, _services.LoggerFactory, _conversions); + _services = CqlToElmProcessorServices.Create(settings, _services.LoggerFactory, _conversions); } public void AddCqlLibraries(IEnumerable cqlLibraries) diff --git a/Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs index 41a38ff82..e4e30b3db 100644 --- a/Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs +++ b/Cql/CqlSdkPrototype/Cql/CqlToElmProcessorSettings.cs @@ -4,8 +4,10 @@ namespace CqlSdkPrototype.Cql; -public record CqlToElmProcessorSettings -( +/// +/// The settings used to configure the CQL to ELM processor. +/// +public record CqlToElmProcessorSettings( ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, ImmutableHashSet? Models = null, ImmutableHashSet? ModelInfos = null, @@ -29,7 +31,7 @@ public record CqlToElmProcessorSettings /// The default value is . /// /// - public bool AllowNullIntervals { get; set; } = AllowNullInterval; + public bool AllowNullIntervals { get; init; } = AllowNullInterval; /// /// When , point intervals will automatically be created as necessary from scalar values. @@ -67,7 +69,7 @@ public record CqlToElmProcessorSettings /// This type of conversion will issue a warning and could fail at runtime. /// /// - public bool EnableListDemotion { get; set; } = EnableListDemotion; + public bool EnableListDemotion { get; init; } = EnableListDemotion; /// /// @@ -79,17 +81,14 @@ public record CqlToElmProcessorSettings /// /// public AmbiguousTypeBehavior AmbiguousTypeBehavior { get; init; } = AmbiguousTypeBehavior; -} -internal static class CqlApiOptionsExtensions -{ - internal static void ApplyToCqlToElmOptions(this CqlToElmProcessorSettings options, CqlToElmOptions opt) + internal void ApplyToCqlToElmOptions(CqlToElmOptions opt) { - opt.AmbiguousTypeBehavior = options.AmbiguousTypeBehavior; - opt.EnableListPromotion = options.EnableListPromotion; - opt.EnableListDemotion = options.EnableListDemotion; - opt.EnableIntervalPromotion = options.EnableIntervalPromotion; - opt.EnableIntervalDemotion = options.EnableIntervalDemotion; - opt.AllowNullIntervals = options.AllowNullIntervals; + opt.AmbiguousTypeBehavior = AmbiguousTypeBehavior; + opt.EnableListPromotion = EnableListPromotion; + opt.EnableListDemotion = EnableListDemotion; + opt.EnableIntervalPromotion = EnableIntervalPromotion; + opt.EnableIntervalDemotion = EnableIntervalDemotion; + opt.AllowNullIntervals = AllowNullIntervals; } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.Adding.cs similarity index 75% rename from Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs rename to Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.Adding.cs index d40bd020b..d30a51d68 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Adding.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.Adding.cs @@ -3,17 +3,17 @@ namespace CqlSdkPrototype.Cql.Extensions; -public static partial class CqlToolkitExtensions +public static partial class CqlFluentToolkitExtensions { - public static ICqlFluentToolkit AddCqlLibraryString( - this ICqlFluentToolkit cqlToolkit, + public static CqlFluentToolkit AddCqlLibraryString( + this CqlFluentToolkit cqlToolkit, CqlLibraryString cqlLibrary) { return cqlToolkit.AddCqlLibraries([cqlLibrary]); } - public static ICqlFluentToolkit AddCqlLibrariesFromDirectory( - this ICqlFluentToolkit cqlToolkit, + public static CqlFluentToolkit AddCqlLibrariesFromDirectory( + this CqlFluentToolkit cqlToolkit, DirectoryInfo directory, EnumerationOptions? options = null, Func? filePredicate = null) @@ -23,8 +23,8 @@ public static ICqlFluentToolkit AddCqlLibrariesFromDirectory( return cqlToolkit.AddCqlLibraryFiles(files); } - public static ICqlFluentToolkit AddCqlLibraryFiles( - this ICqlFluentToolkit cqlToolkit, + public static CqlFluentToolkit AddCqlLibraryFiles( + this CqlFluentToolkit cqlToolkit, IEnumerable files) { var logger = cqlToolkit.CreateLogger(); diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.Saving.cs similarity index 81% rename from Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs rename to Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.Saving.cs index dbfb0c814..b94aa2c67 100644 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.Saving.cs +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.Saving.cs @@ -1,9 +1,9 @@ namespace CqlSdkPrototype.Cql.Extensions; -public static partial class CqlToolkitExtensions +public static partial class CqlFluentToolkitExtensions { - public static ICqlFluentToolkit SaveElmFileToDirectory( - this ICqlFluentToolkit cqlToolkit, + public static CqlFluentToolkit SaveElmFileToDirectory( + this CqlFluentToolkit cqlToolkit, DirectoryInfo directory, bool writeIndented = true) { diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.cs new file mode 100644 index 000000000..4413f0a0a --- /dev/null +++ b/Cql/CqlSdkPrototype/Cql/Extensions/CqlFluentToolkitExtensions.cs @@ -0,0 +1,8 @@ +namespace CqlSdkPrototype.Cql.Extensions; + +public static partial class CqlFluentToolkitExtensions +{ + private static ILogger CreateLogger(this CqlFluentToolkit cqlToolkit) => + cqlToolkit.LoggerFactory.CreateLogger(typeof(CqlFluentToolkitExtensions)); + +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs b/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs deleted file mode 100644 index 9f7e8a1d2..000000000 --- a/Cql/CqlSdkPrototype/Cql/Extensions/CqlToolkitExtensions.cs +++ /dev/null @@ -1,8 +0,0 @@ -namespace CqlSdkPrototype.Cql.Extensions; - -public static partial class CqlToolkitExtensions -{ - private static ILogger CreateLogger(this ICqlFluentToolkit cqlToolkit) => - cqlToolkit.LoggerFactory.CreateLogger(typeof(CqlToolkitExtensions)); - -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs b/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs deleted file mode 100644 index 5eb961be5..000000000 --- a/Cql/CqlSdkPrototype/Cql/ICqlFluentToolkit.cs +++ /dev/null @@ -1,13 +0,0 @@ -using CqlSdkPrototype.Infrastructure; - -namespace CqlSdkPrototype.Cql; - -public interface ICqlFluentToolkit -{ - ILoggerFactory LoggerFactory { get; } - CqlToElmProcessorSettings Settings { get; } - CqlToElmConversionReadOnlyDictionary CqlToElmConversions { get; } - ICqlFluentToolkit ReplaceSettings(Func replace); - ICqlFluentToolkit AddCqlLibraries(IEnumerable libraries); - ICqlFluentToolkit ProcessCqlToElm(); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs b/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs index e9549d2b3..6c815838b 100644 --- a/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs +++ b/Cql/CqlSdkPrototype/Cql/Internal/CqlToElmProcessorServices.cs @@ -32,13 +32,8 @@ public static CqlToElmProcessorServices Create( services.AddExternalLogging(loggerFactory); AddCqlServices(services, settings, libraryProvider); var serviceProvider = services.BuildServiceProvider(validateScopes: true); - var cqlToElmConverter = serviceProvider.GetRequiredService(); - return new CqlToElmProcessorServices( - loggerFactory, - serviceProvider, - cqlToElmConverter, - libraryProvider); + return ActivatorUtilities.CreateInstance(serviceProvider, serviceProvider, libraryProvider); } private static void AddCqlServices( diff --git a/Cql/CqlSdkPrototype/Elm/ElmApiState.cs b/Cql/CqlSdkPrototype/Elm/ElmApiState.cs deleted file mode 100644 index da70c39b1..000000000 --- a/Cql/CqlSdkPrototype/Elm/ElmApiState.cs +++ /dev/null @@ -1,98 +0,0 @@ -using CqlSdkPrototype.Infrastructure; -using CqlSdkPrototype.Logging.Internal; -using Hl7.Cql.Abstractions; -using Hl7.Cql.CodeGeneration.NET; -using Hl7.Cql.Compiler; -using Hl7.Cql.Conversion; -using Hl7.Cql.Fhir; -using Hl7.Cql.Runtime.Hosting; -using Hl7.Fhir.Introspection; - -namespace CqlSdkPrototype.Elm; - -internal readonly record struct ElmApiState( - ILoggerFactory LoggerFactory, - ImmutableDictionary ElmToAssemblyItems, - ElmToolkitSettings Settings, - ServiceProvider ServiceProvider, - ILogger Logger, - AssemblyCompiler AssemblyCompiler, - LibrarySetCSharpCodeGenerator LibrarySetCSharpCodeGenerator) -{ - public static ElmApiState Create( - ILoggerFactory loggerFactory, - ElmToolkitSettings options) - { - var entries = ElmToAssemblyConversionDictionary.Empty/*.WithComparers(CqlVersionedLibraryIdentifier.IdentifierOnlyEqualityComparer)*/; - return new ElmApiState(loggerFactory, entries, null!, null!, null!, null!, null!) - { - // Must be set through the property initializer, to ensure the services are created - Settings = options - }; - } - - private readonly ElmToolkitSettings _options = Settings; - - public ElmToolkitSettings Settings - { - get => _options; - init - { - if (ReferenceEquals(_options, value)) - return; - - ServiceProvider?.Dispose(); - - _options = value; - - var services = new ServiceCollection(); - services.AddExternalLogging(LoggerFactory!); - AddCqlCodeGenerationServices(services); - ServiceProvider = services.BuildServiceProvider(validateScopes:true); - Logger = ServiceProvider.GetLogger(); - AssemblyCompiler = ServiceProvider.GetRequiredService(); - LibrarySetCSharpCodeGenerator = ServiceProvider.GetRequiredService(); - } - } - - public ILoggerFactory LoggerFactory { get; } = LoggerFactory; - - public ElmApiScopedState CreateScopedState() => new(ServiceProvider.CreateScope()); - - private static void AddCqlCodeGenerationServices(IServiceCollection services) - { - AddCqlCompilerServices(services); - services.TryAddSingleton(); - services.TryAddSingleton(); - services.TryAddSingleton(); - } - - public static IServiceCollection AddCqlCompilerServices(IServiceCollection services) - { - services.TryAddSingleton(_ => Hl7.Fhir.Model.ModelInfo.ModelInspector); - services.TryAddSingleton(); - - const int cacheSize = 0; // TODO: Must move to configuration - services.TryAddSingleton(sp => - { - var modelInspector = sp.GetRequiredService(); - var logger = sp.GetLogger(); - var converter = FhirTypeConverter - .Create(modelInspector, cacheSize) - .UseLogger(logger); - converter.CaptureAvailableConverters(); - return converter; - }); - - services.TryAddSingleton(); - services.TryAddSingleton(); - services.TryAddSingleton(_ => ExpressionBuilderSettings.Default); // TODO: Must move to configuration - services.TryAddScoped(); - services.TryAddScoped(); - services.TryAddScoped(); - services.TryAddScoped(); - - return services; - } - -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmFluentToolkit.cs b/Cql/CqlSdkPrototype/Elm/ElmFluentToolkit.cs new file mode 100644 index 000000000..ca0888100 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/ElmFluentToolkit.cs @@ -0,0 +1,42 @@ +using Hl7.Cql.Elm; + +namespace CqlSdkPrototype.Elm; + +public sealed class ElmFluentToolkit(ElmToAssemblyProcessor elmToAssemblyProcessor) +{ + public ElmFluentToolkit( + ILoggerFactory? loggerFactory = null, + ElmToAssemblySettings? settings = null) : this(new ElmToAssemblyProcessor(loggerFactory, settings)) + { + } + + /// + /// For testing purposes only. + /// + internal ServiceProvider ServiceProvider => elmToAssemblyProcessor.ServiceProvider; + + public ILoggerFactory LoggerFactory => ServiceProvider.GetRequiredService(); + + public ElmToAssemblySettings Settings => elmToAssemblyProcessor.Settings; + + public ElmToAssemblyConversionReadOnlyDictionary ElmToAssemblyConversions => elmToAssemblyProcessor.ElmToAssemblyConversions; + + public ElmFluentToolkit ReplaceSettings(Func replace) + { + elmToAssemblyProcessor.SetSettings(replace(Settings)); + return this; + + } + + public ElmFluentToolkit AddElmLibraries(IEnumerable libraries) + { + elmToAssemblyProcessor.AddElmLibraries(libraries); + return this; + } + + public ElmFluentToolkit ProcessElmToAssemblies() + { + elmToAssemblyProcessor.ProcessElmToAssemblies(); + return this; + } +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs b/Cql/CqlSdkPrototype/Elm/ElmToAssemblyProcessor.cs similarity index 63% rename from Cql/CqlSdkPrototype/Elm/ElmToolkit.cs rename to Cql/CqlSdkPrototype/Elm/ElmToAssemblyProcessor.cs index a675da1da..d7f14343d 100644 --- a/Cql/CqlSdkPrototype/Elm/ElmToolkit.cs +++ b/Cql/CqlSdkPrototype/Elm/ElmToAssemblyProcessor.cs @@ -1,4 +1,5 @@ -using CqlSdkPrototype.Infrastructure; +using CqlSdkPrototype.Elm.Internal; +using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; using Hl7.Cql.Abstractions.Exceptions; using Hl7.Cql.CodeGeneration.NET; @@ -8,65 +9,53 @@ namespace CqlSdkPrototype.Elm; -public class ElmToolkit : - IElmFluentToolkit, - IServiceProviderAccessor +public class ElmToAssemblyProcessor { - public ElmToolkit( + public ElmToAssemblyProcessor( ILoggerFactory? loggerFactory = null, - ElmToolkitSettings? options = null) : this(ElmApiState.Create(loggerFactory ?? NullLoggerFactory.Instance, options ?? ElmToolkitSettings.Default)) { } - - public IElmFluentToolkit AsFluent() => this; - - internal ElmToolkit(ElmApiState state) => _state = state; // Might make this public later. Used for testing now. - - private ElmApiState _state; - - public ElmToolkitSettings Settings => _state.Settings; - - public ElmToAssemblyConversionReadOnlyDictionary ElmToAssemblyConversions => _state.ElmToAssemblyItems; - - public ILoggerFactory LoggerFactory => _state.LoggerFactory; - - ElmToolkit IElmFluentToolkit.ElmToolkit => this; - - ServiceProvider IServiceProviderAccessor.ServiceProvider => _state.ServiceProvider; - - IElmFluentToolkit IElmFluentToolkit.ReplaceSettings(Func replace) + ElmToAssemblySettings? settings = null) { - SetSettings(replace(_state.Settings)); - return this; + settings ??= ElmToAssemblySettings.Default; + loggerFactory ??= NullLoggerFactory.Instance; + _conversions = ElmToAssemblyConversionDictionary.Empty; + _settings = settings; + _services = ElmToAssemblyServices.Create(_settings, loggerFactory); } - IElmFluentToolkit IElmFluentToolkit.AddElmLibraries(IEnumerable libraries) - { - AddElmLibraries(libraries); - return this; - } + private ElmToAssemblyConversionDictionary _conversions; + private ElmToAssemblyServices _services; + private ElmToAssemblySettings _settings; - IElmFluentToolkit IElmFluentToolkit.ProcessElmToAssemblies() - { - ProcessElmToAssemblies(); - return this; - } + /// + /// For testing purposes only. + /// + internal ServiceProvider ServiceProvider => _services.ServiceProvider; + + public ElmToAssemblySettings Settings => _settings; - private void SetEntries( + public ElmToAssemblyConversionReadOnlyDictionary ElmToAssemblyConversions => _conversions; + + private void SetConversions( ElmToAssemblyConversionDictionary conversions) { - _state = _state with { ElmToAssemblyItems = conversions }; + _conversions = conversions; } - private void SetSettings( - ElmToolkitSettings settings) + public void SetSettings( + ElmToAssemblySettings settings) { - if (!ReferenceEquals(_state.Settings, settings)) - _state = _state with { Settings = settings }; + if (_settings == settings) + return; + + _services.ServiceProvider.Dispose(); + _settings = settings; + _services = ElmToAssemblyServices.Create(settings, _services.LoggerFactory); } - private void AddElmLibraries(IEnumerable libraries) + public void AddElmLibraries(IEnumerable libraries) { - var entries = _state.ElmToAssemblyItems.ToBuilder(); + var entries = _conversions.ToBuilder(); var hasChanged = false; foreach (var library in libraries) { @@ -74,33 +63,34 @@ private void AddElmLibraries(IEnumerable libraries) if (entries.TryGetValue(versionedIdentifier, out var existingVersionedIdentifier)) { - _state.Logger.LogInformation("Skipping replacing library {existingVersionedIdentifier} to compiler with new library: {versionedIdentifier}, ", - existingVersionedIdentifier, versionedIdentifier); + _services.Logger.LogInformation( + "Skipping replacing library {existingVersionedIdentifier} to compiler with new library: {versionedIdentifier}, ", + existingVersionedIdentifier, versionedIdentifier); continue; } var libraryCompilation = new ElmToAssemblyConversion(library); entries.Add(versionedIdentifier, libraryCompilation); - _state.Logger.LogInformation("Adding library to compiler: {versionedIdentifier}", versionedIdentifier); + _services.Logger.LogInformation("Adding library to compiler: {versionedIdentifier}", versionedIdentifier); hasChanged = true; } if (hasChanged) - SetEntries(conversions: entries.ToImmutable()); + SetConversions(conversions: entries.ToImmutable()); } - private void ProcessElmToAssemblies() + public void ProcessElmToAssemblies() { - var entries = _state.ElmToAssemblyItems; + var entries = _conversions; if (entries.Values.All(predicate: lc => lc is { AssemblyBinary: not null })) return; - using var servicesScope = _state.CreateScopedState(); - var logger = _state.Logger; + using var servicesScope = _services.CreateScopedState(); + var logger = _services.Logger; logger.LogInformation(message: "Compiling ELM into C# and .NET Binaries"); - var exceptionHandling = _state.Settings.ProcessBatchItemExceptionHandling; - var debugInformationFormat = _state.Settings.AssemblyCompilerDebugInformationFormat; - AssemblyCompiler assemblyCompiler = _state.AssemblyCompiler; - LibrarySetCSharpCodeGenerator cSharpCodeProcessor = _state.LibrarySetCSharpCodeGenerator; + var exceptionHandling = _settings.ProcessBatchItemExceptionHandling; + var debugInformationFormat = _settings.AssemblyCompilerDebugInformationFormat; + AssemblyCompiler assemblyCompiler = _services.AssemblyCompiler; + LibrarySetCSharpCodeGenerator cSharpCodeProcessor = _services.LibrarySetCSharpCodeGenerator; LibrarySetExpressionBuilder librarySetExpressionBuilderScoped = servicesScope.LibrarySetExpressionBuilder; Library[] libraries = entries.Values.Select(selector: v => v.ElmLibrary).ToArray(); LibrarySet librarySet = new LibrarySet(name: "", libraries: libraries); @@ -120,13 +110,13 @@ private void ProcessElmToAssemblies() var entriesBuilder = entries.ToBuilder(); var hasChanged = UpdateStateEntries(assemblyDatas, entriesBuilder, logger); if (hasChanged) - SetEntries(conversions: entriesBuilder.ToImmutable()); + SetConversions(conversions: entriesBuilder.ToImmutable()); } private static bool UpdateStateEntries( IEnumerable<(Library library, AssemblyDataWithSourceCode assemblyDataWithSourceCode)> assemblyDatas, ElmToAssemblyConversionDictionary.Builder entriesBuilder, - ILogger logger) + ILogger logger) { bool hasChanged = false; foreach (var (library, (assemblyBinary, sourceCodePerName, debugSymbols)) in assemblyDatas) @@ -160,7 +150,7 @@ private static bool UpdateStateEntries( LibrarySet librarySet, IEnumerable<(Library library, string cSharp)> cSharps, AssemblyCompilerDebugInformationFormat debugInformationFormat, - ILogger logger, + ILogger logger, LogExceptionMessageAction log, ProcessBatchItemExceptionHandling exceptionHandling) { @@ -188,7 +178,7 @@ private static bool UpdateStateEntries( LibrarySetCSharpCodeGenerator cSharpCodeProcessor, LibrarySet librarySet, DefinitionDictionary librarySetDefinitions, - ILogger logger, + ILogger logger, LogExceptionMessageAction log, ProcessBatchItemExceptionHandling exceptionHandling) { @@ -213,30 +203,28 @@ private static bool UpdateStateEntries( private static DefinitionDictionary BuildLibrarySetDefinitions( LibrarySetExpressionBuilder librarySetExpressionBuilderScoped, LibrarySet librarySet, - ILogger logger, + ILogger logger, LogExceptionMessageAction log, ProcessBatchItemExceptionHandling exceptionHandling) { - var libraryDefinitions = librarySetExpressionBuilderScoped - .ProcessLibrarySetDeferred(librarySet: librarySet) - .Select(t => - { - var libraryName = t.library.identifier; - logger.LogInformation("Generating definitions for library : {libraryName}", libraryName); - return t; - }) - .TryProcessEach(t => (t.library, cSharp: t.generateLibraryDefinitions)) - .WithEachException(t => - { - var libraryName = t.Input.library.identifier; - log(t.Exception, "Error generating definitions for library : {libraryName}", libraryName); - }) - .HandleExceptions(exceptionHandling); - DefinitionDictionary librarySetDefinitions = new(); - foreach (var (_, generateLibraryDefinitions) in libraryDefinitions) - librarySetDefinitions.Merge(generateLibraryDefinitions()); - + foreach (var (_, libraryDefinitions) in + librarySetExpressionBuilderScoped + .ProcessLibrarySetDeferred(librarySet: librarySet) + .Select(t => + { + var libraryName = t.library.identifier; + logger.LogInformation("Generating definitions for library : {libraryName}", libraryName); + return t; + }) + .TryProcessEach(t => (t.library, cSharp: t.generateLibraryDefinitions())) + .WithEachException(t => + { + var libraryName = t.Input.library.identifier; + log(t.Exception, "Error generating definitions for library : {libraryName}", libraryName); + }) + .HandleExceptions(exceptionHandling)) + librarySetDefinitions.Merge(libraryDefinitions); return librarySetDefinitions; } } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmToAssemblySettings.cs b/Cql/CqlSdkPrototype/Elm/ElmToAssemblySettings.cs new file mode 100644 index 000000000..bb286a831 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/ElmToAssemblySettings.cs @@ -0,0 +1,11 @@ +using Hl7.Cql.Abstractions.Exceptions; +using Hl7.Cql.CodeGeneration.NET; + +namespace CqlSdkPrototype.Elm; + +public record ElmToAssemblySettings( + ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, + AssemblyCompilerDebugInformationFormat AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.None) +{ + public static ElmToAssemblySettings Default { get; } = new(); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs b/Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs deleted file mode 100644 index e387c2807..000000000 --- a/Cql/CqlSdkPrototype/Elm/ElmToolkitSettings.cs +++ /dev/null @@ -1,13 +0,0 @@ -using Hl7.Cql.Abstractions.Exceptions; -using Hl7.Cql.CodeGeneration.NET; - -namespace CqlSdkPrototype.Elm; - -public record ElmToolkitSettings( - ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling = default, - AssemblyCompilerDebugInformationFormat AssemblyCompilerDebugInformationFormat = AssemblyCompilerDebugInformationFormat.None) -{ - public static ElmToolkitSettings Default { get; } = new(); - public ProcessBatchItemExceptionHandling ProcessBatchItemExceptionHandling { get; init; } = ProcessBatchItemExceptionHandling; - public AssemblyCompilerDebugInformationFormat AssemblyCompilerDebugInformationFormat { get; init; } = AssemblyCompilerDebugInformationFormat; -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Adding.cs similarity index 73% rename from Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs rename to Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Adding.cs index 5b18c395a..e24033970 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Adding.cs +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Adding.cs @@ -1,5 +1,4 @@ -using System.Runtime.CompilerServices; -using CqlSdkPrototype.Cql; +using CqlSdkPrototype.Cql; using CqlSdkPrototype.Infrastructure; using CqlSdkPrototype.Internal; using Hl7.Cql.Elm; @@ -8,19 +7,19 @@ namespace CqlSdkPrototype.Elm.Extensions; -public static partial class ElmToolkitExtensions +public static partial class ElmFluentToolkitExtensions { - public static IElmFluentToolkit AddElmFrom( - this IElmFluentToolkit elmToolkit, - ICqlFluentToolkit cqlToolkit) => + public static ElmFluentToolkit AddElmFrom( + this ElmFluentToolkit elmToolkit, + CqlFluentToolkit cqlToolkit) => elmToolkit.AddElmLibraries( from entry in cqlToolkit.CqlToElmConversions let elmLibrary = entry.Value.ElmLibrary where elmLibrary is not null select elmLibrary); - public static IElmFluentToolkit AddElmFile( - this IElmFluentToolkit elmToolkit, + public static ElmFluentToolkit AddElmFile( + this ElmFluentToolkit elmToolkit, DirectoryInfo directory, CqlVersionedLibraryIdentifier versionedLibraryIdentifier) { @@ -39,8 +38,8 @@ public static IElmFluentToolkit AddElmFile( return elmToolkit.AddElmFile(file); } - public static IElmFluentToolkit AddElmFiles( - this IElmFluentToolkit elmToolkit, + public static ElmFluentToolkit AddElmFiles( + this ElmFluentToolkit elmToolkit, IEnumerable files) { var logger = elmToolkit.CreateLogger(); @@ -54,8 +53,8 @@ public static IElmFluentToolkit AddElmFiles( return elmToolkit.AddElmLibraries(libraries); } - public static IElmFluentToolkit AddElmFilesFromDirectory( - this IElmFluentToolkit elmToolkit, + public static ElmFluentToolkit AddElmFilesFromDirectory( + this ElmFluentToolkit elmToolkit, DirectoryInfo directory, EnumerationOptions? options = null, Func? filePredicate = null) @@ -65,21 +64,21 @@ public static IElmFluentToolkit AddElmFilesFromDirectory( return elmToolkit.AddElmFiles(files); } - public static IElmFluentToolkit AddElmFileWithDependencies( - this IElmFluentToolkit elmToolkit, + public static ElmFluentToolkit AddElmFileWithDependencies( + this ElmFluentToolkit elmToolkit, FileInfo file, EnumerationOptions? options) => throw new NotImplementedException(); - public static IElmFluentToolkit AddElmFileWithDependencies( - this IElmFluentToolkit elmToolkit, + public static ElmFluentToolkit AddElmFileWithDependencies( + this ElmFluentToolkit elmToolkit, DirectoryInfo directory, CqlVersionedLibraryIdentifier fileName, EnumerationOptions? options) => throw new NotImplementedException(); - public static IElmFluentToolkit AddElmFile( - this IElmFluentToolkit elmToolkit, + public static ElmFluentToolkit AddElmFile( + this ElmFluentToolkit elmToolkit, FileInfo file) => elmToolkit.AddElmFiles([file]); } \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Cql.cs similarity index 59% rename from Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs rename to Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Cql.cs index 2d40f282e..af35513f2 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Cql.cs +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Cql.cs @@ -3,10 +3,10 @@ namespace CqlSdkPrototype.Elm.Extensions; -public static partial class ElmToolkitExtensions +public static partial class ElmFluentToolkitExtensions { - public static IElmFluentToolkit ProcessCqlToAssemblies( - this ICqlFluentToolkit cqlToolkit) => + public static ElmFluentToolkit ProcessCqlToAssemblies( + this CqlFluentToolkit cqlToolkit) => cqlToolkit .ProcessCqlToElm() .CreateElmApi() diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Saving.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Saving.cs similarity index 83% rename from Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Saving.cs rename to Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Saving.cs index f27f5f3b9..08ce81ccd 100644 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.Saving.cs +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.Saving.cs @@ -1,16 +1,15 @@ namespace CqlSdkPrototype.Elm.Extensions; -public static partial class ElmToolkitExtensions +public static partial class ElmFluentToolkitExtensions { - - public static IElmFluentToolkit SaveCSharpFilesToDirectory( - this IElmFluentToolkit elmApi, + public static ElmFluentToolkit SaveCSharpFilesToDirectory( + this ElmFluentToolkit elmApi, DirectoryInfo directory) { if (!directory.Exists) directory.Create(); - var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmToolkitExtensions)); + var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmFluentToolkitExtensions)); foreach (var (libraryName, (_, cSharpSourceCode, _, _)) in elmApi.ElmToAssemblyConversions) { @@ -25,14 +24,14 @@ public static IElmFluentToolkit SaveCSharpFilesToDirectory( return elmApi; } - public static IElmFluentToolkit SaveAssemblyBinariesToDirectory( - this IElmFluentToolkit elmApi, + public static ElmFluentToolkit SaveAssemblyBinariesToDirectory( + this ElmFluentToolkit elmApi, DirectoryInfo directory) { if (!directory.Exists) directory.Create(); - var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmToolkitExtensions)); + var logger = elmApi.LoggerFactory.CreateLogger(typeof(ElmFluentToolkitExtensions)); foreach (var (libraryName, (_, _, assemblyBytes, symbolsBytes)) in elmApi.ElmToAssemblyConversions) { diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.cs new file mode 100644 index 000000000..a25df9f80 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/Extensions/ElmFluentToolkitExtensions.cs @@ -0,0 +1,7 @@ +namespace CqlSdkPrototype.Elm.Extensions; + +public static partial class ElmFluentToolkitExtensions +{ + private static ILogger CreateLogger(this ElmFluentToolkit elmToolkit) => + elmToolkit.LoggerFactory.CreateLogger(typeof(ElmFluentToolkitExtensions)); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs b/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs deleted file mode 100644 index 994a40895..000000000 --- a/Cql/CqlSdkPrototype/Elm/Extensions/ElmToolkitExtensions.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace CqlSdkPrototype.Elm.Extensions; - -public static partial class ElmToolkitExtensions -{ - private static ILogger CreateLogger(this IElmFluentToolkit elmToolkit) => - elmToolkit.LoggerFactory.CreateLogger(typeof(ElmToolkitExtensions)); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs b/Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs deleted file mode 100644 index 1cf2e1df0..000000000 --- a/Cql/CqlSdkPrototype/Elm/IElmFluentToolkit.cs +++ /dev/null @@ -1,14 +0,0 @@ -using Hl7.Cql.Elm; - -namespace CqlSdkPrototype.Elm; - -public interface IElmFluentToolkit -{ - ElmToolkit ElmToolkit { get; } - ILoggerFactory LoggerFactory { get; } - ElmToolkitSettings Settings { get; } - ElmToAssemblyConversionReadOnlyDictionary ElmToAssemblyConversions { get; } - IElmFluentToolkit ReplaceSettings(Func replace); - IElmFluentToolkit AddElmLibraries(IEnumerable libraries); - IElmFluentToolkit ProcessElmToAssemblies(); -} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Elm/ElmApiScopedState.cs b/Cql/CqlSdkPrototype/Elm/Internal/ElmApiScopedState.cs similarity index 88% rename from Cql/CqlSdkPrototype/Elm/ElmApiScopedState.cs rename to Cql/CqlSdkPrototype/Elm/Internal/ElmApiScopedState.cs index 973a89cc7..17785b2d7 100644 --- a/Cql/CqlSdkPrototype/Elm/ElmApiScopedState.cs +++ b/Cql/CqlSdkPrototype/Elm/Internal/ElmApiScopedState.cs @@ -1,6 +1,6 @@ using Hl7.Cql.Compiler; -namespace CqlSdkPrototype.Elm; +namespace CqlSdkPrototype.Elm.Internal; internal class ElmApiScopedState(IServiceScope scope) : IDisposable { diff --git a/Cql/CqlSdkPrototype/Elm/Internal/ElmToAssemblyServices.cs b/Cql/CqlSdkPrototype/Elm/Internal/ElmToAssemblyServices.cs new file mode 100644 index 000000000..d4708cac2 --- /dev/null +++ b/Cql/CqlSdkPrototype/Elm/Internal/ElmToAssemblyServices.cs @@ -0,0 +1,74 @@ +using CqlSdkPrototype.Logging.Internal; +using Hl7.Cql.Abstractions; +using Hl7.Cql.CodeGeneration.NET; +using Hl7.Cql.Compiler; +using Hl7.Cql.Conversion; +using Hl7.Cql.Fhir; +using Hl7.Cql.Runtime.Hosting; +using Hl7.Fhir.Introspection; + +namespace CqlSdkPrototype.Elm.Internal; + +internal readonly record struct ElmToAssemblyServices( + ILoggerFactory LoggerFactory, + ILogger Logger, + ServiceProvider ServiceProvider, + AssemblyCompiler AssemblyCompiler, + LibrarySetCSharpCodeGenerator LibrarySetCSharpCodeGenerator) +{ + public static ElmToAssemblyServices Create( + ElmToAssemblySettings settings, + ILoggerFactory? loggerFactory = null) + { + loggerFactory ??= NullLoggerFactory.Instance; + + var services = new ServiceCollection(); + services.AddExternalLogging(loggerFactory); + AddCqlCodeGenerationServices(services); + var serviceProvider = services.BuildServiceProvider(validateScopes: true); + + return ActivatorUtilities.CreateInstance(serviceProvider, serviceProvider); + } + + private static void AddCqlCodeGenerationServices(IServiceCollection services) + { + AddCqlCompilerServices(services); + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(); + } + + public static IServiceCollection AddCqlCompilerServices(IServiceCollection services) + { + services.TryAddSingleton(_ => Hl7.Fhir.Model.ModelInfo.ModelInspector); + services.TryAddSingleton(); + + const int cacheSize = 0; // TODO: Must move to configuration + services.TryAddSingleton(sp => + { + var modelInspector = sp.GetRequiredService(); + var logger = sp.GetLogger(); + var converter = FhirTypeConverter + .Create(modelInspector, cacheSize) + .UseLogger(logger); + converter.CaptureAvailableConverters(); + return converter; + }); + + services.TryAddSingleton(); + services.TryAddSingleton(); + services.TryAddSingleton(_ => ExpressionBuilderSettings.Default); // TODO: Must move to configuration + services.TryAddScoped(); + services.TryAddScoped(); + services.TryAddScoped(); + services.TryAddScoped(); + + return services; + } + + public ILoggerFactory LoggerFactory { get; } = LoggerFactory; + public ServiceProvider ServiceProvider { get; } = ServiceProvider; + public AssemblyCompiler AssemblyCompiler { get; } = AssemblyCompiler; + public LibrarySetCSharpCodeGenerator LibrarySetCSharpCodeGenerator { get; } = LibrarySetCSharpCodeGenerator; + public ElmApiScopedState CreateScopedState() => new(ServiceProvider.CreateScope()); +} \ No newline at end of file diff --git a/Cql/CqlSdkPrototype/Program.cs b/Cql/CqlSdkPrototype/Program.cs index f0c08ab5b..f92d68df7 100644 --- a/Cql/CqlSdkPrototype/Program.cs +++ b/Cql/CqlSdkPrototype/Program.cs @@ -28,7 +28,6 @@ static void Main(string[] args) var loggerFactory = serviceProvider.GetRequiredService(); var cqlToElmProcessorSettings = new CqlToElmProcessorSettings(Models: [CqlModel.ElmR1, CqlModel.Fhir401]); var cqlFluentToolkit = new CqlFluentToolkit(loggerFactory, cqlToElmProcessorSettings); - var logger = serviceProvider.GetLogger(); //InvokeCqlExample(cqlApi: cqlApi); @@ -43,7 +42,7 @@ static void Main(string[] args) private static void InvokeCqlFromExamplesFolder( ILogger logger, - ICqlFluentToolkit cqlToolkit) + CqlFluentToolkit cqlToolkit) { // INTRO: // This example demonstrates how to load CQL libraries from a directory and invoke a library declarations directly. @@ -72,7 +71,7 @@ private static void InvokeCqlFromExamplesFolder( } } - private static void InvokeCqlExample(ICqlFluentToolkit cqlToolkit) + private static void InvokeCqlExample(CqlFluentToolkit cqlToolkit) { // INTRO: // This example demonstrates how to add a CqlLibraryString to the CqlApi and invoke a library declaration directly. @@ -94,7 +93,7 @@ library AdditionLib version '0.0.0' private static void VerboseExample( ILogger logger, - ICqlFluentToolkit cqlToolkit, + CqlFluentToolkit cqlToolkit, string librarySetName, bool shouldBuildCqlToElm = false) { @@ -199,13 +198,13 @@ private static void VerboseExample( file static class X { - public static Maybe<(CqlVersionedLibraryIdentifier id, string cSharpSourceCode)> TryGetFirstCSharpFileLines(this IElmFluentToolkit elmApi) => + public static Maybe<(CqlVersionedLibraryIdentifier id, string cSharpSourceCode)> TryGetFirstCSharpFileLines(this ElmFluentToolkit elmApi) => elmApi.ElmToAssemblyConversions .TryGetFirst(kv => kv.Value.CSharpSourceCode is not null) .TryReturn(kv => (kv.Key, kv.Value.CSharpSourceCode!)); public static Maybe<(CqlVersionedLibraryIdentifier id, string elmJson)> TryGetFirstElmFileLines( - this ICqlFluentToolkit cqlApi) => + this CqlFluentToolkit cqlApi) => cqlApi.CqlToElmConversions .TryGetFirst(kv => kv.Value.ElmLibrary is not null) .TryReturn(kv => (kv.Key, kv.Value.ElmLibrary!.SerializeToJson()!)); diff --git a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs index ae4c6dec4..e48270056 100644 --- a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs +++ b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Cql.cs @@ -6,21 +6,21 @@ namespace CqlSdkPrototype.Runtime.Extensions; public static partial class RuntimeApiExtensions { - public static IElmFluentToolkit CreateElmApi( - this ICqlFluentToolkit cqlToolkit, - Func? configureOptions = null) + public static ElmFluentToolkit CreateElmApi( + this CqlFluentToolkit cqlToolkit, + Func? configureOptions = null) { - var elmApiOptions = new ElmToolkitSettings(ProcessBatchItemExceptionHandling: cqlToolkit.Settings.ProcessBatchItemExceptionHandling); + var elmApiOptions = new ElmToAssemblySettings(ProcessBatchItemExceptionHandling: cqlToolkit.Settings.ProcessBatchItemExceptionHandling); if (configureOptions is not null) elmApiOptions = configureOptions(elmApiOptions); - var elmApi = new ElmToolkit(cqlToolkit.LoggerFactory, elmApiOptions).AddElmFrom(cqlToolkit); + var elmApi = new ElmFluentToolkit(cqlToolkit.LoggerFactory, elmApiOptions).AddElmFrom(cqlToolkit); return elmApi; } #pragma warning disable RS0026 public static RuntimeScope CreateRuntimeScope( #pragma warning restore RS0026 - this ICqlFluentToolkit cqlToolkit, - Func? configureElmOptions = null, + this CqlFluentToolkit cqlToolkit, + Func? configureElmOptions = null, Func? configureRuntimeOptions = null) { return cqlToolkit diff --git a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs index 8e7a0d686..25d0f0774 100644 --- a/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs +++ b/Cql/CqlSdkPrototype/Runtime/Extensions/RuntimeApiExtensions.Elm.cs @@ -6,7 +6,7 @@ namespace CqlSdkPrototype.Runtime.Extensions; public static partial class RuntimeApiExtensions { public static RuntimeApi CreateRuntimeApi( - this IElmFluentToolkit elmApi, + this ElmFluentToolkit elmApi, Func? configureOptions = null) { var runtimeApiOptions = RuntimeApiOptions.Default; @@ -27,7 +27,7 @@ where assembly is not null #pragma warning disable RS0026 public static RuntimeScope CreateRuntimeScope( #pragma warning restore RS0026 - this IElmFluentToolkit elmApi, + this ElmFluentToolkit elmApi, Func? configureOptions = null) { return elmApi diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AHAOverall-2.8.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AHAOverall-2.8.000.g.cs new file mode 100644 index 000000000..9007911d4 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AHAOverall-2.8.000.g.cs @@ -0,0 +1,871 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AHAOverall", "2.8.000")] +public partial class AHAOverall_2_8_000 : ILibrary, ISingleton +{ + private AHAOverall_2_8_000() {} + + public static AHAOverall_2_8_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AHAOverall"; + public string Version => "2.8.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Care Services in Long Term Residential Facility")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014")] + public CqlValueSet Care_Services_in_Long_Term_Residential_Facility(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014", default); + + + [CqlDeclaration("Ejection Fraction")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1134")] + public CqlValueSet Ejection_Fraction(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1134", default); + + + [CqlDeclaration("Heart Failure")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376")] + public CqlValueSet Heart_Failure(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.376", default); + + + [CqlDeclaration("Heart Transplant")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.33")] + public CqlValueSet Heart_Transplant(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.33", default); + + + [CqlDeclaration("Heart Transplant Complications")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.56")] + public CqlValueSet Heart_Transplant_Complications(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.56", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Left Ventricular Assist Device Complications")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.58")] + public CqlValueSet Left_Ventricular_Assist_Device_Complications(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.58", default); + + + [CqlDeclaration("Left Ventricular Assist Device Placement")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.61")] + public CqlValueSet Left_Ventricular_Assist_Device_Placement(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1178.61", default); + + + [CqlDeclaration("Moderate or Severe")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1092")] + public CqlValueSet Moderate_or_Severe(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1092", default); + + + [CqlDeclaration("Moderate or Severe LVSD")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1090")] + public CqlValueSet Moderate_or_Severe_LVSD(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1090", default); + + + [CqlDeclaration("Nursing Facility Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012")] + public CqlValueSet Nursing_Facility_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Outpatient Consultation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008")] + public CqlValueSet Outpatient_Consultation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008", default); + + + [CqlDeclaration("Patient Provider Interaction")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1012")] + public CqlValueSet Patient_Provider_Interaction(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1012", default); + + + [CqlDeclaration("Left ventricular systolic dysfunction (disorder)")] + public CqlCode Left_ventricular_systolic_dysfunction__disorder_(CqlContext context) => + new CqlCode("134401001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("134401001", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + object a_ = context.ResolveParameter("AHAOverall-2.8.000", "Measurement Period", null); + + return (CqlInterval)a_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + public bool? isConfirmedActiveDiagnosis(CqlContext context, Condition condition) + { + bool? a_ = QICoreCommon_2_1_000.Instance.isActive(context, condition); + CodeableConcept b_ = condition?.VerificationStatus; + CqlConcept c_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, b_); + CqlCode d_ = QICoreCommon_2_1_000.Instance.confirmed(context); + CqlConcept e_ = context.Operators.ConvertCodeToConcept(d_); + bool? f_ = context.Operators.Equivalent(c_, e_); + bool? g_ = context.Operators.And(a_, f_); + + return g_; + } + + + public bool? isFinished(CqlContext context, Encounter Encounter) + { + Code a_ = Encounter?.StatusElement; + Encounter.EncounterStatus? b_ = a_?.Value; + Code c_ = context.Operators.Convert>(b_); + bool? d_ = context.Operators.Equal(c_, "finished"); + + return d_; + } + + + [CqlDeclaration("Heart Failure Outpatient Encounter")] + [CqlTag("description", "Returns certain finished encounter types that overlap a Heart Failure condition and are during the measurement period: care services in long term residential facility (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014) home healthcare services (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016) nursing facility visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012) office visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001) outpatient consolutations (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008)")] + public IEnumerable Heart_Failure_Outpatient_Encounter(CqlContext context) + { + CqlValueSet a_ = this.Care_Services_in_Long_Term_Residential_Facility(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Home_Healthcare_Services(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Nursing_Facility_Visit(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Office_Visit(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Outpatient_Consultation(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable n_ = context.Operators.Union(k_, m_); + IEnumerable o_(Encounter QualifyingEncounter) + { + CqlValueSet s_ = this.Heart_Failure(context); + IEnumerable t_ = context.Operators.Retrieve(new RetrieveParameters(default, s_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? u_(Condition HeartFailure) + { + CqlInterval y_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, HeartFailure); + Period z_ = QualifyingEncounter?.Period; + CqlInterval aa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, z_); + bool? ab_ = context.Operators.Overlaps(y_, aa_, default); + bool? ac_ = this.isConfirmedActiveDiagnosis(context, HeartFailure); + bool? ad_ = context.Operators.And(ab_, ac_); + + return ad_; + }; + IEnumerable v_ = context.Operators.Where(t_, u_); + Encounter w_(Condition HeartFailure) => + QualifyingEncounter; + IEnumerable x_ = context.Operators.Select(v_, w_); + + return x_; + }; + IEnumerable p_ = context.Operators.SelectMany(n_, o_); + bool? q_(Encounter QualifyingEncounter) + { + CqlInterval ae_ = this.Measurement_Period(context); + Period af_ = QualifyingEncounter?.Period; + CqlInterval ag_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, af_); + bool? ah_ = context.Operators.IntervalIncludesInterval(ae_, ag_, "day"); + bool? ai_ = this.isFinished(context, QualifyingEncounter); + bool? aj_ = context.Operators.And(ah_, ai_); + + return aj_; + }; + IEnumerable r_ = context.Operators.Where(p_, q_); + + return r_; + } + + + [CqlDeclaration("Moderate or Severe LVSD Findings")] + [CqlTag("description", "Returns a union of the following: Observations where the final, amended or correction ejection fraction result is <= 40 Moderate or Severe LVSD conditions where the diagnosis has been confirmed as active")] + public IEnumerable Moderate_or_Severe_LVSD_Findings(CqlContext context) + { + CqlValueSet a_ = this.Ejection_Fraction(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? c_(Observation EjectionFraction) + { + DataType p_ = EjectionFraction?.Value; + object q_ = FHIRHelpers_4_4_000.Instance.ToValue(context, p_); + CqlQuantity r_ = context.Operators.Quantity(40m, "%"); + bool? s_ = context.Operators.LessOrEqual(q_ as CqlQuantity, r_); + Code t_ = EjectionFraction?.StatusElement; + ObservationStatus? u_ = t_?.Value; + Code v_ = context.Operators.Convert>(u_); + string w_ = context.Operators.Convert(v_); + string[] x_ = [ + "final", + "amended", + "corrected", + ]; + bool? y_ = context.Operators.In(w_, x_ as IEnumerable); + bool? z_ = context.Operators.And(s_, y_); + + return z_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + CqlValueSet e_ = this.Moderate_or_Severe_LVSD(context); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, e_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlCode g_ = this.Left_ventricular_systolic_dysfunction__disorder_(context); + IEnumerable h_ = context.Operators.ToList(g_); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, default, h_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? j_(Condition LVSDDiagnosis) + { + CodeableConcept aa_ = LVSDDiagnosis?.Severity; + CqlConcept ab_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, aa_); + CqlValueSet ac_ = this.Moderate_or_Severe(context); + bool? ad_ = context.Operators.ConceptInValueSet(ab_, ac_); + + return ad_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + IEnumerable l_ = context.Operators.Union(f_, k_); + bool? m_(Condition ModerateOrSevereLVSD) + { + bool? ae_ = this.isConfirmedActiveDiagnosis(context, ModerateOrSevereLVSD); + + return ae_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + IEnumerable o_ = context.Operators.Union(d_ as IEnumerable, n_ as IEnumerable); + + return o_; + } + + + [CqlDeclaration("Heart Failure Outpatient Encounter with History of Moderate or Severe LVSD")] + [CqlTag("description", "Returns heart failure outpatient encounters that start before the end of a moderate or severe LVSD finding")] + public IEnumerable Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(CqlContext context) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter(context); + IEnumerable b_(Encounter HFOutpatientEncounter) + { + IEnumerable d_ = this.Moderate_or_Severe_LVSD_Findings(context); + bool? e_(object LVSDFindings) + { + CqlInterval i_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, LVSDFindings as Condition); + object j_ = context.Operators.LateBoundProperty(LVSDFindings, "effective"); + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_); + CqlDateTime m_ = context.Operators.Start(i_ ?? l_); + Period n_ = HFOutpatientEncounter?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime p_ = context.Operators.End(o_); + bool? q_ = context.Operators.Before(m_, p_, default); + + return q_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + Encounter g_(object LVSDFindings) => + HFOutpatientEncounter; + IEnumerable h_ = context.Operators.Select(f_, g_); + + return h_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Has Heart Transplant Complications")] + [CqlTag("description", "Returns true if patient has confirmed heart transplant complications that start before the end of a heart failure outpatient encounter with history of moderate or severe LVSD")] + public bool? Has_Heart_Transplant_Complications(CqlContext context) + { + CqlValueSet a_ = this.Heart_Transplant_Complications(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable c_(Condition HeartTransplantComplications) + { + IEnumerable h_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? i_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + FhirDateTime m_ = HeartTransplantComplications?.RecordedDateElement; + CqlDateTime n_ = context.Operators.Convert(m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, HeartTransplantComplications); + CqlDateTime p_ = context.Operators.Start(o_); + Period q_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime s_ = context.Operators.End(r_); + bool? t_ = context.Operators.Before(n_ ?? p_, s_, default); + + return t_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Condition k_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) => + HeartTransplantComplications; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable d_ = context.Operators.SelectMany(b_, c_); + bool? e_(Condition HeartTransplantComplications) + { + bool? u_ = this.isConfirmedActiveDiagnosis(context, HeartTransplantComplications); + + return u_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + } + + + [CqlDeclaration("Has Left Ventricular Assist Device")] + [CqlTag("description", "Returns true if patient has a completed LVAD placement that starts before the end of a heart failure outpatient encounter with history of moderate or severe LVSD")] + public bool? Has_Left_Ventricular_Assist_Device(CqlContext context) + { + CqlValueSet a_ = this.Left_Ventricular_Assist_Device_Placement(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_(Procedure LVADOutpatient) + { + IEnumerable h_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? i_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + DataType m_ = LVADOutpatient?.Performed; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.toInterval(context, n_); + CqlDateTime p_ = context.Operators.Start(o_); + Period q_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime s_ = context.Operators.End(r_); + bool? t_ = context.Operators.Before(p_, s_, default); + + return t_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Procedure k_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) => + LVADOutpatient; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable d_ = context.Operators.SelectMany(b_, c_); + bool? e_(Procedure LVADOutpatient) + { + Code u_ = LVADOutpatient?.StatusElement; + EventStatus? v_ = u_?.Value; + string w_ = context.Operators.Convert(v_); + bool? x_ = context.Operators.Equal(w_, "completed"); + + return x_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + } + + + [CqlDeclaration("Has Left Ventricular Assist Device Complications")] + [CqlTag("description", "Returns true if patient has active LVAD complications that start before the end of a heart failure outpatient encounter with history of moderate or severe LVSD")] + public bool? Has_Left_Ventricular_Assist_Device_Complications(CqlContext context) + { + CqlValueSet a_ = this.Left_Ventricular_Assist_Device_Complications(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable c_(Condition LVADComplications) + { + IEnumerable h_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? i_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + FhirDateTime m_ = LVADComplications?.RecordedDateElement; + CqlDateTime n_ = context.Operators.Convert(m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, LVADComplications); + CqlDateTime p_ = context.Operators.Start(o_); + Period q_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime s_ = context.Operators.End(r_); + bool? t_ = context.Operators.Before(n_ ?? p_, s_, default); + + return t_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Condition k_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) => + LVADComplications; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable d_ = context.Operators.SelectMany(b_, c_); + bool? e_(Condition LVADComplications) + { + bool? u_ = this.isConfirmedActiveDiagnosis(context, LVADComplications); + + return u_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + } + + + [CqlDeclaration("Qualifying Outpatient Encounter During Measurement Period")] + [CqlTag("description", "Returns certain finished encounter types that occurred during the measurement period: office visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001) outpatient consolutations (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008) nursing facility visits (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012) care services in long term residential facility (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1014) home healthcare services (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016) patient provider interactions (http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1012)")] + public IEnumerable Qualifying_Outpatient_Encounter_During_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Outpatient_Consultation(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Nursing_Facility_Visit(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Care_Services_in_Long_Term_Residential_Facility(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Home_Healthcare_Services(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Patient_Provider_Interaction(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + bool? r_(Encounter ValidEncounter) + { + CqlInterval t_ = this.Measurement_Period(context); + Period u_ = ValidEncounter?.Period; + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + bool? w_ = context.Operators.IntervalIncludesInterval(t_, v_, "day"); + bool? x_ = this.isFinished(context, ValidEncounter); + bool? y_ = context.Operators.And(w_, x_); + + return y_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + + return s_; + } + + + [CqlDeclaration("Has Heart Transplant")] + [CqlTag("description", "Returns completed heart tansplant procedures that start before the end of a heart failure outpatient encounter with history of moderate or severe LVSD")] + public bool? Has_Heart_Transplant(CqlContext context) + { + CqlValueSet a_ = this.Heart_Transplant(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_(Procedure HeartTransplant) + { + IEnumerable h_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? i_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + DataType m_ = HeartTransplant?.Performed; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.toInterval(context, n_); + CqlDateTime p_ = context.Operators.Start(o_); + Period q_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime s_ = context.Operators.End(r_); + bool? t_ = context.Operators.Before(p_, s_, default); + + return t_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Procedure k_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) => + HeartTransplant; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable d_ = context.Operators.SelectMany(b_, c_); + bool? e_(Procedure HeartTransplant) + { + Code u_ = HeartTransplant?.StatusElement; + EventStatus? v_ = u_?.Value; + string w_ = context.Operators.Convert(v_); + bool? x_ = context.Operators.Equal(w_, "completed"); + + return x_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + } + + + [CqlDeclaration("Is Adults With Two Qualifying Outpatient Encounters and One Heart Failure Outpatient Encounter During the Measurement Period")] + [CqlTag("description", "Returns true if the patient meets the following criteria: 18 years of age or older, has two Has two Qualifying Outpatient Encounters During Measurement Period Has a Heart Failure Outpatient Encounter")] + public bool? Is_Adults_With_Two_Qualifying_Outpatient_Encounters_and_One_Heart_Failure_Outpatient_Encounter_During_the_Measurement_Period(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.Start(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + bool? i_ = context.Operators.GreaterOrEqual(h_, 18); + IEnumerable j_ = this.Qualifying_Outpatient_Encounter_During_Measurement_Period(context); + IEnumerable k_(Encounter Encounter1) + { + IEnumerable r_ = this.Qualifying_Outpatient_Encounter_During_Measurement_Period(context); + bool? s_(Encounter Encounter2) + { + Id w_ = Encounter2?.IdElement; + string x_ = w_?.Value; + Id y_ = Encounter1?.IdElement; + string z_ = y_?.Value; + bool? aa_ = context.Operators.Equivalent(x_, z_); + bool? ab_ = context.Operators.Not(aa_); + + return ab_; + }; + IEnumerable t_ = context.Operators.Where(r_, s_); + Encounter u_(Encounter Encounter2) => + Encounter1; + IEnumerable v_ = context.Operators.Select(t_, u_); + + return v_; + }; + IEnumerable l_ = context.Operators.SelectMany(j_, k_); + bool? m_ = context.Operators.Exists(l_); + bool? n_ = context.Operators.And(i_, m_); + IEnumerable o_ = this.Heart_Failure_Outpatient_Encounter(context); + bool? p_ = context.Operators.Exists(o_); + bool? q_ = context.Operators.And(n_, p_); + + return q_; + } + + + public bool? isOrderedDuringHeartFailureOutpatientEncounter(CqlContext context, MedicationRequest MedicationRequest) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + FhirDateTime e_ = MedicationRequest?.AuthoredOnElement; + CqlDateTime f_ = context.Operators.Convert(e_); + Period g_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval h_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, g_); + bool? i_ = context.Operators.In(f_, h_, "day"); + Code j_ = MedicationRequest?.StatusElement; + MedicationRequest.MedicationrequestStatus? k_ = j_?.Value; + string l_ = context.Operators.Convert(k_); + string[] m_ = [ + "active", + "completed", + ]; + bool? n_ = context.Operators.In(l_, m_ as IEnumerable); + bool? o_ = context.Operators.And(i_, n_); + Code p_ = MedicationRequest?.IntentElement; + MedicationRequest.MedicationRequestIntent? q_ = p_?.Value; + string r_ = context.Operators.Convert(q_); + string[] s_ = [ + "order", + "original-order", + "reflex-order", + "filler-order", + "instance-order", + ]; + bool? t_ = context.Operators.In(r_, s_ as IEnumerable); + bool? u_ = context.Operators.And(o_, t_); + + return u_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + public bool? overlapsHeartFailureOutpatientEncounter(CqlContext context, Condition Condition) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, Condition); + Period f_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval g_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, f_); + bool? h_ = context.Operators.Overlaps(e_, g_, "day"); + bool? i_ = this.isConfirmedActiveDiagnosis(context, Condition); + bool? j_ = context.Operators.And(h_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + public bool? overlapsAfterHeartFailureOutpatientEncounter(CqlContext context, Condition Condition) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, Condition); + Period f_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval g_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, f_); + bool? h_ = context.Operators.OverlapsAfter(e_, g_, "day"); + bool? i_ = this.isConfirmedActiveDiagnosis(context, Condition); + bool? j_ = context.Operators.And(h_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + public bool? overlapsAfterHeartFailureOutpatientEncounter(CqlContext context, Procedure Procedure) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + DataType e_ = Procedure?.Performed; + object f_ = FHIRHelpers_4_4_000.Instance.ToValue(context, e_); + CqlInterval g_ = QICoreCommon_2_1_000.Instance.toInterval(context, f_); + Period h_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + bool? j_ = context.Operators.OverlapsAfter(g_, i_, "day"); + Code k_ = Procedure?.StatusElement; + EventStatus? l_ = k_?.Value; + string m_ = context.Operators.Convert(l_); + bool? n_ = context.Operators.Equal(m_, "completed"); + bool? o_ = context.Operators.And(j_, n_); + + return o_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + public bool? overlapsAfterHeartFailureOutpatientEncounter(CqlContext context, AllergyIntolerance AllergyIntolerance) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + DataType e_ = AllergyIntolerance?.Onset; + object f_ = FHIRHelpers_4_4_000.Instance.ToValue(context, e_); + CqlInterval g_ = QICoreCommon_2_1_000.Instance.toInterval(context, f_); + CqlDateTime h_ = context.Operators.Start(g_); + FhirDateTime i_ = AllergyIntolerance?.LastOccurrenceElement; + CqlDateTime j_ = context.Operators.Convert(i_); + CqlInterval k_ = context.Operators.Interval(h_, j_, true, true); + Period l_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval m_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + bool? n_ = context.Operators.OverlapsAfter(k_, m_, "day"); + CodeableConcept o_ = AllergyIntolerance?.ClinicalStatus; + CqlConcept p_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, o_); + CqlCode q_ = QICoreCommon_2_1_000.Instance.allergy_active(context); + CqlConcept r_ = context.Operators.ConvertCodeToConcept(q_); + bool? s_ = context.Operators.Equivalent(p_, r_); + bool? t_ = context.Operators.And(n_, s_); + CodeableConcept u_ = AllergyIntolerance?.VerificationStatus; + CqlConcept v_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, u_); + CqlCode w_ = QICoreCommon_2_1_000.Instance.allergy_confirmed(context); + CqlConcept x_ = context.Operators.ConvertCodeToConcept(w_); + bool? y_ = context.Operators.Equivalent(v_, x_); + bool? z_ = context.Operators.And(t_, y_); + + return z_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + public bool? overlapsAfterHeartFailureOutpatientEncounter(CqlContext context, MedicationRequest MedicationRequest) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + List e_ = MedicationRequest?.DosageInstruction; + bool? f_(Dosage @this) + { + Timing an_ = @this?.Timing; + bool? ao_ = context.Operators.Not((bool?)(an_ is null)); + + return ao_; + }; + IEnumerable g_ = context.Operators.Where((IEnumerable)e_, f_); + Timing h_(Dosage @this) + { + Timing ap_ = @this?.Timing; + + return ap_; + }; + IEnumerable i_ = context.Operators.Select(g_, h_); + bool? j_(Timing @this) + { + Timing.RepeatComponent aq_ = @this?.Repeat; + bool? ar_ = context.Operators.Not((bool?)(aq_ is null)); + + return ar_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + Timing.RepeatComponent l_(Timing @this) + { + Timing.RepeatComponent as_ = @this?.Repeat; + + return as_; + }; + IEnumerable m_ = context.Operators.Select(k_, l_); + bool? n_(Timing.RepeatComponent @this) + { + DataType at_ = @this?.Bounds; + object au_ = FHIRHelpers_4_4_000.Instance.ToValue(context, at_); + bool? av_ = context.Operators.Not((bool?)(au_ is null)); + + return av_; + }; + IEnumerable o_ = context.Operators.Where(m_, n_); + object p_(Timing.RepeatComponent @this) + { + DataType aw_ = @this?.Bounds; + object ax_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aw_); + + return ax_; + }; + IEnumerable q_ = context.Operators.Select(o_, p_); + CqlInterval r_(object DoseTime) + { + CqlInterval ay_ = QICoreCommon_2_1_000.Instance.toInterval(context, DoseTime); + + return ay_; + }; + IEnumerable> s_ = context.Operators.Select>(q_, r_); + IEnumerable> t_ = context.Operators.Distinct>(s_); + IEnumerable> u_ = context.Operators.Collapse(t_, default); + object v_(CqlInterval @this) + { + CqlDateTime az_ = context.Operators.Start(@this); + + return az_; + }; + IEnumerable> w_ = context.Operators.SortBy>(u_, v_, System.ComponentModel.ListSortDirection.Ascending); + CqlInterval x_ = context.Operators.First>(w_); + Period y_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval z_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, y_); + bool? aa_ = context.Operators.OverlapsAfter(x_, z_, "day"); + Code ab_ = MedicationRequest?.StatusElement; + MedicationRequest.MedicationrequestStatus? ac_ = ab_?.Value; + string ad_ = context.Operators.Convert(ac_); + string[] ae_ = [ + "active", + "completed", + ]; + bool? af_ = context.Operators.In(ad_, ae_ as IEnumerable); + bool? ag_ = context.Operators.And(aa_, af_); + Code ah_ = MedicationRequest?.IntentElement; + MedicationRequest.MedicationRequestIntent? ai_ = ah_?.Value; + string aj_ = context.Operators.Convert(ai_); + string[] ak_ = [ + "order", + "original-order", + "reflex-order", + "filler-order", + "instance-order", + ]; + bool? al_ = context.Operators.In(aj_, ak_ as IEnumerable); + bool? am_ = context.Operators.And(ag_, al_); + + return am_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + public bool? overlapsAfterHeartFailureOutpatientEncounter(CqlContext context, Observation HeartRateObservation) + { + IEnumerable a_ = this.Heart_Failure_Outpatient_Encounter_with_History_of_Moderate_or_Severe_LVSD(context); + bool? b_(Encounter ModerateOrSevereLVSDHFOutpatientEncounter) + { + DataType e_ = HeartRateObservation?.Effective; + object f_ = FHIRHelpers_4_4_000.Instance.ToValue(context, e_); + CqlInterval g_ = QICoreCommon_2_1_000.Instance.toInterval(context, f_); + Period h_ = ModerateOrSevereLVSDHFOutpatientEncounter?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + bool? j_ = context.Operators.OverlapsAfter(g_, i_, "day"); + Code k_ = HeartRateObservation?.StatusElement; + ObservationStatus? l_ = k_?.Value; + string m_ = context.Operators.Convert(l_); + string[] n_ = [ + "final", + "amended", + "corrected", + ]; + bool? o_ = context.Operators.In(m_, n_ as IEnumerable); + bool? p_ = context.Operators.And(j_, o_); + + return p_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ALARACTOQRFHIR-0.4.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ALARACTOQRFHIR-0.4.000.g.cs new file mode 100644 index 000000000..a248dbf18 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ALARACTOQRFHIR-0.4.000.g.cs @@ -0,0 +1,266 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ALARACTOQRFHIR", "0.4.000")] +public partial class ALARACTOQRFHIR_0_4_000 : ILibrary, ISingleton +{ + private ALARACTOQRFHIR_0_4_000() {} + + public static ALARACTOQRFHIR_0_4_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ALARACTOQRFHIR"; + public string Version => "0.4.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, CQMCommon_2_2_000.Instance, QICoreCommon_2_1_000.Instance, SupplementalDataElements_3_5_000.Instance, AlaraCommonFunctions_1_5_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Encounter Inpatient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307")] + public CqlValueSet Encounter_Inpatient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307", default); + + + [CqlDeclaration("CT dose and image quality category")] + public CqlCode CT_dose_and_image_quality_category(CqlContext context) => + new CqlCode("96914-7", "http://loinc.org", default, default); + + + [CqlDeclaration("Full Body")] + public CqlCode Full_Body(CqlContext context) => + new CqlCode("LA31771-1", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("96914-7", "http://loinc.org", default, default), + new CqlCode("LA31771-1", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ALARACTOQRFHIR-0.4.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Qualified Scan")] + public IEnumerable Qualified_Scan(CqlContext context) + { + CqlCode a_ = this.CT_dose_and_image_quality_category(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? d_(Observation CTScan) + { + DataType f_ = CTScan?.Effective; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.ToInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + bool? k_ = context.Operators.In(i_, j_, "day"); + Patient l_ = this.Patient(context); + Date m_ = l_?.BirthDateElement; + string n_ = m_?.Value; + CqlDate o_ = context.Operators.ConvertStringToDate(n_); + CqlDateTime q_ = context.Operators.Start(j_); + CqlDate r_ = context.Operators.DateFrom(q_); + int? s_ = context.Operators.CalculateAgeAt(o_, r_, "year"); + bool? t_ = context.Operators.GreaterOrEqual(s_, 18); + bool? u_ = context.Operators.And(k_, t_); + + return u_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Qualified Scan without Inpatient Encounter")] + public IEnumerable Qualified_Scan_without_Inpatient_Encounter(CqlContext context) + { + IEnumerable a_ = this.Qualified_Scan(context); + IEnumerable c_(Observation QualifiedCTScan) + { + CqlValueSet f_ = this.Encounter_Inpatient(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? h_(Encounter InpatientEncounter) + { + DataType l_ = QualifiedCTScan?.Effective; + object m_ = FHIRHelpers_4_4_000.Instance.ToValue(context, l_); + CqlInterval n_ = QICoreCommon_2_1_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.Start(n_); + Period p_ = InpatientEncounter?.Period; + CqlInterval q_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, p_); + CqlInterval r_ = QICoreCommon_2_1_000.Instance.ToInterval(context, q_ as object); + bool? s_ = context.Operators.In(o_, r_, default); + + return s_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + Observation j_(Encounter InpatientEncounter) => + QualifiedCTScan; + IEnumerable k_ = context.Operators.Select(i_, j_); + + return k_; + }; + IEnumerable d_ = context.Operators.SelectMany(a_, c_); + IEnumerable e_ = context.Operators.Except(a_, d_); + + return e_; + } + + + [CqlDeclaration("Qualified Scan with Values")] + public IEnumerable Qualified_Scan_with_Values(CqlContext context) + { + IEnumerable a_ = this.Qualified_Scan_without_Inpatient_Encounter(context); + bool? b_(Observation CTScan) + { + decimal? d_ = AlaraCommonFunctions_1_5_000.Instance.Global_Noise_Value(context, CTScan); + bool? e_ = context.Operators.Not((bool?)(d_ is null)); + decimal? f_ = AlaraCommonFunctions_1_5_000.Instance.Size_Adjusted_Value(context, CTScan); + bool? g_ = context.Operators.Not((bool?)(f_ is null)); + bool? h_ = context.Operators.And(e_, g_); + DataType i_ = CTScan?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + bool? k_ = context.Operators.Not((bool?)(j_ is null)); + bool? l_ = context.Operators.And(h_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Qualified_Scan_with_Values(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusion")] + public IEnumerable Denominator_Exclusion(CqlContext context) + { + IEnumerable a_ = this.Qualified_Scan_with_Values(context); + bool? b_(Observation CTScan) + { + DataType d_ = CTScan?.Value; + object e_ = FHIRHelpers_4_4_000.Instance.ToValue(context, d_); + CqlCode[] f_ = (e_ as CqlConcept)?.codes; + CqlCode g_ = this.Full_Body(context); + bool? h_ = context.Operators.Contains((IEnumerable)f_, g_); + + return h_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Qualified_Scan_without_Inpatient_Encounter(context); + + return a_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Qualified_Scan_with_Values(context); + bool? b_(Observation CTScan) + { + bool? d_ = AlaraCommonFunctions_1_5_000.Instance.CT_Scan_Qualifies(context, CTScan); + + return d_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AdultOutpatientEncounters-4.11.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AdultOutpatientEncounters-4.11.000.g.cs new file mode 100644 index 000000000..4468cd0a3 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AdultOutpatientEncounters-4.11.000.g.cs @@ -0,0 +1,136 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AdultOutpatientEncounters", "4.11.000")] +public partial class AdultOutpatientEncounters_4_11_000 : ILibrary, ISingleton +{ + private AdultOutpatientEncounters_4_11_000() {} + + public static AdultOutpatientEncounters_4_11_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AdultOutpatientEncounters"; + public string Version => "4.11.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance, Status_1_8_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Annual Wellness Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240")] + public CqlValueSet Annual_Wellness_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + object a_ = context.ResolveParameter("AdultOutpatientEncounters-4.11.000", "Measurement Period", null); + + return (CqlInterval)a_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Annual_Wellness_Visit(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Home_Healthcare_Services(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Virtual_Encounter(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Telephone_Visits(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable t_ = context.Operators.Union(q_, s_); + IEnumerable u_ = Status_1_8_000.Instance.isEncounterPerformed(context, t_); + bool? v_(Encounter ValidEncounter) + { + CqlInterval x_ = this.Measurement_Period(context); + Period y_ = ValidEncounter?.Period; + CqlInterval z_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, y_); + CqlInterval aa_ = QICoreCommon_2_1_000.Instance.toInterval(context, z_ as object); + bool? ab_ = context.Operators.IntervalIncludesInterval(x_, aa_, "day"); + + return ab_; + }; + IEnumerable w_ = context.Operators.Where(u_, v_); + + return w_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AdvancedIllnessandFrailty-1.16.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AdvancedIllnessandFrailty-1.16.000.g.cs new file mode 100644 index 000000000..705de4644 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AdvancedIllnessandFrailty-1.16.000.g.cs @@ -0,0 +1,402 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AdvancedIllnessandFrailty", "1.16.000")] +public partial class AdvancedIllnessandFrailty_1_16_000 : ILibrary, ISingleton +{ + private AdvancedIllnessandFrailty_1_16_000() {} + + public static AdvancedIllnessandFrailty_1_16_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AdvancedIllnessandFrailty"; + public string Version => "1.16.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance, CumulativeMedicationDuration_4_1_000.Instance, Status_1_8_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Advanced Illness")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1082")] + public CqlValueSet Advanced_Illness(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1082", default); + + + [CqlDeclaration("Dementia Medications")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1510")] + public CqlValueSet Dementia_Medications(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1510", default); + + + [CqlDeclaration("Frailty Device")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.118.12.1300")] + public CqlValueSet Frailty_Device(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.118.12.1300", default); + + + [CqlDeclaration("Frailty Diagnosis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1074")] + public CqlValueSet Frailty_Diagnosis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1074", default); + + + [CqlDeclaration("Frailty Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1088")] + public CqlValueSet Frailty_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1088", default); + + + [CqlDeclaration("Frailty Symptom")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1075")] + public CqlValueSet Frailty_Symptom(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1075", default); + + + [CqlDeclaration("Housing status")] + public CqlCode Housing_status(CqlContext context) => + new CqlCode("71802-3", "http://loinc.org", default, default); + + + [CqlDeclaration("Lives in a nursing home (finding)")] + public CqlCode Lives_in_a_nursing_home__finding_(CqlContext context) => + new CqlCode("160734000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Medical equipment used")] + public CqlCode Medical_equipment_used(CqlContext context) => + new CqlCode("98181-1", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("71802-3", "http://loinc.org", default, default), + new CqlCode("98181-1", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("160734000", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + object a_ = context.ResolveParameter("AdvancedIllnessandFrailty-1.16.000", "Measurement Period", null); + + return (CqlInterval)a_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Has Criteria Indicating Frailty")] + public bool? Has_Criteria_Indicating_Frailty(CqlContext context) + { + CqlValueSet a_ = this.Frailty_Device(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-devicerequest")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-devicerequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isDeviceOrder(context, e_); + bool? g_(DeviceRequest FrailtyDeviceOrder) + { + bool? al_ = QICoreCommon_2_1_000.Instance.doNotPerform(context, FrailtyDeviceOrder); + bool? am_ = context.Operators.IsTrue(al_); + bool? an_ = context.Operators.Not(am_); + CqlInterval ao_ = this.Measurement_Period(context); + FhirDateTime ap_ = FrailtyDeviceOrder?.AuthoredOnElement; + CqlDateTime aq_ = context.Operators.Convert(ap_); + CqlInterval ar_ = QICoreCommon_2_1_000.Instance.toInterval(context, aq_ as object); + bool? as_ = context.Operators.IntervalIncludesInterval(ao_, ar_, "day"); + bool? at_ = context.Operators.And(an_, as_); + + return at_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + bool? i_ = context.Operators.Exists(h_); + CqlCode j_ = this.Medical_equipment_used(context); + IEnumerable k_ = context.Operators.ToList(j_); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, default, k_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable m_ = Status_1_8_000.Instance.isAssessmentPerformed(context, l_); + bool? n_(Observation EquipmentUsed) + { + DataType au_ = EquipmentUsed?.Value; + object av_ = FHIRHelpers_4_4_000.Instance.ToValue(context, au_); + CqlValueSet aw_ = this.Frailty_Device(context); + bool? ax_ = context.Operators.ConceptInValueSet(av_ as CqlConcept, aw_); + DataType ay_ = EquipmentUsed?.Effective; + object az_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ay_); + CqlInterval ba_ = QICoreCommon_2_1_000.Instance.toInterval(context, az_); + CqlDateTime bb_ = context.Operators.End(ba_); + CqlInterval bc_ = this.Measurement_Period(context); + bool? bd_ = context.Operators.In(bb_, bc_, "day"); + bool? be_ = context.Operators.And(ax_, bd_); + + return be_; + }; + IEnumerable o_ = context.Operators.Where(m_, n_); + bool? p_ = context.Operators.Exists(o_); + bool? q_ = context.Operators.Or(i_, p_); + CqlValueSet r_ = this.Frailty_Diagnosis(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? t_(Condition FrailtyDiagnosis) + { + CqlInterval bf_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, FrailtyDiagnosis); + CqlInterval bg_ = this.Measurement_Period(context); + bool? bh_ = context.Operators.Overlaps(bf_, bg_, "day"); + + return bh_; + }; + IEnumerable u_ = context.Operators.Where(s_, t_); + bool? v_ = context.Operators.Exists(u_); + bool? w_ = context.Operators.Or(q_, v_); + CqlValueSet x_ = this.Frailty_Encounter(context); + IEnumerable y_ = context.Operators.Retrieve(new RetrieveParameters(default, x_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable z_ = Status_1_8_000.Instance.isEncounterPerformed(context, y_); + bool? aa_(Encounter FrailtyEncounter) + { + Period bi_ = FrailtyEncounter?.Period; + CqlInterval bj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bi_); + CqlInterval bk_ = QICoreCommon_2_1_000.Instance.toInterval(context, bj_ as object); + CqlInterval bl_ = this.Measurement_Period(context); + bool? bm_ = context.Operators.Overlaps(bk_, bl_, "day"); + + return bm_; + }; + IEnumerable ab_ = context.Operators.Where(z_, aa_); + bool? ac_ = context.Operators.Exists(ab_); + bool? ad_ = context.Operators.Or(w_, ac_); + CqlValueSet ae_ = this.Frailty_Symptom(context); + IEnumerable af_ = context.Operators.Retrieve(new RetrieveParameters(default, ae_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable ag_ = Status_1_8_000.Instance.isSymptom(context, af_); + bool? ah_(Observation FrailtySymptom) + { + DataType bn_ = FrailtySymptom?.Effective; + object bo_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bn_); + CqlInterval bp_ = QICoreCommon_2_1_000.Instance.toInterval(context, bo_); + CqlInterval bq_ = this.Measurement_Period(context); + bool? br_ = context.Operators.Overlaps(bp_, bq_, "day"); + + return br_; + }; + IEnumerable ai_ = context.Operators.Where(ag_, ah_); + bool? aj_ = context.Operators.Exists(ai_); + bool? ak_ = context.Operators.Or(ad_, aj_); + + return ak_; + } + + + [CqlDeclaration("Has Advanced Illness in Year Before or During Measurement Period")] + public bool? Has_Advanced_Illness_in_Year_Before_or_During_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Advanced_Illness(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition AdvancedIllnessDiagnosis) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, AdvancedIllnessDiagnosis); + CqlDateTime g_ = context.Operators.Start(f_); + CqlInterval h_ = this.Measurement_Period(context); + CqlDateTime i_ = context.Operators.Start(h_); + CqlQuantity j_ = context.Operators.Quantity(1m, "year"); + CqlDateTime k_ = context.Operators.Subtract(i_, j_); + CqlDateTime m_ = context.Operators.End(h_); + CqlInterval n_ = context.Operators.Interval(k_, m_, true, true); + bool? o_ = context.Operators.In(g_, n_, "day"); + + return o_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Has Dementia Medications in Year Before or During Measurement Period")] + public bool? Has_Dementia_Medications_in_Year_Before_or_During_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Dementia_Medications(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable c_ = Status_1_8_000.Instance.isMedicationActive(context, b_); + bool? d_(MedicationRequest DementiaMedication) + { + CqlInterval g_ = CumulativeMedicationDuration_4_1_000.Instance.medicationRequestPeriod(context, DementiaMedication); + CqlDate h_ = g_?.low; + CqlDateTime i_ = context.Operators.ConvertDateToDateTime(h_); + CqlDate k_ = g_?.high; + CqlDateTime l_ = context.Operators.ConvertDateToDateTime(k_); + bool? n_ = g_?.lowClosed; + bool? p_ = g_?.highClosed; + CqlInterval q_ = context.Operators.Interval(i_, l_, n_, p_); + CqlInterval r_ = this.Measurement_Period(context); + CqlDateTime s_ = context.Operators.Start(r_); + CqlQuantity t_ = context.Operators.Quantity(1m, "year"); + CqlDateTime u_ = context.Operators.Subtract(s_, t_); + CqlDateTime w_ = context.Operators.End(r_); + CqlInterval x_ = context.Operators.Interval(u_, w_, true, true); + bool? y_ = context.Operators.Overlaps(q_, x_, "day"); + + return y_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + + return f_; + } + + + [CqlDeclaration("Is Age 66 or Older with Advanced Illness and Frailty")] + public bool? Is_Age_66_or_Older_with_Advanced_Illness_and_Frailty(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + bool? i_ = context.Operators.GreaterOrEqual(h_, 66); + bool? j_ = this.Has_Criteria_Indicating_Frailty(context); + bool? k_ = context.Operators.And(i_, j_); + bool? l_ = this.Has_Advanced_Illness_in_Year_Before_or_During_Measurement_Period(context); + bool? m_ = this.Has_Dementia_Medications_in_Year_Before_or_During_Measurement_Period(context); + bool? n_ = context.Operators.Or(l_, m_); + bool? o_ = context.Operators.And(k_, n_); + + return o_; + } + + + [CqlDeclaration("Is Age 66 to 80 with Advanced Illness and Frailty or Is Age 81 or Older with Frailty")] + public bool? Is_Age_66_to_80_with_Advanced_Illness_and_Frailty_or_Is_Age_81_or_Older_with_Frailty(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(66, 80, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + bool? k_ = this.Has_Criteria_Indicating_Frailty(context); + bool? l_ = context.Operators.And(j_, k_); + bool? m_ = this.Has_Advanced_Illness_in_Year_Before_or_During_Measurement_Period(context); + bool? n_ = this.Has_Dementia_Medications_in_Year_Before_or_During_Measurement_Period(context); + bool? o_ = context.Operators.Or(m_, n_); + bool? p_ = context.Operators.And(l_, o_); + Date r_ = a_?.BirthDateElement; + string s_ = r_?.Value; + CqlDate t_ = context.Operators.ConvertStringToDate(s_); + CqlDateTime v_ = context.Operators.End(e_); + CqlDate w_ = context.Operators.DateFrom(v_); + int? x_ = context.Operators.CalculateAgeAt(t_, w_, "year"); + bool? y_ = context.Operators.GreaterOrEqual(x_, 81); + bool? aa_ = context.Operators.And(y_, k_); + bool? ab_ = context.Operators.Or(p_, aa_); + + return ab_; + } + + + [CqlDeclaration("Is Age 66 or Older Living Long Term in a Nursing Home")] + public bool? Is_Age_66_or_Older_Living_Long_Term_in_a_Nursing_Home(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + bool? i_ = context.Operators.GreaterOrEqual(h_, 66); + CqlCode j_ = this.Housing_status(context); + IEnumerable k_ = context.Operators.ToList(j_); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, default, k_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable m_ = Status_1_8_000.Instance.isAssessmentPerformed(context, l_); + bool? n_(Observation HousingStatus) + { + DataType y_ = HousingStatus?.Effective; + object z_ = FHIRHelpers_4_4_000.Instance.ToValue(context, y_); + CqlInterval aa_ = QICoreCommon_2_1_000.Instance.toInterval(context, z_); + CqlDateTime ab_ = context.Operators.End(aa_); + CqlInterval ac_ = this.Measurement_Period(context); + CqlDateTime ad_ = context.Operators.End(ac_); + bool? ae_ = context.Operators.SameOrBefore(ab_, ad_, "day"); + + return ae_; + }; + IEnumerable o_ = context.Operators.Where(m_, n_); + object p_(Observation @this) + { + DataType af_ = @this?.Effective; + object ag_ = FHIRHelpers_4_4_000.Instance.ToValue(context, af_); + CqlInterval ah_ = QICoreCommon_2_1_000.Instance.toInterval(context, ag_); + CqlDateTime ai_ = context.Operators.End(ah_); + + return ai_; + }; + IEnumerable q_ = context.Operators.SortBy(o_, p_, System.ComponentModel.ListSortDirection.Ascending); + Observation r_ = context.Operators.Last(q_); + Observation[] s_ = [ + r_, + ]; + bool? t_(Observation LastHousingStatus) + { + DataType aj_ = LastHousingStatus?.Value; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + CqlCode al_ = this.Lives_in_a_nursing_home__finding_(context); + CqlConcept am_ = context.Operators.ConvertCodeToConcept(al_); + bool? an_ = context.Operators.Equivalent(ak_ as CqlConcept, am_); + + return an_; + }; + IEnumerable u_ = context.Operators.Where((IEnumerable)s_, t_); + Observation v_ = context.Operators.SingletonFrom(u_); + bool? w_ = context.Operators.Not((bool?)(v_ is null)); + bool? x_ = context.Operators.And(i_, w_); + + return x_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTClinicalFHIR-0.4.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTClinicalFHIR-0.4.000.g.cs new file mode 100644 index 000000000..6c28ddee1 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTClinicalFHIR-0.4.000.g.cs @@ -0,0 +1,234 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AlaraCTClinicalFHIR", "0.4.000")] +public partial class AlaraCTClinicalFHIR_0_4_000 : ILibrary, ISingleton +{ + private AlaraCTClinicalFHIR_0_4_000() {} + + public static AlaraCTClinicalFHIR_0_4_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AlaraCTClinicalFHIR"; + public string Version => "0.4.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, CQMCommon_2_2_000.Instance, QICoreCommon_2_1_000.Instance, SupplementalDataElements_3_5_000.Instance, AlaraCommonFunctions_1_5_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Birth date")] + public CqlCode Birth_date(CqlContext context) => + new CqlCode("21112-8", "http://loinc.org", default, default); + + + [CqlDeclaration("CT dose and image quality category")] + public CqlCode CT_dose_and_image_quality_category(CqlContext context) => + new CqlCode("96914-7", "http://loinc.org", default, default); + + + [CqlDeclaration("Full Body")] + public CqlCode Full_Body(CqlContext context) => + new CqlCode("LA31771-1", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("21112-8", "http://loinc.org", default, default), + new CqlCode("96914-7", "http://loinc.org", default, default), + new CqlCode("LA31771-1", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AlaraCTClinicalFHIR-0.4.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Patients with Qualifying CTScan")] + public IEnumerable Patients_with_Qualifying_CTScan(CqlContext context) + { + CqlCode a_ = this.CT_dose_and_image_quality_category(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? d_(Observation CTScanResult) + { + DataType f_ = CTScanResult?.Effective; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.ToInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + bool? k_ = context.Operators.In(i_, j_, "day"); + Patient l_ = this.Patient(context); + Date m_ = l_?.BirthDateElement; + string n_ = m_?.Value; + CqlDateTime o_ = context.Operators.ConvertStringToDateTime(n_); + CqlDateTime q_ = context.Operators.Start(j_); + int? r_ = context.Operators.CalculateAgeAt(o_, q_, "year"); + bool? s_ = context.Operators.GreaterOrEqual(r_, 18); + bool? t_ = context.Operators.And(k_, s_); + + return t_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Patients with Qualifying CTScan with Values")] + public IEnumerable Patients_with_Qualifying_CTScan_with_Values(CqlContext context) + { + IEnumerable a_ = this.Patients_with_Qualifying_CTScan(context); + bool? b_(Observation CTScan) + { + decimal? d_ = AlaraCommonFunctions_1_5_000.Instance.Global_Noise_Value(context, CTScan); + bool? e_ = context.Operators.Not((bool?)(d_ is null)); + decimal? f_ = AlaraCommonFunctions_1_5_000.Instance.Size_Adjusted_Value(context, CTScan); + bool? g_ = context.Operators.Not((bool?)(f_ is null)); + bool? h_ = context.Operators.And(e_, g_); + DataType i_ = CTScan?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + bool? k_ = context.Operators.Not((bool?)(j_ is null)); + bool? l_ = context.Operators.And(h_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Patients_with_Qualifying_CTScan(context); + bool? b_ = context.Operators.Exists(a_); + + return b_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + IEnumerable a_ = this.Patients_with_Qualifying_CTScan_with_Values(context); + bool? b_ = context.Operators.Exists(a_); + + return b_; + } + + + [CqlDeclaration("Denominator Exclusion")] + public bool? Denominator_Exclusion(CqlContext context) + { + IEnumerable a_ = this.Patients_with_Qualifying_CTScan_with_Values(context); + bool? b_(Observation CTScan) + { + DataType e_ = CTScan?.Value; + object f_ = FHIRHelpers_4_4_000.Instance.ToValue(context, e_); + CqlCode[] g_ = (f_ as CqlConcept)?.codes; + CqlCode h_ = this.Full_Body(context); + bool? i_ = context.Operators.Contains((IEnumerable)g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + IEnumerable a_ = this.Patients_with_Qualifying_CTScan_with_Values(context); + bool? b_(Observation CTScan) + { + bool? e_ = AlaraCommonFunctions_1_5_000.Instance.CT_Scan_Qualifies(context, CTScan); + + return e_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTIQRFHIR-0.4.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTIQRFHIR-0.4.000.g.cs new file mode 100644 index 000000000..a2f2e8a44 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCTIQRFHIR-0.4.000.g.cs @@ -0,0 +1,268 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AlaraCTIQRFHIR", "0.4.000")] +public partial class AlaraCTIQRFHIR_0_4_000 : ILibrary, ISingleton +{ + private AlaraCTIQRFHIR_0_4_000() {} + + public static AlaraCTIQRFHIR_0_4_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AlaraCTIQRFHIR"; + public string Version => "0.4.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, CQMCommon_2_2_000.Instance, QICoreCommon_2_1_000.Instance, SupplementalDataElements_3_5_000.Instance, AlaraCommonFunctions_1_5_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Encounter Inpatient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307")] + public CqlValueSet Encounter_Inpatient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307", default); + + + [CqlDeclaration("CT dose and image quality category")] + public CqlCode CT_dose_and_image_quality_category(CqlContext context) => + new CqlCode("96914-7", "http://loinc.org", default, default); + + + [CqlDeclaration("Full Body")] + public CqlCode Full_Body(CqlContext context) => + new CqlCode("LA31771-1", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("96914-7", "http://loinc.org", default, default), + new CqlCode("LA31771-1", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AlaraCTIQRFHIR-0.4.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Qualifying Inpatient Encounters")] + public IEnumerable Qualifying_Inpatient_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Encounter_Inpatient(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? c_(Encounter InpatientEncounter) + { + Period e_ = InpatientEncounter?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlInterval g_ = this.Measurement_Period(context); + bool? h_ = context.Operators.Overlaps(f_, g_, default); + Patient i_ = this.Patient(context); + Date j_ = i_?.BirthDateElement; + string k_ = j_?.Value; + CqlDate l_ = context.Operators.ConvertStringToDate(k_); + CqlDateTime n_ = context.Operators.Start(g_); + CqlDate o_ = context.Operators.DateFrom(n_); + int? p_ = context.Operators.CalculateAgeAt(l_, o_, "year"); + bool? q_ = context.Operators.GreaterOrEqual(p_, 18); + bool? r_ = context.Operators.And(h_, q_); + + return r_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Qualifying Scan During Inpatient Encounter")] + public IEnumerable Qualifying_Scan_During_Inpatient_Encounter(CqlContext context) + { + CqlCode a_ = this.CT_dose_and_image_quality_category(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable d_(Observation CTScan) + { + IEnumerable f_ = this.Qualifying_Inpatient_Encounters(context); + bool? g_(Encounter InpatientEncounters) + { + DataType k_ = CTScan?.Effective; + object l_ = FHIRHelpers_4_4_000.Instance.ToValue(context, k_); + CqlInterval m_ = QICoreCommon_2_1_000.Instance.ToInterval(context, l_); + CqlDateTime n_ = context.Operators.Start(m_); + Period o_ = InpatientEncounters?.Period; + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + bool? q_ = context.Operators.In(n_, p_, default); + object s_ = FHIRHelpers_4_4_000.Instance.ToValue(context, k_); + CqlInterval t_ = QICoreCommon_2_1_000.Instance.ToInterval(context, s_); + CqlDateTime u_ = context.Operators.End(t_); + CqlInterval v_ = this.Measurement_Period(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + bool? x_ = context.Operators.And(q_, w_); + + return x_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + Observation i_(Encounter InpatientEncounters) => + CTScan; + IEnumerable j_ = context.Operators.Select(h_, i_); + + return j_; + }; + IEnumerable e_ = context.Operators.SelectMany(c_, d_); + + return e_; + } + + + [CqlDeclaration("Qualifying Scan with Values")] + public IEnumerable Qualifying_Scan_with_Values(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Scan_During_Inpatient_Encounter(context); + bool? b_(Observation CTScan) + { + decimal? d_ = AlaraCommonFunctions_1_5_000.Instance.Global_Noise_Value(context, CTScan); + bool? e_ = context.Operators.Not((bool?)(d_ is null)); + decimal? f_ = AlaraCommonFunctions_1_5_000.Instance.Size_Adjusted_Value(context, CTScan); + bool? g_ = context.Operators.Not((bool?)(f_ is null)); + bool? h_ = context.Operators.And(e_, g_); + DataType i_ = CTScan?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + bool? k_ = context.Operators.Not((bool?)(j_ is null)); + bool? l_ = context.Operators.And(h_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Scan_with_Values(context); + bool? b_(Observation CTScan) + { + bool? d_ = AlaraCommonFunctions_1_5_000.Instance.CT_Scan_Qualifies(context, CTScan); + + return d_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Scan_During_Inpatient_Encounter(context); + + return a_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Scan_with_Values(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusion")] + public IEnumerable Denominator_Exclusion(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Scan_with_Values(context); + bool? b_(Observation CTScan) + { + DataType d_ = CTScan?.Value; + object e_ = FHIRHelpers_4_4_000.Instance.ToValue(context, d_); + CqlCode[] f_ = (e_ as CqlConcept)?.codes; + CqlCode g_ = this.Full_Body(context); + bool? h_ = context.Operators.Contains((IEnumerable)f_, g_); + + return h_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCommonFunctions-1.5.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCommonFunctions-1.5.000.g.cs new file mode 100644 index 000000000..278486fd5 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AlaraCommonFunctions-1.5.000.g.cs @@ -0,0 +1,345 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AlaraCommonFunctions", "1.5.000")] +public partial class AlaraCommonFunctions_1_5_000 : ILibrary, ISingleton +{ + private AlaraCommonFunctions_1_5_000() {} + + public static AlaraCommonFunctions_1_5_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AlaraCommonFunctions"; + public string Version => "1.5.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Abdomen and Pelvis High Dose")] + public CqlCode Abdomen_and_Pelvis_High_Dose(CqlContext context) => + new CqlCode("LA31754-7", "http://loinc.org", default, default); + + + [CqlDeclaration("Abdomen and Pelvis Low Dose")] + public CqlCode Abdomen_and_Pelvis_Low_Dose(CqlContext context) => + new CqlCode("LA31752-1", "http://loinc.org", default, default); + + + [CqlDeclaration("Abdomen and Pelvis Routine Dose")] + public CqlCode Abdomen_and_Pelvis_Routine_Dose(CqlContext context) => + new CqlCode("LA31753-9", "http://loinc.org", default, default); + + + [CqlDeclaration("Calculated CT global noise")] + public CqlCode Calculated_CT_global_noise(CqlContext context) => + new CqlCode("96912-1", "http://loinc.org", default, default); + + + [CqlDeclaration("Calculated CT size-adjusted dose")] + public CqlCode Calculated_CT_size_adjusted_dose(CqlContext context) => + new CqlCode("96913-9", "http://loinc.org", default, default); + + + [CqlDeclaration("Cardiac High Dose or Chest High Dose")] + public CqlCode Cardiac_High_Dose_or_Chest_High_Dose(CqlContext context) => + new CqlCode("LA31761-2", "http://loinc.org", default, default); + + + [CqlDeclaration("Cardiac Low Dose")] + public CqlCode Cardiac_Low_Dose(CqlContext context) => + new CqlCode("LA31755-4", "http://loinc.org", default, default); + + + [CqlDeclaration("Cardiac Routine Dose")] + public CqlCode Cardiac_Routine_Dose(CqlContext context) => + new CqlCode("LA31756-2", "http://loinc.org", default, default); + + + [CqlDeclaration("Chest Low Dose")] + public CqlCode Chest_Low_Dose(CqlContext context) => + new CqlCode("LA31758-8", "http://loinc.org", default, default); + + + [CqlDeclaration("Chest Routine Dose")] + public CqlCode Chest_Routine_Dose(CqlContext context) => + new CqlCode("LA31759-6", "http://loinc.org", default, default); + + + [CqlDeclaration("Extremity")] + public CqlCode Extremity(CqlContext context) => + new CqlCode("LA31765-3", "http://loinc.org", default, default); + + + [CqlDeclaration("Head High Dose")] + public CqlCode Head_High_Dose(CqlContext context) => + new CqlCode("LA31764-6", "http://loinc.org", default, default); + + + [CqlDeclaration("Head Low Dose")] + public CqlCode Head_Low_Dose(CqlContext context) => + new CqlCode("LA31762-0", "http://loinc.org", default, default); + + + [CqlDeclaration("Head Routine Dose")] + public CqlCode Head_Routine_Dose(CqlContext context) => + new CqlCode("LA31763-8", "http://loinc.org", default, default); + + + [CqlDeclaration("Neck or Cervical Spine")] + public CqlCode Neck_or_Cervical_Spine(CqlContext context) => + new CqlCode("LA31766-1", "http://loinc.org", default, default); + + + [CqlDeclaration("Simultaneous Chest and Abdomen and Pelvis")] + public CqlCode Simultaneous_Chest_and_Abdomen_and_Pelvis(CqlContext context) => + new CqlCode("LA31768-7", "http://loinc.org", default, default); + + + [CqlDeclaration("Simultaneous Head and Neck High Dose")] + public CqlCode Simultaneous_Head_and_Neck_High_Dose(CqlContext context) => + new CqlCode("LA31770-3", "http://loinc.org", default, default); + + + [CqlDeclaration("Simultaneous Head and Neck Routine Dose")] + public CqlCode Simultaneous_Head_and_Neck_Routine_Dose(CqlContext context) => + new CqlCode("LA31769-5", "http://loinc.org", default, default); + + + [CqlDeclaration("Simultaneous Thoracic and Lumbar Spine")] + public CqlCode Simultaneous_Thoracic_and_Lumbar_Spine(CqlContext context) => + new CqlCode("LA31851-1", "http://loinc.org", default, default); + + + [CqlDeclaration("Thoracic or Lumbar Spine")] + public CqlCode Thoracic_or_Lumbar_Spine(CqlContext context) => + new CqlCode("LA31767-9", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("LA31754-7", "http://loinc.org", default, default), + new CqlCode("LA31752-1", "http://loinc.org", default, default), + new CqlCode("LA31753-9", "http://loinc.org", default, default), + new CqlCode("96912-1", "http://loinc.org", default, default), + new CqlCode("96913-9", "http://loinc.org", default, default), + new CqlCode("LA31761-2", "http://loinc.org", default, default), + new CqlCode("LA31755-4", "http://loinc.org", default, default), + new CqlCode("LA31756-2", "http://loinc.org", default, default), + new CqlCode("LA31758-8", "http://loinc.org", default, default), + new CqlCode("LA31759-6", "http://loinc.org", default, default), + new CqlCode("LA31765-3", "http://loinc.org", default, default), + new CqlCode("LA31764-6", "http://loinc.org", default, default), + new CqlCode("LA31762-0", "http://loinc.org", default, default), + new CqlCode("LA31763-8", "http://loinc.org", default, default), + new CqlCode("LA31766-1", "http://loinc.org", default, default), + new CqlCode("LA31768-7", "http://loinc.org", default, default), + new CqlCode("LA31770-3", "http://loinc.org", default, default), + new CqlCode("LA31769-5", "http://loinc.org", default, default), + new CqlCode("LA31851-1", "http://loinc.org", default, default), + new CqlCode("LA31767-9", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + public decimal? Global_Noise_Value(CqlContext context, Observation Obs) + { + List a_ = Obs?.Component; + bool? b_(Observation.ComponentComponent C) + { + CodeableConcept h_ = C?.Code; + CqlConcept i_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, h_); + CqlCode j_ = this.Calculated_CT_global_noise(context); + CqlConcept k_ = context.Operators.ConvertCodeToConcept(j_); + bool? l_ = context.Operators.Equivalent(i_, k_); + DataType m_ = C?.Value; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + string o_ = (n_ as CqlQuantity)?.unit; + bool? p_ = context.Operators.Equal(o_, "[hnsf'U]"); + bool? q_ = context.Operators.And(l_, p_); + + return q_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + decimal? d_(Observation.ComponentComponent C) + { + DataType r_ = C?.Value; + object s_ = FHIRHelpers_4_4_000.Instance.ToValue(context, r_); + decimal? t_ = (s_ as CqlQuantity)?.value; + + return t_; + }; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + decimal? g_ = context.Operators.SingletonFrom(f_); + + return g_; + } + + + public decimal? Size_Adjusted_Value(CqlContext context, Observation Obs) + { + List a_ = Obs?.Component; + bool? b_(Observation.ComponentComponent C) + { + CodeableConcept h_ = C?.Code; + CqlConcept i_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, h_); + CqlCode j_ = this.Calculated_CT_size_adjusted_dose(context); + CqlConcept k_ = context.Operators.ConvertCodeToConcept(j_); + bool? l_ = context.Operators.Equivalent(i_, k_); + DataType m_ = C?.Value; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + string o_ = (n_ as CqlQuantity)?.unit; + bool? p_ = context.Operators.Equal(o_, "mGy.cm"); + bool? q_ = context.Operators.And(l_, p_); + + return q_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + decimal? d_(Observation.ComponentComponent C) + { + DataType r_ = C?.Value; + object s_ = FHIRHelpers_4_4_000.Instance.ToValue(context, r_); + decimal? t_ = (s_ as CqlQuantity)?.value; + + return t_; + }; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + decimal? g_ = context.Operators.SingletonFrom(f_); + + return g_; + } + + + public bool? Qualifies(CqlContext context, Observation Obs, CqlCode code, decimal? noiseThreshold, decimal? sizeDoseThreshold) + { + DataType a_ = Obs?.Value; + object b_ = FHIRHelpers_4_4_000.Instance.ToValue(context, a_); + CqlCode[] c_ = (b_ as CqlConcept)?.codes; + bool? d_ = context.Operators.Contains((IEnumerable)c_, code); + decimal? e_ = this.Global_Noise_Value(context, Obs); + bool? f_ = context.Operators.GreaterOrEqual(e_, noiseThreshold); + decimal? g_ = this.Size_Adjusted_Value(context, Obs); + bool? h_ = context.Operators.GreaterOrEqual(g_, sizeDoseThreshold); + bool? i_ = context.Operators.Or(f_, h_); + bool? j_ = context.Operators.And(d_, i_); + + return j_; + } + + + public bool? CT_Scan_Qualifies(CqlContext context, Observation Obs) + { + CqlCode a_ = this.Abdomen_and_Pelvis_Low_Dose(context); + decimal? b_ = context.Operators.ConvertIntegerToDecimal(64); + decimal? c_ = context.Operators.ConvertIntegerToDecimal(598); + bool? d_ = this.Qualifies(context, Obs, a_, b_, c_); + CqlCode e_ = this.Abdomen_and_Pelvis_Routine_Dose(context); + decimal? f_ = context.Operators.ConvertIntegerToDecimal(29); + decimal? g_ = context.Operators.ConvertIntegerToDecimal(644); + bool? h_ = this.Qualifies(context, Obs, e_, f_, g_); + bool? i_ = context.Operators.Or(d_, h_); + CqlCode j_ = this.Abdomen_and_Pelvis_High_Dose(context); + decimal? l_ = context.Operators.ConvertIntegerToDecimal(1260); + bool? m_ = this.Qualifies(context, Obs, j_, f_, l_); + bool? n_ = context.Operators.Or(i_, m_); + CqlCode o_ = this.Cardiac_Low_Dose(context); + decimal? p_ = context.Operators.ConvertIntegerToDecimal(55); + decimal? q_ = context.Operators.ConvertIntegerToDecimal(93); + bool? r_ = this.Qualifies(context, Obs, o_, p_, q_); + bool? s_ = context.Operators.Or(n_, r_); + CqlCode t_ = this.Cardiac_Routine_Dose(context); + decimal? u_ = context.Operators.ConvertIntegerToDecimal(32); + decimal? v_ = context.Operators.ConvertIntegerToDecimal(576); + bool? w_ = this.Qualifies(context, Obs, t_, u_, v_); + bool? x_ = context.Operators.Or(s_, w_); + CqlCode y_ = this.Chest_Low_Dose(context); + decimal? aa_ = context.Operators.ConvertIntegerToDecimal(377); + bool? ab_ = this.Qualifies(context, Obs, y_, p_, aa_); + bool? ac_ = context.Operators.Or(x_, ab_); + CqlCode ad_ = this.Chest_Routine_Dose(context); + decimal? ae_ = context.Operators.ConvertIntegerToDecimal(49); + bool? ag_ = this.Qualifies(context, Obs, ad_, ae_, aa_); + bool? ah_ = context.Operators.Or(ac_, ag_); + CqlCode ai_ = this.Cardiac_High_Dose_or_Chest_High_Dose(context); + decimal? ak_ = context.Operators.ConvertIntegerToDecimal(1282); + bool? al_ = this.Qualifies(context, Obs, ai_, ae_, ak_); + bool? am_ = context.Operators.Or(ah_, al_); + CqlCode an_ = this.Head_Low_Dose(context); + decimal? ao_ = context.Operators.ConvertIntegerToDecimal(115); + decimal? ap_ = context.Operators.ConvertIntegerToDecimal(582); + bool? aq_ = this.Qualifies(context, Obs, an_, ao_, ap_); + bool? ar_ = context.Operators.Or(am_, aq_); + CqlCode as_ = this.Head_Routine_Dose(context); + decimal? au_ = context.Operators.ConvertIntegerToDecimal(1025); + bool? av_ = this.Qualifies(context, Obs, as_, ao_, au_); + bool? aw_ = context.Operators.Or(ar_, av_); + CqlCode ax_ = this.Head_High_Dose(context); + decimal? az_ = context.Operators.ConvertIntegerToDecimal(1832); + bool? ba_ = this.Qualifies(context, Obs, ax_, ao_, az_); + bool? bb_ = context.Operators.Or(aw_, ba_); + CqlCode bc_ = this.Extremity(context); + decimal? bd_ = context.Operators.ConvertIntegerToDecimal(73); + decimal? be_ = context.Operators.ConvertIntegerToDecimal(320); + bool? bf_ = this.Qualifies(context, Obs, bc_, bd_, be_); + bool? bg_ = context.Operators.Or(bb_, bf_); + CqlCode bh_ = this.Neck_or_Cervical_Spine(context); + decimal? bi_ = context.Operators.ConvertIntegerToDecimal(25); + bool? bk_ = this.Qualifies(context, Obs, bh_, bi_, l_); + bool? bl_ = context.Operators.Or(bg_, bk_); + CqlCode bm_ = this.Thoracic_or_Lumbar_Spine(context); + bool? bp_ = this.Qualifies(context, Obs, bm_, bi_, l_); + bool? bq_ = context.Operators.Or(bl_, bp_); + CqlCode br_ = this.Simultaneous_Chest_and_Abdomen_and_Pelvis(context); + decimal? bt_ = context.Operators.ConvertIntegerToDecimal(1637); + bool? bu_ = this.Qualifies(context, Obs, br_, f_, bt_); + bool? bv_ = context.Operators.Or(bq_, bu_); + CqlCode bw_ = this.Simultaneous_Thoracic_and_Lumbar_Spine(context); + decimal? by_ = context.Operators.ConvertIntegerToDecimal(2520); + bool? bz_ = this.Qualifies(context, Obs, bw_, bi_, by_); + bool? ca_ = context.Operators.Or(bv_, bz_); + CqlCode cb_ = this.Simultaneous_Head_and_Neck_Routine_Dose(context); + decimal? cd_ = context.Operators.ConvertIntegerToDecimal(2285); + bool? ce_ = this.Qualifies(context, Obs, cb_, bi_, cd_); + bool? cf_ = context.Operators.Or(ca_, ce_); + CqlCode cg_ = this.Simultaneous_Head_and_Neck_High_Dose(context); + decimal? ci_ = context.Operators.ConvertIntegerToDecimal(3092); + bool? cj_ = this.Qualifies(context, Obs, cg_, bi_, ci_); + bool? ck_ = context.Operators.Or(cf_, cj_); + + return ck_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/Antibiotic-1.7.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/Antibiotic-1.7.000.g.cs new file mode 100644 index 000000000..a8575218c --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/Antibiotic-1.7.000.g.cs @@ -0,0 +1,175 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("Antibiotic", "1.7.000")] +public partial class Antibiotic_1_7_000 : ILibrary, ISingleton +{ + private Antibiotic_1_7_000() {} + + public static Antibiotic_1_7_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "Antibiotic"; + public string Version => "1.7.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance, CumulativeMedicationDuration_4_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + object a_ = context.ResolveParameter("Antibiotic-1.7.000", "Measurement Period", null); + + return (CqlInterval)a_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + public IEnumerable Has_Comorbid_Condition_History(CqlContext context, IEnumerable episodeDate, IEnumerable comorbidConditions) + { + IEnumerable a_(Encounter eDate) + { + bool? f_(Condition comcondition) + { + CqlInterval j_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, comcondition); + CqlDateTime k_ = context.Operators.Start(j_); + CqlDate l_ = context.Operators.DateFrom(k_); + Period m_ = eDate?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.toInterval(context, n_ as object); + CqlDateTime p_ = context.Operators.Start(o_); + CqlDate q_ = context.Operators.DateFrom(p_); + CqlQuantity r_ = context.Operators.Quantity(1m, "year"); + CqlDate s_ = context.Operators.Subtract(q_, r_); + CqlInterval u_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlInterval v_ = QICoreCommon_2_1_000.Instance.toInterval(context, u_ as object); + CqlDateTime w_ = context.Operators.Start(v_); + CqlDate x_ = context.Operators.DateFrom(w_); + CqlInterval y_ = context.Operators.Interval(s_, x_, true, true); + bool? z_ = context.Operators.In(l_, y_, default); + + return z_; + }; + IEnumerable g_ = context.Operators.Where(comorbidConditions, f_); + Encounter h_(Condition comcondition) => + eDate; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable b_ = context.Operators.SelectMany(episodeDate, a_); + Encounter c_(Encounter eDate) => + eDate; + IEnumerable d_ = context.Operators.Select(b_, c_); + IEnumerable e_ = context.Operators.Distinct(d_); + + return e_; + } + + + public IEnumerable Has_Competing_Diagnosis_History(CqlContext context, IEnumerable episodeDate, IEnumerable competingConditions) + { + IEnumerable a_(Encounter eDate) + { + bool? f_(Condition competcondition) + { + CqlInterval j_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, competcondition); + CqlDateTime k_ = context.Operators.Start(j_); + Period l_ = eDate?.Period; + CqlInterval m_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + CqlDateTime n_ = context.Operators.Start(m_); + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + CqlDateTime q_ = context.Operators.Start(p_); + CqlQuantity r_ = context.Operators.Quantity(3m, "days"); + CqlDateTime s_ = context.Operators.Add(q_, r_); + CqlInterval t_ = context.Operators.Interval(n_, s_, true, true); + bool? u_ = context.Operators.In(k_, t_, "day"); + CqlInterval w_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + CqlDateTime x_ = context.Operators.Start(w_); + bool? y_ = context.Operators.Not((bool?)(x_ is null)); + bool? z_ = context.Operators.And(u_, y_); + + return z_; + }; + IEnumerable g_ = context.Operators.Where(competingConditions, f_); + Encounter h_(Condition competcondition) => + eDate; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable b_ = context.Operators.SelectMany(episodeDate, a_); + Encounter c_(Encounter eDate) => + eDate; + IEnumerable d_ = context.Operators.Select(b_, c_); + IEnumerable e_ = context.Operators.Distinct(d_); + + return e_; + } + + + public IEnumerable Has_Antibiotic_Medication_History(CqlContext context, IEnumerable episodeDate, IEnumerable antibioticMedications) + { + IEnumerable a_(Encounter DateOfEpisode) + { + bool? c_(MedicationRequest ActiveMedication) + { + CqlInterval g_ = CumulativeMedicationDuration_4_1_000.Instance.medicationRequestPeriod(context, ActiveMedication); + Period h_ = DateOfEpisode?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlInterval j_ = QICoreCommon_2_1_000.Instance.toInterval(context, i_ as object); + CqlDateTime k_ = context.Operators.Start(j_); + CqlDate l_ = context.Operators.DateFrom(k_); + CqlQuantity m_ = context.Operators.Quantity(30m, "days"); + CqlDate n_ = context.Operators.Subtract(l_, m_); + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlInterval q_ = QICoreCommon_2_1_000.Instance.toInterval(context, p_ as object); + CqlDateTime r_ = context.Operators.Start(q_); + CqlDate s_ = context.Operators.DateFrom(r_); + CqlQuantity t_ = context.Operators.Quantity(1m, "day"); + CqlDate u_ = context.Operators.Subtract(s_, t_); + CqlInterval v_ = context.Operators.Interval(n_, u_, true, true); + bool? w_ = context.Operators.Overlaps(g_, v_, "day"); + + return w_; + }; + IEnumerable d_ = context.Operators.Where(antibioticMedications, c_); + Encounter e_(MedicationRequest ActiveMedication) => + DateOfEpisode; + IEnumerable f_ = context.Operators.Select(d_, e_); + + return f_; + }; + IEnumerable b_ = context.Operators.SelectMany(episodeDate, a_); + + return b_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AnticoagulationTherapyforAtrialFibrillationFlutterFHIR-0.3.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AnticoagulationTherapyforAtrialFibrillationFlutterFHIR-0.3.000.g.cs new file mode 100644 index 000000000..98b5966c4 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AnticoagulationTherapyforAtrialFibrillationFlutterFHIR-0.3.000.g.cs @@ -0,0 +1,619 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AnticoagulationTherapyforAtrialFibrillationFlutterFHIR", "0.3.000")] +public partial class AnticoagulationTherapyforAtrialFibrillationFlutterFHIR_0_3_000 : ILibrary, ISingleton +{ + private AnticoagulationTherapyforAtrialFibrillationFlutterFHIR_0_3_000() {} + + public static AnticoagulationTherapyforAtrialFibrillationFlutterFHIR_0_3_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AnticoagulationTherapyforAtrialFibrillationFlutterFHIR"; + public string Version => "0.3.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, CQMCommon_2_2_000.Instance, QICoreCommon_2_1_000.Instance, SupplementalDataElements_3_5_000.Instance, TJCOverall_8_14_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Anticoagulant Therapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.200")] + public CqlValueSet Anticoagulant_Therapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.200", default); + + + [CqlDeclaration("Atrial Ablation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.203")] + public CqlValueSet Atrial_Ablation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.203", default); + + + [CqlDeclaration("Atrial Fibrillation or Flutter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.202")] + public CqlValueSet Atrial_Fibrillation_or_Flutter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.202", default); + + + [CqlDeclaration("Discharge To Acute Care Facility")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.87")] + public CqlValueSet Discharge_To_Acute_Care_Facility(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.87", default); + + + [CqlDeclaration("Discharged to Health Care Facility for Hospice Care")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.207")] + public CqlValueSet Discharged_to_Health_Care_Facility_for_Hospice_Care(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.207", default); + + + [CqlDeclaration("Discharged to Home for Hospice Care")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.209")] + public CqlValueSet Discharged_to_Home_for_Hospice_Care(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.209", default); + + + [CqlDeclaration("History of Atrial Ablation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.76")] + public CqlValueSet History_of_Atrial_Ablation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.76", default); + + + [CqlDeclaration("Left Against Medical Advice")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.308")] + public CqlValueSet Left_Against_Medical_Advice(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.308", default); + + + [CqlDeclaration("Medical Reason For Not Providing Treatment")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.473")] + public CqlValueSet Medical_Reason_For_Not_Providing_Treatment(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.473", default); + + + [CqlDeclaration("Patient Expired")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.309")] + public CqlValueSet Patient_Expired(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.309", default); + + + [CqlDeclaration("Patient Refusal")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.93")] + public CqlValueSet Patient_Refusal(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.93", default); + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AnticoagulationTherapyforAtrialFibrillationFlutterFHIR-0.3.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = TJCOverall_8_14_000.Instance.Ischemic_Stroke_Encounter(context); + + return a_; + } + + + [CqlDeclaration("Encounter with a History of Atrial Ablation")] + public IEnumerable Encounter_with_a_History_of_Atrial_Ablation(CqlContext context) + { + IEnumerable a_ = TJCOverall_8_14_000.Instance.Ischemic_Stroke_Encounter(context); + bool? b_(Encounter IschemicStrokeEncounter) + { + CqlValueSet l_ = this.Atrial_Ablation(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? n_(Procedure AtrialAblationProcedure) + { + Code q_ = AtrialAblationProcedure?.StatusElement; + EventStatus? r_ = q_?.Value; + string s_ = context.Operators.Convert(r_); + bool? t_ = context.Operators.Equal(s_, "completed"); + DataType u_ = AtrialAblationProcedure?.Performed; + object v_ = FHIRHelpers_4_4_000.Instance.ToValue(context, u_); + CqlInterval w_ = QICoreCommon_2_1_000.Instance.toInterval(context, v_); + CqlDateTime x_ = context.Operators.Start(w_); + Period y_ = IschemicStrokeEncounter?.Period; + CqlInterval z_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, y_); + CqlDateTime aa_ = context.Operators.Start(z_); + bool? ab_ = context.Operators.Before(x_, aa_, default); + bool? ac_ = context.Operators.And(t_, ab_); + + return ac_; + }; + IEnumerable o_ = context.Operators.Where(m_, n_); + bool? p_ = context.Operators.Exists(o_); + + return p_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + IEnumerable e_(Encounter IschemicStrokeEncounter) + { + CqlValueSet ad_ = this.History_of_Atrial_Ablation(context); + IEnumerable ae_ = context.Operators.Retrieve(new RetrieveParameters(default, ad_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? af_(Condition AtrialAblationDiagnosis) + { + CodeableConcept aj_ = AtrialAblationDiagnosis?.VerificationStatus; + CqlConcept ak_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, aj_); + bool? al_ = context.Operators.Not((bool?)(ak_ is null)); + CqlConcept an_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, aj_); + CqlCode ao_ = QICoreCommon_2_1_000.Instance.confirmed(context); + CqlConcept ap_ = context.Operators.ConvertCodeToConcept(ao_); + bool? aq_ = context.Operators.Equivalent(an_, ap_); + bool? ar_ = context.Operators.And(al_, aq_); + DataType as_ = AtrialAblationDiagnosis?.Onset; + object at_ = FHIRHelpers_4_4_000.Instance.ToValue(context, as_); + CqlInterval au_ = QICoreCommon_2_1_000.Instance.toInterval(context, at_); + CqlDateTime av_ = context.Operators.Start(au_); + Period aw_ = IschemicStrokeEncounter?.Period; + CqlInterval ax_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aw_); + CqlDateTime ay_ = context.Operators.Start(ax_); + bool? az_ = context.Operators.Before(av_, ay_, default); + bool? ba_ = context.Operators.And(ar_, az_); + + return ba_; + }; + IEnumerable ag_ = context.Operators.Where(ae_, af_); + Encounter ah_(Condition AtrialAblationDiagnosis) => + IschemicStrokeEncounter; + IEnumerable ai_ = context.Operators.Select(ag_, ah_); + + return ai_; + }; + IEnumerable f_ = context.Operators.SelectMany(a_, e_); + IEnumerable g_ = context.Operators.Union(c_, f_); + IEnumerable i_(Encounter IschemicStrokeEncounter) + { + CqlValueSet bb_ = this.History_of_Atrial_Ablation(context); + IEnumerable bc_ = context.Operators.Retrieve(new RetrieveParameters(default, bb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? bd_(Observation AtrialAblationObservation) + { + Code bh_ = AtrialAblationObservation?.StatusElement; + ObservationStatus? bi_ = bh_?.Value; + Code bj_ = context.Operators.Convert>(bi_); + string bk_ = context.Operators.Convert(bj_); + string[] bl_ = [ + "final", + "amended", + "corrected", + ]; + bool? bm_ = context.Operators.In(bk_, bl_ as IEnumerable); + object bn_() + { + bool bu_() + { + DataType bx_ = AtrialAblationObservation?.Effective; + object by_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bx_); + bool bz_ = by_ is CqlDateTime; + + return bz_; + }; + bool bv_() + { + DataType ca_ = AtrialAblationObservation?.Effective; + object cb_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ca_); + bool cc_ = cb_ is CqlInterval; + + return cc_; + }; + bool bw_() + { + DataType cd_ = AtrialAblationObservation?.Effective; + object ce_ = FHIRHelpers_4_4_000.Instance.ToValue(context, cd_); + bool cf_ = ce_ is CqlDateTime; + + return cf_; + }; + if (bu_()) + { + DataType cg_ = AtrialAblationObservation?.Effective; + object ch_ = FHIRHelpers_4_4_000.Instance.ToValue(context, cg_); + + return (ch_ as CqlDateTime) as object; + } + else if (bv_()) + { + DataType ci_ = AtrialAblationObservation?.Effective; + object cj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ci_); + + return (cj_ as CqlInterval) as object; + } + else if (bw_()) + { + DataType ck_ = AtrialAblationObservation?.Effective; + object cl_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ck_); + + return (cl_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime bo_ = QICoreCommon_2_1_000.Instance.earliest(context, bn_()); + Period bp_ = IschemicStrokeEncounter?.Period; + CqlInterval bq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bp_); + CqlDateTime br_ = context.Operators.End(bq_); + bool? bs_ = context.Operators.SameOrBefore(bo_, br_, default); + bool? bt_ = context.Operators.And(bm_, bs_); + + return bt_; + }; + IEnumerable be_ = context.Operators.Where(bc_, bd_); + Encounter bf_(Observation AtrialAblationObservation) => + IschemicStrokeEncounter; + IEnumerable bg_ = context.Operators.Select(be_, bf_); + + return bg_; + }; + IEnumerable j_ = context.Operators.SelectMany(a_, i_); + IEnumerable k_ = context.Operators.Union(g_, j_); + + return k_; + } + + + [CqlDeclaration("Encounter with Prior or Present Diagnosis of Atrial Fibrillation or Flutter")] + public IEnumerable Encounter_with_Prior_or_Present_Diagnosis_of_Atrial_Fibrillation_or_Flutter(CqlContext context) + { + IEnumerable a_ = TJCOverall_8_14_000.Instance.Ischemic_Stroke_Encounter(context); + IEnumerable b_(Encounter IschemicStrokeEncounter) + { + CqlValueSet h_ = this.Atrial_Fibrillation_or_Flutter(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? j_(Condition AtrialFibrillationFlutter) + { + CodeableConcept n_ = AtrialFibrillationFlutter?.VerificationStatus; + CqlConcept o_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, n_); + bool? p_ = context.Operators.Not((bool?)(o_ is null)); + CqlConcept r_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, n_); + CqlCode s_ = QICoreCommon_2_1_000.Instance.confirmed(context); + CqlConcept t_ = context.Operators.ConvertCodeToConcept(s_); + bool? u_ = context.Operators.Equivalent(r_, t_); + bool? v_ = context.Operators.And(p_, u_); + DataType w_ = AtrialFibrillationFlutter?.Onset; + object x_ = FHIRHelpers_4_4_000.Instance.ToValue(context, w_); + CqlInterval y_ = QICoreCommon_2_1_000.Instance.toInterval(context, x_); + CqlDateTime z_ = context.Operators.Start(y_); + Period aa_ = IschemicStrokeEncounter?.Period; + CqlInterval ab_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aa_); + CqlDateTime ac_ = context.Operators.End(ab_); + bool? ad_ = context.Operators.SameOrBefore(z_, ac_, default); + bool? ae_ = context.Operators.And(v_, ad_); + + return ae_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + Encounter l_(Condition AtrialFibrillationFlutter) => + IschemicStrokeEncounter; + IEnumerable m_ = context.Operators.Select(k_, l_); + + return m_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + bool? e_(Encounter IschemicStrokeEncounter) + { + IEnumerable af_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, IschemicStrokeEncounter); + bool? ag_(Condition EncounterDiagnosis) + { + CodeableConcept aj_ = EncounterDiagnosis?.Code; + CqlConcept ak_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, aj_); + CqlValueSet al_ = this.Atrial_Fibrillation_or_Flutter(context); + bool? am_ = context.Operators.ConceptInValueSet(ak_, al_); + + return am_; + }; + IEnumerable ah_ = context.Operators.Where(af_, ag_); + bool? ai_ = context.Operators.Exists(ah_); + + return ai_; + }; + IEnumerable f_ = context.Operators.Where(a_, e_); + IEnumerable g_ = context.Operators.Union(c_, f_); + + return g_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_a_History_of_Atrial_Ablation(context); + IEnumerable b_ = this.Encounter_with_Prior_or_Present_Diagnosis_of_Atrial_Fibrillation_or_Flutter(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + + return c_; + } + + + [CqlDeclaration("Encounter with Comfort Measures during Hospitalization for Patients with Documented Atrial Fibrillation or Flutter")] + public IEnumerable Encounter_with_Comfort_Measures_during_Hospitalization_for_Patients_with_Documented_Atrial_Fibrillation_or_Flutter(CqlContext context) + { + IEnumerable a_ = this.Denominator(context); + IEnumerable b_(Encounter Encounter) + { + IEnumerable d_ = TJCOverall_8_14_000.Instance.Intervention_Comfort_Measures(context); + bool? e_(object ComfortMeasure) + { + object i_ = context.Operators.LateBoundProperty(ComfortMeasure, "performed"); + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + CqlInterval k_ = QICoreCommon_2_1_000.Instance.toInterval(context, j_); + CqlDateTime l_ = context.Operators.Start(k_); + object m_ = context.Operators.LateBoundProperty(ComfortMeasure, "authoredOn"); + CqlDateTime n_ = context.Operators.LateBoundProperty(m_, "value"); + CqlInterval o_ = CQMCommon_2_2_000.Instance.hospitalizationWithObservation(context, Encounter); + bool? p_ = context.Operators.In(l_ ?? n_, o_, default); + + return p_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + Encounter g_(object ComfortMeasure) => + Encounter; + IEnumerable h_ = context.Operators.Select(f_, g_); + + return h_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public IEnumerable Denominator_Exclusions(CqlContext context) + { + IEnumerable a_ = this.Denominator(context); + bool? b_(Encounter Encounter) + { + Code f_ = Encounter?.StatusElement; + Encounter.EncounterStatus? g_ = f_?.Value; + Code h_ = context.Operators.Convert>(g_); + bool? i_ = context.Operators.Equal(h_, "finished"); + Encounter.HospitalizationComponent j_ = Encounter?.Hospitalization; + CodeableConcept k_ = j_?.DischargeDisposition; + CqlConcept l_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, k_); + CqlValueSet m_ = this.Discharge_To_Acute_Care_Facility(context); + bool? n_ = context.Operators.ConceptInValueSet(l_, m_); + CodeableConcept p_ = j_?.DischargeDisposition; + CqlConcept q_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, p_); + CqlValueSet r_ = this.Left_Against_Medical_Advice(context); + bool? s_ = context.Operators.ConceptInValueSet(q_, r_); + bool? t_ = context.Operators.Or(n_, s_); + CodeableConcept v_ = j_?.DischargeDisposition; + CqlConcept w_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, v_); + CqlValueSet x_ = this.Patient_Expired(context); + bool? y_ = context.Operators.ConceptInValueSet(w_, x_); + bool? z_ = context.Operators.Or(t_, y_); + CodeableConcept ab_ = j_?.DischargeDisposition; + CqlConcept ac_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, ab_); + CqlValueSet ad_ = this.Discharged_to_Home_for_Hospice_Care(context); + bool? ae_ = context.Operators.ConceptInValueSet(ac_, ad_); + bool? af_ = context.Operators.Or(z_, ae_); + CodeableConcept ah_ = j_?.DischargeDisposition; + CqlConcept ai_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, ah_); + CqlValueSet aj_ = this.Discharged_to_Health_Care_Facility_for_Hospice_Care(context); + bool? ak_ = context.Operators.ConceptInValueSet(ai_, aj_); + bool? al_ = context.Operators.Or(af_, ak_); + bool? am_ = context.Operators.And(i_, al_); + + return am_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + IEnumerable d_ = this.Encounter_with_Comfort_Measures_during_Hospitalization_for_Patients_with_Documented_Atrial_Fibrillation_or_Flutter(context); + IEnumerable e_ = context.Operators.Union(c_, d_); + + return e_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Denominator(context); + IEnumerable b_(Encounter Encounter) + { + CqlValueSet d_ = this.Anticoagulant_Therapy(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable h_ = context.Operators.Union(e_, g_); + bool? i_(MedicationRequest DischargeAnticoagulant) + { + bool? m_ = QICoreCommon_2_1_000.Instance.isCommunity(context, DischargeAnticoagulant); + bool? n_ = QICoreCommon_2_1_000.Instance.isDischarge(context, DischargeAnticoagulant); + bool? o_ = context.Operators.Or(m_, n_); + Code p_ = DischargeAnticoagulant?.StatusElement; + MedicationRequest.MedicationrequestStatus? q_ = p_?.Value; + string r_ = context.Operators.Convert(q_); + string[] s_ = [ + "active", + "completed", + ]; + bool? t_ = context.Operators.In(r_, s_ as IEnumerable); + bool? u_ = context.Operators.And(o_, t_); + Code v_ = DischargeAnticoagulant?.IntentElement; + MedicationRequest.MedicationRequestIntent? w_ = v_?.Value; + string x_ = context.Operators.Convert(w_); + string[] y_ = [ + "order", + "original-order", + "reflex-order", + "filler-order", + "instance-order", + ]; + bool? z_ = context.Operators.In(x_, y_ as IEnumerable); + bool? aa_ = context.Operators.And(u_, z_); + FhirDateTime ab_ = DischargeAnticoagulant?.AuthoredOnElement; + CqlDateTime ac_ = context.Operators.Convert(ab_); + Period ad_ = Encounter?.Period; + CqlInterval ae_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ad_); + bool? af_ = context.Operators.In(ac_, ae_, default); + bool? ag_ = context.Operators.And(aa_, af_); + + return ag_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Encounter k_(MedicationRequest DischargeAnticoagulant) => + Encounter; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Documented Reason for Not Giving Anticoagulant at Discharge")] + public IEnumerable Documented_Reason_for_Not_Giving_Anticoagulant_at_Discharge(CqlContext context) + { + CqlValueSet a_ = this.Anticoagulant_Therapy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-mednotrequested")); + bool? c_(MedicationRequest NoAnticoagulant) + { + List e_ = NoAnticoagulant?.ReasonCode; + CqlConcept f_(CodeableConcept @this) + { + CqlConcept z_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return z_; + }; + IEnumerable g_ = context.Operators.Select((IEnumerable)e_, f_); + CqlValueSet h_ = this.Medical_Reason_For_Not_Providing_Treatment(context); + bool? i_ = context.Operators.ConceptsInValueSet(g_, h_); + CqlConcept k_(CodeableConcept @this) + { + CqlConcept aa_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return aa_; + }; + IEnumerable l_ = context.Operators.Select((IEnumerable)e_, k_); + CqlValueSet m_ = this.Patient_Refusal(context); + bool? n_ = context.Operators.ConceptsInValueSet(l_, m_); + bool? o_ = context.Operators.Or(i_, n_); + bool? p_ = QICoreCommon_2_1_000.Instance.isCommunity(context, NoAnticoagulant); + bool? q_ = QICoreCommon_2_1_000.Instance.isDischarge(context, NoAnticoagulant); + bool? r_ = context.Operators.Or(p_, q_); + bool? s_ = context.Operators.And(o_, r_); + Code t_ = NoAnticoagulant?.IntentElement; + MedicationRequest.MedicationRequestIntent? u_ = t_?.Value; + string v_ = context.Operators.Convert(u_); + string[] w_ = [ + "order", + "original-order", + "reflex-order", + "filler-order", + "instance-order", + ]; + bool? x_ = context.Operators.In(v_, w_ as IEnumerable); + bool? y_ = context.Operators.And(s_, x_); + + return y_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Denominator Exceptions")] + public IEnumerable Denominator_Exceptions(CqlContext context) + { + IEnumerable a_ = this.Denominator(context); + IEnumerable b_(Encounter Encounter) + { + IEnumerable d_ = this.Documented_Reason_for_Not_Giving_Anticoagulant_at_Discharge(context); + bool? e_(MedicationRequest NoDischargeAnticoagulant) + { + FhirDateTime i_ = NoDischargeAnticoagulant?.AuthoredOnElement; + CqlDateTime j_ = context.Operators.Convert(i_); + Period k_ = Encounter?.Period; + CqlInterval l_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, k_); + bool? m_ = context.Operators.In(j_, l_, default); + + return m_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + Encounter g_(MedicationRequest NoDischargeAnticoagulant) => + Encounter; + IEnumerable h_ = context.Operators.Select(f_, g_); + + return h_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AntidepressantMedicationManagementFHIR-0.1.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AntidepressantMedicationManagementFHIR-0.1.001.g.cs new file mode 100644 index 000000000..416ff925a --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AntidepressantMedicationManagementFHIR-0.1.001.g.cs @@ -0,0 +1,513 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AntidepressantMedicationManagementFHIR", "0.1.001")] +public partial class AntidepressantMedicationManagementFHIR_0_1_001 : ILibrary, ISingleton +{ + private AntidepressantMedicationManagementFHIR_0_1_001() {} + + public static AntidepressantMedicationManagementFHIR_0_1_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AntidepressantMedicationManagementFHIR"; + public string Version => "0.1.001"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, CumulativeMedicationDuration_4_1_000.Instance, Status_1_8_000.Instance, QICoreCommon_2_1_000.Instance, CQMCommon_2_2_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Annual Wellness Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240")] + public CqlValueSet Annual_Wellness_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1240", default); + + + [CqlDeclaration("Antidepressant Medication")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1213")] + public CqlValueSet Antidepressant_Medication(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1213", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Major Depression")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1007")] + public CqlValueSet Major_Depression(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.105.12.1007", default); + + + [CqlDeclaration("Nursing Facility Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012")] + public CqlValueSet Nursing_Facility_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1012", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Psych Visit Diagnostic Evaluation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492")] + public CqlValueSet Psych_Visit_Diagnostic_Evaluation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492", default); + + + [CqlDeclaration("Psych Visit Psychotherapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496")] + public CqlValueSet Psych_Visit_Psychotherapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AntidepressantMedicationManagementFHIR-0.1.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("May 1 of the Year Prior to the Measurement Period")] + public CqlDateTime May_1_of_the_Year_Prior_to_the_Measurement_Period(CqlContext context) + { + CqlInterval a_ = this.Measurement_Period(context); + CqlDateTime b_ = context.Operators.Start(a_); + int? c_ = context.Operators.DateTimeComponentFrom(b_, "year"); + int? d_ = context.Operators.Subtract(c_, 1); + decimal? e_ = context.Operators.ConvertIntegerToDecimal(0); + CqlDateTime f_ = context.Operators.DateTime(d_, 5, 1, 0, 0, 0, 0, e_); + + return f_; + } + + + [CqlDeclaration("April 30 of the Measurement Period")] + public CqlDateTime April_30_of_the_Measurement_Period(CqlContext context) + { + CqlInterval a_ = this.Measurement_Period(context); + CqlDateTime b_ = context.Operators.Start(a_); + int? c_ = context.Operators.DateTimeComponentFrom(b_, "year"); + decimal? d_ = context.Operators.ConvertIntegerToDecimal(0); + CqlDateTime e_ = context.Operators.DateTime(c_, 4, 30, 23, 59, 59, 0, d_); + + return e_; + } + + + [CqlDeclaration("Intake Period")] + public CqlInterval Intake_Period(CqlContext context) + { + CqlDateTime a_ = this.May_1_of_the_Year_Prior_to_the_Measurement_Period(context); + CqlDateTime b_ = this.April_30_of_the_Measurement_Period(context); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + + return c_; + } + + + [CqlDeclaration("Earliest Antidepressant Dispensed During Intake Period")] + public CqlDate Earliest_Antidepressant_Dispensed_During_Intake_Period(CqlContext context) + { + CqlValueSet a_ = this.Antidepressant_Medication(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationdispense")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationdispense")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isMedicationDispensed(context, e_); + bool? g_(MedicationDispense Antidepressant) + { + CqlInterval p_ = CumulativeMedicationDuration_4_1_000.Instance.medicationDispensePeriod(context, Antidepressant); + CqlDate q_ = context.Operators.Start(p_); + CqlDateTime r_ = context.Operators.ConvertDateToDateTime(q_); + CqlInterval s_ = this.Intake_Period(context); + bool? t_ = context.Operators.In(r_, s_, "day"); + + return t_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + (CqlTupleMetadata, CqlDate AntidepressantDate)? i_(MedicationDispense Antidepressant) + { + CqlInterval u_ = CumulativeMedicationDuration_4_1_000.Instance.medicationDispensePeriod(context, Antidepressant); + CqlDate v_ = context.Operators.Start(u_); + CqlDateTime w_ = context.Operators.ConvertDateToDateTime(v_); + CqlDate x_ = context.Operators.DateFrom(w_); + (CqlTupleMetadata, CqlDate AntidepressantDate)? y_ = (CqlTupleMetadata_BZDEAYEYEiNadHNdHhSIPXaDL, x_); + + return y_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate AntidepressantDate)?> j_ = context.Operators.Select(h_, i_); + IEnumerable<(CqlTupleMetadata, CqlDate AntidepressantDate)?> k_ = context.Operators.Distinct<(CqlTupleMetadata, CqlDate AntidepressantDate)?>(j_); + object l_((CqlTupleMetadata, CqlDate AntidepressantDate)? @this) + { + CqlDate z_ = @this?.AntidepressantDate; + + return z_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate AntidepressantDate)?> m_ = context.Operators.SortBy<(CqlTupleMetadata, CqlDate AntidepressantDate)?>(k_, l_, System.ComponentModel.ListSortDirection.Ascending); + (CqlTupleMetadata, CqlDate AntidepressantDate)? n_ = context.Operators.First<(CqlTupleMetadata, CqlDate AntidepressantDate)?>(m_); + CqlDate o_ = n_?.AntidepressantDate; + + return o_; + } + + + [CqlDeclaration("IPSD")] + public CqlDate IPSD(CqlContext context) + { + CqlDate a_ = this.Earliest_Antidepressant_Dispensed_During_Intake_Period(context); + + return a_; + } + + + [CqlDeclaration("Has IPSD and Major Depression Diagnosis")] + public bool? Has_IPSD_and_Major_Depression_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.Major_Depression(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition MajorDepression) + { + CqlDate f_ = this.IPSD(context); + bool? g_ = context.Operators.Not((bool?)(f_ is null)); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, MajorDepression); + CqlDateTime i_ = context.Operators.Start(h_); + CqlDate j_ = context.Operators.DateFrom(i_); + CqlQuantity l_ = context.Operators.Quantity(60m, "days"); + CqlDate m_ = context.Operators.Subtract(f_, l_); + CqlDate p_ = context.Operators.Add(f_, l_); + CqlInterval q_ = context.Operators.Interval(m_, p_, true, true); + bool? r_ = context.Operators.In(j_, q_, default); + bool? t_ = context.Operators.Not((bool?)(f_ is null)); + bool? u_ = context.Operators.And(r_, t_); + bool? v_ = context.Operators.And(g_, u_); + + return v_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Home_Healthcare_Services(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Annual_Wellness_Visit(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Nursing_Facility_Visit(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Psych_Visit_Diagnostic_Evaluation(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet t_ = this.Psych_Visit_Psychotherapy(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = context.Operators.Union(q_, v_); + CqlValueSet x_ = this.Telephone_Visits(context); + IEnumerable y_ = context.Operators.Retrieve(new RetrieveParameters(default, x_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet z_ = this.Virtual_Encounter(context); + IEnumerable aa_ = context.Operators.Retrieve(new RetrieveParameters(default, z_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable ab_ = context.Operators.Union(y_, aa_); + IEnumerable ac_ = context.Operators.Union(w_, ab_); + IEnumerable ad_ = Status_1_8_000.Instance.isEncounterPerformed(context, ac_); + bool? ae_(Encounter ValidEncounter) + { + Period ag_ = ValidEncounter?.Period; + CqlInterval ah_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ag_); + CqlInterval ai_ = QICoreCommon_2_1_000.Instance.toInterval(context, ah_ as object); + CqlDateTime aj_ = context.Operators.Start(ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + CqlDate al_ = this.IPSD(context); + CqlQuantity am_ = context.Operators.Quantity(60m, "days"); + CqlDate an_ = context.Operators.Subtract(al_, am_); + CqlDate aq_ = context.Operators.Add(al_, am_); + CqlInterval ar_ = context.Operators.Interval(an_, aq_, true, true); + bool? as_ = context.Operators.In(ak_, ar_, default); + bool? au_ = context.Operators.Not((bool?)(al_ is null)); + bool? av_ = context.Operators.And(as_, au_); + + return av_; + }; + IEnumerable af_ = context.Operators.Where(ad_, ae_); + + return af_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlDate e_ = this.IPSD(context); + CqlDateTime f_ = context.Operators.ConvertDateToDateTime(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + bool? i_ = context.Operators.GreaterOrEqual(h_, 18); + bool? j_ = this.Has_IPSD_and_Major_Depression_Diagnosis(context); + bool? k_ = context.Operators.And(i_, j_); + IEnumerable l_ = this.Qualifying_Encounters(context); + bool? m_ = context.Operators.Exists(l_); + bool? n_ = context.Operators.And(k_, m_); + + return n_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + CqlValueSet b_ = this.Antidepressant_Medication(context); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, b_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, b_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable f_ = context.Operators.Union(c_, e_); + IEnumerable g_ = Status_1_8_000.Instance.isMedicationActive(context, f_); + bool? h_(MedicationRequest ActiveAntidepressant) + { + CqlDate l_ = this.IPSD(context); + bool? m_ = context.Operators.Not((bool?)(l_ is null)); + CqlInterval n_ = CumulativeMedicationDuration_4_1_000.Instance.medicationRequestPeriod(context, ActiveAntidepressant); + CqlDate o_ = n_?.low; + CqlDateTime p_ = context.Operators.ConvertDateToDateTime(o_); + CqlDate r_ = n_?.high; + CqlDateTime s_ = context.Operators.ConvertDateToDateTime(r_); + bool? u_ = n_?.lowClosed; + bool? w_ = n_?.highClosed; + CqlInterval x_ = context.Operators.Interval(p_, s_, u_, w_); + CqlInterval y_ = CQMCommon_2_2_000.Instance.ToDateInterval(context, x_); + CqlQuantity aa_ = context.Operators.Quantity(105m, "days"); + CqlDate ab_ = context.Operators.Subtract(l_, aa_); + CqlInterval ad_ = context.Operators.Interval(ab_, l_, true, false); + bool? ae_ = context.Operators.Overlaps(y_, ad_, default); + bool? af_ = context.Operators.And(m_, ae_); + + return af_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + bool? j_ = context.Operators.Exists(i_); + bool? k_ = context.Operators.Or(a_, j_); + + return k_; + } + + + [CqlDeclaration("Antidepressant Medication Period Between IPSD and 114 Days After IPSD")] + public IEnumerable> Antidepressant_Medication_Period_Between_IPSD_and_114_Days_After_IPSD(CqlContext context) + { + CqlValueSet a_ = this.Antidepressant_Medication(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationdispense")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationdispense")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isMedicationDispensed(context, e_); + CqlInterval g_(MedicationDispense Antidepressant) + { + CqlInterval j_ = CumulativeMedicationDuration_4_1_000.Instance.medicationDispensePeriod(context, Antidepressant); + CqlDate k_ = this.IPSD(context); + CqlQuantity m_ = context.Operators.Quantity(114m, "days"); + CqlDate n_ = context.Operators.Add(k_, m_); + CqlInterval o_ = context.Operators.Interval(k_, n_, true, true); + CqlInterval p_ = context.Operators.Intersect(j_, o_); + + return p_; + }; + IEnumerable> h_ = context.Operators.Select>(f_, g_); + IEnumerable> i_ = context.Operators.Distinct>(h_); + + return i_; + } + + + [CqlDeclaration("Cumulative Medication Duration Greater Than or Equal to 84 Days")] + public bool? Cumulative_Medication_Duration_Greater_Than_or_Equal_to_84_Days(CqlContext context) + { + IEnumerable> a_ = this.Antidepressant_Medication_Period_Between_IPSD_and_114_Days_After_IPSD(context); + int? b_ = CumulativeMedicationDuration_4_1_000.Instance.cumulativeDuration(context, a_); + bool? c_ = context.Operators.GreaterOrEqual(b_, 84); + + return c_; + } + + + [CqlDeclaration("Numerator 1")] + public bool? Numerator_1(CqlContext context) + { + bool? a_ = this.Cumulative_Medication_Duration_Greater_Than_or_Equal_to_84_Days(context); + + return a_; + } + + + [CqlDeclaration("Antidepressant Medication Period Between IPSD and 231 Days After IPSD")] + public IEnumerable> Antidepressant_Medication_Period_Between_IPSD_and_231_Days_After_IPSD(CqlContext context) + { + CqlValueSet a_ = this.Antidepressant_Medication(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationdispense")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationdispense")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isMedicationDispensed(context, e_); + CqlInterval g_(MedicationDispense Antidepressant) + { + CqlInterval j_ = CumulativeMedicationDuration_4_1_000.Instance.medicationDispensePeriod(context, Antidepressant); + CqlDate k_ = this.IPSD(context); + CqlQuantity m_ = context.Operators.Quantity(231m, "days"); + CqlDate n_ = context.Operators.Add(k_, m_); + CqlInterval o_ = context.Operators.Interval(k_, n_, true, true); + CqlInterval p_ = context.Operators.Intersect(j_, o_); + + return p_; + }; + IEnumerable> h_ = context.Operators.Select>(f_, g_); + IEnumerable> i_ = context.Operators.Distinct>(h_); + + return i_; + } + + + [CqlDeclaration("Cumulative Medication Duration Greater Than or Equal to 180 Days")] + public bool? Cumulative_Medication_Duration_Greater_Than_or_Equal_to_180_Days(CqlContext context) + { + IEnumerable> a_ = this.Antidepressant_Medication_Period_Between_IPSD_and_231_Days_After_IPSD(context); + int? b_ = CumulativeMedicationDuration_4_1_000.Instance.cumulativeDuration(context, a_); + bool? c_ = context.Operators.GreaterOrEqual(b_, 180); + + return c_; + } + + + [CqlDeclaration("Numerator 2")] + public bool? Numerator_2(CqlContext context) + { + bool? a_ = this.Cumulative_Medication_Duration_Greater_Than_or_Equal_to_180_Days(context); + + return a_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + + #region CqlTupleMetadata Properties + + private static CqlTupleMetadata CqlTupleMetadata_BZDEAYEYEiNadHNdHhSIPXaDL = new( + [typeof(CqlDate)], + ["AntidepressantDate"]); + + #endregion CqlTupleMetadata Properties + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateDXAScansForWomenUnder65FHIR-0.2.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateDXAScansForWomenUnder65FHIR-0.2.001.g.cs new file mode 100644 index 000000000..60188dbc4 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateDXAScansForWomenUnder65FHIR-0.2.001.g.cs @@ -0,0 +1,1195 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AppropriateDXAScansForWomenUnder65FHIR", "0.2.001")] +public partial class AppropriateDXAScansForWomenUnder65FHIR_0_2_001 : ILibrary, ISingleton +{ + private AppropriateDXAScansForWomenUnder65FHIR_0_2_001() {} + + public static AppropriateDXAScansForWomenUnder65FHIR_0_2_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AppropriateDXAScansForWomenUnder65FHIR"; + public string Version => "0.2.001"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance, Status_1_8_000.Instance, CumulativeMedicationDuration_4_1_000.Instance, Hospice_6_12_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Amenorrhea")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1022")] + public CqlValueSet Amenorrhea(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1022", default); + + + [CqlDeclaration("Ankylosing Spondylitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1045")] + public CqlValueSet Ankylosing_Spondylitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1045", default); + + + [CqlDeclaration("Aromatase Inhibitors")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1265")] + public CqlValueSet Aromatase_Inhibitors(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1265", default); + + + [CqlDeclaration("Bilateral Oophorectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.471")] + public CqlValueSet Bilateral_Oophorectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.471", default); + + + [CqlDeclaration("Bone Marrow Transplant")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.336")] + public CqlValueSet Bone_Marrow_Transplant(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.336", default); + + + [CqlDeclaration("Chemotherapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.485")] + public CqlValueSet Chemotherapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.485", default); + + + [CqlDeclaration("Chronic Liver Disease")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1035")] + public CqlValueSet Chronic_Liver_Disease(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1035", default); + + + [CqlDeclaration("Chronic Malnutrition")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1036")] + public CqlValueSet Chronic_Malnutrition(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1036", default); + + + [CqlDeclaration("Cushings Syndrome")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1009")] + public CqlValueSet Cushings_Syndrome(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1009", default); + + + [CqlDeclaration("DXA (Dual energy Xray Absorptiometry) Scan")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1051")] + public CqlValueSet DXA__Dual_energy_Xray_Absorptiometry__Scan(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1051", default); + + + [CqlDeclaration("Eating Disorders")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1039")] + public CqlValueSet Eating_Disorders(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1039", default); + + + [CqlDeclaration("Ehlers Danlos Syndrome")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1047")] + public CqlValueSet Ehlers_Danlos_Syndrome(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1047", default); + + + [CqlDeclaration("End Stage Renal Disease")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.353")] + public CqlValueSet End_Stage_Renal_Disease(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.353", default); + + + [CqlDeclaration("Evidence of Bilateral Oophorectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1048")] + public CqlValueSet Evidence_of_Bilateral_Oophorectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1048", default); + + + [CqlDeclaration("Gastric Bypass Surgery")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1050")] + public CqlValueSet Gastric_Bypass_Surgery(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1050", default); + + + [CqlDeclaration("Glucocorticoids (oral only)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1266")] + public CqlValueSet Glucocorticoids__oral_only_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1266", default); + + + [CqlDeclaration("History of hip fracture in parent")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1040")] + public CqlValueSet History_of_hip_fracture_in_parent(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1040", default); + + + [CqlDeclaration("Hyperparathyroidism")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1016")] + public CqlValueSet Hyperparathyroidism(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1016", default); + + + [CqlDeclaration("Hyperthyroidism")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1015")] + public CqlValueSet Hyperthyroidism(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1015", default); + + + [CqlDeclaration("Kidney Transplant")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1012")] + public CqlValueSet Kidney_Transplant(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1012", default); + + + [CqlDeclaration("Lupus")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1010")] + public CqlValueSet Lupus(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.117.12.1010", default); + + + [CqlDeclaration("Major Transplant")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1075")] + public CqlValueSet Major_Transplant(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1075", default); + + + [CqlDeclaration("Malabsorption Syndromes")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1050")] + public CqlValueSet Malabsorption_Syndromes(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1050", default); + + + [CqlDeclaration("Marfan's Syndrome")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1048")] + public CqlValueSet Marfans_Syndrome(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1048", default); + + + [CqlDeclaration("Multiple Myeloma")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1011")] + public CqlValueSet Multiple_Myeloma(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1011", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Osteogenesis Imperfecta")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1044")] + public CqlValueSet Osteogenesis_Imperfecta(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1044", default); + + + [CqlDeclaration("Osteopenia")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1049")] + public CqlValueSet Osteopenia(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1049", default); + + + [CqlDeclaration("Osteoporosis Without Current Fracture")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1038")] + public CqlValueSet Osteoporosis_Without_Current_Fracture(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1038", default); + + + [CqlDeclaration("Osteoporosis With Current Fracture")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1050")] + public CqlValueSet Osteoporosis_With_Current_Fracture(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1050", default); + + + [CqlDeclaration("Outpatient Consultation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008")] + public CqlValueSet Outpatient_Consultation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008", default); + + + [CqlDeclaration("Premature Menopause")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1013")] + public CqlValueSet Premature_Menopause(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1013", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Psoriatic Arthritis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1046")] + public CqlValueSet Psoriatic_Arthritis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1046", default); + + + [CqlDeclaration("Rheumatoid Arthritis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1005")] + public CqlValueSet Rheumatoid_Arthritis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.113.12.1005", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Type 1 Diabetes")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.103.12.1020")] + public CqlValueSet Type_1_Diabetes(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.103.12.1020", default); + + + [CqlDeclaration("Unilateral Oophorectomy Left")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1028")] + public CqlValueSet Unilateral_Oophorectomy_Left(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1028", default); + + + [CqlDeclaration("Unilateral Oophorectomy Right")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1032")] + public CqlValueSet Unilateral_Oophorectomy_Right(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1032", default); + + + [CqlDeclaration("Unilateral Oophorectomy, Unspecified Laterality")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1035")] + public CqlValueSet Unilateral_Oophorectomy__Unspecified_Laterality(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1035", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Alcoholic drinks per day")] + public CqlCode Alcoholic_drinks_per_day(CqlContext context) => + new CqlCode("74013-4", "http://loinc.org", default, default); + + + [CqlDeclaration("Body mass index (BMI) [Ratio]")] + public CqlCode Body_mass_index__BMI___Ratio_(CqlContext context) => + new CqlCode("39156-5", "http://loinc.org", default, default); + + + [CqlDeclaration("Female")] + public CqlCode Female(CqlContext context) => + new CqlCode("F", "http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender", default, default); + + + [CqlDeclaration("Left (qualifier value)")] + public CqlCode Left__qualifier_value_(CqlContext context) => + new CqlCode("7771000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Major osteoporotic fracture 10-year probability [Likelihood] Fracture Risk Assessment")] + public CqlCode Major_osteoporotic_fracture_10_year_probability__Likelihood__Fracture_Risk_Assessment(CqlContext context) => + new CqlCode("90265-0", "http://loinc.org", default, default); + + + [CqlDeclaration("Osteoporosis Index of Risk panel")] + public CqlCode Osteoporosis_Index_of_Risk_panel(CqlContext context) => + new CqlCode("98133-2", "http://loinc.org", default, default); + + + [CqlDeclaration("Osteoporosis Risk Assessment Instrument")] + public CqlCode Osteoporosis_Risk_Assessment_Instrument(CqlContext context) => + new CqlCode("98139-9", "http://loinc.org", default, default); + + + [CqlDeclaration("Osteoporosis Self-Assessment Tool")] + public CqlCode Osteoporosis_Self_Assessment_Tool(CqlContext context) => + new CqlCode("98146-4", "http://loinc.org", default, default); + + + [CqlDeclaration("Right (qualifier value)")] + public CqlCode Right__qualifier_value_(CqlContext context) => + new CqlCode("24028007", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Unlisted preventive medicine service")] + public CqlCode Unlisted_preventive_medicine_service(CqlContext context) => + new CqlCode("99429", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("74013-4", "http://loinc.org", default, default), + new CqlCode("39156-5", "http://loinc.org", default, default), + new CqlCode("90265-0", "http://loinc.org", default, default), + new CqlCode("98133-2", "http://loinc.org", default, default), + new CqlCode("98139-9", "http://loinc.org", default, default), + new CqlCode("98146-4", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("AdministrativeGender")] + public CqlCode[] AdministrativeGender(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("F", "http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("7771000", "http://snomed.info/sct", default, default), + new CqlCode("24028007", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("CPT")] + public CqlCode[] CPT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("99429", "http://www.ama-assn.org/go/cpt", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AppropriateDXAScansForWomenUnder65FHIR-0.2.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Qualifying Encounter")] + public IEnumerable Qualifying_Encounter(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? g_(Encounter E) + { + List y_ = E?.Type; + CqlConcept z_(CodeableConcept @this) + { + CqlConcept ae_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return ae_; + }; + IEnumerable aa_ = context.Operators.Select((IEnumerable)y_, z_); + bool? ab_(CqlConcept T) + { + CqlCode af_ = this.Unlisted_preventive_medicine_service(context); + CqlConcept ag_ = context.Operators.ConvertCodeToConcept(af_); + bool? ah_ = context.Operators.Equivalent(T, ag_); + + return ah_; + }; + IEnumerable ac_ = context.Operators.Where(aa_, ab_); + bool? ad_ = context.Operators.Exists(ac_); + + return ad_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + CqlValueSet i_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable k_ = context.Operators.Union(h_, j_); + IEnumerable l_ = context.Operators.Union(e_, k_); + CqlValueSet m_ = this.Outpatient_Consultation(context); + IEnumerable n_ = context.Operators.Retrieve(new RetrieveParameters(default, m_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet o_ = this.Virtual_Encounter(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable q_ = context.Operators.Union(n_, p_); + IEnumerable r_ = context.Operators.Union(l_, q_); + CqlValueSet s_ = this.Telephone_Visits(context); + IEnumerable t_ = context.Operators.Retrieve(new RetrieveParameters(default, s_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable u_ = context.Operators.Union(r_, t_); + IEnumerable v_ = Status_1_8_000.Instance.isEncounterPerformed(context, u_); + bool? w_(Encounter ValidEncounters) + { + CqlInterval ai_ = this.Measurement_Period(context); + Period aj_ = ValidEncounters?.Period; + CqlInterval ak_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aj_); + CqlInterval al_ = QICoreCommon_2_1_000.Instance.toInterval(context, ak_ as object); + bool? am_ = context.Operators.IntervalIncludesInterval(ai_, al_, "day"); + + return am_; + }; + IEnumerable x_ = context.Operators.Where(v_, w_); + + return x_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.Start(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(50, 63, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + Code l_ = a_?.GenderElement; + AdministrativeGender? m_ = l_?.Value; + string n_ = context.Operators.Convert(m_); + bool? o_ = context.Operators.Equal(n_, "female"); + bool? p_ = context.Operators.And(j_, o_); + IEnumerable q_ = this.Qualifying_Encounter(context); + bool? r_ = context.Operators.Exists(q_); + bool? s_ = context.Operators.And(p_, r_); + + return s_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("First BMI in Measurement Period")] + public Observation First_BMI_in_Measurement_Period(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/StructureDefinition/bmi")); + IEnumerable b_ = Status_1_8_000.Instance.isObservationBMI(context, a_); + bool? c_(Observation BMIRatio) + { + CqlInterval h_ = this.Measurement_Period(context); + DataType i_ = BMIRatio?.Effective; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + CqlInterval k_ = QICoreCommon_2_1_000.Instance.toInterval(context, j_); + bool? l_ = context.Operators.IntervalIncludesInterval(h_, k_, default); + DataType m_ = BMIRatio?.Value; + CqlQuantity n_ = FHIRHelpers_4_4_000.Instance.ToQuantity(context, m_ as Quantity); + bool? o_ = context.Operators.Not((bool?)((n_ as CqlQuantity) is null)); + bool? p_ = context.Operators.And(l_, o_); + + return p_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + object e_(Observation @this) + { + DataType q_ = @this?.Effective; + object r_ = FHIRHelpers_4_4_000.Instance.ToValue(context, q_); + CqlInterval s_ = QICoreCommon_2_1_000.Instance.toInterval(context, r_); + CqlDateTime t_ = context.Operators.Start(s_); + + return t_; + }; + IEnumerable f_ = context.Operators.SortBy(d_, e_, System.ComponentModel.ListSortDirection.Ascending); + Observation g_ = context.Operators.First(f_); + + return g_; + } + + + [CqlDeclaration("First BMI in Measurement Period Less Than or Equal to 20 kg m2")] + public Observation First_BMI_in_Measurement_Period_Less_Than_or_Equal_to_20_kg_m2(CqlContext context) + { + Observation a_ = this.First_BMI_in_Measurement_Period(context); + Observation[] b_ = [ + a_, + ]; + bool? c_(Observation FirstBMI) + { + DataType f_ = FirstBMI?.Value; + CqlQuantity g_ = FHIRHelpers_4_4_000.Instance.ToQuantity(context, f_ as Quantity); + CqlQuantity h_ = context.Operators.Quantity(20m, "kg/m2"); + bool? i_ = context.Operators.LessOrEqual(g_ as CqlQuantity, h_); + + return i_; + }; + IEnumerable d_ = context.Operators.Where((IEnumerable)b_, c_); + Observation e_ = context.Operators.SingletonFrom(d_); + + return e_; + } + + + [CqlDeclaration("First Average Number of Drinks Assessments Indicating More Than Two Per Day")] + public Observation First_Average_Number_of_Drinks_Assessments_Indicating_More_Than_Two_Per_Day(CqlContext context) + { + CqlCode a_ = this.Alcoholic_drinks_per_day(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable d_ = Status_1_8_000.Instance.isAssessmentPerformed(context, c_); + bool? e_(Observation AverageDrinks) + { + DataType j_ = AverageDrinks?.Effective; + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_); + CqlDateTime m_ = context.Operators.Start(l_); + CqlInterval n_ = this.Measurement_Period(context); + bool? o_ = context.Operators.In(m_, n_, default); + DataType p_ = AverageDrinks?.Value; + object q_ = FHIRHelpers_4_4_000.Instance.ToValue(context, p_); + CqlQuantity r_ = context.Operators.Quantity(2m, "{drinks}/d"); + bool? s_ = context.Operators.Greater(q_ as CqlQuantity, r_); + bool? t_ = context.Operators.And(o_, s_); + + return t_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + object g_(Observation @this) + { + DataType u_ = @this?.Effective; + object v_ = FHIRHelpers_4_4_000.Instance.ToValue(context, u_); + CqlInterval w_ = QICoreCommon_2_1_000.Instance.toInterval(context, v_); + CqlDateTime x_ = context.Operators.Start(w_); + + return x_; + }; + IEnumerable h_ = context.Operators.SortBy(f_, g_, System.ComponentModel.ListSortDirection.Ascending); + Observation i_ = context.Operators.First(h_); + + return i_; + } + + + [CqlDeclaration("Has Risk Factor Active During the Measurement Period")] + public bool? Has_Risk_Factor_Active_During_the_Measurement_Period(CqlContext context) + { + Observation a_ = this.First_BMI_in_Measurement_Period_Less_Than_or_Equal_to_20_kg_m2(context); + bool? b_ = context.Operators.Not((bool?)(a_ is null)); + Observation c_ = this.First_Average_Number_of_Drinks_Assessments_Indicating_More_Than_Two_Per_Day(context); + bool? d_ = context.Operators.Not((bool?)(c_ is null)); + bool? e_ = context.Operators.Or(b_, d_); + + return e_; + } + + + [CqlDeclaration("Has Risk Factor Any Time in History Prior to Measurement Period")] + public bool? Has_Risk_Factor_Any_Time_in_History_Prior_to_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Osteoporosis_Without_Current_Fracture(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition OsteoporosisDiagnosis) + { + CqlInterval ao_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, OsteoporosisDiagnosis); + CqlDateTime ap_ = context.Operators.Start(ao_); + CqlInterval aq_ = this.Measurement_Period(context); + CqlDateTime ar_ = context.Operators.Start(aq_); + bool? as_ = context.Operators.Before(ap_, ar_, default); + + return as_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + CqlValueSet e_ = this.Osteopenia(context); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, e_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? g_(Condition OsteopeniaDiagnosis) + { + CqlInterval at_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, OsteopeniaDiagnosis); + CqlDateTime au_ = context.Operators.Start(at_); + CqlInterval av_ = this.Measurement_Period(context); + CqlDateTime aw_ = context.Operators.Start(av_); + bool? ax_ = context.Operators.Before(au_, aw_, default); + + return ax_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + IEnumerable i_ = context.Operators.Union(d_, h_); + CqlValueSet j_ = this.Gastric_Bypass_Surgery(context); + IEnumerable k_ = context.Operators.Retrieve(new RetrieveParameters(default, j_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable l_ = Status_1_8_000.Instance.isProcedurePerformed(context, k_); + bool? m_(Procedure GastricBypass) + { + DataType ay_ = GastricBypass?.Performed; + object az_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ay_); + CqlInterval ba_ = QICoreCommon_2_1_000.Instance.toInterval(context, az_); + CqlDateTime bb_ = context.Operators.End(ba_); + CqlInterval bc_ = this.Measurement_Period(context); + CqlDateTime bd_ = context.Operators.Start(bc_); + bool? be_ = context.Operators.Before(bb_, bd_, default); + + return be_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + CqlValueSet o_ = this.Aromatase_Inhibitors(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable r_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable s_ = context.Operators.Union(p_, r_); + IEnumerable t_ = Status_1_8_000.Instance.isMedicationActive(context, s_); + bool? u_(MedicationRequest AromataseInhibitorActive) + { + CqlInterval bf_ = CumulativeMedicationDuration_4_1_000.Instance.MedicationRequestPeriod(context, AromataseInhibitorActive); + CqlDate bg_ = context.Operators.Start(bf_); + CqlDateTime bh_ = context.Operators.ConvertDateToDateTime(bg_); + CqlInterval bi_ = this.Measurement_Period(context); + CqlDateTime bj_ = context.Operators.Start(bi_); + bool? bk_ = context.Operators.Before(bh_, bj_, default); + + return bk_; + }; + IEnumerable v_ = context.Operators.Where(t_, u_); + IEnumerable w_ = context.Operators.Union(n_ as IEnumerable, v_ as IEnumerable); + IEnumerable y_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable aa_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable ab_ = context.Operators.Union(y_, aa_); + IEnumerable ac_ = Status_1_8_000.Instance.isMedicationOrder(context, ab_); + bool? ad_(MedicationRequest AromataseInhibitorOrder) + { + FhirDateTime bl_ = AromataseInhibitorOrder?.AuthoredOnElement; + CqlDateTime bm_ = context.Operators.Convert(bl_); + CqlInterval bn_ = QICoreCommon_2_1_000.Instance.toInterval(context, bm_ as object); + CqlInterval bo_() + { + bool bq_() + { + CqlInterval br_ = this.Measurement_Period(context); + CqlDateTime bs_ = context.Operators.Start(br_); + + return bs_ is null; + }; + if (bq_()) + { + return default; + } + else + { + CqlInterval bt_ = this.Measurement_Period(context); + CqlDateTime bu_ = context.Operators.Start(bt_); + CqlDateTime bw_ = context.Operators.Start(bt_); + CqlInterval bx_ = context.Operators.Interval(bu_, bw_, true, true); + + return bx_; + } + }; + bool? bp_ = context.Operators.Before(bn_, bo_(), default); + + return bp_; + }; + IEnumerable ae_ = context.Operators.Where(ac_, ad_); + IEnumerable af_ = context.Operators.Union(w_ as IEnumerable, ae_ as IEnumerable); + CqlValueSet ag_ = this.History_of_hip_fracture_in_parent(context); + IEnumerable ah_ = context.Operators.Retrieve(new RetrieveParameters(default, ag_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable ai_ = Status_1_8_000.Instance.isAssessmentPerformed(context, ah_); + bool? aj_(Observation ParentFractureHistory) + { + DataType by_ = ParentFractureHistory?.Effective; + object bz_ = FHIRHelpers_4_4_000.Instance.ToValue(context, by_); + CqlInterval ca_ = QICoreCommon_2_1_000.Instance.toInterval(context, bz_); + CqlDateTime cb_ = context.Operators.Start(ca_); + CqlInterval cc_ = this.Measurement_Period(context); + CqlDateTime cd_ = context.Operators.Start(cc_); + bool? ce_ = context.Operators.Before(cb_, cd_, default); + + return ce_; + }; + IEnumerable ak_ = context.Operators.Where(ai_, aj_); + IEnumerable al_ = context.Operators.Union(af_ as IEnumerable, ak_ as IEnumerable); + IEnumerable am_ = context.Operators.Union(i_ as IEnumerable, al_ as IEnumerable); + bool? an_ = context.Operators.Exists(am_); + + return an_; + } + + + [CqlDeclaration("Glucocorticoid Active Medication Days")] + public int? Glucocorticoid_Active_Medication_Days(CqlContext context) + { + CqlValueSet a_ = this.Glucocorticoids__oral_only_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isMedicationActive(context, e_); + bool? g_(MedicationRequest OralGlucocorticoid) + { + CqlInterval m_ = CumulativeMedicationDuration_4_1_000.Instance.medicationRequestPeriod(context, OralGlucocorticoid); + CqlDate n_ = context.Operators.Start(m_); + CqlDateTime o_ = context.Operators.ConvertDateToDateTime(n_); + CqlInterval p_ = this.Measurement_Period(context); + CqlDateTime q_ = context.Operators.End(p_); + bool? r_ = context.Operators.Before(o_, q_, default); + + return r_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + CqlInterval i_(MedicationRequest Glucocorticoid) + { + CqlInterval s_ = CumulativeMedicationDuration_4_1_000.Instance.medicationRequestPeriod(context, Glucocorticoid); + Patient t_ = this.Patient(context); + Date u_ = t_?.BirthDateElement; + string v_ = u_?.Value; + CqlDate w_ = context.Operators.ConvertStringToDate(v_); + CqlInterval x_ = this.Measurement_Period(context); + CqlDateTime y_ = context.Operators.End(x_); + CqlDate z_ = context.Operators.DateFrom(y_); + CqlInterval aa_ = context.Operators.Interval(w_, z_, true, true); + CqlInterval ab_ = context.Operators.Intersect(s_, aa_); + + return ab_; + }; + IEnumerable> j_ = context.Operators.Select>(h_, i_); + IEnumerable> k_ = context.Operators.Distinct>(j_); + int? l_ = CumulativeMedicationDuration_4_1_000.Instance.cumulativeDuration(context, k_); + + return l_; + } + + + [CqlDeclaration("Has 90 or More Active Glucocorticoid Medication Days")] + public bool? Has_90_or_More_Active_Glucocorticoid_Medication_Days(CqlContext context) + { + int? a_ = this.Glucocorticoid_Active_Medication_Days(context); + bool? b_ = context.Operators.GreaterOrEqual(a_, 90); + + return b_; + } + + + public IEnumerable diagnosisInPatientHistory(CqlContext context, IEnumerable Condition) + { + bool? a_(Condition Dx) + { + CqlInterval c_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, Dx); + CqlDateTime d_ = context.Operators.Start(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + bool? g_ = context.Operators.SameOrBefore(d_, f_, "day"); + + return g_; + }; + IEnumerable b_ = context.Operators.Where(Condition, a_); + + return b_; + } + + + public IEnumerable procedureInPatientHistory(CqlContext context, IEnumerable Procedure) + { + IEnumerable a_ = Status_1_8_000.Instance.isProcedurePerformed(context, Procedure); + bool? b_(Procedure Proc) + { + DataType d_ = Proc?.Performed; + object e_ = FHIRHelpers_4_4_000.Instance.ToValue(context, d_); + CqlInterval f_ = QICoreCommon_2_1_000.Instance.toInterval(context, e_); + CqlDateTime g_ = context.Operators.End(f_); + CqlInterval h_ = this.Measurement_Period(context); + CqlDateTime i_ = context.Operators.End(h_); + bool? j_ = context.Operators.SameOrBefore(g_, i_, "day"); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Has Double or Bilateral Oophorectomy")] + public bool? Has_Double_or_Bilateral_Oophorectomy(CqlContext context) + { + CqlValueSet a_ = this.Bilateral_Oophorectomy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = this.procedureInPatientHistory(context, b_); + bool? d_ = context.Operators.Exists(c_); + CqlValueSet e_ = this.Evidence_of_Bilateral_Oophorectomy(context); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, e_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable g_ = this.procedureInPatientHistory(context, f_); + bool? h_ = context.Operators.Exists(g_); + bool? i_ = context.Operators.Or(d_, h_); + CqlValueSet j_ = this.Unilateral_Oophorectomy__Unspecified_Laterality(context); + IEnumerable k_ = context.Operators.Retrieve(new RetrieveParameters(default, j_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? l_(Procedure UnilateralOophorectomy) + { + List ad_ = UnilateralOophorectomy?.BodySite; + CqlConcept ae_(CodeableConcept @this) + { + CqlConcept aj_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return aj_; + }; + IEnumerable af_ = context.Operators.Select((IEnumerable)ad_, ae_); + bool? ag_(CqlConcept C) + { + CqlCode ak_ = this.Right__qualifier_value_(context); + CqlConcept al_ = context.Operators.ConvertCodeToConcept(ak_); + bool? am_ = context.Operators.Equivalent(C, al_); + + return am_; + }; + IEnumerable ah_ = context.Operators.Where(af_, ag_); + bool? ai_ = context.Operators.Exists(ah_); + + return ai_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlValueSet n_ = this.Unilateral_Oophorectomy_Right(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = this.procedureInPatientHistory(context, p_); + bool? r_ = context.Operators.Exists(q_); + IEnumerable t_ = context.Operators.Retrieve(new RetrieveParameters(default, j_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? u_(Procedure UnilateralOophorectomy) + { + List an_ = UnilateralOophorectomy?.BodySite; + CqlConcept ao_(CodeableConcept @this) + { + CqlConcept at_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return at_; + }; + IEnumerable ap_ = context.Operators.Select((IEnumerable)an_, ao_); + bool? aq_(CqlConcept D) + { + CqlCode au_ = this.Left__qualifier_value_(context); + CqlConcept av_ = context.Operators.ConvertCodeToConcept(au_); + bool? aw_ = context.Operators.Equivalent(D, av_); + + return aw_; + }; + IEnumerable ar_ = context.Operators.Where(ap_, aq_); + bool? as_ = context.Operators.Exists(ar_); + + return as_; + }; + IEnumerable v_ = context.Operators.Where(t_, u_); + CqlValueSet w_ = this.Unilateral_Oophorectomy_Left(context); + IEnumerable x_ = context.Operators.Retrieve(new RetrieveParameters(default, w_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable y_ = context.Operators.Union(v_, x_); + IEnumerable z_ = this.procedureInPatientHistory(context, y_); + bool? aa_ = context.Operators.Exists(z_); + bool? ab_ = context.Operators.And(r_, aa_); + bool? ac_ = context.Operators.Or(i_, ab_); + + return ac_; + } + + + [CqlDeclaration("Has Organ Transplants")] + public bool? Has_Organ_Transplants(CqlContext context) + { + CqlValueSet a_ = this.Major_Transplant(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + CqlValueSet c_ = this.Kidney_Transplant(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Bone_Marrow_Transplant(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable h_ = context.Operators.Union(e_, g_); + IEnumerable i_ = this.procedureInPatientHistory(context, h_); + bool? j_ = context.Operators.Exists(i_); + + return j_; + } + + + [CqlDeclaration("Has Risk Factor Any Time in History or During Measurement Period")] + public bool? Has_Risk_Factor_Any_Time_in_History_or_During_Measurement_Period(CqlContext context) + { + bool? a_ = this.Has_90_or_More_Active_Glucocorticoid_Medication_Days(context); + CqlValueSet b_ = this.Osteoporosis_With_Current_Fracture(context); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, b_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet d_ = this.Malabsorption_Syndromes(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable f_ = context.Operators.Union(c_, e_); + CqlValueSet g_ = this.Chronic_Malnutrition(context); + IEnumerable h_ = context.Operators.Retrieve(new RetrieveParameters(default, g_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet i_ = this.Chronic_Liver_Disease(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable k_ = context.Operators.Union(h_, j_); + IEnumerable l_ = context.Operators.Union(f_, k_); + CqlValueSet m_ = this.Rheumatoid_Arthritis(context); + IEnumerable n_ = context.Operators.Retrieve(new RetrieveParameters(default, m_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet o_ = this.Hyperthyroidism(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable q_ = context.Operators.Union(n_, p_); + IEnumerable r_ = context.Operators.Union(l_, q_); + CqlValueSet s_ = this.Type_1_Diabetes(context); + IEnumerable t_ = context.Operators.Retrieve(new RetrieveParameters(default, s_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet u_ = this.End_Stage_Renal_Disease(context); + IEnumerable v_ = context.Operators.Retrieve(new RetrieveParameters(default, u_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable w_ = context.Operators.Union(t_, v_); + IEnumerable x_ = context.Operators.Union(r_, w_); + CqlValueSet y_ = this.Osteogenesis_Imperfecta(context); + IEnumerable z_ = context.Operators.Retrieve(new RetrieveParameters(default, y_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet aa_ = this.Ankylosing_Spondylitis(context); + IEnumerable ab_ = context.Operators.Retrieve(new RetrieveParameters(default, aa_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ac_ = context.Operators.Union(z_, ab_); + IEnumerable ad_ = context.Operators.Union(x_, ac_); + CqlValueSet ae_ = this.Psoriatic_Arthritis(context); + IEnumerable af_ = context.Operators.Retrieve(new RetrieveParameters(default, ae_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ag_ = this.Ehlers_Danlos_Syndrome(context); + IEnumerable ah_ = context.Operators.Retrieve(new RetrieveParameters(default, ag_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ai_ = context.Operators.Union(af_, ah_); + IEnumerable aj_ = context.Operators.Union(ad_, ai_); + CqlValueSet ak_ = this.Cushings_Syndrome(context); + IEnumerable al_ = context.Operators.Retrieve(new RetrieveParameters(default, ak_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet am_ = this.Hyperparathyroidism(context); + IEnumerable an_ = context.Operators.Retrieve(new RetrieveParameters(default, am_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ao_ = context.Operators.Union(al_, an_); + IEnumerable ap_ = context.Operators.Union(aj_, ao_); + CqlValueSet aq_ = this.Marfans_Syndrome(context); + IEnumerable ar_ = context.Operators.Retrieve(new RetrieveParameters(default, aq_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet as_ = this.Lupus(context); + IEnumerable at_ = context.Operators.Retrieve(new RetrieveParameters(default, as_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable au_ = context.Operators.Union(ar_, at_); + IEnumerable av_ = context.Operators.Union(ap_, au_); + CqlValueSet aw_ = this.Multiple_Myeloma(context); + IEnumerable ax_ = context.Operators.Retrieve(new RetrieveParameters(default, aw_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ay_ = this.Premature_Menopause(context); + IEnumerable az_ = context.Operators.Retrieve(new RetrieveParameters(default, ay_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ba_ = context.Operators.Union(ax_, az_); + IEnumerable bb_ = context.Operators.Union(av_, ba_); + CqlValueSet bc_ = this.Eating_Disorders(context); + IEnumerable bd_ = context.Operators.Retrieve(new RetrieveParameters(default, bc_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet be_ = this.Amenorrhea(context); + IEnumerable bf_ = context.Operators.Retrieve(new RetrieveParameters(default, be_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable bg_ = context.Operators.Union(bd_, bf_); + IEnumerable bh_ = context.Operators.Union(bb_, bg_); + IEnumerable bi_ = this.diagnosisInPatientHistory(context, bh_); + bool? bj_ = context.Operators.Exists(bi_); + bool? bk_ = context.Operators.Or(a_, bj_); + CqlValueSet bl_ = this.Chemotherapy(context); + IEnumerable bm_ = context.Operators.Retrieve(new RetrieveParameters(default, bl_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable bn_ = this.procedureInPatientHistory(context, bm_); + bool? bo_ = context.Operators.Exists(bn_); + bool? bp_ = context.Operators.Or(bk_, bo_); + bool? bq_ = this.Has_Double_or_Bilateral_Oophorectomy(context); + bool? br_ = context.Operators.Or(bp_, bq_); + bool? bs_ = this.Has_Organ_Transplants(context); + bool? bt_ = context.Operators.Or(br_, bs_); + + return bt_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = this.Has_Risk_Factor_Active_During_the_Measurement_Period(context); + bool? b_ = this.Has_Risk_Factor_Any_Time_in_History_Prior_to_Measurement_Period(context); + bool? c_ = context.Operators.Or(a_, b_); + bool? d_ = this.Has_Risk_Factor_Any_Time_in_History_or_During_Measurement_Period(context); + bool? e_ = context.Operators.Or(c_, d_); + + return e_; + } + + + [CqlDeclaration("DXA Scan Order During Measurement Period")] + public IEnumerable DXA_Scan_Order_During_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.DXA__Dual_energy_Xray_Absorptiometry__Scan(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable c_ = Status_1_8_000.Instance.isDiagnosticStudyOrder(context, b_); + bool? d_(ServiceRequest DXA) + { + CqlInterval h_ = this.Measurement_Period(context); + FhirDateTime i_ = DXA?.AuthoredOnElement; + CqlDateTime j_ = context.Operators.Convert(i_); + CqlInterval k_ = QICoreCommon_2_1_000.Instance.toInterval(context, j_ as object); + bool? l_ = context.Operators.IntervalIncludesInterval(h_, k_, default); + + return l_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + object f_(ServiceRequest @this) + { + FhirDateTime m_ = @this?.AuthoredOnElement; + CqlDateTime n_ = context.Operators.Convert(m_); + + return n_; + }; + IEnumerable g_ = context.Operators.SortBy(e_, f_, System.ComponentModel.ListSortDirection.Ascending); + + return g_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + IEnumerable a_ = this.DXA_Scan_Order_During_Measurement_Period(context); + bool? b_ = context.Operators.Exists(a_); + + return b_; + } + + + [CqlDeclaration("Osteoporosis Fracture Risk Assessment Prior to First DXA Scan")] + public IEnumerable Osteoporosis_Fracture_Risk_Assessment_Prior_to_First_DXA_Scan(CqlContext context) + { + CqlCode a_ = this.Major_osteoporotic_fracture_10_year_probability__Likelihood__Fracture_Risk_Assessment(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable d_ = Status_1_8_000.Instance.isAssessmentPerformed(context, c_); + bool? e_(Observation FRAX) + { + DataType ad_ = FRAX?.Value; + object ae_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ad_); + CqlQuantity af_ = context.Operators.Quantity(8.4m, "%"); + bool? ag_ = context.Operators.GreaterOrEqual(ae_ as CqlQuantity, af_); + + return ag_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + CqlCode g_ = this.Osteoporosis_Risk_Assessment_Instrument(context); + IEnumerable h_ = context.Operators.ToList(g_); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, default, h_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable j_ = Status_1_8_000.Instance.isAssessmentPerformed(context, i_); + bool? k_(Observation ORAI) + { + DataType ah_ = ORAI?.Value; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + bool? aj_ = context.Operators.GreaterOrEqual(ai_ as int?, 9); + + return aj_; + }; + IEnumerable l_ = context.Operators.Where(j_, k_); + IEnumerable m_ = context.Operators.Union(f_, l_); + CqlCode n_ = this.Osteoporosis_Index_of_Risk_panel(context); + IEnumerable o_ = context.Operators.ToList(n_); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, default, o_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable q_ = Status_1_8_000.Instance.isAssessmentPerformed(context, p_); + bool? r_(Observation OSIRIS) + { + DataType ak_ = OSIRIS?.Value; + object al_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ak_); + CqlQuantity am_ = context.Operators.ConvertDecimalToQuantity(1.0m); + bool? an_ = context.Operators.Less(al_ as CqlQuantity, am_); + + return an_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + CqlCode t_ = this.Osteoporosis_Self_Assessment_Tool(context); + IEnumerable u_ = context.Operators.ToList(t_); + IEnumerable v_ = context.Operators.Retrieve(new RetrieveParameters(default, default, u_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable w_ = Status_1_8_000.Instance.isAssessmentPerformed(context, v_); + bool? x_(Observation OST) + { + DataType ao_ = OST?.Value; + object ap_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ao_); + CqlQuantity aq_ = context.Operators.ConvertDecimalToQuantity(2.0m); + bool? ar_ = context.Operators.Less(ap_ as CqlQuantity, aq_); + + return ar_; + }; + IEnumerable y_ = context.Operators.Where(w_, x_); + IEnumerable z_ = context.Operators.Union(s_, y_); + IEnumerable aa_ = context.Operators.Union(m_, z_); + bool? ab_(Observation RiskAssessment) + { + DataType as_ = RiskAssessment?.Effective; + object at_ = FHIRHelpers_4_4_000.Instance.ToValue(context, as_); + CqlInterval au_ = QICoreCommon_2_1_000.Instance.toInterval(context, at_); + CqlDateTime av_ = context.Operators.Start(au_); + IEnumerable aw_ = this.DXA_Scan_Order_During_Measurement_Period(context); + ServiceRequest ax_ = context.Operators.First(aw_); + FhirDateTime ay_ = ax_?.AuthoredOnElement; + CqlDateTime az_ = context.Operators.Convert(ay_); + bool? ba_ = context.Operators.Before(av_, az_, default); + + return ba_; + }; + IEnumerable ac_ = context.Operators.Where(aa_, ab_); + + return ac_; + } + + + [CqlDeclaration("Numerator Exclusion")] + public bool? Numerator_Exclusion(CqlContext context) + { + IEnumerable a_ = this.Osteoporosis_Fracture_Risk_Assessment_Prior_to_First_DXA_Scan(context); + bool? b_ = context.Operators.Exists(a_); + + return b_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTestingforPharyngitisFHIR-0.1.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTestingforPharyngitisFHIR-0.1.001.g.cs new file mode 100644 index 000000000..52d9555ae --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTestingforPharyngitisFHIR-0.1.001.g.cs @@ -0,0 +1,641 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AppropriateTestingforPharyngitisFHIR", "0.1.001")] +public partial class AppropriateTestingforPharyngitisFHIR_0_1_001 : ILibrary, ISingleton +{ + private AppropriateTestingforPharyngitisFHIR_0_1_001() {} + + public static AppropriateTestingforPharyngitisFHIR_0_1_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AppropriateTestingforPharyngitisFHIR"; + public string Version => "0.1.001"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, Antibiotic_1_7_000.Instance, Status_1_8_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Acute Pharyngitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1011")] + public CqlValueSet Acute_Pharyngitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1011", default); + + + [CqlDeclaration("Acute Tonsillitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1012")] + public CqlValueSet Acute_Tonsillitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1012", default); + + + [CqlDeclaration("Antibiotic Medications for Pharyngitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1001")] + public CqlValueSet Antibiotic_Medications_for_Pharyngitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1001", default); + + + [CqlDeclaration("Comorbid Conditions for Respiratory Conditions")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1025")] + public CqlValueSet Comorbid_Conditions_for_Respiratory_Conditions(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1025", default); + + + [CqlDeclaration("Competing Conditions for Respiratory Conditions")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1017")] + public CqlValueSet Competing_Conditions_for_Respiratory_Conditions(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1017", default); + + + [CqlDeclaration("Emergency Department Evaluation and Management Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010")] + public CqlValueSet Emergency_Department_Evaluation_and_Management_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010", default); + + + [CqlDeclaration("Group A Streptococcus Test")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1012")] + public CqlValueSet Group_A_Streptococcus_Test(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1012", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Medical Disability Exam")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1073")] + public CqlValueSet Medical_Disability_Exam(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1073", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Outpatient Consultation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008")] + public CqlValueSet Outpatient_Consultation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Group Counseling")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027")] + public CqlValueSet Preventive_Care_Services_Group_Counseling(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027", default); + + + [CqlDeclaration("Preventive Care Services Individual Counseling")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026")] + public CqlValueSet Preventive_Care_Services_Individual_Counseling(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Preventive Care Services, Initial Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022")] + public CqlValueSet Preventive_Care_Services__Initial_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022", default); + + + [CqlDeclaration("Preventive Care, Established Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024")] + public CqlValueSet Preventive_Care__Established_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Unlisted preventive medicine service")] + public CqlCode Unlisted_preventive_medicine_service(CqlContext context) => + new CqlCode("99429", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("CPT")] + public CqlCode[] CPT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("99429", "http://www.ama-assn.org/go/cpt", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AppropriateTestingforPharyngitisFHIR-0.1.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Emergency_Department_Evaluation_and_Management_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Home_Healthcare_Services(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Medical_Disability_Exam(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Office_Visit(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Telephone_Visits(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Virtual_Encounter(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Outpatient_Consultation(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet t_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = context.Operators.Union(q_, v_); + CqlValueSet x_ = this.Preventive_Care_Services_Group_Counseling(context); + IEnumerable y_ = context.Operators.Retrieve(new RetrieveParameters(default, x_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable z_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? aa_(Encounter E) + { + List at_ = E?.Type; + CqlConcept au_(CodeableConcept @this) + { + CqlConcept az_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return az_; + }; + IEnumerable av_ = context.Operators.Select((IEnumerable)at_, au_); + bool? aw_(CqlConcept T) + { + CqlCode ba_ = this.Unlisted_preventive_medicine_service(context); + CqlConcept bb_ = context.Operators.ConvertCodeToConcept(ba_); + bool? bc_ = context.Operators.Equivalent(T, bb_); + + return bc_; + }; + IEnumerable ax_ = context.Operators.Where(av_, aw_); + bool? ay_ = context.Operators.Exists(ax_); + + return ay_; + }; + IEnumerable ab_ = context.Operators.Where(z_, aa_); + IEnumerable ac_ = context.Operators.Union(y_, ab_); + IEnumerable ad_ = context.Operators.Union(w_, ac_); + CqlValueSet ae_ = this.Preventive_Care_Services__Initial_Office_Visit__0_to_17(context); + IEnumerable af_ = context.Operators.Retrieve(new RetrieveParameters(default, ae_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet ag_ = this.Preventive_Care_Services_Individual_Counseling(context); + IEnumerable ah_ = context.Operators.Retrieve(new RetrieveParameters(default, ag_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable ai_ = context.Operators.Union(af_, ah_); + IEnumerable aj_ = context.Operators.Union(ad_, ai_); + CqlValueSet ak_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable al_ = context.Operators.Retrieve(new RetrieveParameters(default, ak_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet am_ = this.Preventive_Care__Established_Office_Visit__0_to_17(context); + IEnumerable an_ = context.Operators.Retrieve(new RetrieveParameters(default, am_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable ao_ = context.Operators.Union(al_, an_); + IEnumerable ap_ = context.Operators.Union(aj_, ao_); + IEnumerable aq_ = Status_1_8_000.Instance.isEncounterPerformed(context, ap_); + bool? ar_(Encounter ValidEncounter) + { + Period bd_ = ValidEncounter?.Period; + CqlInterval be_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bd_); + CqlInterval bf_ = QICoreCommon_2_1_000.Instance.toInterval(context, be_ as object); + CqlDateTime bg_ = context.Operators.End(bf_); + CqlInterval bh_ = this.Measurement_Period(context); + CqlDateTime bi_ = context.Operators.Start(bh_); + CqlDateTime bk_ = context.Operators.End(bh_); + CqlQuantity bl_ = context.Operators.Quantity(3m, "days"); + CqlDateTime bm_ = context.Operators.Subtract(bk_, bl_); + CqlInterval bn_ = context.Operators.Interval(bi_, bm_, true, true); + bool? bo_ = context.Operators.In(bg_, bn_, "day"); + + return bo_; + }; + IEnumerable as_ = context.Operators.Where(aq_, ar_); + + return as_; + } + + + [CqlDeclaration("Encounter With Antibiotic Ordered Within Three Days")] + public IEnumerable Encounter_With_Antibiotic_Ordered_Within_Three_Days(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Encounters(context); + IEnumerable b_(Encounter EDOrAmbulatoryVisit) + { + CqlValueSet d_ = this.Antibiotic_Medications_for_Pharyngitis(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable h_ = context.Operators.Union(e_, g_); + IEnumerable i_ = Status_1_8_000.Instance.isMedicationOrder(context, h_); + bool? j_(MedicationRequest AntibioticOrdered) + { + Period n_ = EDOrAmbulatoryVisit?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlInterval p_ = QICoreCommon_2_1_000.Instance.toInterval(context, o_ as object); + CqlDateTime q_ = context.Operators.Start(p_); + FhirDateTime r_ = AntibioticOrdered?.AuthoredOnElement; + CqlDateTime s_ = context.Operators.Convert(r_); + CqlQuantity t_ = context.Operators.Quantity(3m, "days"); + CqlDateTime u_ = context.Operators.Subtract(s_, t_); + CqlDateTime w_ = context.Operators.Convert(r_); + CqlInterval x_ = context.Operators.Interval(u_, w_, true, true); + bool? y_ = context.Operators.In(q_, x_, "day"); + CqlDateTime aa_ = context.Operators.Convert(r_); + bool? ab_ = context.Operators.Not((bool?)(aa_ is null)); + bool? ac_ = context.Operators.And(y_, ab_); + + return ac_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + Encounter l_(MedicationRequest AntibioticOrdered) => + EDOrAmbulatoryVisit; + IEnumerable m_ = context.Operators.Select(k_, l_); + + return m_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Pharyngitis or Tonsillitis")] + public IEnumerable Pharyngitis_or_Tonsillitis(CqlContext context) + { + CqlValueSet a_ = this.Acute_Pharyngitis(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet c_ = this.Acute_Tonsillitis(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable e_ = context.Operators.Union(b_, d_); + + return e_; + } + + + [CqlDeclaration("Encounter With Pharyngitis or Tonsillitis With Antibiotic")] + public IEnumerable Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(CqlContext context) + { + IEnumerable a_ = this.Encounter_With_Antibiotic_Ordered_Within_Three_Days(context); + IEnumerable b_ = this.Pharyngitis_or_Tonsillitis(context); + IEnumerable> c_ = context.Operators.CrossJoin(a_, b_); + (CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)? d_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)? k_ = (CqlTupleMetadata_BHcMAQBSeFPCjbDEhaVDLJXQU, _valueTuple.Item1, _valueTuple.Item2); + + return k_; + }; + IEnumerable<(CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)?> e_ = context.Operators.Select, (CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)?>(c_, d_); + bool? f_((CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)? tuple_ypyxedbbcqbdavhxvckuwmfh) + { + CqlInterval l_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, tuple_ypyxedbbcqbdavhxvckuwmfh?.AcutePharyngitisTonsillitis); + CqlDateTime m_ = context.Operators.Start(l_); + Period n_ = tuple_ypyxedbbcqbdavhxvckuwmfh?.VisitWithAntibiotic?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlInterval p_ = QICoreCommon_2_1_000.Instance.toInterval(context, o_ as object); + bool? q_ = context.Operators.In(m_, p_, "day"); + + return q_; + }; + IEnumerable<(CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)?> g_ = context.Operators.Where<(CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)?>(e_, f_); + Encounter h_((CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)? tuple_ypyxedbbcqbdavhxvckuwmfh) => + tuple_ypyxedbbcqbdavhxvckuwmfh?.VisitWithAntibiotic; + IEnumerable i_ = context.Operators.Select<(CqlTupleMetadata, Encounter VisitWithAntibiotic, Condition AcutePharyngitisTonsillitis)?, Encounter>(g_, h_); + IEnumerable j_ = context.Operators.Distinct(i_); + + return j_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(context); + bool? b_(Encounter EncounterWithPharyngitis) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "year"); + bool? o_ = context.Operators.GreaterOrEqual(n_, 3); + + return o_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithPharyngitis) => + EncounterWithPharyngitis; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Encounters and Assessments with Hospice Patient")] + public IEnumerable Encounters_and_Assessments_with_Hospice_Patient(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + bool? b_(Encounter EligibleEncounters) + { + bool? d_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + + return d_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public IEnumerable Denominator_Exclusions(CqlContext context) + { + IEnumerable a_ = this.Encounters_and_Assessments_with_Hospice_Patient(context); + IEnumerable b_ = this.Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(context); + CqlValueSet c_ = this.Comorbid_Conditions_for_Respiratory_Conditions(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable e_ = Antibiotic_1_7_000.Instance.Has_Comorbid_Condition_History(context, b_, d_); + IEnumerable f_ = context.Operators.Union(a_, e_); + CqlValueSet h_ = this.Antibiotic_Medications_for_Pharyngitis(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable k_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable l_ = context.Operators.Union(i_, k_); + IEnumerable m_ = Status_1_8_000.Instance.isMedicationActive(context, l_); + IEnumerable n_ = Antibiotic_1_7_000.Instance.Has_Antibiotic_Medication_History(context, b_, m_); + CqlValueSet p_ = this.Competing_Conditions_for_Respiratory_Conditions(context); + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, p_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable r_ = Antibiotic_1_7_000.Instance.Has_Competing_Diagnosis_History(context, b_, q_); + IEnumerable s_ = context.Operators.Union(n_, r_); + IEnumerable t_ = context.Operators.Union(f_, s_); + + return t_; + } + + + [CqlDeclaration("Group A Streptococcus Lab Test With Result")] + public IEnumerable Group_A_Streptococcus_Lab_Test_With_Result(CqlContext context) + { + CqlValueSet a_ = this.Group_A_Streptococcus_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestPerformed(context, b_); + bool? d_(Observation GroupAStreptococcusTest) + { + DataType f_ = GroupAStreptococcusTest?.Value; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + bool? h_ = context.Operators.Not((bool?)(g_ is null)); + + return h_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Group_A_Streptococcus_Lab_Test_With_Result(context); + IEnumerable b_ = this.Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(context); + IEnumerable> c_ = context.Operators.CrossJoin(a_, b_); + (CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)? d_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)? k_ = (CqlTupleMetadata_FeNRUFDKGVUFAMiQLLieSFHIV, _valueTuple.Item1, _valueTuple.Item2); + + return k_; + }; + IEnumerable<(CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)?> e_ = context.Operators.Select, (CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)?>(c_, d_); + bool? f_((CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)? tuple_ffguysnebcxllexfcmjoehbij) + { + DataType l_ = tuple_ffguysnebcxllexfcmjoehbij?.GroupAStreptococcusTest?.Effective; + object m_ = FHIRHelpers_4_4_000.Instance.ToValue(context, l_); + CqlInterval n_ = QICoreCommon_2_1_000.Instance.toInterval(context, m_); + CqlDateTime o_ = context.Operators.Start(n_); + Period p_ = tuple_ffguysnebcxllexfcmjoehbij?.EncounterWithPharyngitis?.Period; + CqlInterval q_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, p_); + CqlDateTime r_ = context.Operators.End(q_); + CqlQuantity s_ = context.Operators.Quantity(3m, "days"); + CqlDateTime t_ = context.Operators.Subtract(r_, s_); + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, p_); + CqlDateTime w_ = context.Operators.End(v_); + CqlDateTime y_ = context.Operators.Add(w_, s_); + CqlInterval z_ = context.Operators.Interval(t_, y_, true, true); + bool? aa_ = context.Operators.In(o_, z_, "day"); + + return aa_; + }; + IEnumerable<(CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)?> g_ = context.Operators.Where<(CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)?>(e_, f_); + Encounter h_((CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)? tuple_ffguysnebcxllexfcmjoehbij) => + tuple_ffguysnebcxllexfcmjoehbij?.EncounterWithPharyngitis; + IEnumerable i_ = context.Operators.Select<(CqlTupleMetadata, Observation GroupAStreptococcusTest, Encounter EncounterWithPharyngitis)?, Encounter>(g_, h_); + IEnumerable j_ = context.Operators.Distinct(i_); + + return j_; + } + + + [CqlDeclaration("Stratification 1")] + public IEnumerable Stratification_1(CqlContext context) + { + IEnumerable a_ = this.Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(context); + bool? b_(Encounter EncounterWithPharyngitis) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "year"); + CqlInterval o_ = context.Operators.Interval(3, 17, true, true); + bool? p_ = context.Operators.In(n_, o_, default); + + return p_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithPharyngitis) => + EncounterWithPharyngitis; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + [CqlDeclaration("Stratification 2")] + public IEnumerable Stratification_2(CqlContext context) + { + IEnumerable a_ = this.Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(context); + bool? b_(Encounter EncounterWithPharyngitis) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "year"); + CqlInterval o_ = context.Operators.Interval(18, 64, true, true); + bool? p_ = context.Operators.In(n_, o_, default); + + return p_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithPharyngitis) => + EncounterWithPharyngitis; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + [CqlDeclaration("Stratification 3")] + public IEnumerable Stratification_3(CqlContext context) + { + IEnumerable a_ = this.Encounter_With_Pharyngitis_or_Tonsillitis_With_Antibiotic(context); + bool? b_(Encounter EncounterWithPharyngitis) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "year"); + bool? o_ = context.Operators.GreaterOrEqual(n_, 65); + + return o_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithPharyngitis) => + EncounterWithPharyngitis; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + #endregion Definition Methods + + #region CqlTupleMetadata Properties + + private static CqlTupleMetadata CqlTupleMetadata_BHcMAQBSeFPCjbDEhaVDLJXQU = new( + [typeof(Encounter), typeof(Condition)], + ["VisitWithAntibiotic", "AcutePharyngitisTonsillitis"]); + + private static CqlTupleMetadata CqlTupleMetadata_FeNRUFDKGVUFAMiQLLieSFHIV = new( + [typeof(Observation), typeof(Encounter)], + ["GroupAStreptococcusTest", "EncounterWithPharyngitis"]); + + #endregion CqlTupleMetadata Properties + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforSTEMIFHIR-1.2.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforSTEMIFHIR-1.2.000.g.cs new file mode 100644 index 000000000..03cc8f469 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforSTEMIFHIR-1.2.000.g.cs @@ -0,0 +1,1168 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AppropriateTreatmentforSTEMIFHIR", "1.2.000")] +public partial class AppropriateTreatmentforSTEMIFHIR_1_2_000 : ILibrary, ISingleton +{ + private AppropriateTreatmentforSTEMIFHIR_1_2_000() {} + + public static AppropriateTreatmentforSTEMIFHIR_1_2_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AppropriateTreatmentforSTEMIFHIR"; + public string Version => "1.2.000"; + public ILibrary[] Dependencies => [SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance, FHIRHelpers_4_4_000.Instance, CQMCommon_2_2_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Active Bleeding Excluding Menses or Bleeding Diathesis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4036")] + public CqlValueSet Active_Bleeding_Excluding_Menses_or_Bleeding_Diathesis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4036", default); + + + [CqlDeclaration("Active Peptic Ulcer")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4031")] + public CqlValueSet Active_Peptic_Ulcer(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4031", default); + + + [CqlDeclaration("Thrombolytics Adverse Event")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.6")] + public CqlValueSet Thrombolytics_Adverse_Event(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.6", default); + + + [CqlDeclaration("Allergy to thrombolytics")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.5")] + public CqlValueSet Allergy_to_thrombolytics(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.5", default); + + + [CqlDeclaration("Oral Anticoagulant Medications")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4045")] + public CqlValueSet Oral_Anticoagulant_Medications(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4045", default); + + + [CqlDeclaration("Aortic Dissection or Ruptured Aortic Aneurysm")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4028")] + public CqlValueSet Aortic_Dissection_or_Ruptured_Aortic_Aneurysm(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4028", default); + + + [CqlDeclaration("birth date")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.560.100.4")] + public CqlValueSet birth_date(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.560.100.4", default); + + + [CqlDeclaration("Cardiopulmonary Arrest")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4048")] + public CqlValueSet Cardiopulmonary_Arrest(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4048", default); + + + [CqlDeclaration("Cerebral Vascular Lesion")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4025")] + public CqlValueSet Cerebral_Vascular_Lesion(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4025", default); + + + [CqlDeclaration("Closed Head and Facial Trauma")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4026")] + public CqlValueSet Closed_Head_and_Facial_Trauma(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4026", default); + + + [CqlDeclaration("Dementia and Related Intracranial Pathologies")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4043")] + public CqlValueSet Dementia_and_Related_Intracranial_Pathologies(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4043", default); + + + [CqlDeclaration("Discharge To Acute Care Facility")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.87")] + public CqlValueSet Discharge_To_Acute_Care_Facility(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.87", default); + + + [CqlDeclaration("Emergency Department Evaluation and Management Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010")] + public CqlValueSet Emergency_Department_Evaluation_and_Management_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010", default); + + + [CqlDeclaration("Emergency Department Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292")] + public CqlValueSet Emergency_Department_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292", default); + + + [CqlDeclaration("Endotracheal Intubation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.69")] + public CqlValueSet Endotracheal_Intubation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.69", default); + + + [CqlDeclaration("Fibrinolytic Therapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4020")] + public CqlValueSet Fibrinolytic_Therapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4020", default); + + + [CqlDeclaration("Intracranial or Intraspinal surgery")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.2")] + public CqlValueSet Intracranial_or_Intraspinal_surgery(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.2", default); + + + [CqlDeclaration("Ischemic Stroke")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.247")] + public CqlValueSet Ischemic_Stroke(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.247", default); + + + [CqlDeclaration("Major Surgical Procedure")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4056")] + public CqlValueSet Major_Surgical_Procedure(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4056", default); + + + [CqlDeclaration("Malignant Intracranial Neoplasm Group")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.3")] + public CqlValueSet Malignant_Intracranial_Neoplasm_Group(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.3", default); + + + [CqlDeclaration("Insertion or Replacement of Mechanical Circulatory Assist Device")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4052")] + public CqlValueSet Insertion_or_Replacement_of_Mechanical_Circulatory_Assist_Device(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4052", default); + + + [CqlDeclaration("Neurologic impairment")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.114.12.1012")] + public CqlValueSet Neurologic_impairment(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.114.12.1012", default); + + + [CqlDeclaration("Patient Expired")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.309")] + public CqlValueSet Patient_Expired(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.309", default); + + + [CqlDeclaration("Percutaneous Coronary Intervention")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.2000.5")] + public CqlValueSet Percutaneous_Coronary_Intervention(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.2000.5", default); + + + [CqlDeclaration("Pregnant State")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4055")] + public CqlValueSet Pregnant_State(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4055", default); + + + [CqlDeclaration("STEMI")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4017")] + public CqlValueSet STEMI(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.3157.4017", default); + + + [CqlDeclaration("Thrombolytic medications")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.4")] + public CqlValueSet Thrombolytic_medications(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1170.4", default); + + + [CqlDeclaration("Birthdate")] + public CqlCode Birthdate(CqlContext context) => + new CqlCode("21112-8", "http://loinc.org", default, default); + + + [CqlDeclaration("Emergency Department")] + public CqlCode Emergency_Department(CqlContext context) => + new CqlCode("1108-0", "https://www.cdc.gov/nhsn/cdaportal/terminology/codesystem/hsloc.html", default, default); + + + [CqlDeclaration("Patient transfer (procedure)")] + public CqlCode Patient_transfer__procedure_(CqlContext context) => + new CqlCode("107724000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Streptokinase adverse reaction (disorder)")] + public CqlCode Streptokinase_adverse_reaction__disorder_(CqlContext context) => + new CqlCode("293571007", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("EMER")] + public CqlCode EMER(CqlContext context) => + new CqlCode("EMER", "http://terminology.hl7.org/CodeSystem/v3-ActCode", default, default); + + + [CqlDeclaration("Status post administration of tPA (rtPA) in a different facility within the last 24 hours prior to admission to current facility")] + public CqlCode Status_post_administration_of_tPA__rtPA__in_a_different_facility_within_the_last_24_hours_prior_to_admission_to_current_facility(CqlContext context) => + new CqlCode("Z92.82", "http://hl7.org/fhir/sid/icd-10-cm", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("21112-8", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("HSLOC")] + public CqlCode[] HSLOC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("1108-0", "https://www.cdc.gov/nhsn/cdaportal/terminology/codesystem/hsloc.html", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("107724000", "http://snomed.info/sct", default, default), + new CqlCode("293571007", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("ActCode")] + public CqlCode[] ActCode(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("EMER", "http://terminology.hl7.org/CodeSystem/v3-ActCode", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("ICD10CM")] + public CqlCode[] ICD10CM(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("Z92.82", "http://hl7.org/fhir/sid/icd-10-cm", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AppropriateTreatmentforSTEMIFHIR-1.2.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("ED Encounter During MP")] + public IEnumerable ED_Encounter_During_MP(CqlContext context) + { + CqlValueSet a_ = this.Emergency_Department_Evaluation_and_Management_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? c_(Encounter EDEncounter) + { + Period e_ = EDEncounter?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.End(f_); + CqlInterval h_ = this.Measurement_Period(context); + bool? i_ = context.Operators.In(g_, h_, "day"); + Code j_ = EDEncounter?.StatusElement; + Encounter.EncounterStatus? k_ = j_?.Value; + Code l_ = context.Operators.Convert>(k_); + bool? m_ = context.Operators.Equal(l_, "finished"); + bool? n_ = context.Operators.And(i_, m_); + Coding o_ = EDEncounter?.Class; + CqlCode p_ = FHIRHelpers_4_4_000.Instance.ToCode(context, o_); + CqlCode q_ = this.EMER(context); + bool? r_ = context.Operators.Equivalent(p_, q_); + bool? s_ = context.Operators.And(n_, r_); + + return s_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("ED Encounter with Encounter Diagnosis of STEMI")] + public IEnumerable ED_Encounter_with_Encounter_Diagnosis_of_STEMI(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_During_MP(context); + bool? b_(Encounter EDEncounter) + { + List d_ = EDEncounter?.ReasonCode; + CqlConcept e_(CodeableConcept @this) + { + CqlConcept n_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return n_; + }; + IEnumerable f_ = context.Operators.Select((IEnumerable)d_, e_); + CqlValueSet g_ = this.STEMI(context); + bool? h_ = context.Operators.ConceptsInValueSet(f_, g_); + IEnumerable i_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, EDEncounter); + bool? j_(Condition EncDiagnosis) + { + CodeableConcept o_ = EncDiagnosis?.Code; + CqlConcept p_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, o_); + CqlValueSet q_ = this.STEMI(context); + bool? r_ = context.Operators.ConceptInValueSet(p_, q_); + + return r_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + bool? l_ = context.Operators.Exists(k_); + bool? m_ = context.Operators.Or(h_, l_); + + return m_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("ED Encounter with Diagnosis of STEMI")] + public IEnumerable ED_Encounter_with_Diagnosis_of_STEMI(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_During_MP(context); + IEnumerable b_(Encounter EDEncounter) + { + CqlValueSet d_ = this.STEMI(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? f_(Condition DxSTEMI) + { + CodeableConcept j_ = DxSTEMI?.ClinicalStatus; + CqlConcept k_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, j_); + CqlCode l_ = QICoreCommon_2_1_000.Instance.active(context); + CqlConcept m_ = context.Operators.ConvertCodeToConcept(l_); + bool? n_ = context.Operators.Equivalent(k_, m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, DxSTEMI); + CqlDateTime p_ = context.Operators.Start(o_); + Period q_ = EDEncounter?.Period; + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + bool? s_ = context.Operators.In(p_, r_, default); + bool? t_ = context.Operators.And(n_, s_); + + return t_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(Condition DxSTEMI) => + EDEncounter; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("ED Encounter with STEMI Diagnosis")] + public IEnumerable ED_Encounter_with_STEMI_Diagnosis(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_Encounter_Diagnosis_of_STEMI(context); + IEnumerable b_ = this.ED_Encounter_with_Diagnosis_of_STEMI(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + + return c_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + bool? b_(Encounter EDwithSTEMI) + { + Patient d_ = this.Patient(context); + Date e_ = d_?.BirthDateElement; + string f_ = e_?.Value; + CqlDate g_ = context.Operators.ConvertStringToDate(f_); + Period h_ = EDwithSTEMI?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlDateTime j_ = context.Operators.Start(i_); + CqlDate k_ = context.Operators.DateFrom(j_); + int? l_ = context.Operators.CalculateAgeAt(g_, k_, "year"); + bool? m_ = context.Operators.GreaterOrEqual(l_, 18); + + return m_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Allergy or Intolerance to Thrombolytic Medications Overlaps ED Encounter")] + public IEnumerable Allergy_or_Intolerance_to_Thrombolytic_Medications_Overlaps_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwSTEMI) + { + CqlValueSet d_ = this.Thrombolytic_medications(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-allergyintolerance")); + bool? f_(AllergyIntolerance ThrombolyticAllergy) + { + CodeableConcept j_ = ThrombolyticAllergy?.ClinicalStatus; + CqlConcept k_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, j_); + CqlCode l_ = QICoreCommon_2_1_000.Instance.allergy_active(context); + CqlConcept m_ = context.Operators.ConvertCodeToConcept(l_); + bool? n_ = context.Operators.Equivalent(k_, m_); + DataType o_ = ThrombolyticAllergy?.Onset; + object p_ = FHIRHelpers_4_4_000.Instance.ToValue(context, o_); + CqlInterval q_ = QICoreCommon_2_1_000.Instance.toInterval(context, p_); + Period r_ = EDwSTEMI?.Period; + CqlInterval s_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, r_); + bool? t_ = context.Operators.Overlaps(q_, s_, default); + bool? u_ = context.Operators.And(n_, t_); + + return u_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(AllergyIntolerance ThrombolyticAllergy) => + EDwSTEMI; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Adverse Effect to Thrombolytic Medications Before End of ED Encounter")] + public IEnumerable Adverse_Effect_to_Thrombolytic_Medications_Before_End_of_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwSTEMI) + { + CqlValueSet d_ = this.Thrombolytics_Adverse_Event(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-adverseevent")); + bool? f_(AdverseEvent ThrombolyticAdverseEvent) + { + FhirDateTime j_ = ThrombolyticAdverseEvent?.RecordedDateElement; + CqlDateTime k_ = context.Operators.Convert(j_); + Period l_ = EDwSTEMI?.Period; + CqlInterval m_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + CqlDateTime n_ = context.Operators.End(m_); + bool? o_ = context.Operators.Before(k_, n_, default); + Code p_ = ThrombolyticAdverseEvent?.ActualityElement; + AdverseEvent.AdverseEventActuality? q_ = p_?.Value; + Code r_ = context.Operators.Convert>(q_); + bool? s_ = context.Operators.Equal(r_, "actual"); + bool? t_ = context.Operators.And(o_, s_); + + return t_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(AdverseEvent ThrombolyticAdverseEvent) => + EDwSTEMI; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Active Exclusion Diagnosis at Start of ED Encounter")] + public IEnumerable Active_Exclusion_Diagnosis_at_Start_of_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Active_Bleeding_Excluding_Menses_or_Bleeding_Diathesis(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet f_ = this.Malignant_Intracranial_Neoplasm_Group(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable h_ = context.Operators.Union(e_, g_); + CqlValueSet i_ = this.Cerebral_Vascular_Lesion(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet k_ = this.Dementia_and_Related_Intracranial_Pathologies(context); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, k_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable m_ = context.Operators.Union(j_, l_); + IEnumerable n_ = context.Operators.Union(h_, m_); + CqlValueSet o_ = this.Pregnant_State(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet q_ = this.Allergy_to_thrombolytics(context); + IEnumerable r_ = context.Operators.Retrieve(new RetrieveParameters(default, q_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable s_ = context.Operators.Union(p_, r_); + IEnumerable t_ = context.Operators.Union(n_, s_); + bool? u_(Condition ActiveExclusionDx) + { + CqlInterval y_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ActiveExclusionDx); + Period z_ = EDwithSTEMI?.Period; + CqlInterval aa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, z_); + bool? ab_ = context.Operators.OverlapsBefore(y_, aa_, default); + + return ab_; + }; + IEnumerable v_ = context.Operators.Where(t_, u_); + Encounter w_(Condition ActiveExclusionDx) => + EDwithSTEMI; + IEnumerable x_ = context.Operators.Select(v_, w_); + + return x_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Active Oral Anticoagulant Medication at the Start of ED Encounter")] + public IEnumerable Active_Oral_Anticoagulant_Medication_at_the_Start_of_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Oral_Anticoagulant_Medications(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable h_ = context.Operators.Union(e_, g_); + bool? i_(MedicationRequest OralAnticoagulant) + { + Code m_ = OralAnticoagulant?.StatusElement; + MedicationRequest.MedicationrequestStatus? n_ = m_?.Value; + string o_ = context.Operators.Convert(n_); + bool? p_ = context.Operators.Equal(o_, "active"); + Code q_ = OralAnticoagulant?.IntentElement; + MedicationRequest.MedicationRequestIntent? r_ = q_?.Value; + string s_ = context.Operators.Convert(r_); + bool? t_ = context.Operators.Equal(s_, "order"); + bool? u_ = context.Operators.And(p_, t_); + FhirDateTime v_ = OralAnticoagulant?.AuthoredOnElement; + CqlDateTime w_ = context.Operators.Convert(v_); + Period x_ = EDwithSTEMI?.Period; + CqlInterval y_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, x_); + CqlDateTime z_ = context.Operators.Start(y_); + CqlQuantity aa_ = context.Operators.Quantity(90m, "days"); + CqlDateTime ab_ = context.Operators.Subtract(z_, aa_); + CqlInterval ad_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, x_); + CqlDateTime ae_ = context.Operators.Start(ad_); + CqlInterval af_ = context.Operators.Interval(ab_, ae_, true, true); + bool? ag_ = context.Operators.In(w_, af_, default); + CqlInterval ai_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, x_); + CqlDateTime aj_ = context.Operators.Start(ai_); + bool? ak_ = context.Operators.Not((bool?)(aj_ is null)); + bool? al_ = context.Operators.And(ag_, ak_); + bool? am_ = context.Operators.And(u_, al_); + + return am_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Encounter k_(MedicationRequest OralAnticoagulant) => + EDwithSTEMI; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Exclusion Diagnosis During ED Encounter or Within 24 Hours of ED Encounter Start")] + public IEnumerable Exclusion_Diagnosis_During_ED_Encounter_or_Within_24_Hours_of_ED_Encounter_Start(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Aortic_Dissection_or_Ruptured_Aortic_Aneurysm(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet f_ = this.Neurologic_impairment(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable h_ = context.Operators.Union(e_, g_); + CqlValueSet i_ = this.Cardiopulmonary_Arrest(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable k_ = context.Operators.Union(h_, j_); + bool? l_(Condition ExclusionDiagnosis) + { + CqlInterval p_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ExclusionDiagnosis); + CqlDateTime q_ = context.Operators.Start(p_); + Period r_ = EDwithSTEMI?.Period; + CqlInterval s_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, r_); + bool? t_ = context.Operators.In(q_, s_, default); + CqlDateTime v_ = context.Operators.Start(p_); + CqlInterval x_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, r_); + CqlDateTime y_ = context.Operators.Start(x_); + CqlQuantity z_ = context.Operators.Quantity(24m, "hours"); + CqlDateTime aa_ = context.Operators.Subtract(y_, z_); + CqlInterval ac_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, r_); + CqlDateTime ad_ = context.Operators.Start(ac_); + CqlInterval ae_ = context.Operators.Interval(aa_, ad_, true, false); + bool? af_ = context.Operators.In(v_, ae_, default); + CqlInterval ah_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, r_); + CqlDateTime ai_ = context.Operators.Start(ah_); + bool? aj_ = context.Operators.Not((bool?)(ai_ is null)); + bool? ak_ = context.Operators.And(af_, aj_); + bool? al_ = context.Operators.Or(t_, ak_); + + return al_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + Encounter n_(Condition ExclusionDiagnosis) => + EDwithSTEMI; + IEnumerable o_ = context.Operators.Select(m_, n_); + + return o_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Major Surgical Procedure 21 Days or Less Before Start of or Starts During ED Encounter")] + public IEnumerable Major_Surgical_Procedure_21_Days_or_Less_Before_Start_of_or_Starts_During_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Major_Surgical_Procedure(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? f_(Procedure MajorSurgery) + { + DataType j_ = MajorSurgery?.Performed; + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_); + CqlDateTime m_ = context.Operators.Start(l_); + Period n_ = EDwithSTEMI?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime p_ = context.Operators.Start(o_); + CqlQuantity q_ = context.Operators.Quantity(21m, "days"); + CqlDateTime r_ = context.Operators.Subtract(p_, q_); + CqlInterval t_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime u_ = context.Operators.Start(t_); + CqlInterval v_ = context.Operators.Interval(r_, u_, true, false); + bool? w_ = context.Operators.In(m_, v_, default); + CqlInterval y_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime z_ = context.Operators.Start(y_); + bool? aa_ = context.Operators.Not((bool?)(z_ is null)); + bool? ab_ = context.Operators.And(w_, aa_); + Code ac_ = MajorSurgery?.StatusElement; + EventStatus? ad_ = ac_?.Value; + string ae_ = context.Operators.Convert(ad_); + bool? af_ = context.Operators.Equal(ae_, "completed"); + bool? ag_ = context.Operators.And(ab_, af_); + + return ag_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(Procedure MajorSurgery) => + EDwithSTEMI; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Intubation or Mechanical Circulatory Assist Procedure During ED Encounter or Within 24 Hours of ED Encounter Start")] + public IEnumerable Intubation_or_Mechanical_Circulatory_Assist_Procedure_During_ED_Encounter_or_Within_24_Hours_of_ED_Encounter_Start(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Endotracheal_Intubation(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + CqlValueSet f_ = this.Insertion_or_Replacement_of_Mechanical_Circulatory_Assist_Device(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable h_ = context.Operators.Union(e_, g_); + bool? i_(Procedure AirwayProcedure) + { + DataType m_ = AirwayProcedure?.Performed; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.toInterval(context, n_); + CqlDateTime p_ = context.Operators.Start(o_); + Period q_ = EDwithSTEMI?.Period; + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + bool? s_ = context.Operators.In(p_, r_, default); + object u_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlInterval v_ = QICoreCommon_2_1_000.Instance.toInterval(context, u_); + CqlDateTime w_ = context.Operators.Start(v_); + CqlInterval y_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime z_ = context.Operators.Start(y_); + CqlQuantity aa_ = context.Operators.Quantity(24m, "hours"); + CqlDateTime ab_ = context.Operators.Subtract(z_, aa_); + CqlInterval ad_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime ae_ = context.Operators.Start(ad_); + CqlInterval af_ = context.Operators.Interval(ab_, ae_, true, false); + bool? ag_ = context.Operators.In(w_, af_, default); + CqlInterval ai_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, q_); + CqlDateTime aj_ = context.Operators.Start(ai_); + bool? ak_ = context.Operators.Not((bool?)(aj_ is null)); + bool? al_ = context.Operators.And(ag_, ak_); + bool? am_ = context.Operators.Or(s_, al_); + Code an_ = AirwayProcedure?.StatusElement; + EventStatus? ao_ = an_?.Value; + string ap_ = context.Operators.Convert(ao_); + bool? aq_ = context.Operators.Equal(ap_, "completed"); + bool? ar_ = context.Operators.And(am_, aq_); + + return ar_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Encounter k_(Procedure AirwayProcedure) => + EDwithSTEMI; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Active Exclusion Diagnosis Within 90 Days Before or At the Start of ED Encounter")] + public IEnumerable Active_Exclusion_Diagnosis_Within_90_Days_Before_or_At_the_Start_of_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwSTEMI) + { + CqlValueSet d_ = this.Ischemic_Stroke(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet f_ = this.Closed_Head_and_Facial_Trauma(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable h_ = context.Operators.Union(e_, g_); + CqlValueSet i_ = this.Active_Peptic_Ulcer(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet k_ = this.Cardiopulmonary_Arrest(context); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, k_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable m_ = context.Operators.Union(j_, l_); + IEnumerable n_ = context.Operators.Union(h_, m_); + bool? o_(Condition ExclusionCondition) + { + CqlInterval s_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ExclusionCondition); + CqlDateTime t_ = context.Operators.Start(s_); + Period u_ = EDwSTEMI?.Period; + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlDateTime w_ = context.Operators.Start(v_); + CqlQuantity x_ = context.Operators.Quantity(90m, "days"); + CqlDateTime y_ = context.Operators.Subtract(w_, x_); + CqlInterval aa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlDateTime ab_ = context.Operators.Start(aa_); + CqlInterval ac_ = context.Operators.Interval(y_, ab_, true, true); + bool? ad_ = context.Operators.In(t_, ac_, default); + + return ad_; + }; + IEnumerable p_ = context.Operators.Where(n_, o_); + Encounter q_(Condition ExclusionCondition) => + EDwSTEMI; + IEnumerable r_ = context.Operators.Select(p_, q_); + + return r_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Intracranial or Intraspinal Procedure 90 Days or Less Before Start of ED Encounter")] + public IEnumerable Intracranial_or_Intraspinal_Procedure_90_Days_or_Less_Before_Start_of_ED_Encounter(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Intracranial_or_Intraspinal_surgery(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? f_(Procedure CranialorSpinalSurgery) + { + DataType j_ = CranialorSpinalSurgery?.Performed; + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_); + CqlDateTime m_ = context.Operators.Start(l_); + Period n_ = EDwithSTEMI?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime p_ = context.Operators.Start(o_); + CqlQuantity q_ = context.Operators.Quantity(90m, "days"); + CqlDateTime r_ = context.Operators.Subtract(p_, q_); + CqlInterval t_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime u_ = context.Operators.Start(t_); + CqlInterval v_ = context.Operators.Interval(r_, u_, true, false); + bool? w_ = context.Operators.In(m_, v_, default); + CqlInterval y_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + CqlDateTime z_ = context.Operators.Start(y_); + bool? aa_ = context.Operators.Not((bool?)(z_ is null)); + bool? ab_ = context.Operators.And(w_, aa_); + Code ac_ = CranialorSpinalSurgery?.StatusElement; + EventStatus? ad_ = ac_?.Value; + string ae_ = context.Operators.Convert(ad_); + bool? af_ = context.Operators.Equal(ae_, "completed"); + bool? ag_ = context.Operators.And(ab_, af_); + + return ag_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(Procedure CranialorSpinalSurgery) => + EDwithSTEMI; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("ED Encounter with Discharge Disposition as Patient Expired")] + public IEnumerable ED_Encounter_with_Discharge_Disposition_as_Patient_Expired(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + bool? b_(Encounter EDwithSTEMI) + { + Encounter.HospitalizationComponent d_ = EDwithSTEMI?.Hospitalization; + CodeableConcept e_ = d_?.DischargeDisposition; + CqlConcept f_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, e_); + CqlValueSet g_ = this.Patient_Expired(context); + bool? h_ = context.Operators.ConceptInValueSet(f_, g_); + + return h_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public IEnumerable Denominator_Exclusions(CqlContext context) + { + IEnumerable a_ = this.Allergy_or_Intolerance_to_Thrombolytic_Medications_Overlaps_ED_Encounter(context); + IEnumerable b_ = this.Adverse_Effect_to_Thrombolytic_Medications_Before_End_of_ED_Encounter(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + IEnumerable d_ = this.Active_Exclusion_Diagnosis_at_Start_of_ED_Encounter(context); + IEnumerable e_ = this.Active_Oral_Anticoagulant_Medication_at_the_Start_of_ED_Encounter(context); + IEnumerable f_ = context.Operators.Union(d_, e_); + IEnumerable g_ = context.Operators.Union(c_, f_); + IEnumerable h_ = this.Exclusion_Diagnosis_During_ED_Encounter_or_Within_24_Hours_of_ED_Encounter_Start(context); + IEnumerable i_ = this.Major_Surgical_Procedure_21_Days_or_Less_Before_Start_of_or_Starts_During_ED_Encounter(context); + IEnumerable j_ = context.Operators.Union(h_, i_); + IEnumerable k_ = context.Operators.Union(g_, j_); + IEnumerable l_ = this.Intubation_or_Mechanical_Circulatory_Assist_Procedure_During_ED_Encounter_or_Within_24_Hours_of_ED_Encounter_Start(context); + IEnumerable m_ = this.Active_Exclusion_Diagnosis_Within_90_Days_Before_or_At_the_Start_of_ED_Encounter(context); + IEnumerable n_ = context.Operators.Union(l_, m_); + IEnumerable o_ = context.Operators.Union(k_, n_); + IEnumerable p_ = this.Intracranial_or_Intraspinal_Procedure_90_Days_or_Less_Before_Start_of_ED_Encounter(context); + IEnumerable q_ = this.ED_Encounter_with_Discharge_Disposition_as_Patient_Expired(context); + IEnumerable r_ = context.Operators.Union(p_, q_); + IEnumerable s_ = context.Operators.Union(o_, r_); + + return s_; + } + + + [CqlDeclaration("Received tPA in Another Facility within 24 hours Prior to Admission")] + public IEnumerable Received_tPA_in_Another_Facility_within_24_hours_Prior_to_Admission(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlCode d_ = this.Status_post_administration_of_tPA__rtPA__in_a_different_facility_within_the_last_24_hours_prior_to_admission_to_current_facility(context); + IEnumerable e_ = context.Operators.ToList(d_); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, default, e_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? g_(Condition TPA) + { + CqlInterval k_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, TPA); + CqlDateTime l_ = context.Operators.Start(k_); + Period m_ = EDwithSTEMI?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + bool? o_ = context.Operators.In(l_, n_, default); + + return o_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + Encounter i_(Condition TPA) => + EDwithSTEMI; + IEnumerable j_ = context.Operators.Select(h_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator Exceptions")] + public IEnumerable Denominator_Exceptions(CqlContext context) + { + IEnumerable a_ = this.Received_tPA_in_Another_Facility_within_24_hours_Prior_to_Admission(context); + + return a_; + } + + + public CqlDateTime currentemergencyDepartmentArrivalTime(CqlContext context, Encounter EDEncounter) + { + List a_ = EDEncounter?.Location; + bool? b_(Encounter.LocationComponent EDLocation) + { + ResourceReference h_ = EDLocation?.Location; + Location i_ = CQMCommon_2_2_000.Instance.GetLocation(context, h_); + List j_ = i_?.Type; + CqlConcept k_(CodeableConcept @this) + { + CqlConcept o_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return o_; + }; + IEnumerable l_ = context.Operators.Select((IEnumerable)j_, k_); + CqlValueSet m_ = this.Emergency_Department_Visit(context); + bool? n_ = context.Operators.ConceptsInValueSet(l_, m_); + + return n_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + Encounter.LocationComponent d_ = context.Operators.SingletonFrom(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.Start(f_); + + return g_; + } + + + [CqlDeclaration("Fibrinolytic Therapy within 30 Minutes of Arrival")] + public IEnumerable Fibrinolytic_Therapy_within_30_Minutes_of_Arrival(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Fibrinolytic_Therapy(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationadministration")); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationadministration")); + IEnumerable h_ = context.Operators.Union(e_, g_); + bool? i_(MedicationAdministration Fibrinolytic) + { + Code m_ = Fibrinolytic?.StatusElement; + MedicationAdministration.MedicationAdministrationStatusCodes? n_ = m_?.Value; + Code o_ = context.Operators.Convert>(n_); + bool? p_ = context.Operators.Equal(o_, "completed"); + DataType q_ = Fibrinolytic?.Effective; + object r_ = FHIRHelpers_4_4_000.Instance.ToValue(context, q_); + CqlInterval s_ = QICoreCommon_2_1_000.Instance.toInterval(context, r_); + CqlDateTime t_ = context.Operators.Start(s_); + CqlDateTime u_ = this.currentemergencyDepartmentArrivalTime(context, EDwithSTEMI); + CqlQuantity w_ = context.Operators.Quantity(30m, "minutes"); + CqlDateTime x_ = context.Operators.Add(u_, w_); + CqlInterval y_ = context.Operators.Interval(u_, x_, false, true); + bool? z_ = context.Operators.In(t_, y_, default); + bool? ab_ = context.Operators.Not((bool?)(u_ is null)); + bool? ac_ = context.Operators.And(z_, ab_); + bool? ad_ = context.Operators.And(p_, ac_); + + return ad_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Encounter k_(MedicationAdministration Fibrinolytic) => + EDwithSTEMI; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("PCI within 90 Minutes of Arrival")] + public IEnumerable PCI_within_90_Minutes_of_Arrival(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + IEnumerable b_(Encounter EDwithSTEMI) + { + CqlValueSet d_ = this.Percutaneous_Coronary_Intervention(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? f_(Procedure PCI) + { + DataType j_ = PCI?.Performed; + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_); + CqlDateTime m_ = context.Operators.Start(l_); + CqlDateTime n_ = this.currentemergencyDepartmentArrivalTime(context, EDwithSTEMI); + CqlQuantity p_ = context.Operators.Quantity(90m, "minutes"); + CqlDateTime q_ = context.Operators.Add(n_, p_); + CqlInterval r_ = context.Operators.Interval(n_, q_, false, true); + bool? s_ = context.Operators.In(m_, r_, default); + bool? u_ = context.Operators.Not((bool?)(n_ is null)); + bool? v_ = context.Operators.And(s_, u_); + Code w_ = PCI?.StatusElement; + EventStatus? x_ = w_?.Value; + string y_ = context.Operators.Convert(x_); + bool? z_ = context.Operators.Equal(y_, "completed"); + bool? aa_ = context.Operators.And(v_, z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(Procedure PCI) => + EDwithSTEMI; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("ED Departure with Transfer to Acute Care Facility Within 45 Minutes of Arrival")] + public IEnumerable ED_Departure_with_Transfer_to_Acute_Care_Facility_Within_45_Minutes_of_Arrival(CqlContext context) + { + IEnumerable a_ = this.ED_Encounter_with_STEMI_Diagnosis(context); + bool? b_(Encounter EDwithSTEMI) + { + Period d_ = EDwithSTEMI?.Period; + CqlInterval e_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, d_); + CqlDateTime f_ = context.Operators.End(e_); + CqlInterval h_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, d_); + CqlDateTime i_ = context.Operators.Start(h_); + CqlInterval k_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, d_); + CqlDateTime l_ = context.Operators.Start(k_); + CqlQuantity m_ = context.Operators.Quantity(45m, "minutes"); + CqlDateTime n_ = context.Operators.Add(l_, m_); + CqlInterval o_ = context.Operators.Interval(i_, n_, false, true); + bool? p_ = context.Operators.In(f_, o_, default); + CqlInterval r_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, d_); + CqlDateTime s_ = context.Operators.Start(r_); + bool? t_ = context.Operators.Not((bool?)(s_ is null)); + bool? u_ = context.Operators.And(p_, t_); + Encounter.HospitalizationComponent v_ = EDwithSTEMI?.Hospitalization; + CodeableConcept w_ = v_?.DischargeDisposition; + CqlConcept x_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, w_); + CqlValueSet y_ = this.Discharge_To_Acute_Care_Facility(context); + bool? z_ = context.Operators.ConceptInValueSet(x_, y_); + bool? aa_ = context.Operators.And(u_, z_); + + return aa_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Fibrinolytic_Therapy_within_30_Minutes_of_Arrival(context); + IEnumerable b_ = this.PCI_within_90_Minutes_of_Arrival(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + IEnumerable d_ = this.ED_Departure_with_Transfer_to_Acute_Care_Facility_Within_45_Minutes_of_Arrival(context); + IEnumerable e_ = context.Operators.Union(c_, d_); + + return e_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR-0.1.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR-0.1.001.g.cs new file mode 100644 index 000000000..b6d75fece --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR-0.1.001.g.cs @@ -0,0 +1,588 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR", "0.1.001")] +public partial class AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR_0_1_001 : ILibrary, ISingleton +{ + private AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR_0_1_001() {} + + public static AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR_0_1_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR"; + public string Version => "0.1.001"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, Status_1_8_000.Instance, QICoreCommon_2_1_000.Instance, Antibiotic_1_7_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Acute Pharyngitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1011")] + public CqlValueSet Acute_Pharyngitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1011", default); + + + [CqlDeclaration("Acute Tonsillitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1012")] + public CqlValueSet Acute_Tonsillitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1012", default); + + + [CqlDeclaration("Antibiotic Medications for Upper Respiratory Infection")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1001")] + public CqlValueSet Antibiotic_Medications_for_Upper_Respiratory_Infection(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1001", default); + + + [CqlDeclaration("Comorbid Conditions for Respiratory Conditions")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1025")] + public CqlValueSet Comorbid_Conditions_for_Respiratory_Conditions(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1025", default); + + + [CqlDeclaration("Competing Conditions for Respiratory Conditions")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1017")] + public CqlValueSet Competing_Conditions_for_Respiratory_Conditions(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1017", default); + + + [CqlDeclaration("Emergency Department Evaluation and Management Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010")] + public CqlValueSet Emergency_Department_Evaluation_and_Management_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Medical Disability Exam")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1073")] + public CqlValueSet Medical_Disability_Exam(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1073", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Outpatient Consultation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008")] + public CqlValueSet Outpatient_Consultation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Group Counseling")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027")] + public CqlValueSet Preventive_Care_Services_Group_Counseling(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1027", default); + + + [CqlDeclaration("Preventive Care Services Individual Counseling")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026")] + public CqlValueSet Preventive_Care_Services_Individual_Counseling(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1026", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Preventive Care Services, Initial Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022")] + public CqlValueSet Preventive_Care_Services__Initial_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022", default); + + + [CqlDeclaration("Preventive Care, Established Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024")] + public CqlValueSet Preventive_Care__Established_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Upper Respiratory Infection")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1022")] + public CqlValueSet Upper_Respiratory_Infection(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.102.12.1022", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Unlisted preventive medicine service")] + public CqlCode Unlisted_preventive_medicine_service(CqlContext context) => + new CqlCode("99429", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("CPT")] + public CqlCode[] CPT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("99429", "http://www.ama-assn.org/go/cpt", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("AppropriateTreatmentforUpperRespiratoryInfectionURIFHIR-0.1.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Emergency_Department_Evaluation_and_Management_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Home_Healthcare_Services(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Medical_Disability_Exam(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Office_Visit(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Outpatient_Consultation(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Preventive_Care_Services_Group_Counseling(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Preventive_Care_Services_Individual_Counseling(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet t_ = this.Preventive_Care_Services__Initial_Office_Visit__0_to_17(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = context.Operators.Union(q_, v_); + CqlValueSet x_ = this.Preventive_Care__Established_Office_Visit__0_to_17(context); + IEnumerable y_ = context.Operators.Retrieve(new RetrieveParameters(default, x_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet z_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable aa_ = context.Operators.Retrieve(new RetrieveParameters(default, z_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable ab_ = context.Operators.Union(y_, aa_); + IEnumerable ac_ = context.Operators.Union(w_, ab_); + CqlValueSet ad_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable ae_ = context.Operators.Retrieve(new RetrieveParameters(default, ad_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet af_ = this.Telephone_Visits(context); + IEnumerable ag_ = context.Operators.Retrieve(new RetrieveParameters(default, af_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable ah_ = context.Operators.Union(ae_, ag_); + IEnumerable ai_ = context.Operators.Union(ac_, ah_); + CqlValueSet aj_ = this.Virtual_Encounter(context); + IEnumerable ak_ = context.Operators.Retrieve(new RetrieveParameters(default, aj_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable al_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? am_(Encounter E) + { + List at_ = E?.Type; + CqlConcept au_(CodeableConcept @this) + { + CqlConcept az_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return az_; + }; + IEnumerable av_ = context.Operators.Select((IEnumerable)at_, au_); + bool? aw_(CqlConcept T) + { + CqlCode ba_ = this.Unlisted_preventive_medicine_service(context); + CqlConcept bb_ = context.Operators.ConvertCodeToConcept(ba_); + bool? bc_ = context.Operators.Equivalent(T, bb_); + + return bc_; + }; + IEnumerable ax_ = context.Operators.Where(av_, aw_); + bool? ay_ = context.Operators.Exists(ax_); + + return ay_; + }; + IEnumerable an_ = context.Operators.Where(al_, am_); + IEnumerable ao_ = context.Operators.Union(ak_, an_); + IEnumerable ap_ = context.Operators.Union(ai_, ao_); + IEnumerable aq_ = Status_1_8_000.Instance.isEncounterPerformed(context, ap_); + bool? ar_(Encounter ValidEncounter) + { + Period bd_ = ValidEncounter?.Period; + CqlInterval be_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bd_); + CqlInterval bf_ = QICoreCommon_2_1_000.Instance.toInterval(context, be_ as object); + CqlDateTime bg_ = context.Operators.End(bf_); + CqlInterval bh_ = this.Measurement_Period(context); + CqlDateTime bi_ = context.Operators.Start(bh_); + CqlDateTime bk_ = context.Operators.End(bh_); + CqlQuantity bl_ = context.Operators.Quantity(3m, "days"); + CqlDateTime bm_ = context.Operators.Subtract(bk_, bl_); + CqlInterval bn_ = context.Operators.Interval(bi_, bm_, true, true); + bool? bo_ = context.Operators.In(bg_, bn_, "day"); + + return bo_; + }; + IEnumerable as_ = context.Operators.Where(aq_, ar_); + + return as_; + } + + + [CqlDeclaration("Encounter with Upper Respiratory Infection")] + public IEnumerable Encounter_with_Upper_Respiratory_Infection(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Encounters(context); + CqlValueSet b_ = this.Upper_Respiratory_Infection(context); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, b_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable> d_ = context.Operators.CrossJoin(a_, c_); + (CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)? e_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)? l_ = (CqlTupleMetadata_FiGMIRiNMNcaAVFKbMahDKTce, _valueTuple.Item1, _valueTuple.Item2); + + return l_; + }; + IEnumerable<(CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)?> f_ = context.Operators.Select, (CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)?>(d_, e_); + bool? g_((CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)? tuple_figmirinmncaavfkbmahdktce) + { + CqlInterval m_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, tuple_figmirinmncaavfkbmahdktce?.URI); + CqlDateTime n_ = context.Operators.Start(m_); + Period o_ = tuple_figmirinmncaavfkbmahdktce?.QualifyingEncounters?.Period; + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlInterval q_ = QICoreCommon_2_1_000.Instance.toInterval(context, p_ as object); + bool? r_ = context.Operators.In(n_, q_, "day"); + CqlInterval u_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlInterval v_ = QICoreCommon_2_1_000.Instance.toInterval(context, u_ as object); + bool? w_ = context.Operators.OverlapsBefore(m_, v_, default); + bool? x_ = context.Operators.Or(r_, w_); + + return x_; + }; + IEnumerable<(CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)?> h_ = context.Operators.Where<(CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)?>(f_, g_); + Encounter i_((CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)? tuple_figmirinmncaavfkbmahdktce) => + tuple_figmirinmncaavfkbmahdktce?.QualifyingEncounters; + IEnumerable j_ = context.Operators.Select<(CqlTupleMetadata, Encounter QualifyingEncounters, Condition URI)?, Encounter>(h_, i_); + IEnumerable k_ = context.Operators.Distinct(j_); + + return k_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_Upper_Respiratory_Infection(context); + bool? b_(Encounter EncounterWithURI) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "month"); + bool? o_ = context.Operators.GreaterOrEqual(n_, 3); + + return o_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithURI) => + EncounterWithURI; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + [CqlDeclaration("Encounters and Assessments with Hospice Patient")] + public IEnumerable Encounters_and_Assessments_with_Hospice_Patient(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + bool? b_(Encounter EligibleEncounters) + { + bool? d_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + + return d_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public IEnumerable Denominator_Exclusions(CqlContext context) + { + IEnumerable a_ = this.Encounters_and_Assessments_with_Hospice_Patient(context); + IEnumerable b_ = this.Encounter_with_Upper_Respiratory_Infection(context); + CqlValueSet c_ = this.Comorbid_Conditions_for_Respiratory_Conditions(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable e_ = Antibiotic_1_7_000.Instance.Has_Comorbid_Condition_History(context, b_, d_); + IEnumerable f_ = context.Operators.Union(a_, e_); + CqlValueSet h_ = this.Antibiotic_Medications_for_Upper_Respiratory_Infection(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable k_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable l_ = context.Operators.Union(i_, k_); + IEnumerable m_ = Antibiotic_1_7_000.Instance.Has_Antibiotic_Medication_History(context, b_, l_); + CqlValueSet o_ = this.Competing_Conditions_for_Respiratory_Conditions(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet q_ = this.Acute_Pharyngitis(context); + IEnumerable r_ = context.Operators.Retrieve(new RetrieveParameters(default, q_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable s_ = context.Operators.Union(p_, r_); + CqlValueSet t_ = this.Acute_Tonsillitis(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = Antibiotic_1_7_000.Instance.Has_Competing_Diagnosis_History(context, b_, v_); + IEnumerable x_ = context.Operators.Union(m_, w_); + IEnumerable y_ = context.Operators.Union(f_, x_); + + return y_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_Upper_Respiratory_Infection(context); + IEnumerable c_(Encounter EncounterWithURI) + { + CqlValueSet i_ = this.Antibiotic_Medications_for_Upper_Respiratory_Infection(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable m_ = context.Operators.Union(j_, l_); + IEnumerable n_ = Status_1_8_000.Instance.isMedicationOrder(context, m_); + bool? o_(MedicationRequest OrderedAntibiotic) + { + FhirDateTime s_ = OrderedAntibiotic?.AuthoredOnElement; + CqlDateTime t_ = context.Operators.Convert(s_); + Period u_ = EncounterWithURI?.Period; + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlInterval w_ = QICoreCommon_2_1_000.Instance.toInterval(context, v_ as object); + CqlDateTime x_ = context.Operators.Start(w_); + CqlInterval z_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlInterval aa_ = QICoreCommon_2_1_000.Instance.toInterval(context, z_ as object); + CqlDateTime ab_ = context.Operators.Start(aa_); + CqlQuantity ac_ = context.Operators.Quantity(3m, "days"); + CqlDateTime ad_ = context.Operators.Add(ab_, ac_); + CqlInterval ae_ = context.Operators.Interval(x_, ad_, true, true); + bool? af_ = context.Operators.In(t_, ae_, default); + CqlInterval ah_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlInterval ai_ = QICoreCommon_2_1_000.Instance.toInterval(context, ah_ as object); + CqlDateTime aj_ = context.Operators.Start(ai_); + bool? ak_ = context.Operators.Not((bool?)(aj_ is null)); + bool? al_ = context.Operators.And(af_, ak_); + + return al_; + }; + IEnumerable p_ = context.Operators.Where(n_, o_); + Encounter q_(MedicationRequest OrderedAntibiotic) => + EncounterWithURI; + IEnumerable r_ = context.Operators.Select(p_, q_); + + return r_; + }; + IEnumerable d_ = context.Operators.SelectMany(a_, c_); + IEnumerable e_ = context.Operators.Except(a_, d_); + Encounter f_(Encounter EncounterWithURI) => + EncounterWithURI; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + + return h_; + } + + + [CqlDeclaration("Stratification 1")] + public IEnumerable Stratification_1(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_Upper_Respiratory_Infection(context); + bool? b_(Encounter EncounterWithURI) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "month"); + bool? o_ = context.Operators.GreaterOrEqual(n_, 3); + Date q_ = g_?.BirthDateElement; + string r_ = q_?.Value; + CqlDate s_ = context.Operators.ConvertStringToDate(r_); + CqlDateTime u_ = context.Operators.Start(k_); + CqlDate v_ = context.Operators.DateFrom(u_); + int? w_ = context.Operators.CalculateAgeAt(s_, v_, "year"); + bool? x_ = context.Operators.LessOrEqual(w_, 17); + bool? y_ = context.Operators.And(o_, x_); + + return y_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithURI) => + EncounterWithURI; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + [CqlDeclaration("Stratification 2")] + public IEnumerable Stratification_2(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_Upper_Respiratory_Infection(context); + bool? b_(Encounter EncounterWithURI) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "year"); + CqlInterval o_ = context.Operators.Interval(18, 64, true, true); + bool? p_ = context.Operators.In(n_, o_, default); + + return p_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithURI) => + EncounterWithURI; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + [CqlDeclaration("Stratification 3")] + public IEnumerable Stratification_3(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_Upper_Respiratory_Infection(context); + bool? b_(Encounter EncounterWithURI) + { + Patient g_ = this.Patient(context); + Date h_ = g_?.BirthDateElement; + string i_ = h_?.Value; + CqlDate j_ = context.Operators.ConvertStringToDate(i_); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlDate m_ = context.Operators.DateFrom(l_); + int? n_ = context.Operators.CalculateAgeAt(j_, m_, "year"); + bool? o_ = context.Operators.GreaterOrEqual(n_, 65); + + return o_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_(Encounter EncounterWithURI) => + EncounterWithURI; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + + return f_; + } + + + #endregion Definition Methods + + #region CqlTupleMetadata Properties + + private static CqlTupleMetadata CqlTupleMetadata_FiGMIRiNMNcaAVFKbMahDKTce = new( + [typeof(Encounter), typeof(Condition)], + ["QualifyingEncounters", "URI"]); + + #endregion CqlTupleMetadata Properties + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR-1.4.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR-1.4.000.g.cs new file mode 100644 index 000000000..ea353a27d --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR-1.4.000.g.cs @@ -0,0 +1,881 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR", "1.4.000")] +public partial class BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR_1_4_000 : ILibrary, ISingleton +{ + private BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR_1_4_000() {} + + public static BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR_1_4_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR"; + public string Version => "1.4.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Androgen deprivation therapy for Urology Care")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.48")] + public CqlValueSet Androgen_deprivation_therapy_for_Urology_Care(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.48", default); + + + [CqlDeclaration("DEXA Dual Energy Xray Absorptiometry, Bone Density for Urology Care")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.38")] + public CqlValueSet DEXA_Dual_Energy_Xray_Absorptiometry__Bone_Density_for_Urology_Care(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1151.38", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Patient Declined")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1582")] + public CqlValueSet Patient_Declined(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1582", default); + + + [CqlDeclaration("Prostate Cancer")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.319")] + public CqlValueSet Prostate_Cancer(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.319", default); + + + [CqlDeclaration("Injection of leuprolide acetate for twelve month period (regime/therapy)")] + public CqlCode Injection_of_leuprolide_acetate_for_twelve_month_period__regime_therapy_(CqlContext context) => + new CqlCode("456381000124102", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("456381000124102", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("BoneDensityProstateCancerAndrogenDeprivationTherapyFHIR-1.4.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Has Qualifying Encounter")] + public bool? Has_Qualifying_Encounter(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? c_(Encounter OfficeVisit) + { + CqlInterval f_ = this.Measurement_Period(context); + Period g_ = OfficeVisit?.Period; + CqlInterval h_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, g_); + bool? i_ = context.Operators.IntervalIncludesInterval(f_, h_, default); + Code j_ = OfficeVisit?.StatusElement; + Encounter.EncounterStatus? k_ = j_?.Value; + Code l_ = context.Operators.Convert>(k_); + bool? m_ = context.Operators.Equal(l_, "finished"); + bool? n_ = context.Operators.And(i_, m_); + + return n_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + public CqlInterval NormalizeInterval(CqlContext context, CqlDateTime pointInTime, CqlInterval dateTimeInterval) + { + CqlInterval a_() + { + if ((context.Operators.Not((bool?)(pointInTime is null))) ?? false) + { + CqlInterval b_ = context.Operators.Interval(pointInTime, pointInTime, true, true); + + return b_; + } + else if ((context.Operators.Not((bool?)(dateTimeInterval is null))) ?? false) + { + return dateTimeInterval; + } + else + { + return null as CqlInterval; + } + }; + + return a_(); + } + + + [CqlDeclaration("Androgen Deprivation Therapy for Urology Care Medication Active Start Dates")] + public IEnumerable Androgen_Deprivation_Therapy_for_Urology_Care_Medication_Active_Start_Dates(CqlContext context) + { + CqlValueSet a_ = this.Androgen_deprivation_therapy_for_Urology_Care(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + bool? f_(MedicationRequest ADTActive) + { + Code k_ = ADTActive?.StatusElement; + MedicationRequest.MedicationrequestStatus? l_ = k_?.Value; + string m_ = context.Operators.Convert(l_); + string[] n_ = [ + "active", + "completed", + ]; + bool? o_ = context.Operators.In(m_, n_ as IEnumerable); + Code p_ = ADTActive?.IntentElement; + MedicationRequest.MedicationRequestIntent? q_ = p_?.Value; + string r_ = context.Operators.Convert(q_); + string[] s_ = [ + "order", + "original-order", + "reflex-order", + "filler-order", + "instance-order", + ]; + bool? t_ = context.Operators.In(r_, s_ as IEnumerable); + bool? u_ = context.Operators.And(o_, t_); + + return u_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + CqlDateTime h_(MedicationRequest ADTActive) + { + List v_ = ADTActive?.DosageInstruction; + bool? w_(Dosage @this) + { + Timing bb_ = @this?.Timing; + bool? bc_ = context.Operators.Not((bool?)(bb_ is null)); + + return bc_; + }; + IEnumerable x_ = context.Operators.Where((IEnumerable)v_, w_); + Timing y_(Dosage @this) + { + Timing bd_ = @this?.Timing; + + return bd_; + }; + IEnumerable z_ = context.Operators.Select(x_, y_); + CqlDateTime aa_(Timing dosageTiming) + { + List be_ = dosageTiming?.EventElement; + IEnumerable bf_ = context.Operators.LateBoundProperty>(be_, "value"); + IEnumerable bg_ = context.Operators.ListSort(bf_, System.ComponentModel.ListSortDirection.Ascending); + CqlDateTime bh_ = context.Operators.First(bg_); + + return bh_; + }; + IEnumerable ab_ = context.Operators.Select(z_, aa_); + IEnumerable ac_ = context.Operators.Distinct(ab_); + IEnumerable ad_ = context.Operators.ListSort(ac_, System.ComponentModel.ListSortDirection.Ascending); + CqlDateTime ae_ = context.Operators.First(ad_); + bool? ag_(Dosage @this) + { + Timing bi_ = @this?.Timing; + bool? bj_ = context.Operators.Not((bool?)(bi_ is null)); + + return bj_; + }; + IEnumerable ah_ = context.Operators.Where((IEnumerable)v_, ag_); + Timing ai_(Dosage @this) + { + Timing bk_ = @this?.Timing; + + return bk_; + }; + IEnumerable aj_ = context.Operators.Select(ah_, ai_); + bool? ak_(Timing @this) + { + Timing.RepeatComponent bl_ = @this?.Repeat; + bool? bm_ = context.Operators.Not((bool?)(bl_ is null)); + + return bm_; + }; + IEnumerable al_ = context.Operators.Where(aj_, ak_); + Timing.RepeatComponent am_(Timing @this) + { + Timing.RepeatComponent bn_ = @this?.Repeat; + + return bn_; + }; + IEnumerable an_ = context.Operators.Select(al_, am_); + bool? ao_(Timing.RepeatComponent @this) + { + DataType bo_ = @this?.Bounds; + object bp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bo_); + bool? bq_ = context.Operators.Not((bool?)(bp_ is null)); + + return bq_; + }; + IEnumerable ap_ = context.Operators.Where(an_, ao_); + object aq_(Timing.RepeatComponent @this) + { + DataType br_ = @this?.Bounds; + object bs_ = FHIRHelpers_4_4_000.Instance.ToValue(context, br_); + + return bs_; + }; + IEnumerable ar_ = context.Operators.Select(ap_, aq_); + CqlInterval as_(object DoseTime) + { + CqlInterval bt_ = QICoreCommon_2_1_000.Instance.toInterval(context, DoseTime); + + return bt_; + }; + IEnumerable> at_ = context.Operators.Select>(ar_, as_); + IEnumerable> au_ = context.Operators.Distinct>(at_); + IEnumerable> av_ = context.Operators.Collapse(au_, default); + object aw_(CqlInterval @this) + { + CqlDateTime bu_ = context.Operators.Start(@this); + + return bu_; + }; + IEnumerable> ax_ = context.Operators.SortBy>(av_, aw_, System.ComponentModel.ListSortDirection.Ascending); + CqlInterval ay_ = context.Operators.First>(ax_); + CqlInterval az_ = this.NormalizeInterval(context, ae_, ay_); + CqlDateTime ba_ = QICoreCommon_2_1_000.Instance.earliest(context, az_ as object); + + return ba_; + }; + IEnumerable i_ = context.Operators.Select(g_, h_); + IEnumerable j_ = context.Operators.Distinct(i_); + + return j_; + } + + + [CqlDeclaration("Androgen Deprivation Therapy for Urology Care Medication Order Start Dates")] + public IEnumerable Androgen_Deprivation_Therapy_for_Urology_Care_Medication_Order_Start_Dates(CqlContext context) + { + CqlValueSet a_ = this.Androgen_deprivation_therapy_for_Urology_Care(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + bool? f_(MedicationRequest ADTOrder) + { + Code k_ = ADTOrder?.StatusElement; + MedicationRequest.MedicationrequestStatus? l_ = k_?.Value; + string m_ = context.Operators.Convert(l_); + string[] n_ = [ + "active", + "completed", + ]; + bool? o_ = context.Operators.In(m_, n_ as IEnumerable); + Code p_ = ADTOrder?.IntentElement; + MedicationRequest.MedicationRequestIntent? q_ = p_?.Value; + string r_ = context.Operators.Convert(q_); + string[] s_ = [ + "order", + "original-order", + "reflex-order", + "filler-order", + "instance-order", + ]; + bool? t_ = context.Operators.In(r_, s_ as IEnumerable); + bool? u_ = context.Operators.And(o_, t_); + + return u_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + CqlDateTime h_(MedicationRequest ADTOrder) + { + FhirDateTime v_ = ADTOrder?.AuthoredOnElement; + CqlDateTime w_ = context.Operators.Convert(v_); + List x_ = ADTOrder?.DosageInstruction; + bool? y_(Dosage @this) + { + Timing at_ = @this?.Timing; + bool? au_ = context.Operators.Not((bool?)(at_ is null)); + + return au_; + }; + IEnumerable z_ = context.Operators.Where((IEnumerable)x_, y_); + Timing aa_(Dosage @this) + { + Timing av_ = @this?.Timing; + + return av_; + }; + IEnumerable ab_ = context.Operators.Select(z_, aa_); + bool? ac_(Timing @this) + { + Timing.RepeatComponent aw_ = @this?.Repeat; + bool? ax_ = context.Operators.Not((bool?)(aw_ is null)); + + return ax_; + }; + IEnumerable ad_ = context.Operators.Where(ab_, ac_); + Timing.RepeatComponent ae_(Timing @this) + { + Timing.RepeatComponent ay_ = @this?.Repeat; + + return ay_; + }; + IEnumerable af_ = context.Operators.Select(ad_, ae_); + bool? ag_(Timing.RepeatComponent @this) + { + DataType az_ = @this?.Bounds; + object ba_ = FHIRHelpers_4_4_000.Instance.ToValue(context, az_); + bool? bb_ = context.Operators.Not((bool?)(ba_ is null)); + + return bb_; + }; + IEnumerable ah_ = context.Operators.Where(af_, ag_); + object ai_(Timing.RepeatComponent @this) + { + DataType bc_ = @this?.Bounds; + object bd_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bc_); + + return bd_; + }; + IEnumerable aj_ = context.Operators.Select(ah_, ai_); + CqlInterval ak_(object DoseTime) + { + CqlInterval be_ = QICoreCommon_2_1_000.Instance.toInterval(context, DoseTime); + + return be_; + }; + IEnumerable> al_ = context.Operators.Select>(aj_, ak_); + IEnumerable> am_ = context.Operators.Distinct>(al_); + IEnumerable> an_ = context.Operators.Collapse(am_, default); + object ao_(CqlInterval @this) + { + CqlDateTime bf_ = context.Operators.Start(@this); + + return bf_; + }; + IEnumerable> ap_ = context.Operators.SortBy>(an_, ao_, System.ComponentModel.ListSortDirection.Ascending); + CqlInterval aq_ = context.Operators.First>(ap_); + CqlInterval ar_ = this.NormalizeInterval(context, w_, aq_); + CqlDateTime as_ = QICoreCommon_2_1_000.Instance.earliest(context, ar_ as object); + + return as_; + }; + IEnumerable i_ = context.Operators.Select(g_, h_); + IEnumerable j_ = context.Operators.Distinct(i_); + + return j_; + } + + + [CqlDeclaration("Prostate Cancer Diagnosis")] + public IEnumerable Prostate_Cancer_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.Prostate_Cancer(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition ProstateCancer) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ProstateCancer); + CqlInterval f_ = this.Measurement_Period(context); + bool? g_ = context.Operators.Overlaps(e_, f_, default); + CodeableConcept h_ = ProstateCancer?.ClinicalStatus; + CqlConcept i_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, h_); + CqlCode j_ = QICoreCommon_2_1_000.Instance.active(context); + CqlConcept k_ = context.Operators.ConvertCodeToConcept(j_); + bool? l_ = context.Operators.Equivalent(i_, k_); + bool? m_ = context.Operators.And(g_, l_); + CodeableConcept n_ = ProstateCancer?.VerificationStatus; + CqlConcept o_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, n_); + CqlCode p_ = QICoreCommon_2_1_000.Instance.confirmed(context); + CqlConcept q_ = context.Operators.ConvertCodeToConcept(p_); + bool? r_ = context.Operators.Equivalent(o_, q_); + bool? s_ = context.Operators.And(m_, r_); + + return s_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("First ADT in 3 Months Before to 9 Months After Start of Measurement Period")] + public CqlDateTime First_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(CqlContext context) + { + IEnumerable a_ = this.Androgen_Deprivation_Therapy_for_Urology_Care_Medication_Active_Start_Dates(context); + IEnumerable b_ = this.Androgen_Deprivation_Therapy_for_Urology_Care_Medication_Order_Start_Dates(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + IEnumerable d_(CqlDateTime ADTDateTime) + { + IEnumerable h_ = this.Prostate_Cancer_Diagnosis(context); + bool? i_(Condition ProstateCancer) + { + CqlInterval m_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ProstateCancer); + bool? n_ = context.Operators.In(ADTDateTime, m_, "day"); + CqlInterval o_ = this.Measurement_Period(context); + CqlDateTime p_ = context.Operators.Start(o_); + CqlQuantity q_ = context.Operators.Quantity(3m, "months"); + CqlDateTime r_ = context.Operators.Subtract(p_, q_); + CqlDateTime t_ = context.Operators.Start(o_); + CqlQuantity u_ = context.Operators.Quantity(9m, "months"); + CqlDateTime v_ = context.Operators.Add(t_, u_); + CqlInterval w_ = context.Operators.Interval(r_, v_, true, true); + bool? x_ = context.Operators.In(ADTDateTime, w_, "day"); + bool? y_ = context.Operators.And(n_, x_); + + return y_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + CqlDateTime k_(Condition ProstateCancer) => + ADTDateTime; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable e_ = context.Operators.SelectMany(c_, d_); + IEnumerable f_ = context.Operators.ListSort(e_, System.ComponentModel.ListSortDirection.Ascending); + CqlDateTime g_ = context.Operators.First(f_); + + return g_; + } + + + [CqlDeclaration("Order for 12 Months of ADT in 3 Months Before to 9 Months After Start of Measurement Period")] + public IEnumerable Order_for_12_Months_of_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(CqlContext context) + { + CqlCode a_ = this.Injection_of_leuprolide_acetate_for_twelve_month_period__regime_therapy_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable d_(ServiceRequest OrderTwelveMonthADT) + { + CqlDateTime f_ = this.First_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(context); + CqlDateTime[] g_ = [ + f_, + ]; + bool? h_(CqlDateTime FirstADTMP) + { + FhirDateTime l_ = OrderTwelveMonthADT?.AuthoredOnElement; + CqlDateTime m_ = context.Operators.Convert(l_); + bool? n_ = context.Operators.SameOrAfter(m_, FirstADTMP, "day"); + CqlDateTime p_ = context.Operators.Convert(l_); + CqlInterval q_ = this.Measurement_Period(context); + CqlDateTime r_ = context.Operators.Start(q_); + CqlQuantity s_ = context.Operators.Quantity(3m, "months"); + CqlDateTime t_ = context.Operators.Subtract(r_, s_); + CqlDateTime v_ = context.Operators.Start(q_); + CqlQuantity w_ = context.Operators.Quantity(9m, "months"); + CqlDateTime x_ = context.Operators.Add(v_, w_); + CqlInterval y_ = context.Operators.Interval(t_, x_, true, true); + bool? z_ = context.Operators.In(p_, y_, "day"); + bool? aa_ = context.Operators.And(n_, z_); + Code ab_ = OrderTwelveMonthADT?.StatusElement; + RequestStatus? ac_ = ab_?.Value; + Code ad_ = context.Operators.Convert>(ac_); + string ae_ = context.Operators.Convert(ad_); + string[] af_ = [ + "active", + "completed", + ]; + bool? ag_ = context.Operators.In(ae_, af_ as IEnumerable); + bool? ah_ = context.Operators.And(aa_, ag_); + Code ai_ = OrderTwelveMonthADT?.IntentElement; + RequestIntent? aj_ = ai_?.Value; + Code ak_ = context.Operators.Convert>(aj_); + bool? al_ = context.Operators.Equal(ak_, "order"); + bool? am_ = context.Operators.And(ah_, al_); + FhirBoolean an_ = OrderTwelveMonthADT?.DoNotPerformElement; + bool? ao_ = an_?.Value; + bool? ap_ = context.Operators.IsTrue(ao_); + bool? aq_ = context.Operators.Not(ap_); + bool? ar_ = context.Operators.And(am_, aq_); + + return ar_; + }; + IEnumerable i_ = context.Operators.Where((IEnumerable)g_, h_); + ServiceRequest j_(CqlDateTime FirstADTMP) => + OrderTwelveMonthADT; + IEnumerable k_ = context.Operators.Select(i_, j_); + + return k_; + }; + IEnumerable e_ = context.Operators.SelectMany(c_, d_); + + return e_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + bool? a_ = this.Has_Qualifying_Encounter(context); + IEnumerable b_ = this.Order_for_12_Months_of_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(context); + bool? c_ = context.Operators.Exists(b_); + bool? d_ = context.Operators.And(a_, c_); + + return d_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Has Baseline DEXA Scan Two Years Prior to the Start of or Less than Three Months After the Start of ADT")] + public bool? Has_Baseline_DEXA_Scan_Two_Years_Prior_to_the_Start_of_or_Less_than_Three_Months_After_the_Start_of_ADT(CqlContext context) + { + CqlValueSet a_ = this.DEXA_Dual_Energy_Xray_Absorptiometry__Bone_Density_for_Urology_Care(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable c_(ServiceRequest DEXAOrdered) + { + IEnumerable o_ = this.Order_for_12_Months_of_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(context); + bool? p_(ServiceRequest OrderTwelveMonthsADT) + { + FhirDateTime t_ = DEXAOrdered?.AuthoredOnElement; + CqlDateTime u_ = context.Operators.Convert(t_); + FhirDateTime v_ = OrderTwelveMonthsADT?.AuthoredOnElement; + CqlDateTime w_ = context.Operators.Convert(v_); + CqlDateTime y_ = context.Operators.Convert(v_); + CqlQuantity z_ = context.Operators.Quantity(3m, "months"); + CqlDateTime aa_ = context.Operators.Add(y_, z_); + CqlInterval ab_ = context.Operators.Interval(w_, aa_, true, true); + bool? ac_ = context.Operators.In(u_, ab_, "day"); + CqlDateTime ae_ = context.Operators.Convert(v_); + bool? af_ = context.Operators.Not((bool?)(ae_ is null)); + bool? ag_ = context.Operators.And(ac_, af_); + CqlDateTime ai_ = context.Operators.Convert(t_); + CqlDateTime ak_ = context.Operators.Convert(v_); + CqlQuantity al_ = context.Operators.Quantity(2m, "years"); + CqlDateTime am_ = context.Operators.Subtract(ak_, al_); + CqlDateTime ao_ = context.Operators.Convert(v_); + CqlInterval ap_ = context.Operators.Interval(am_, ao_, true, false); + bool? aq_ = context.Operators.In(ai_, ap_, "day"); + CqlDateTime as_ = context.Operators.Convert(v_); + bool? at_ = context.Operators.Not((bool?)(as_ is null)); + bool? au_ = context.Operators.And(aq_, at_); + bool? av_ = context.Operators.Or(ag_, au_); + + return av_; + }; + IEnumerable q_ = context.Operators.Where(o_, p_); + ServiceRequest r_(ServiceRequest OrderTwelveMonthsADT) => + DEXAOrdered; + IEnumerable s_ = context.Operators.Select(q_, r_); + + return s_; + }; + IEnumerable d_ = context.Operators.SelectMany(b_, c_); + bool? e_(ServiceRequest DEXAOrdered) + { + Code aw_ = DEXAOrdered?.StatusElement; + RequestStatus? ax_ = aw_?.Value; + Code ay_ = context.Operators.Convert>(ax_); + string az_ = context.Operators.Convert(ay_); + string[] ba_ = [ + "active", + "completed", + ]; + bool? bb_ = context.Operators.In(az_, ba_ as IEnumerable); + Code bc_ = DEXAOrdered?.IntentElement; + RequestIntent? bd_ = bc_?.Value; + Code be_ = context.Operators.Convert>(bd_); + bool? bf_ = context.Operators.Equal(be_, "order"); + bool? bg_ = context.Operators.And(bb_, bf_); + FhirBoolean bh_ = DEXAOrdered?.DoNotPerformElement; + bool? bi_ = bh_?.Value; + bool? bj_ = context.Operators.IsTrue(bi_); + bool? bk_ = context.Operators.Not(bj_); + bool? bl_ = context.Operators.And(bg_, bk_); + + return bl_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + IEnumerable h_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable i_(Observation DEXAPerformed) + { + IEnumerable bm_ = this.Order_for_12_Months_of_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(context); + bool? bn_(ServiceRequest OrderTwelveMonthsADT) + { + DataType br_ = DEXAPerformed?.Effective; + object bs_ = FHIRHelpers_4_4_000.Instance.ToValue(context, br_); + CqlInterval bt_ = QICoreCommon_2_1_000.Instance.toInterval(context, bs_); + CqlDateTime bu_ = context.Operators.Start(bt_); + FhirDateTime bv_ = OrderTwelveMonthsADT?.AuthoredOnElement; + CqlDateTime bw_ = context.Operators.Convert(bv_); + CqlDateTime by_ = context.Operators.Convert(bv_); + CqlQuantity bz_ = context.Operators.Quantity(3m, "months"); + CqlDateTime ca_ = context.Operators.Add(by_, bz_); + CqlInterval cb_ = context.Operators.Interval(bw_, ca_, true, true); + bool? cc_ = context.Operators.In(bu_, cb_, "day"); + CqlDateTime ce_ = context.Operators.Convert(bv_); + bool? cf_ = context.Operators.Not((bool?)(ce_ is null)); + bool? cg_ = context.Operators.And(cc_, cf_); + object ci_ = FHIRHelpers_4_4_000.Instance.ToValue(context, br_); + CqlInterval cj_ = QICoreCommon_2_1_000.Instance.toInterval(context, ci_); + CqlDateTime ck_ = context.Operators.End(cj_); + CqlDateTime cm_ = context.Operators.Convert(bv_); + CqlQuantity cn_ = context.Operators.Quantity(2m, "years"); + CqlDateTime co_ = context.Operators.Subtract(cm_, cn_); + CqlDateTime cq_ = context.Operators.Convert(bv_); + CqlInterval cr_ = context.Operators.Interval(co_, cq_, true, false); + bool? cs_ = context.Operators.In(ck_, cr_, "day"); + CqlDateTime cu_ = context.Operators.Convert(bv_); + bool? cv_ = context.Operators.Not((bool?)(cu_ is null)); + bool? cw_ = context.Operators.And(cs_, cv_); + bool? cx_ = context.Operators.Or(cg_, cw_); + + return cx_; + }; + IEnumerable bo_ = context.Operators.Where(bm_, bn_); + Observation bp_(ServiceRequest OrderTwelveMonthsADT) => + DEXAPerformed; + IEnumerable bq_ = context.Operators.Select(bo_, bp_); + + return bq_; + }; + IEnumerable j_ = context.Operators.SelectMany(h_, i_); + bool? k_(Observation DEXAPerformed) + { + Code cy_ = DEXAPerformed?.StatusElement; + ObservationStatus? cz_ = cy_?.Value; + Code da_ = context.Operators.Convert>(cz_); + string db_ = context.Operators.Convert(da_); + string[] dc_ = [ + "final", + "amended", + "corrected", + ]; + bool? dd_ = context.Operators.In(db_, dc_ as IEnumerable); + + return dd_; + }; + IEnumerable l_ = context.Operators.Where(j_, k_); + IEnumerable m_ = context.Operators.Union(f_ as IEnumerable, l_ as IEnumerable); + bool? n_ = context.Operators.Exists(m_); + + return n_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + bool? a_ = this.Has_Baseline_DEXA_Scan_Two_Years_Prior_to_the_Start_of_or_Less_than_Three_Months_After_the_Start_of_ADT(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exception")] + [CqlTag("commentedOut", "\"No Bone Density Scan Ordered Due to Patient Refusal\" )")] + [CqlTag("commmentedOutReason", "Negation issue related to https://github.com/cqframework/cql-execution/issues/296, which is tied to https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1455. Due to this being the only logic in population, created a 'false' placeholder")] + public bool? Denominator_Exception(CqlContext context) => + false; + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("No Bone Density Scan Ordered Due to Patient Refusal")] + public IEnumerable No_Bone_Density_Scan_Ordered_Due_to_Patient_Refusal(CqlContext context) + { + CqlValueSet a_ = this.DEXA_Dual_Energy_Xray_Absorptiometry__Bone_Density_for_Urology_Care(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicenotrequested")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicenotrequested")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_(ServiceRequest DEXANotOrdered) + { + IEnumerable h_ = this.Order_for_12_Months_of_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(context); + bool? i_(ServiceRequest OrderTwelveMonthsADT) + { + FhirDateTime m_ = DEXANotOrdered?.AuthoredOnElement; + CqlDateTime n_ = context.Operators.Convert(m_); + FhirDateTime o_ = OrderTwelveMonthsADT?.AuthoredOnElement; + CqlDateTime p_ = context.Operators.Convert(o_); + CqlDateTime r_ = context.Operators.Convert(o_); + CqlQuantity s_ = context.Operators.Quantity(3m, "months"); + CqlDateTime t_ = context.Operators.Add(r_, s_); + CqlInterval u_ = context.Operators.Interval(p_, t_, true, true); + bool? v_ = context.Operators.In(n_, u_, "day"); + CqlDateTime x_ = context.Operators.Convert(o_); + bool? y_ = context.Operators.Not((bool?)(x_ is null)); + bool? z_ = context.Operators.And(v_, y_); + bool? aa_(Extension @this) + { + string aj_ = @this?.Url; + FhirString ak_ = context.Operators.Convert(aj_); + string al_ = FHIRHelpers_4_4_000.Instance.ToString(context, ak_); + bool? am_ = context.Operators.Equal(al_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-doNotPerformReason"); + + return am_; + }; + IEnumerable ab_ = context.Operators.Where((IEnumerable)(DEXANotOrdered is DomainResource + ? (DEXANotOrdered as DomainResource).Extension + : default), aa_); + object ac_(Extension @this) + { + DataType an_ = @this?.Value; + + return an_; + }; + IEnumerable ad_ = context.Operators.Select(ab_, ac_); + object ae_ = context.Operators.SingletonFrom(ad_); + CqlConcept af_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, ae_ as CodeableConcept); + CqlValueSet ag_ = this.Patient_Declined(context); + bool? ah_ = context.Operators.ConceptInValueSet(af_, ag_); + bool? ai_ = context.Operators.And(z_, ah_); + + return ai_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + ServiceRequest k_(ServiceRequest OrderTwelveMonthsADT) => + DEXANotOrdered; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable g_ = context.Operators.SelectMany(e_, f_); + + return g_; + } + + + [CqlDeclaration("No Bone Density Scan Performed Due to Patient Refusal")] + public IEnumerable No_Bone_Density_Scan_Performed_Due_to_Patient_Refusal(CqlContext context) + { + CqlValueSet a_ = this.DEXA_Dual_Energy_Xray_Absorptiometry__Bone_Density_for_Urology_Care(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observationnotdone")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observationnotdone")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_(Observation DEXANotPerformed) + { + IEnumerable h_ = this.Order_for_12_Months_of_ADT_in_3_Months_Before_to_9_Months_After_Start_of_Measurement_Period(context); + bool? i_(ServiceRequest OrderTwelveMonthsADT) + { + Instant m_ = DEXANotPerformed?.IssuedElement; + DateTimeOffset? n_ = m_?.Value; + CqlDateTime o_ = context.Operators.Convert(n_); + FhirDateTime p_ = OrderTwelveMonthsADT?.AuthoredOnElement; + CqlDateTime q_ = context.Operators.Convert(p_); + CqlDateTime s_ = context.Operators.Convert(p_); + CqlQuantity t_ = context.Operators.Quantity(3m, "months"); + CqlDateTime u_ = context.Operators.Add(s_, t_); + CqlInterval v_ = context.Operators.Interval(q_, u_, true, true); + bool? w_ = context.Operators.In(o_, v_, "day"); + CqlDateTime y_ = context.Operators.Convert(p_); + bool? z_ = context.Operators.Not((bool?)(y_ is null)); + bool? aa_ = context.Operators.And(w_, z_); + bool? ab_(Extension @this) + { + string ak_ = @this?.Url; + FhirString al_ = context.Operators.Convert(ak_); + string am_ = FHIRHelpers_4_4_000.Instance.ToString(context, al_); + bool? an_ = context.Operators.Equal(am_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-notDoneReason"); + + return an_; + }; + IEnumerable ac_ = context.Operators.Where((IEnumerable)(DEXANotPerformed is DomainResource + ? (DEXANotPerformed as DomainResource).Extension + : default), ab_); + object ad_(Extension @this) + { + DataType ao_ = @this?.Value; + + return ao_; + }; + IEnumerable ae_ = context.Operators.Select(ac_, ad_); + object af_ = context.Operators.SingletonFrom(ae_); + CqlConcept ag_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, af_ as CodeableConcept); + CqlValueSet ah_ = this.Patient_Declined(context); + bool? ai_ = context.Operators.ConceptInValueSet(ag_, ah_); + bool? aj_ = context.Operators.And(aa_, ai_); + + return aj_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Observation k_(ServiceRequest OrderTwelveMonthsADT) => + DEXANotPerformed; + IEnumerable l_ = context.Operators.Select(j_, k_); + + return l_; + }; + IEnumerable g_ = context.Operators.SelectMany(e_, f_); + + return g_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/BreastCancerScreeningFHIR-0.0.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/BreastCancerScreeningFHIR-0.0.001.g.cs new file mode 100644 index 000000000..218f67137 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/BreastCancerScreeningFHIR-0.0.001.g.cs @@ -0,0 +1,487 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("BreastCancerScreeningFHIR", "0.0.001")] +public partial class BreastCancerScreeningFHIR_0_0_001 : ILibrary, ISingleton +{ + private BreastCancerScreeningFHIR_0_0_001() {} + + public static BreastCancerScreeningFHIR_0_0_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "BreastCancerScreeningFHIR"; + public string Version => "0.0.001"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance, AdultOutpatientEncounters_4_11_000.Instance, Hospice_6_12_000.Instance, Status_1_8_000.Instance, PalliativeCare_1_11_000.Instance, AdvancedIllnessandFrailty_1_16_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Bilateral Mastectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1005")] + public CqlValueSet Bilateral_Mastectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1005", default); + + + [CqlDeclaration("History of bilateral mastectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1068")] + public CqlValueSet History_of_bilateral_mastectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1068", default); + + + [CqlDeclaration("Mammography")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1018")] + public CqlValueSet Mammography(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1018", default); + + + [CqlDeclaration("Status Post Left Mastectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1069")] + public CqlValueSet Status_Post_Left_Mastectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1069", default); + + + [CqlDeclaration("Status Post Right Mastectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1070")] + public CqlValueSet Status_Post_Right_Mastectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1070", default); + + + [CqlDeclaration("Unilateral Mastectomy Left")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1133")] + public CqlValueSet Unilateral_Mastectomy_Left(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1133", default); + + + [CqlDeclaration("Unilateral Mastectomy Right")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1134")] + public CqlValueSet Unilateral_Mastectomy_Right(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1134", default); + + + [CqlDeclaration("Unilateral Mastectomy, Unspecified Laterality")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1071")] + public CqlValueSet Unilateral_Mastectomy__Unspecified_Laterality(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1071", default); + + + [CqlDeclaration("Female")] + public CqlCode Female(CqlContext context) => + new CqlCode("F", "http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender", default, default); + + + [CqlDeclaration("Left (qualifier value)")] + public CqlCode Left__qualifier_value_(CqlContext context) => + new CqlCode("7771000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Right (qualifier value)")] + public CqlCode Right__qualifier_value_(CqlContext context) => + new CqlCode("24028007", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("AdministrativeGender")] + public CqlCode[] AdministrativeGender(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("F", "http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("7771000", "http://snomed.info/sct", default, default), + new CqlCode("24028007", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [] +; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("BreastCancerScreeningFHIR-0.0.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(52, 74, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + Code l_ = a_?.GenderElement; + AdministrativeGender? m_ = l_?.Value; + string n_ = context.Operators.Convert(m_); + bool? o_ = context.Operators.Equal(n_, "female"); + bool? p_ = context.Operators.And(j_, o_); + IEnumerable q_ = AdultOutpatientEncounters_4_11_000.Instance.Qualifying_Encounters(context); + bool? r_ = context.Operators.Exists(q_); + bool? s_ = context.Operators.And(p_, r_); + + return s_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Right Mastectomy Diagnosis")] + public IEnumerable Right_Mastectomy_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.Status_Post_Right_Mastectomy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet c_ = this.Unilateral_Mastectomy__Unspecified_Laterality(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? e_(Condition UnilateralMastectomyDiagnosis) + { + List j_ = UnilateralMastectomyDiagnosis?.BodySite; + CqlConcept k_(CodeableConcept @this) + { + CqlConcept p_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return p_; + }; + IEnumerable l_ = context.Operators.Select((IEnumerable)j_, k_); + bool? m_(CqlConcept S) + { + CqlCode q_ = this.Right__qualifier_value_(context); + CqlConcept r_ = context.Operators.ConvertCodeToConcept(q_); + bool? s_ = context.Operators.Equivalent(S, r_); + + return s_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + bool? o_ = context.Operators.Exists(n_); + + return o_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + IEnumerable g_ = context.Operators.Union(b_, f_); + bool? h_(Condition RightMastectomy) + { + CqlInterval t_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, RightMastectomy); + CqlDateTime u_ = context.Operators.Start(t_); + CqlInterval v_ = this.Measurement_Period(context); + CqlDateTime w_ = context.Operators.End(v_); + bool? x_ = context.Operators.SameOrBefore(u_, w_, default); + + return x_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + + return i_; + } + + + [CqlDeclaration("Right Mastectomy Procedure")] + public IEnumerable Right_Mastectomy_Procedure(CqlContext context) + { + CqlValueSet a_ = this.Unilateral_Mastectomy_Right(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure UnilateralMastectomyRightPerformed) + { + DataType f_ = UnilateralMastectomyRightPerformed?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.End(j_); + bool? l_ = context.Operators.SameOrBefore(i_, k_, default); + + return l_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Left Mastectomy Diagnosis")] + public IEnumerable Left_Mastectomy_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.Status_Post_Left_Mastectomy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet c_ = this.Unilateral_Mastectomy__Unspecified_Laterality(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? e_(Condition UnilateralMastectomyDiagnosis) + { + List j_ = UnilateralMastectomyDiagnosis?.BodySite; + CqlConcept k_(CodeableConcept @this) + { + CqlConcept p_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return p_; + }; + IEnumerable l_ = context.Operators.Select((IEnumerable)j_, k_); + bool? m_(CqlConcept S) + { + CqlCode q_ = this.Left__qualifier_value_(context); + CqlConcept r_ = context.Operators.ConvertCodeToConcept(q_); + bool? s_ = context.Operators.Equivalent(S, r_); + + return s_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + bool? o_ = context.Operators.Exists(n_); + + return o_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + IEnumerable g_ = context.Operators.Union(b_, f_); + bool? h_(Condition LeftMastectomy) + { + CqlInterval t_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, LeftMastectomy); + CqlDateTime u_ = context.Operators.Start(t_); + CqlInterval v_ = this.Measurement_Period(context); + CqlDateTime w_ = context.Operators.End(v_); + bool? x_ = context.Operators.SameOrBefore(u_, w_, default); + + return x_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + + return i_; + } + + + [CqlDeclaration("Left Mastectomy Procedure")] + public IEnumerable Left_Mastectomy_Procedure(CqlContext context) + { + CqlValueSet a_ = this.Unilateral_Mastectomy_Left(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure UnilateralMastectomyLeftPerformed) + { + DataType f_ = UnilateralMastectomyLeftPerformed?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.End(j_); + bool? l_ = context.Operators.SameOrBefore(i_, k_, default); + + return l_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Bilateral Mastectomy Diagnosis")] + public IEnumerable Bilateral_Mastectomy_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.History_of_bilateral_mastectomy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition BilateralMastectomyHistory) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, BilateralMastectomyHistory); + CqlDateTime f_ = context.Operators.Start(e_); + CqlInterval g_ = this.Measurement_Period(context); + CqlDateTime h_ = context.Operators.End(g_); + bool? i_ = context.Operators.SameOrBefore(f_, h_, default); + + return i_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Bilateral Mastectomy Procedure")] + public IEnumerable Bilateral_Mastectomy_Procedure(CqlContext context) + { + CqlValueSet a_ = this.Bilateral_Mastectomy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure BilateralMastectomyPerformed) + { + DataType f_ = BilateralMastectomyPerformed?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.End(j_); + bool? l_ = context.Operators.SameOrBefore(i_, k_, default); + + return l_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + IEnumerable b_ = this.Right_Mastectomy_Diagnosis(context); + bool? c_ = context.Operators.Exists(b_); + IEnumerable d_ = this.Right_Mastectomy_Procedure(context); + bool? e_ = context.Operators.Exists(d_); + bool? f_ = context.Operators.Or(c_, e_); + IEnumerable g_ = this.Left_Mastectomy_Diagnosis(context); + bool? h_ = context.Operators.Exists(g_); + IEnumerable i_ = this.Left_Mastectomy_Procedure(context); + bool? j_ = context.Operators.Exists(i_); + bool? k_ = context.Operators.Or(h_, j_); + bool? l_ = context.Operators.And(f_, k_); + bool? m_ = context.Operators.Or(a_, l_); + IEnumerable n_ = this.Bilateral_Mastectomy_Diagnosis(context); + bool? o_ = context.Operators.Exists(n_); + bool? p_ = context.Operators.Or(m_, o_); + IEnumerable q_ = this.Bilateral_Mastectomy_Procedure(context); + bool? r_ = context.Operators.Exists(q_); + bool? s_ = context.Operators.Or(p_, r_); + bool? t_ = AdvancedIllnessandFrailty_1_16_000.Instance.Is_Age_66_or_Older_with_Advanced_Illness_and_Frailty(context); + bool? u_ = context.Operators.Or(s_, t_); + bool? v_ = AdvancedIllnessandFrailty_1_16_000.Instance.Is_Age_66_or_Older_Living_Long_Term_in_a_Nursing_Home(context); + bool? w_ = context.Operators.Or(u_, v_); + bool? x_ = PalliativeCare_1_11_000.Instance.Has_Palliative_Care_in_the_Measurement_Period(context); + bool? y_ = context.Operators.Or(w_, x_); + + return y_; + } + + + [CqlDeclaration("October 1 Two Years Prior to the Measurement Period")] + public CqlDateTime October_1_Two_Years_Prior_to_the_Measurement_Period(CqlContext context) + { + CqlInterval a_ = this.Measurement_Period(context); + CqlDateTime b_ = context.Operators.Start(a_); + int? c_ = context.Operators.DateTimeComponentFrom(b_, "year"); + int? d_ = context.Operators.Subtract(c_, 2); + decimal? e_ = context.Operators.ConvertIntegerToDecimal(0); + CqlDateTime f_ = context.Operators.DateTime(d_, 10, 1, 0, 0, 0, 0, e_); + + return f_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + CqlValueSet a_ = this.Mammography(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isDiagnosticStudyPerformed(context, b_); + bool? d_(Observation Mammogram) + { + DataType g_ = Mammogram?.Effective; + object h_ = FHIRHelpers_4_4_000.Instance.ToValue(context, g_); + CqlInterval i_ = QICoreCommon_2_1_000.Instance.toInterval(context, h_); + CqlDateTime j_ = context.Operators.End(i_); + CqlDateTime k_ = this.October_1_Two_Years_Prior_to_the_Measurement_Period(context); + CqlInterval l_ = this.Measurement_Period(context); + CqlDateTime m_ = context.Operators.End(l_); + CqlInterval n_ = context.Operators.Interval(k_, m_, true, true); + bool? o_ = context.Operators.In(j_, n_, "day"); + + return o_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + + return f_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/CQMCommon-2.2.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CQMCommon-2.2.000.g.cs new file mode 100644 index 000000000..411386796 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CQMCommon-2.2.000.g.cs @@ -0,0 +1,3297 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("CQMCommon", "2.2.000")] +public partial class CQMCommon_2_2_000 : ILibrary, ISingleton +{ + private CQMCommon_2_2_000() {} + + public static CQMCommon_2_2_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "CQMCommon"; + public string Version => "2.2.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Emergency Department Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292")] + public CqlValueSet Emergency_Department_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.292", default); + + + [CqlDeclaration("Encounter Inpatient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307")] + public CqlValueSet Encounter_Inpatient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307", default); + + + [CqlDeclaration("Intensive Care Unit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1029.206")] + public CqlValueSet Intensive_Care_Unit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1029.206", default); + + + [CqlDeclaration("Observation Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143")] + public CqlValueSet Observation_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1111.143", default); + + + [CqlDeclaration("Outpatient Surgery Service")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.38")] + public CqlValueSet Outpatient_Surgery_Service(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.38", default); + + + [CqlDeclaration("Present on Admission or Clinically Undetermined")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1147.197")] + public CqlValueSet Present_on_Admission_or_Clinically_Undetermined(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1147.197", default); + + + [CqlDeclaration("Billing")] + public CqlCode Billing(CqlContext context) => + new CqlCode("billing", "http://terminology.hl7.org/CodeSystem/diagnosis-role", default, default); + + + [CqlDeclaration("DiagnosisRole")] + public CqlCode[] DiagnosisRole(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("billing", "http://terminology.hl7.org/CodeSystem/diagnosis-role", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, default); + CqlDateTime b_ = context.Operators.DateTime(2026, 1, 1, 0, 0, 0, 0, default); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, false); + object d_ = context.ResolveParameter("CQMCommon-2.2.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Inpatient Encounter")] + public IEnumerable Inpatient_Encounter(CqlContext context) + { + CqlValueSet a_ = this.Encounter_Inpatient(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? c_(Encounter EncounterInpatient) + { + Code e_ = EncounterInpatient?.StatusElement; + Encounter.EncounterStatus? f_ = e_?.Value; + Code g_ = context.Operators.Convert>(f_); + bool? h_ = context.Operators.Equal(g_, "finished"); + Period i_ = EncounterInpatient?.Period; + CqlInterval j_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, i_); + CqlDateTime k_ = context.Operators.End(j_); + CqlInterval l_ = this.Measurement_Period(context); + bool? m_ = context.Operators.In(k_, l_, "day"); + bool? n_ = context.Operators.And(h_, m_); + + return n_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + public CqlInterval ToDateInterval(CqlContext context, CqlInterval period) + { + CqlDateTime a_ = context.Operators.Start(period); + CqlDate b_ = context.Operators.DateFrom(a_); + CqlDateTime c_ = context.Operators.End(period); + CqlDate d_ = context.Operators.DateFrom(c_); + CqlInterval e_ = context.Operators.Interval(b_, d_, true, true); + + return e_; + } + + + public int? LengthInDays(CqlContext context, CqlInterval Value) + { + CqlDateTime a_ = context.Operators.Start(Value); + CqlDateTime b_ = context.Operators.End(Value); + int? c_ = context.Operators.DifferenceBetween(a_, b_, "day"); + + return c_; + } + + + public int? lengthInDays(CqlContext context, CqlInterval Value) + { + CqlDateTime a_ = context.Operators.Start(Value); + CqlDateTime b_ = context.Operators.End(Value); + int? c_ = context.Operators.DifferenceBetween(a_, b_, "day"); + + return c_; + } + + + public Encounter ED_Visit(CqlContext context, Encounter TheEncounter) + { + CqlValueSet a_ = this.Emergency_Department_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? c_(Encounter EDVisit) + { + Code h_ = EDVisit?.StatusElement; + Encounter.EncounterStatus? i_ = h_?.Value; + Code j_ = context.Operators.Convert>(i_); + bool? k_ = context.Operators.Equal(j_, "finished"); + Period l_ = EDVisit?.Period; + CqlInterval m_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + CqlDateTime n_ = context.Operators.End(m_); + Period o_ = TheEncounter?.Period; + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime q_ = context.Operators.Start(p_); + CqlQuantity r_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime s_ = context.Operators.Subtract(q_, r_); + CqlInterval u_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime v_ = context.Operators.Start(u_); + CqlInterval w_ = context.Operators.Interval(s_, v_, true, true); + bool? x_ = context.Operators.In(n_, w_, default); + CqlInterval z_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime aa_ = context.Operators.Start(z_); + bool? ab_ = context.Operators.Not((bool?)(aa_ is null)); + bool? ac_ = context.Operators.And(x_, ab_); + bool? ad_ = context.Operators.And(k_, ac_); + + return ad_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + object e_(Encounter @this) + { + Period ae_ = @this?.Period; + CqlInterval af_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ae_); + CqlDateTime ag_ = context.Operators.End(af_); + + return ag_; + }; + IEnumerable f_ = context.Operators.SortBy(d_, e_, System.ComponentModel.ListSortDirection.Ascending); + Encounter g_ = context.Operators.Last(f_); + + return g_; + } + + + public Encounter edVisit(CqlContext context, Encounter TheEncounter) + { + CqlValueSet a_ = this.Emergency_Department_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? c_(Encounter EDVisit) + { + Code h_ = EDVisit?.StatusElement; + Encounter.EncounterStatus? i_ = h_?.Value; + Code j_ = context.Operators.Convert>(i_); + bool? k_ = context.Operators.Equal(j_, "finished"); + Period l_ = EDVisit?.Period; + CqlInterval m_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, l_); + CqlDateTime n_ = context.Operators.End(m_); + Period o_ = TheEncounter?.Period; + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime q_ = context.Operators.Start(p_); + CqlQuantity r_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime s_ = context.Operators.Subtract(q_, r_); + CqlInterval u_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime v_ = context.Operators.Start(u_); + CqlInterval w_ = context.Operators.Interval(s_, v_, true, true); + bool? x_ = context.Operators.In(n_, w_, default); + CqlInterval z_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime aa_ = context.Operators.Start(z_); + bool? ab_ = context.Operators.Not((bool?)(aa_ is null)); + bool? ac_ = context.Operators.And(x_, ab_); + bool? ad_ = context.Operators.And(k_, ac_); + + return ad_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + object e_(Encounter @this) + { + Period ae_ = @this?.Period; + CqlInterval af_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ae_); + CqlDateTime ag_ = context.Operators.End(af_); + + return ag_; + }; + IEnumerable f_ = context.Operators.SortBy(d_, e_, System.ComponentModel.ListSortDirection.Ascending); + Encounter g_ = context.Operators.Last(f_); + + return g_; + } + + + public CqlInterval Hospitalization(CqlContext context, Encounter TheEncounter) + { + Encounter a_ = this.ED_Visit(context, TheEncounter); + Encounter[] b_ = [ + a_, + ]; + CqlInterval c_(Encounter X) + { + CqlInterval g_() + { + if (X is null) + { + Period h_ = TheEncounter?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + + return i_; + } + else + { + Period j_ = X?.Period; + CqlInterval k_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, j_); + CqlDateTime l_ = context.Operators.Start(k_); + Period m_ = TheEncounter?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.End(n_); + CqlInterval p_ = context.Operators.Interval(l_, o_, true, false); + + return p_; + } + }; + + return g_(); + }; + IEnumerable> d_ = context.Operators.Select>((IEnumerable)b_, c_); + IEnumerable> e_ = context.Operators.Distinct>(d_); + CqlInterval f_ = context.Operators.SingletonFrom>(e_); + + return f_; + } + + + public CqlInterval hospitalization(CqlContext context, Encounter TheEncounter) + { + Encounter a_ = this.edVisit(context, TheEncounter); + Encounter[] b_ = [ + a_, + ]; + CqlInterval c_(Encounter X) + { + CqlInterval g_() + { + if (X is null) + { + Period h_ = TheEncounter?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + + return i_; + } + else + { + Period j_ = X?.Period; + CqlInterval k_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, j_); + CqlDateTime l_ = context.Operators.Start(k_); + Period m_ = TheEncounter?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.End(n_); + CqlInterval p_ = context.Operators.Interval(l_, o_, true, true); + + return p_; + } + }; + + return g_(); + }; + IEnumerable> d_ = context.Operators.Select>((IEnumerable)b_, c_); + IEnumerable> e_ = context.Operators.Distinct>(d_); + CqlInterval f_ = context.Operators.SingletonFrom>(e_); + + return f_; + } + + + public IEnumerable Hospitalization_Locations(CqlContext context, Encounter TheEncounter) + { + Encounter a_ = this.ED_Visit(context, TheEncounter); + Encounter[] b_ = [ + a_, + ]; + IEnumerable c_(Encounter EDEncounter) + { + IEnumerable g_() + { + if (EDEncounter is null) + { + List h_ = TheEncounter?.Location; + + return (IEnumerable)h_; + } + else + { + List i_ = EDEncounter?.Location; + List j_ = TheEncounter?.Location; + IEnumerable[] k_ = [ + (IEnumerable)i_, + (IEnumerable)j_, + ]; + IEnumerable l_ = context.Operators.Flatten(k_ as IEnumerable>); + + return l_; + } + }; + + return g_(); + }; + IEnumerable> d_ = context.Operators.Select>((IEnumerable)b_, c_); + IEnumerable> e_ = context.Operators.Distinct>(d_); + IEnumerable f_ = context.Operators.SingletonFrom>(e_); + + return f_; + } + + + public IEnumerable hospitalizationLocations(CqlContext context, Encounter TheEncounter) + { + Encounter a_ = this.edVisit(context, TheEncounter); + Encounter[] b_ = [ + a_, + ]; + IEnumerable c_(Encounter EDEncounter) + { + IEnumerable g_() + { + if (EDEncounter is null) + { + List h_ = TheEncounter?.Location; + + return (IEnumerable)h_; + } + else + { + List i_ = EDEncounter?.Location; + List j_ = TheEncounter?.Location; + IEnumerable[] k_ = [ + (IEnumerable)i_, + (IEnumerable)j_, + ]; + IEnumerable l_ = context.Operators.Flatten(k_ as IEnumerable>); + + return l_; + } + }; + + return g_(); + }; + IEnumerable> d_ = context.Operators.Select>((IEnumerable)b_, c_); + IEnumerable> e_ = context.Operators.Distinct>(d_); + IEnumerable f_ = context.Operators.SingletonFrom>(e_); + + return f_; + } + + + public int? Hospitalization_Length_of_Stay(CqlContext context, Encounter TheEncounter) + { + CqlInterval a_ = this.Hospitalization(context, TheEncounter); + int? b_ = this.LengthInDays(context, a_); + + return b_; + } + + + public int? hospitalizationLengthOfStay(CqlContext context, Encounter TheEncounter) + { + CqlInterval a_ = this.hospitalization(context, TheEncounter); + int? b_ = this.lengthInDays(context, a_); + + return b_; + } + + + public CqlDateTime Hospital_Admission_Time(CqlContext context, Encounter TheEncounter) + { + CqlInterval a_ = this.Hospitalization(context, TheEncounter); + CqlDateTime b_ = context.Operators.Start(a_); + + return b_; + } + + + public CqlDateTime hospitalAdmissionTime(CqlContext context, Encounter TheEncounter) + { + CqlInterval a_ = this.hospitalization(context, TheEncounter); + CqlDateTime b_ = context.Operators.Start(a_); + + return b_; + } + + + public CqlDateTime Hospital_Discharge_Time(CqlContext context, Encounter TheEncounter) + { + Period a_ = TheEncounter?.Period; + CqlInterval b_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, a_); + CqlDateTime c_ = context.Operators.End(b_); + + return c_; + } + + + public CqlDateTime hospitalDischargeTime(CqlContext context, Encounter TheEncounter) + { + Period a_ = TheEncounter?.Period; + CqlInterval b_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, a_); + CqlDateTime c_ = context.Operators.End(b_); + + return c_; + } + + + public CqlDateTime Hospital_Arrival_Time(CqlContext context, Encounter TheEncounter) + { + IEnumerable a_ = this.Hospitalization_Locations(context, TheEncounter); + object b_(Encounter.LocationComponent @this) + { + Period h_ = @this?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlDateTime j_ = context.Operators.Start(i_); + + return j_; + }; + IEnumerable c_ = context.Operators.SortBy(a_, b_, System.ComponentModel.ListSortDirection.Ascending); + Encounter.LocationComponent d_ = context.Operators.First(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.Start(f_); + + return g_; + } + + + public CqlDateTime hospitalArrivalTime(CqlContext context, Encounter TheEncounter) + { + IEnumerable a_ = this.hospitalizationLocations(context, TheEncounter); + object b_(Encounter.LocationComponent @this) + { + Period h_ = @this?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlDateTime j_ = context.Operators.Start(i_); + + return j_; + }; + IEnumerable c_ = context.Operators.SortBy(a_, b_, System.ComponentModel.ListSortDirection.Ascending); + Encounter.LocationComponent d_ = context.Operators.First(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.Start(f_); + + return g_; + } + + + public CqlDateTime Hospital_Departure_Time(CqlContext context, Encounter TheEncounter) + { + IEnumerable a_ = this.Hospitalization_Locations(context, TheEncounter); + object b_(Encounter.LocationComponent @this) + { + Period h_ = @this?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlDateTime j_ = context.Operators.Start(i_); + + return j_; + }; + IEnumerable c_ = context.Operators.SortBy(a_, b_, System.ComponentModel.ListSortDirection.Ascending); + Encounter.LocationComponent d_ = context.Operators.Last(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.End(f_); + + return g_; + } + + + public CqlDateTime hospitalDepartureTime(CqlContext context, Encounter TheEncounter) + { + IEnumerable a_ = this.hospitalizationLocations(context, TheEncounter); + object b_(Encounter.LocationComponent @this) + { + Period h_ = @this?.Period; + CqlInterval i_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, h_); + CqlDateTime j_ = context.Operators.Start(i_); + + return j_; + }; + IEnumerable c_ = context.Operators.SortBy(a_, b_, System.ComponentModel.ListSortDirection.Ascending); + Encounter.LocationComponent d_ = context.Operators.Last(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.End(f_); + + return g_; + } + + + public Location GetLocation(CqlContext context, ResourceReference reference) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-location")); + bool? b_(Location L) + { + Id e_ = L?.IdElement; + string f_ = e_?.Value; + FhirString g_ = reference?.ReferenceElement; + string h_ = g_?.Value; + string i_ = QICoreCommon_2_1_000.Instance.getId(context, h_); + bool? j_ = context.Operators.Equal(f_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Location d_ = context.Operators.SingletonFrom(c_); + + return d_; + } + + + public CqlDateTime Emergency_Department_Arrival_Time(CqlContext context, Encounter TheEncounter) + { + IEnumerable a_ = this.Hospitalization_Locations(context, TheEncounter); + bool? b_(Encounter.LocationComponent HospitalLocation) + { + ResourceReference h_ = HospitalLocation?.Location; + Location i_ = this.GetLocation(context, h_); + List j_ = i_?.Type; + CqlConcept k_(CodeableConcept @this) + { + CqlConcept o_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return o_; + }; + IEnumerable l_ = context.Operators.Select((IEnumerable)j_, k_); + CqlValueSet m_ = this.Emergency_Department_Visit(context); + bool? n_ = context.Operators.ConceptsInValueSet(l_, m_); + + return n_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter.LocationComponent d_ = context.Operators.SingletonFrom(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.Start(f_); + + return g_; + } + + + public CqlDateTime emergencyDepartmentArrivalTime(CqlContext context, Encounter TheEncounter) + { + IEnumerable a_ = this.hospitalizationLocations(context, TheEncounter); + bool? b_(Encounter.LocationComponent HospitalLocation) + { + ResourceReference h_ = HospitalLocation?.Location; + Location i_ = this.GetLocation(context, h_); + List j_ = i_?.Type; + CqlConcept k_(CodeableConcept @this) + { + CqlConcept o_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return o_; + }; + IEnumerable l_ = context.Operators.Select((IEnumerable)j_, k_); + CqlValueSet m_ = this.Emergency_Department_Visit(context); + bool? n_ = context.Operators.ConceptsInValueSet(l_, m_); + + return n_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter.LocationComponent d_ = context.Operators.SingletonFrom(c_); + Period e_ = d_?.Period; + CqlInterval f_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, e_); + CqlDateTime g_ = context.Operators.Start(f_); + + return g_; + } + + + public CqlInterval HospitalizationWithObservationAndOutpatientSurgeryService(CqlContext context, Encounter TheEncounter) + { + Encounter[] a_ = [ + TheEncounter, + ]; + CqlInterval b_(Encounter Visit) + { + CqlValueSet f_ = this.Outpatient_Surgery_Service(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? h_(Encounter LastSurgeryOP) + { + Period aq_ = LastSurgeryOP?.Period; + CqlInterval ar_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aq_); + CqlDateTime as_ = context.Operators.End(ar_); + CqlValueSet at_ = this.Emergency_Department_Visit(context); + IEnumerable au_ = context.Operators.Retrieve(new RetrieveParameters(default, at_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? av_(Encounter LastED) + { + Code dq_ = LastED?.StatusElement; + Encounter.EncounterStatus? dr_ = dq_?.Value; + Code ds_ = context.Operators.Convert>(dr_); + bool? dt_ = context.Operators.Equal(ds_, "finished"); + Period du_ = LastED?.Period; + CqlInterval dv_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, du_); + CqlDateTime dw_ = context.Operators.End(dv_); + CqlValueSet dx_ = this.Observation_Services(context); + IEnumerable dy_ = context.Operators.Retrieve(new RetrieveParameters(default, dx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? dz_(Encounter LastObs) + { + Code fr_ = LastObs?.StatusElement; + Encounter.EncounterStatus? fs_ = fr_?.Value; + Code ft_ = context.Operators.Convert>(fs_); + bool? fu_ = context.Operators.Equal(ft_, "finished"); + Period fv_ = LastObs?.Period; + CqlInterval fw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fv_); + CqlDateTime fx_ = context.Operators.End(fw_); + Period fy_ = Visit?.Period; + CqlInterval fz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fy_); + CqlDateTime ga_ = context.Operators.Start(fz_); + CqlQuantity gb_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime gc_ = context.Operators.Subtract(ga_, gb_); + CqlInterval ge_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fy_); + CqlDateTime gf_ = context.Operators.Start(ge_); + CqlInterval gg_ = context.Operators.Interval(gc_, gf_, true, true); + bool? gh_ = context.Operators.In(fx_, gg_, default); + CqlInterval gj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fy_); + CqlDateTime gk_ = context.Operators.Start(gj_); + bool? gl_ = context.Operators.Not((bool?)(gk_ is null)); + bool? gm_ = context.Operators.And(gh_, gl_); + bool? gn_ = context.Operators.And(fu_, gm_); + + return gn_; + }; + IEnumerable ea_ = context.Operators.Where(dy_, dz_); + object eb_(Encounter @this) + { + Period go_ = @this?.Period; + CqlInterval gp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, go_); + CqlDateTime gq_ = context.Operators.End(gp_); + + return gq_; + }; + IEnumerable ec_ = context.Operators.SortBy(ea_, eb_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ed_ = context.Operators.Last(ec_); + Period ee_ = ed_?.Period; + CqlInterval ef_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ee_); + CqlDateTime eg_ = context.Operators.Start(ef_); + Period eh_ = Visit?.Period; + CqlInterval ei_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eh_); + CqlDateTime ej_ = context.Operators.Start(ei_); + CqlQuantity ek_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime el_ = context.Operators.Subtract(eg_ ?? ej_, ek_); + IEnumerable en_ = context.Operators.Retrieve(new RetrieveParameters(default, dx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? eo_(Encounter LastObs) + { + Code gr_ = LastObs?.StatusElement; + Encounter.EncounterStatus? gs_ = gr_?.Value; + Code gt_ = context.Operators.Convert>(gs_); + bool? gu_ = context.Operators.Equal(gt_, "finished"); + Period gv_ = LastObs?.Period; + CqlInterval gw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gv_); + CqlDateTime gx_ = context.Operators.End(gw_); + Period gy_ = Visit?.Period; + CqlInterval gz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gy_); + CqlDateTime ha_ = context.Operators.Start(gz_); + CqlQuantity hb_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime hc_ = context.Operators.Subtract(ha_, hb_); + CqlInterval he_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gy_); + CqlDateTime hf_ = context.Operators.Start(he_); + CqlInterval hg_ = context.Operators.Interval(hc_, hf_, true, true); + bool? hh_ = context.Operators.In(gx_, hg_, default); + CqlInterval hj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gy_); + CqlDateTime hk_ = context.Operators.Start(hj_); + bool? hl_ = context.Operators.Not((bool?)(hk_ is null)); + bool? hm_ = context.Operators.And(hh_, hl_); + bool? hn_ = context.Operators.And(gu_, hm_); + + return hn_; + }; + IEnumerable ep_ = context.Operators.Where(en_, eo_); + object eq_(Encounter @this) + { + Period ho_ = @this?.Period; + CqlInterval hp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ho_); + CqlDateTime hq_ = context.Operators.End(hp_); + + return hq_; + }; + IEnumerable er_ = context.Operators.SortBy(ep_, eq_, System.ComponentModel.ListSortDirection.Ascending); + Encounter es_ = context.Operators.Last(er_); + Period et_ = es_?.Period; + CqlInterval eu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, et_); + CqlDateTime ev_ = context.Operators.Start(eu_); + CqlInterval ex_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eh_); + CqlDateTime ey_ = context.Operators.Start(ex_); + CqlInterval ez_ = context.Operators.Interval(el_, ev_ ?? ey_, true, true); + bool? fa_ = context.Operators.In(dw_, ez_, default); + IEnumerable fc_ = context.Operators.Retrieve(new RetrieveParameters(default, dx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? fd_(Encounter LastObs) + { + Code hr_ = LastObs?.StatusElement; + Encounter.EncounterStatus? hs_ = hr_?.Value; + Code ht_ = context.Operators.Convert>(hs_); + bool? hu_ = context.Operators.Equal(ht_, "finished"); + Period hv_ = LastObs?.Period; + CqlInterval hw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hv_); + CqlDateTime hx_ = context.Operators.End(hw_); + Period hy_ = Visit?.Period; + CqlInterval hz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hy_); + CqlDateTime ia_ = context.Operators.Start(hz_); + CqlQuantity ib_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime ic_ = context.Operators.Subtract(ia_, ib_); + CqlInterval ie_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hy_); + CqlDateTime if_ = context.Operators.Start(ie_); + CqlInterval ig_ = context.Operators.Interval(ic_, if_, true, true); + bool? ih_ = context.Operators.In(hx_, ig_, default); + CqlInterval ij_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hy_); + CqlDateTime ik_ = context.Operators.Start(ij_); + bool? il_ = context.Operators.Not((bool?)(ik_ is null)); + bool? im_ = context.Operators.And(ih_, il_); + bool? in_ = context.Operators.And(hu_, im_); + + return in_; + }; + IEnumerable fe_ = context.Operators.Where(fc_, fd_); + object ff_(Encounter @this) + { + Period io_ = @this?.Period; + CqlInterval ip_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, io_); + CqlDateTime iq_ = context.Operators.End(ip_); + + return iq_; + }; + IEnumerable fg_ = context.Operators.SortBy(fe_, ff_, System.ComponentModel.ListSortDirection.Ascending); + Encounter fh_ = context.Operators.Last(fg_); + Period fi_ = fh_?.Period; + CqlInterval fj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fi_); + CqlDateTime fk_ = context.Operators.Start(fj_); + CqlInterval fm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eh_); + CqlDateTime fn_ = context.Operators.Start(fm_); + bool? fo_ = context.Operators.Not((bool?)((fk_ ?? fn_) is null)); + bool? fp_ = context.Operators.And(fa_, fo_); + bool? fq_ = context.Operators.And(dt_, fp_); + + return fq_; + }; + IEnumerable aw_ = context.Operators.Where(au_, av_); + object ax_(Encounter @this) + { + Period ir_ = @this?.Period; + CqlInterval is_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ir_); + CqlDateTime it_ = context.Operators.End(is_); + + return it_; + }; + IEnumerable ay_ = context.Operators.SortBy(aw_, ax_, System.ComponentModel.ListSortDirection.Ascending); + Encounter az_ = context.Operators.Last(ay_); + Period ba_ = az_?.Period; + CqlInterval bb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ba_); + CqlDateTime bc_ = context.Operators.Start(bb_); + CqlValueSet bd_ = this.Observation_Services(context); + IEnumerable be_ = context.Operators.Retrieve(new RetrieveParameters(default, bd_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? bf_(Encounter LastObs) + { + Code iu_ = LastObs?.StatusElement; + Encounter.EncounterStatus? iv_ = iu_?.Value; + Code iw_ = context.Operators.Convert>(iv_); + bool? ix_ = context.Operators.Equal(iw_, "finished"); + Period iy_ = LastObs?.Period; + CqlInterval iz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, iy_); + CqlDateTime ja_ = context.Operators.End(iz_); + Period jb_ = Visit?.Period; + CqlInterval jc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jb_); + CqlDateTime jd_ = context.Operators.Start(jc_); + CqlQuantity je_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime jf_ = context.Operators.Subtract(jd_, je_); + CqlInterval jh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jb_); + CqlDateTime ji_ = context.Operators.Start(jh_); + CqlInterval jj_ = context.Operators.Interval(jf_, ji_, true, true); + bool? jk_ = context.Operators.In(ja_, jj_, default); + CqlInterval jm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jb_); + CqlDateTime jn_ = context.Operators.Start(jm_); + bool? jo_ = context.Operators.Not((bool?)(jn_ is null)); + bool? jp_ = context.Operators.And(jk_, jo_); + bool? jq_ = context.Operators.And(ix_, jp_); + + return jq_; + }; + IEnumerable bg_ = context.Operators.Where(be_, bf_); + object bh_(Encounter @this) + { + Period jr_ = @this?.Period; + CqlInterval js_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jr_); + CqlDateTime jt_ = context.Operators.End(js_); + + return jt_; + }; + IEnumerable bi_ = context.Operators.SortBy(bg_, bh_, System.ComponentModel.ListSortDirection.Ascending); + Encounter bj_ = context.Operators.Last(bi_); + Period bk_ = bj_?.Period; + CqlInterval bl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bk_); + CqlDateTime bm_ = context.Operators.Start(bl_); + Period bn_ = Visit?.Period; + CqlInterval bo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + CqlDateTime bp_ = context.Operators.Start(bo_); + CqlQuantity bq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime br_ = context.Operators.Subtract(bc_ ?? bm_ ?? bp_, bq_); + IEnumerable bt_ = context.Operators.Retrieve(new RetrieveParameters(default, at_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? bu_(Encounter LastED) + { + Code ju_ = LastED?.StatusElement; + Encounter.EncounterStatus? jv_ = ju_?.Value; + Code jw_ = context.Operators.Convert>(jv_); + bool? jx_ = context.Operators.Equal(jw_, "finished"); + Period jy_ = LastED?.Period; + CqlInterval jz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jy_); + CqlDateTime ka_ = context.Operators.End(jz_); + CqlValueSet kb_ = this.Observation_Services(context); + IEnumerable kc_ = context.Operators.Retrieve(new RetrieveParameters(default, kb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? kd_(Encounter LastObs) + { + Code lv_ = LastObs?.StatusElement; + Encounter.EncounterStatus? lw_ = lv_?.Value; + Code lx_ = context.Operators.Convert>(lw_); + bool? ly_ = context.Operators.Equal(lx_, "finished"); + Period lz_ = LastObs?.Period; + CqlInterval ma_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, lz_); + CqlDateTime mb_ = context.Operators.End(ma_); + Period mc_ = Visit?.Period; + CqlInterval md_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mc_); + CqlDateTime me_ = context.Operators.Start(md_); + CqlQuantity mf_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime mg_ = context.Operators.Subtract(me_, mf_); + CqlInterval mi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mc_); + CqlDateTime mj_ = context.Operators.Start(mi_); + CqlInterval mk_ = context.Operators.Interval(mg_, mj_, true, true); + bool? ml_ = context.Operators.In(mb_, mk_, default); + CqlInterval mn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mc_); + CqlDateTime mo_ = context.Operators.Start(mn_); + bool? mp_ = context.Operators.Not((bool?)(mo_ is null)); + bool? mq_ = context.Operators.And(ml_, mp_); + bool? mr_ = context.Operators.And(ly_, mq_); + + return mr_; + }; + IEnumerable ke_ = context.Operators.Where(kc_, kd_); + object kf_(Encounter @this) + { + Period ms_ = @this?.Period; + CqlInterval mt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ms_); + CqlDateTime mu_ = context.Operators.End(mt_); + + return mu_; + }; + IEnumerable kg_ = context.Operators.SortBy(ke_, kf_, System.ComponentModel.ListSortDirection.Ascending); + Encounter kh_ = context.Operators.Last(kg_); + Period ki_ = kh_?.Period; + CqlInterval kj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ki_); + CqlDateTime kk_ = context.Operators.Start(kj_); + Period kl_ = Visit?.Period; + CqlInterval km_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kl_); + CqlDateTime kn_ = context.Operators.Start(km_); + CqlQuantity ko_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime kp_ = context.Operators.Subtract(kk_ ?? kn_, ko_); + IEnumerable kr_ = context.Operators.Retrieve(new RetrieveParameters(default, kb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ks_(Encounter LastObs) + { + Code mv_ = LastObs?.StatusElement; + Encounter.EncounterStatus? mw_ = mv_?.Value; + Code mx_ = context.Operators.Convert>(mw_); + bool? my_ = context.Operators.Equal(mx_, "finished"); + Period mz_ = LastObs?.Period; + CqlInterval na_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mz_); + CqlDateTime nb_ = context.Operators.End(na_); + Period nc_ = Visit?.Period; + CqlInterval nd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nc_); + CqlDateTime ne_ = context.Operators.Start(nd_); + CqlQuantity nf_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime ng_ = context.Operators.Subtract(ne_, nf_); + CqlInterval ni_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nc_); + CqlDateTime nj_ = context.Operators.Start(ni_); + CqlInterval nk_ = context.Operators.Interval(ng_, nj_, true, true); + bool? nl_ = context.Operators.In(nb_, nk_, default); + CqlInterval nn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nc_); + CqlDateTime no_ = context.Operators.Start(nn_); + bool? np_ = context.Operators.Not((bool?)(no_ is null)); + bool? nq_ = context.Operators.And(nl_, np_); + bool? nr_ = context.Operators.And(my_, nq_); + + return nr_; + }; + IEnumerable kt_ = context.Operators.Where(kr_, ks_); + object ku_(Encounter @this) + { + Period ns_ = @this?.Period; + CqlInterval nt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ns_); + CqlDateTime nu_ = context.Operators.End(nt_); + + return nu_; + }; + IEnumerable kv_ = context.Operators.SortBy(kt_, ku_, System.ComponentModel.ListSortDirection.Ascending); + Encounter kw_ = context.Operators.Last(kv_); + Period kx_ = kw_?.Period; + CqlInterval ky_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kx_); + CqlDateTime kz_ = context.Operators.Start(ky_); + CqlInterval lb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kl_); + CqlDateTime lc_ = context.Operators.Start(lb_); + CqlInterval ld_ = context.Operators.Interval(kp_, kz_ ?? lc_, true, true); + bool? le_ = context.Operators.In(ka_, ld_, default); + IEnumerable lg_ = context.Operators.Retrieve(new RetrieveParameters(default, kb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? lh_(Encounter LastObs) + { + Code nv_ = LastObs?.StatusElement; + Encounter.EncounterStatus? nw_ = nv_?.Value; + Code nx_ = context.Operators.Convert>(nw_); + bool? ny_ = context.Operators.Equal(nx_, "finished"); + Period nz_ = LastObs?.Period; + CqlInterval oa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nz_); + CqlDateTime ob_ = context.Operators.End(oa_); + Period oc_ = Visit?.Period; + CqlInterval od_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, oc_); + CqlDateTime oe_ = context.Operators.Start(od_); + CqlQuantity of_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime og_ = context.Operators.Subtract(oe_, of_); + CqlInterval oi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, oc_); + CqlDateTime oj_ = context.Operators.Start(oi_); + CqlInterval ok_ = context.Operators.Interval(og_, oj_, true, true); + bool? ol_ = context.Operators.In(ob_, ok_, default); + CqlInterval on_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, oc_); + CqlDateTime oo_ = context.Operators.Start(on_); + bool? op_ = context.Operators.Not((bool?)(oo_ is null)); + bool? oq_ = context.Operators.And(ol_, op_); + bool? or_ = context.Operators.And(ny_, oq_); + + return or_; + }; + IEnumerable li_ = context.Operators.Where(lg_, lh_); + object lj_(Encounter @this) + { + Period os_ = @this?.Period; + CqlInterval ot_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, os_); + CqlDateTime ou_ = context.Operators.End(ot_); + + return ou_; + }; + IEnumerable lk_ = context.Operators.SortBy(li_, lj_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ll_ = context.Operators.Last(lk_); + Period lm_ = ll_?.Period; + CqlInterval ln_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, lm_); + CqlDateTime lo_ = context.Operators.Start(ln_); + CqlInterval lq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kl_); + CqlDateTime lr_ = context.Operators.Start(lq_); + bool? ls_ = context.Operators.Not((bool?)((lo_ ?? lr_) is null)); + bool? lt_ = context.Operators.And(le_, ls_); + bool? lu_ = context.Operators.And(jx_, lt_); + + return lu_; + }; + IEnumerable bv_ = context.Operators.Where(bt_, bu_); + object bw_(Encounter @this) + { + Period ov_ = @this?.Period; + CqlInterval ow_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ov_); + CqlDateTime ox_ = context.Operators.End(ow_); + + return ox_; + }; + IEnumerable bx_ = context.Operators.SortBy(bv_, bw_, System.ComponentModel.ListSortDirection.Ascending); + Encounter by_ = context.Operators.Last(bx_); + Period bz_ = by_?.Period; + CqlInterval ca_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bz_); + CqlDateTime cb_ = context.Operators.Start(ca_); + IEnumerable cd_ = context.Operators.Retrieve(new RetrieveParameters(default, bd_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ce_(Encounter LastObs) + { + Code oy_ = LastObs?.StatusElement; + Encounter.EncounterStatus? oz_ = oy_?.Value; + Code pa_ = context.Operators.Convert>(oz_); + bool? pb_ = context.Operators.Equal(pa_, "finished"); + Period pc_ = LastObs?.Period; + CqlInterval pd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pc_); + CqlDateTime pe_ = context.Operators.End(pd_); + Period pf_ = Visit?.Period; + CqlInterval pg_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pf_); + CqlDateTime ph_ = context.Operators.Start(pg_); + CqlQuantity pi_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime pj_ = context.Operators.Subtract(ph_, pi_); + CqlInterval pl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pf_); + CqlDateTime pm_ = context.Operators.Start(pl_); + CqlInterval pn_ = context.Operators.Interval(pj_, pm_, true, true); + bool? po_ = context.Operators.In(pe_, pn_, default); + CqlInterval pq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pf_); + CqlDateTime pr_ = context.Operators.Start(pq_); + bool? ps_ = context.Operators.Not((bool?)(pr_ is null)); + bool? pt_ = context.Operators.And(po_, ps_); + bool? pu_ = context.Operators.And(pb_, pt_); + + return pu_; + }; + IEnumerable cf_ = context.Operators.Where(cd_, ce_); + object cg_(Encounter @this) + { + Period pv_ = @this?.Period; + CqlInterval pw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pv_); + CqlDateTime px_ = context.Operators.End(pw_); + + return px_; + }; + IEnumerable ch_ = context.Operators.SortBy(cf_, cg_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ci_ = context.Operators.Last(ch_); + Period cj_ = ci_?.Period; + CqlInterval ck_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, cj_); + CqlDateTime cl_ = context.Operators.Start(ck_); + CqlInterval cn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + CqlDateTime co_ = context.Operators.Start(cn_); + CqlInterval cp_ = context.Operators.Interval(br_, cb_ ?? cl_ ?? co_, true, true); + bool? cq_ = context.Operators.In(as_, cp_, default); + IEnumerable cs_ = context.Operators.Retrieve(new RetrieveParameters(default, at_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ct_(Encounter LastED) + { + Code py_ = LastED?.StatusElement; + Encounter.EncounterStatus? pz_ = py_?.Value; + Code qa_ = context.Operators.Convert>(pz_); + bool? qb_ = context.Operators.Equal(qa_, "finished"); + Period qc_ = LastED?.Period; + CqlInterval qd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qc_); + CqlDateTime qe_ = context.Operators.End(qd_); + CqlValueSet qf_ = this.Observation_Services(context); + IEnumerable qg_ = context.Operators.Retrieve(new RetrieveParameters(default, qf_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? qh_(Encounter LastObs) + { + Code rz_ = LastObs?.StatusElement; + Encounter.EncounterStatus? sa_ = rz_?.Value; + Code sb_ = context.Operators.Convert>(sa_); + bool? sc_ = context.Operators.Equal(sb_, "finished"); + Period sd_ = LastObs?.Period; + CqlInterval se_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sd_); + CqlDateTime sf_ = context.Operators.End(se_); + Period sg_ = Visit?.Period; + CqlInterval sh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sg_); + CqlDateTime si_ = context.Operators.Start(sh_); + CqlQuantity sj_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime sk_ = context.Operators.Subtract(si_, sj_); + CqlInterval sm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sg_); + CqlDateTime sn_ = context.Operators.Start(sm_); + CqlInterval so_ = context.Operators.Interval(sk_, sn_, true, true); + bool? sp_ = context.Operators.In(sf_, so_, default); + CqlInterval sr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sg_); + CqlDateTime ss_ = context.Operators.Start(sr_); + bool? st_ = context.Operators.Not((bool?)(ss_ is null)); + bool? su_ = context.Operators.And(sp_, st_); + bool? sv_ = context.Operators.And(sc_, su_); + + return sv_; + }; + IEnumerable qi_ = context.Operators.Where(qg_, qh_); + object qj_(Encounter @this) + { + Period sw_ = @this?.Period; + CqlInterval sx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sw_); + CqlDateTime sy_ = context.Operators.End(sx_); + + return sy_; + }; + IEnumerable qk_ = context.Operators.SortBy(qi_, qj_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ql_ = context.Operators.Last(qk_); + Period qm_ = ql_?.Period; + CqlInterval qn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qm_); + CqlDateTime qo_ = context.Operators.Start(qn_); + Period qp_ = Visit?.Period; + CqlInterval qq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qp_); + CqlDateTime qr_ = context.Operators.Start(qq_); + CqlQuantity qs_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime qt_ = context.Operators.Subtract(qo_ ?? qr_, qs_); + IEnumerable qv_ = context.Operators.Retrieve(new RetrieveParameters(default, qf_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? qw_(Encounter LastObs) + { + Code sz_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ta_ = sz_?.Value; + Code tb_ = context.Operators.Convert>(ta_); + bool? tc_ = context.Operators.Equal(tb_, "finished"); + Period td_ = LastObs?.Period; + CqlInterval te_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, td_); + CqlDateTime tf_ = context.Operators.End(te_); + Period tg_ = Visit?.Period; + CqlInterval th_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tg_); + CqlDateTime ti_ = context.Operators.Start(th_); + CqlQuantity tj_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime tk_ = context.Operators.Subtract(ti_, tj_); + CqlInterval tm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tg_); + CqlDateTime tn_ = context.Operators.Start(tm_); + CqlInterval to_ = context.Operators.Interval(tk_, tn_, true, true); + bool? tp_ = context.Operators.In(tf_, to_, default); + CqlInterval tr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tg_); + CqlDateTime ts_ = context.Operators.Start(tr_); + bool? tt_ = context.Operators.Not((bool?)(ts_ is null)); + bool? tu_ = context.Operators.And(tp_, tt_); + bool? tv_ = context.Operators.And(tc_, tu_); + + return tv_; + }; + IEnumerable qx_ = context.Operators.Where(qv_, qw_); + object qy_(Encounter @this) + { + Period tw_ = @this?.Period; + CqlInterval tx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tw_); + CqlDateTime ty_ = context.Operators.End(tx_); + + return ty_; + }; + IEnumerable qz_ = context.Operators.SortBy(qx_, qy_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ra_ = context.Operators.Last(qz_); + Period rb_ = ra_?.Period; + CqlInterval rc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, rb_); + CqlDateTime rd_ = context.Operators.Start(rc_); + CqlInterval rf_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qp_); + CqlDateTime rg_ = context.Operators.Start(rf_); + CqlInterval rh_ = context.Operators.Interval(qt_, rd_ ?? rg_, true, true); + bool? ri_ = context.Operators.In(qe_, rh_, default); + IEnumerable rk_ = context.Operators.Retrieve(new RetrieveParameters(default, qf_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? rl_(Encounter LastObs) + { + Code tz_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ua_ = tz_?.Value; + Code ub_ = context.Operators.Convert>(ua_); + bool? uc_ = context.Operators.Equal(ub_, "finished"); + Period ud_ = LastObs?.Period; + CqlInterval ue_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ud_); + CqlDateTime uf_ = context.Operators.End(ue_); + Period ug_ = Visit?.Period; + CqlInterval uh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ug_); + CqlDateTime ui_ = context.Operators.Start(uh_); + CqlQuantity uj_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime uk_ = context.Operators.Subtract(ui_, uj_); + CqlInterval um_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ug_); + CqlDateTime un_ = context.Operators.Start(um_); + CqlInterval uo_ = context.Operators.Interval(uk_, un_, true, true); + bool? up_ = context.Operators.In(uf_, uo_, default); + CqlInterval ur_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ug_); + CqlDateTime us_ = context.Operators.Start(ur_); + bool? ut_ = context.Operators.Not((bool?)(us_ is null)); + bool? uu_ = context.Operators.And(up_, ut_); + bool? uv_ = context.Operators.And(uc_, uu_); + + return uv_; + }; + IEnumerable rm_ = context.Operators.Where(rk_, rl_); + object rn_(Encounter @this) + { + Period uw_ = @this?.Period; + CqlInterval ux_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, uw_); + CqlDateTime uy_ = context.Operators.End(ux_); + + return uy_; + }; + IEnumerable ro_ = context.Operators.SortBy(rm_, rn_, System.ComponentModel.ListSortDirection.Ascending); + Encounter rp_ = context.Operators.Last(ro_); + Period rq_ = rp_?.Period; + CqlInterval rr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, rq_); + CqlDateTime rs_ = context.Operators.Start(rr_); + CqlInterval ru_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qp_); + CqlDateTime rv_ = context.Operators.Start(ru_); + bool? rw_ = context.Operators.Not((bool?)((rs_ ?? rv_) is null)); + bool? rx_ = context.Operators.And(ri_, rw_); + bool? ry_ = context.Operators.And(qb_, rx_); + + return ry_; + }; + IEnumerable cu_ = context.Operators.Where(cs_, ct_); + object cv_(Encounter @this) + { + Period uz_ = @this?.Period; + CqlInterval va_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, uz_); + CqlDateTime vb_ = context.Operators.End(va_); + + return vb_; + }; + IEnumerable cw_ = context.Operators.SortBy(cu_, cv_, System.ComponentModel.ListSortDirection.Ascending); + Encounter cx_ = context.Operators.Last(cw_); + Period cy_ = cx_?.Period; + CqlInterval cz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, cy_); + CqlDateTime da_ = context.Operators.Start(cz_); + IEnumerable dc_ = context.Operators.Retrieve(new RetrieveParameters(default, bd_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? dd_(Encounter LastObs) + { + Code vc_ = LastObs?.StatusElement; + Encounter.EncounterStatus? vd_ = vc_?.Value; + Code ve_ = context.Operators.Convert>(vd_); + bool? vf_ = context.Operators.Equal(ve_, "finished"); + Period vg_ = LastObs?.Period; + CqlInterval vh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vg_); + CqlDateTime vi_ = context.Operators.End(vh_); + Period vj_ = Visit?.Period; + CqlInterval vk_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vj_); + CqlDateTime vl_ = context.Operators.Start(vk_); + CqlQuantity vm_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime vn_ = context.Operators.Subtract(vl_, vm_); + CqlInterval vp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vj_); + CqlDateTime vq_ = context.Operators.Start(vp_); + CqlInterval vr_ = context.Operators.Interval(vn_, vq_, true, true); + bool? vs_ = context.Operators.In(vi_, vr_, default); + CqlInterval vu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vj_); + CqlDateTime vv_ = context.Operators.Start(vu_); + bool? vw_ = context.Operators.Not((bool?)(vv_ is null)); + bool? vx_ = context.Operators.And(vs_, vw_); + bool? vy_ = context.Operators.And(vf_, vx_); + + return vy_; + }; + IEnumerable de_ = context.Operators.Where(dc_, dd_); + object df_(Encounter @this) + { + Period vz_ = @this?.Period; + CqlInterval wa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vz_); + CqlDateTime wb_ = context.Operators.End(wa_); + + return wb_; + }; + IEnumerable dg_ = context.Operators.SortBy(de_, df_, System.ComponentModel.ListSortDirection.Ascending); + Encounter dh_ = context.Operators.Last(dg_); + Period di_ = dh_?.Period; + CqlInterval dj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, di_); + CqlDateTime dk_ = context.Operators.Start(dj_); + CqlInterval dm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + CqlDateTime dn_ = context.Operators.Start(dm_); + bool? do_ = context.Operators.Not((bool?)((da_ ?? dk_ ?? dn_) is null)); + bool? dp_ = context.Operators.And(cq_, do_); + + return dp_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + object j_(Encounter @this) + { + Period wc_ = @this?.Period; + CqlInterval wd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, wc_); + CqlDateTime we_ = context.Operators.End(wd_); + + return we_; + }; + IEnumerable k_ = context.Operators.SortBy(i_, j_, System.ComponentModel.ListSortDirection.Ascending); + Encounter l_ = context.Operators.Last(k_); + Period m_ = l_?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.Start(n_); + CqlValueSet p_ = this.Emergency_Department_Visit(context); + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, p_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? r_(Encounter LastED) + { + Code wf_ = LastED?.StatusElement; + Encounter.EncounterStatus? wg_ = wf_?.Value; + Code wh_ = context.Operators.Convert>(wg_); + bool? wi_ = context.Operators.Equal(wh_, "finished"); + Period wj_ = LastED?.Period; + CqlInterval wk_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, wj_); + CqlDateTime wl_ = context.Operators.End(wk_); + CqlValueSet wm_ = this.Observation_Services(context); + IEnumerable wn_ = context.Operators.Retrieve(new RetrieveParameters(default, wm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? wo_(Encounter LastObs) + { + Code yg_ = LastObs?.StatusElement; + Encounter.EncounterStatus? yh_ = yg_?.Value; + Code yi_ = context.Operators.Convert>(yh_); + bool? yj_ = context.Operators.Equal(yi_, "finished"); + Period yk_ = LastObs?.Period; + CqlInterval yl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yk_); + CqlDateTime ym_ = context.Operators.End(yl_); + Period yn_ = Visit?.Period; + CqlInterval yo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yn_); + CqlDateTime yp_ = context.Operators.Start(yo_); + CqlQuantity yq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime yr_ = context.Operators.Subtract(yp_, yq_); + CqlInterval yt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yn_); + CqlDateTime yu_ = context.Operators.Start(yt_); + CqlInterval yv_ = context.Operators.Interval(yr_, yu_, true, true); + bool? yw_ = context.Operators.In(ym_, yv_, default); + CqlInterval yy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yn_); + CqlDateTime yz_ = context.Operators.Start(yy_); + bool? za_ = context.Operators.Not((bool?)(yz_ is null)); + bool? zb_ = context.Operators.And(yw_, za_); + bool? zc_ = context.Operators.And(yj_, zb_); + + return zc_; + }; + IEnumerable wp_ = context.Operators.Where(wn_, wo_); + object wq_(Encounter @this) + { + Period zd_ = @this?.Period; + CqlInterval ze_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zd_); + CqlDateTime zf_ = context.Operators.End(ze_); + + return zf_; + }; + IEnumerable wr_ = context.Operators.SortBy(wp_, wq_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ws_ = context.Operators.Last(wr_); + Period wt_ = ws_?.Period; + CqlInterval wu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, wt_); + CqlDateTime wv_ = context.Operators.Start(wu_); + Period ww_ = Visit?.Period; + CqlInterval wx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ww_); + CqlDateTime wy_ = context.Operators.Start(wx_); + CqlQuantity wz_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime xa_ = context.Operators.Subtract(wv_ ?? wy_, wz_); + IEnumerable xc_ = context.Operators.Retrieve(new RetrieveParameters(default, wm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? xd_(Encounter LastObs) + { + Code zg_ = LastObs?.StatusElement; + Encounter.EncounterStatus? zh_ = zg_?.Value; + Code zi_ = context.Operators.Convert>(zh_); + bool? zj_ = context.Operators.Equal(zi_, "finished"); + Period zk_ = LastObs?.Period; + CqlInterval zl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zk_); + CqlDateTime zm_ = context.Operators.End(zl_); + Period zn_ = Visit?.Period; + CqlInterval zo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zn_); + CqlDateTime zp_ = context.Operators.Start(zo_); + CqlQuantity zq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime zr_ = context.Operators.Subtract(zp_, zq_); + CqlInterval zt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zn_); + CqlDateTime zu_ = context.Operators.Start(zt_); + CqlInterval zv_ = context.Operators.Interval(zr_, zu_, true, true); + bool? zw_ = context.Operators.In(zm_, zv_, default); + CqlInterval zy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zn_); + CqlDateTime zz_ = context.Operators.Start(zy_); + bool? aza_ = context.Operators.Not((bool?)(zz_ is null)); + bool? azb_ = context.Operators.And(zw_, aza_); + bool? azc_ = context.Operators.And(zj_, azb_); + + return azc_; + }; + IEnumerable xe_ = context.Operators.Where(xc_, xd_); + object xf_(Encounter @this) + { + Period azd_ = @this?.Period; + CqlInterval aze_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azd_); + CqlDateTime azf_ = context.Operators.End(aze_); + + return azf_; + }; + IEnumerable xg_ = context.Operators.SortBy(xe_, xf_, System.ComponentModel.ListSortDirection.Ascending); + Encounter xh_ = context.Operators.Last(xg_); + Period xi_ = xh_?.Period; + CqlInterval xj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, xi_); + CqlDateTime xk_ = context.Operators.Start(xj_); + CqlInterval xm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ww_); + CqlDateTime xn_ = context.Operators.Start(xm_); + CqlInterval xo_ = context.Operators.Interval(xa_, xk_ ?? xn_, true, true); + bool? xp_ = context.Operators.In(wl_, xo_, default); + IEnumerable xr_ = context.Operators.Retrieve(new RetrieveParameters(default, wm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? xs_(Encounter LastObs) + { + Code azg_ = LastObs?.StatusElement; + Encounter.EncounterStatus? azh_ = azg_?.Value; + Code azi_ = context.Operators.Convert>(azh_); + bool? azj_ = context.Operators.Equal(azi_, "finished"); + Period azk_ = LastObs?.Period; + CqlInterval azl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azk_); + CqlDateTime azm_ = context.Operators.End(azl_); + Period azn_ = Visit?.Period; + CqlInterval azo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azn_); + CqlDateTime azp_ = context.Operators.Start(azo_); + CqlQuantity azq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime azr_ = context.Operators.Subtract(azp_, azq_); + CqlInterval azt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azn_); + CqlDateTime azu_ = context.Operators.Start(azt_); + CqlInterval azv_ = context.Operators.Interval(azr_, azu_, true, true); + bool? azw_ = context.Operators.In(azm_, azv_, default); + CqlInterval azy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azn_); + CqlDateTime azz_ = context.Operators.Start(azy_); + bool? bza_ = context.Operators.Not((bool?)(azz_ is null)); + bool? bzb_ = context.Operators.And(azw_, bza_); + bool? bzc_ = context.Operators.And(azj_, bzb_); + + return bzc_; + }; + IEnumerable xt_ = context.Operators.Where(xr_, xs_); + object xu_(Encounter @this) + { + Period bzd_ = @this?.Period; + CqlInterval bze_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzd_); + CqlDateTime bzf_ = context.Operators.End(bze_); + + return bzf_; + }; + IEnumerable xv_ = context.Operators.SortBy(xt_, xu_, System.ComponentModel.ListSortDirection.Ascending); + Encounter xw_ = context.Operators.Last(xv_); + Period xx_ = xw_?.Period; + CqlInterval xy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, xx_); + CqlDateTime xz_ = context.Operators.Start(xy_); + CqlInterval yb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ww_); + CqlDateTime yc_ = context.Operators.Start(yb_); + bool? yd_ = context.Operators.Not((bool?)((xz_ ?? yc_) is null)); + bool? ye_ = context.Operators.And(xp_, yd_); + bool? yf_ = context.Operators.And(wi_, ye_); + + return yf_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + object t_(Encounter @this) + { + Period bzg_ = @this?.Period; + CqlInterval bzh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzg_); + CqlDateTime bzi_ = context.Operators.End(bzh_); + + return bzi_; + }; + IEnumerable u_ = context.Operators.SortBy(s_, t_, System.ComponentModel.ListSortDirection.Ascending); + Encounter v_ = context.Operators.Last(u_); + Period w_ = v_?.Period; + CqlInterval x_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, w_); + CqlDateTime y_ = context.Operators.Start(x_); + CqlValueSet z_ = this.Observation_Services(context); + IEnumerable aa_ = context.Operators.Retrieve(new RetrieveParameters(default, z_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ab_(Encounter LastObs) + { + Code bzj_ = LastObs?.StatusElement; + Encounter.EncounterStatus? bzk_ = bzj_?.Value; + Code bzl_ = context.Operators.Convert>(bzk_); + bool? bzm_ = context.Operators.Equal(bzl_, "finished"); + Period bzn_ = LastObs?.Period; + CqlInterval bzo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzn_); + CqlDateTime bzp_ = context.Operators.End(bzo_); + Period bzq_ = Visit?.Period; + CqlInterval bzr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzq_); + CqlDateTime bzs_ = context.Operators.Start(bzr_); + CqlQuantity bzt_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime bzu_ = context.Operators.Subtract(bzs_, bzt_); + CqlInterval bzw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzq_); + CqlDateTime bzx_ = context.Operators.Start(bzw_); + CqlInterval bzy_ = context.Operators.Interval(bzu_, bzx_, true, true); + bool? bzz_ = context.Operators.In(bzp_, bzy_, default); + CqlInterval czb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzq_); + CqlDateTime czc_ = context.Operators.Start(czb_); + bool? czd_ = context.Operators.Not((bool?)(czc_ is null)); + bool? cze_ = context.Operators.And(bzz_, czd_); + bool? czf_ = context.Operators.And(bzm_, cze_); + + return czf_; + }; + IEnumerable ac_ = context.Operators.Where(aa_, ab_); + object ad_(Encounter @this) + { + Period czg_ = @this?.Period; + CqlInterval czh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, czg_); + CqlDateTime czi_ = context.Operators.End(czh_); + + return czi_; + }; + IEnumerable ae_ = context.Operators.SortBy(ac_, ad_, System.ComponentModel.ListSortDirection.Ascending); + Encounter af_ = context.Operators.Last(ae_); + Period ag_ = af_?.Period; + CqlInterval ah_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ag_); + CqlDateTime ai_ = context.Operators.Start(ah_); + Period aj_ = Visit?.Period; + CqlInterval ak_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aj_); + CqlDateTime al_ = context.Operators.Start(ak_); + CqlInterval an_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aj_); + CqlDateTime ao_ = context.Operators.End(an_); + CqlInterval ap_ = context.Operators.Interval(o_ ?? y_ ?? ai_ ?? al_, ao_, true, true); + + return ap_; + }; + IEnumerable> c_ = context.Operators.Select>((IEnumerable)a_, b_); + IEnumerable> d_ = context.Operators.Distinct>(c_); + CqlInterval e_ = context.Operators.SingletonFrom>(d_); + + return e_; + } + + + public CqlInterval hospitalizationWithObservationAndOutpatientSurgeryService(CqlContext context, Encounter TheEncounter) + { + Encounter[] a_ = [ + TheEncounter, + ]; + CqlInterval b_(Encounter Visit) + { + CqlValueSet f_ = this.Outpatient_Surgery_Service(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? h_(Encounter LastSurgeryOP) + { + Period aq_ = LastSurgeryOP?.Period; + CqlInterval ar_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aq_); + CqlDateTime as_ = context.Operators.End(ar_); + CqlValueSet at_ = this.Emergency_Department_Visit(context); + IEnumerable au_ = context.Operators.Retrieve(new RetrieveParameters(default, at_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? av_(Encounter LastED) + { + Code dq_ = LastED?.StatusElement; + Encounter.EncounterStatus? dr_ = dq_?.Value; + Code ds_ = context.Operators.Convert>(dr_); + bool? dt_ = context.Operators.Equal(ds_, "finished"); + Period du_ = LastED?.Period; + CqlInterval dv_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, du_); + CqlDateTime dw_ = context.Operators.End(dv_); + CqlValueSet dx_ = this.Observation_Services(context); + IEnumerable dy_ = context.Operators.Retrieve(new RetrieveParameters(default, dx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? dz_(Encounter LastObs) + { + Code fr_ = LastObs?.StatusElement; + Encounter.EncounterStatus? fs_ = fr_?.Value; + Code ft_ = context.Operators.Convert>(fs_); + bool? fu_ = context.Operators.Equal(ft_, "finished"); + Period fv_ = LastObs?.Period; + CqlInterval fw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fv_); + CqlDateTime fx_ = context.Operators.End(fw_); + Period fy_ = Visit?.Period; + CqlInterval fz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fy_); + CqlDateTime ga_ = context.Operators.Start(fz_); + CqlQuantity gb_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime gc_ = context.Operators.Subtract(ga_, gb_); + CqlInterval ge_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fy_); + CqlDateTime gf_ = context.Operators.Start(ge_); + CqlInterval gg_ = context.Operators.Interval(gc_, gf_, true, true); + bool? gh_ = context.Operators.In(fx_, gg_, default); + CqlInterval gj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fy_); + CqlDateTime gk_ = context.Operators.Start(gj_); + bool? gl_ = context.Operators.Not((bool?)(gk_ is null)); + bool? gm_ = context.Operators.And(gh_, gl_); + bool? gn_ = context.Operators.And(fu_, gm_); + + return gn_; + }; + IEnumerable ea_ = context.Operators.Where(dy_, dz_); + object eb_(Encounter @this) + { + Period go_ = @this?.Period; + CqlInterval gp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, go_); + CqlDateTime gq_ = context.Operators.End(gp_); + + return gq_; + }; + IEnumerable ec_ = context.Operators.SortBy(ea_, eb_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ed_ = context.Operators.Last(ec_); + Period ee_ = ed_?.Period; + CqlInterval ef_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ee_); + CqlDateTime eg_ = context.Operators.Start(ef_); + Period eh_ = Visit?.Period; + CqlInterval ei_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eh_); + CqlDateTime ej_ = context.Operators.Start(ei_); + CqlQuantity ek_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime el_ = context.Operators.Subtract(eg_ ?? ej_, ek_); + IEnumerable en_ = context.Operators.Retrieve(new RetrieveParameters(default, dx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? eo_(Encounter LastObs) + { + Code gr_ = LastObs?.StatusElement; + Encounter.EncounterStatus? gs_ = gr_?.Value; + Code gt_ = context.Operators.Convert>(gs_); + bool? gu_ = context.Operators.Equal(gt_, "finished"); + Period gv_ = LastObs?.Period; + CqlInterval gw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gv_); + CqlDateTime gx_ = context.Operators.End(gw_); + Period gy_ = Visit?.Period; + CqlInterval gz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gy_); + CqlDateTime ha_ = context.Operators.Start(gz_); + CqlQuantity hb_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime hc_ = context.Operators.Subtract(ha_, hb_); + CqlInterval he_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gy_); + CqlDateTime hf_ = context.Operators.Start(he_); + CqlInterval hg_ = context.Operators.Interval(hc_, hf_, true, true); + bool? hh_ = context.Operators.In(gx_, hg_, default); + CqlInterval hj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gy_); + CqlDateTime hk_ = context.Operators.Start(hj_); + bool? hl_ = context.Operators.Not((bool?)(hk_ is null)); + bool? hm_ = context.Operators.And(hh_, hl_); + bool? hn_ = context.Operators.And(gu_, hm_); + + return hn_; + }; + IEnumerable ep_ = context.Operators.Where(en_, eo_); + object eq_(Encounter @this) + { + Period ho_ = @this?.Period; + CqlInterval hp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ho_); + CqlDateTime hq_ = context.Operators.End(hp_); + + return hq_; + }; + IEnumerable er_ = context.Operators.SortBy(ep_, eq_, System.ComponentModel.ListSortDirection.Ascending); + Encounter es_ = context.Operators.Last(er_); + Period et_ = es_?.Period; + CqlInterval eu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, et_); + CqlDateTime ev_ = context.Operators.Start(eu_); + CqlInterval ex_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eh_); + CqlDateTime ey_ = context.Operators.Start(ex_); + CqlInterval ez_ = context.Operators.Interval(el_, ev_ ?? ey_, true, true); + bool? fa_ = context.Operators.In(dw_, ez_, default); + IEnumerable fc_ = context.Operators.Retrieve(new RetrieveParameters(default, dx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? fd_(Encounter LastObs) + { + Code hr_ = LastObs?.StatusElement; + Encounter.EncounterStatus? hs_ = hr_?.Value; + Code ht_ = context.Operators.Convert>(hs_); + bool? hu_ = context.Operators.Equal(ht_, "finished"); + Period hv_ = LastObs?.Period; + CqlInterval hw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hv_); + CqlDateTime hx_ = context.Operators.End(hw_); + Period hy_ = Visit?.Period; + CqlInterval hz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hy_); + CqlDateTime ia_ = context.Operators.Start(hz_); + CqlQuantity ib_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime ic_ = context.Operators.Subtract(ia_, ib_); + CqlInterval ie_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hy_); + CqlDateTime if_ = context.Operators.Start(ie_); + CqlInterval ig_ = context.Operators.Interval(ic_, if_, true, true); + bool? ih_ = context.Operators.In(hx_, ig_, default); + CqlInterval ij_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, hy_); + CqlDateTime ik_ = context.Operators.Start(ij_); + bool? il_ = context.Operators.Not((bool?)(ik_ is null)); + bool? im_ = context.Operators.And(ih_, il_); + bool? in_ = context.Operators.And(hu_, im_); + + return in_; + }; + IEnumerable fe_ = context.Operators.Where(fc_, fd_); + object ff_(Encounter @this) + { + Period io_ = @this?.Period; + CqlInterval ip_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, io_); + CqlDateTime iq_ = context.Operators.End(ip_); + + return iq_; + }; + IEnumerable fg_ = context.Operators.SortBy(fe_, ff_, System.ComponentModel.ListSortDirection.Ascending); + Encounter fh_ = context.Operators.Last(fg_); + Period fi_ = fh_?.Period; + CqlInterval fj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fi_); + CqlDateTime fk_ = context.Operators.Start(fj_); + CqlInterval fm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eh_); + CqlDateTime fn_ = context.Operators.Start(fm_); + bool? fo_ = context.Operators.Not((bool?)((fk_ ?? fn_) is null)); + bool? fp_ = context.Operators.And(fa_, fo_); + bool? fq_ = context.Operators.And(dt_, fp_); + + return fq_; + }; + IEnumerable aw_ = context.Operators.Where(au_, av_); + object ax_(Encounter @this) + { + Period ir_ = @this?.Period; + CqlInterval is_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ir_); + CqlDateTime it_ = context.Operators.End(is_); + + return it_; + }; + IEnumerable ay_ = context.Operators.SortBy(aw_, ax_, System.ComponentModel.ListSortDirection.Ascending); + Encounter az_ = context.Operators.Last(ay_); + Period ba_ = az_?.Period; + CqlInterval bb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ba_); + CqlDateTime bc_ = context.Operators.Start(bb_); + CqlValueSet bd_ = this.Observation_Services(context); + IEnumerable be_ = context.Operators.Retrieve(new RetrieveParameters(default, bd_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? bf_(Encounter LastObs) + { + Code iu_ = LastObs?.StatusElement; + Encounter.EncounterStatus? iv_ = iu_?.Value; + Code iw_ = context.Operators.Convert>(iv_); + bool? ix_ = context.Operators.Equal(iw_, "finished"); + Period iy_ = LastObs?.Period; + CqlInterval iz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, iy_); + CqlDateTime ja_ = context.Operators.End(iz_); + Period jb_ = Visit?.Period; + CqlInterval jc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jb_); + CqlDateTime jd_ = context.Operators.Start(jc_); + CqlQuantity je_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime jf_ = context.Operators.Subtract(jd_, je_); + CqlInterval jh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jb_); + CqlDateTime ji_ = context.Operators.Start(jh_); + CqlInterval jj_ = context.Operators.Interval(jf_, ji_, true, true); + bool? jk_ = context.Operators.In(ja_, jj_, default); + CqlInterval jm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jb_); + CqlDateTime jn_ = context.Operators.Start(jm_); + bool? jo_ = context.Operators.Not((bool?)(jn_ is null)); + bool? jp_ = context.Operators.And(jk_, jo_); + bool? jq_ = context.Operators.And(ix_, jp_); + + return jq_; + }; + IEnumerable bg_ = context.Operators.Where(be_, bf_); + object bh_(Encounter @this) + { + Period jr_ = @this?.Period; + CqlInterval js_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jr_); + CqlDateTime jt_ = context.Operators.End(js_); + + return jt_; + }; + IEnumerable bi_ = context.Operators.SortBy(bg_, bh_, System.ComponentModel.ListSortDirection.Ascending); + Encounter bj_ = context.Operators.Last(bi_); + Period bk_ = bj_?.Period; + CqlInterval bl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bk_); + CqlDateTime bm_ = context.Operators.Start(bl_); + Period bn_ = Visit?.Period; + CqlInterval bo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + CqlDateTime bp_ = context.Operators.Start(bo_); + CqlQuantity bq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime br_ = context.Operators.Subtract(bc_ ?? bm_ ?? bp_, bq_); + IEnumerable bt_ = context.Operators.Retrieve(new RetrieveParameters(default, at_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? bu_(Encounter LastED) + { + Code ju_ = LastED?.StatusElement; + Encounter.EncounterStatus? jv_ = ju_?.Value; + Code jw_ = context.Operators.Convert>(jv_); + bool? jx_ = context.Operators.Equal(jw_, "finished"); + Period jy_ = LastED?.Period; + CqlInterval jz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, jy_); + CqlDateTime ka_ = context.Operators.End(jz_); + CqlValueSet kb_ = this.Observation_Services(context); + IEnumerable kc_ = context.Operators.Retrieve(new RetrieveParameters(default, kb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? kd_(Encounter LastObs) + { + Code lv_ = LastObs?.StatusElement; + Encounter.EncounterStatus? lw_ = lv_?.Value; + Code lx_ = context.Operators.Convert>(lw_); + bool? ly_ = context.Operators.Equal(lx_, "finished"); + Period lz_ = LastObs?.Period; + CqlInterval ma_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, lz_); + CqlDateTime mb_ = context.Operators.End(ma_); + Period mc_ = Visit?.Period; + CqlInterval md_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mc_); + CqlDateTime me_ = context.Operators.Start(md_); + CqlQuantity mf_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime mg_ = context.Operators.Subtract(me_, mf_); + CqlInterval mi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mc_); + CqlDateTime mj_ = context.Operators.Start(mi_); + CqlInterval mk_ = context.Operators.Interval(mg_, mj_, true, true); + bool? ml_ = context.Operators.In(mb_, mk_, default); + CqlInterval mn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mc_); + CqlDateTime mo_ = context.Operators.Start(mn_); + bool? mp_ = context.Operators.Not((bool?)(mo_ is null)); + bool? mq_ = context.Operators.And(ml_, mp_); + bool? mr_ = context.Operators.And(ly_, mq_); + + return mr_; + }; + IEnumerable ke_ = context.Operators.Where(kc_, kd_); + object kf_(Encounter @this) + { + Period ms_ = @this?.Period; + CqlInterval mt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ms_); + CqlDateTime mu_ = context.Operators.End(mt_); + + return mu_; + }; + IEnumerable kg_ = context.Operators.SortBy(ke_, kf_, System.ComponentModel.ListSortDirection.Ascending); + Encounter kh_ = context.Operators.Last(kg_); + Period ki_ = kh_?.Period; + CqlInterval kj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ki_); + CqlDateTime kk_ = context.Operators.Start(kj_); + Period kl_ = Visit?.Period; + CqlInterval km_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kl_); + CqlDateTime kn_ = context.Operators.Start(km_); + CqlQuantity ko_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime kp_ = context.Operators.Subtract(kk_ ?? kn_, ko_); + IEnumerable kr_ = context.Operators.Retrieve(new RetrieveParameters(default, kb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ks_(Encounter LastObs) + { + Code mv_ = LastObs?.StatusElement; + Encounter.EncounterStatus? mw_ = mv_?.Value; + Code mx_ = context.Operators.Convert>(mw_); + bool? my_ = context.Operators.Equal(mx_, "finished"); + Period mz_ = LastObs?.Period; + CqlInterval na_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, mz_); + CqlDateTime nb_ = context.Operators.End(na_); + Period nc_ = Visit?.Period; + CqlInterval nd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nc_); + CqlDateTime ne_ = context.Operators.Start(nd_); + CqlQuantity nf_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime ng_ = context.Operators.Subtract(ne_, nf_); + CqlInterval ni_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nc_); + CqlDateTime nj_ = context.Operators.Start(ni_); + CqlInterval nk_ = context.Operators.Interval(ng_, nj_, true, true); + bool? nl_ = context.Operators.In(nb_, nk_, default); + CqlInterval nn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nc_); + CqlDateTime no_ = context.Operators.Start(nn_); + bool? np_ = context.Operators.Not((bool?)(no_ is null)); + bool? nq_ = context.Operators.And(nl_, np_); + bool? nr_ = context.Operators.And(my_, nq_); + + return nr_; + }; + IEnumerable kt_ = context.Operators.Where(kr_, ks_); + object ku_(Encounter @this) + { + Period ns_ = @this?.Period; + CqlInterval nt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ns_); + CqlDateTime nu_ = context.Operators.End(nt_); + + return nu_; + }; + IEnumerable kv_ = context.Operators.SortBy(kt_, ku_, System.ComponentModel.ListSortDirection.Ascending); + Encounter kw_ = context.Operators.Last(kv_); + Period kx_ = kw_?.Period; + CqlInterval ky_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kx_); + CqlDateTime kz_ = context.Operators.Start(ky_); + CqlInterval lb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kl_); + CqlDateTime lc_ = context.Operators.Start(lb_); + CqlInterval ld_ = context.Operators.Interval(kp_, kz_ ?? lc_, true, true); + bool? le_ = context.Operators.In(ka_, ld_, default); + IEnumerable lg_ = context.Operators.Retrieve(new RetrieveParameters(default, kb_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? lh_(Encounter LastObs) + { + Code nv_ = LastObs?.StatusElement; + Encounter.EncounterStatus? nw_ = nv_?.Value; + Code nx_ = context.Operators.Convert>(nw_); + bool? ny_ = context.Operators.Equal(nx_, "finished"); + Period nz_ = LastObs?.Period; + CqlInterval oa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, nz_); + CqlDateTime ob_ = context.Operators.End(oa_); + Period oc_ = Visit?.Period; + CqlInterval od_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, oc_); + CqlDateTime oe_ = context.Operators.Start(od_); + CqlQuantity of_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime og_ = context.Operators.Subtract(oe_, of_); + CqlInterval oi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, oc_); + CqlDateTime oj_ = context.Operators.Start(oi_); + CqlInterval ok_ = context.Operators.Interval(og_, oj_, true, true); + bool? ol_ = context.Operators.In(ob_, ok_, default); + CqlInterval on_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, oc_); + CqlDateTime oo_ = context.Operators.Start(on_); + bool? op_ = context.Operators.Not((bool?)(oo_ is null)); + bool? oq_ = context.Operators.And(ol_, op_); + bool? or_ = context.Operators.And(ny_, oq_); + + return or_; + }; + IEnumerable li_ = context.Operators.Where(lg_, lh_); + object lj_(Encounter @this) + { + Period os_ = @this?.Period; + CqlInterval ot_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, os_); + CqlDateTime ou_ = context.Operators.End(ot_); + + return ou_; + }; + IEnumerable lk_ = context.Operators.SortBy(li_, lj_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ll_ = context.Operators.Last(lk_); + Period lm_ = ll_?.Period; + CqlInterval ln_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, lm_); + CqlDateTime lo_ = context.Operators.Start(ln_); + CqlInterval lq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, kl_); + CqlDateTime lr_ = context.Operators.Start(lq_); + bool? ls_ = context.Operators.Not((bool?)((lo_ ?? lr_) is null)); + bool? lt_ = context.Operators.And(le_, ls_); + bool? lu_ = context.Operators.And(jx_, lt_); + + return lu_; + }; + IEnumerable bv_ = context.Operators.Where(bt_, bu_); + object bw_(Encounter @this) + { + Period ov_ = @this?.Period; + CqlInterval ow_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ov_); + CqlDateTime ox_ = context.Operators.End(ow_); + + return ox_; + }; + IEnumerable bx_ = context.Operators.SortBy(bv_, bw_, System.ComponentModel.ListSortDirection.Ascending); + Encounter by_ = context.Operators.Last(bx_); + Period bz_ = by_?.Period; + CqlInterval ca_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bz_); + CqlDateTime cb_ = context.Operators.Start(ca_); + IEnumerable cd_ = context.Operators.Retrieve(new RetrieveParameters(default, bd_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ce_(Encounter LastObs) + { + Code oy_ = LastObs?.StatusElement; + Encounter.EncounterStatus? oz_ = oy_?.Value; + Code pa_ = context.Operators.Convert>(oz_); + bool? pb_ = context.Operators.Equal(pa_, "finished"); + Period pc_ = LastObs?.Period; + CqlInterval pd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pc_); + CqlDateTime pe_ = context.Operators.End(pd_); + Period pf_ = Visit?.Period; + CqlInterval pg_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pf_); + CqlDateTime ph_ = context.Operators.Start(pg_); + CqlQuantity pi_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime pj_ = context.Operators.Subtract(ph_, pi_); + CqlInterval pl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pf_); + CqlDateTime pm_ = context.Operators.Start(pl_); + CqlInterval pn_ = context.Operators.Interval(pj_, pm_, true, true); + bool? po_ = context.Operators.In(pe_, pn_, default); + CqlInterval pq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pf_); + CqlDateTime pr_ = context.Operators.Start(pq_); + bool? ps_ = context.Operators.Not((bool?)(pr_ is null)); + bool? pt_ = context.Operators.And(po_, ps_); + bool? pu_ = context.Operators.And(pb_, pt_); + + return pu_; + }; + IEnumerable cf_ = context.Operators.Where(cd_, ce_); + object cg_(Encounter @this) + { + Period pv_ = @this?.Period; + CqlInterval pw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, pv_); + CqlDateTime px_ = context.Operators.End(pw_); + + return px_; + }; + IEnumerable ch_ = context.Operators.SortBy(cf_, cg_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ci_ = context.Operators.Last(ch_); + Period cj_ = ci_?.Period; + CqlInterval ck_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, cj_); + CqlDateTime cl_ = context.Operators.Start(ck_); + CqlInterval cn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + CqlDateTime co_ = context.Operators.Start(cn_); + CqlInterval cp_ = context.Operators.Interval(br_, cb_ ?? cl_ ?? co_, true, true); + bool? cq_ = context.Operators.In(as_, cp_, default); + IEnumerable cs_ = context.Operators.Retrieve(new RetrieveParameters(default, at_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ct_(Encounter LastED) + { + Code py_ = LastED?.StatusElement; + Encounter.EncounterStatus? pz_ = py_?.Value; + Code qa_ = context.Operators.Convert>(pz_); + bool? qb_ = context.Operators.Equal(qa_, "finished"); + Period qc_ = LastED?.Period; + CqlInterval qd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qc_); + CqlDateTime qe_ = context.Operators.End(qd_); + CqlValueSet qf_ = this.Observation_Services(context); + IEnumerable qg_ = context.Operators.Retrieve(new RetrieveParameters(default, qf_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? qh_(Encounter LastObs) + { + Code rz_ = LastObs?.StatusElement; + Encounter.EncounterStatus? sa_ = rz_?.Value; + Code sb_ = context.Operators.Convert>(sa_); + bool? sc_ = context.Operators.Equal(sb_, "finished"); + Period sd_ = LastObs?.Period; + CqlInterval se_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sd_); + CqlDateTime sf_ = context.Operators.End(se_); + Period sg_ = Visit?.Period; + CqlInterval sh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sg_); + CqlDateTime si_ = context.Operators.Start(sh_); + CqlQuantity sj_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime sk_ = context.Operators.Subtract(si_, sj_); + CqlInterval sm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sg_); + CqlDateTime sn_ = context.Operators.Start(sm_); + CqlInterval so_ = context.Operators.Interval(sk_, sn_, true, true); + bool? sp_ = context.Operators.In(sf_, so_, default); + CqlInterval sr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sg_); + CqlDateTime ss_ = context.Operators.Start(sr_); + bool? st_ = context.Operators.Not((bool?)(ss_ is null)); + bool? su_ = context.Operators.And(sp_, st_); + bool? sv_ = context.Operators.And(sc_, su_); + + return sv_; + }; + IEnumerable qi_ = context.Operators.Where(qg_, qh_); + object qj_(Encounter @this) + { + Period sw_ = @this?.Period; + CqlInterval sx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, sw_); + CqlDateTime sy_ = context.Operators.End(sx_); + + return sy_; + }; + IEnumerable qk_ = context.Operators.SortBy(qi_, qj_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ql_ = context.Operators.Last(qk_); + Period qm_ = ql_?.Period; + CqlInterval qn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qm_); + CqlDateTime qo_ = context.Operators.Start(qn_); + Period qp_ = Visit?.Period; + CqlInterval qq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qp_); + CqlDateTime qr_ = context.Operators.Start(qq_); + CqlQuantity qs_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime qt_ = context.Operators.Subtract(qo_ ?? qr_, qs_); + IEnumerable qv_ = context.Operators.Retrieve(new RetrieveParameters(default, qf_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? qw_(Encounter LastObs) + { + Code sz_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ta_ = sz_?.Value; + Code tb_ = context.Operators.Convert>(ta_); + bool? tc_ = context.Operators.Equal(tb_, "finished"); + Period td_ = LastObs?.Period; + CqlInterval te_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, td_); + CqlDateTime tf_ = context.Operators.End(te_); + Period tg_ = Visit?.Period; + CqlInterval th_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tg_); + CqlDateTime ti_ = context.Operators.Start(th_); + CqlQuantity tj_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime tk_ = context.Operators.Subtract(ti_, tj_); + CqlInterval tm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tg_); + CqlDateTime tn_ = context.Operators.Start(tm_); + CqlInterval to_ = context.Operators.Interval(tk_, tn_, true, true); + bool? tp_ = context.Operators.In(tf_, to_, default); + CqlInterval tr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tg_); + CqlDateTime ts_ = context.Operators.Start(tr_); + bool? tt_ = context.Operators.Not((bool?)(ts_ is null)); + bool? tu_ = context.Operators.And(tp_, tt_); + bool? tv_ = context.Operators.And(tc_, tu_); + + return tv_; + }; + IEnumerable qx_ = context.Operators.Where(qv_, qw_); + object qy_(Encounter @this) + { + Period tw_ = @this?.Period; + CqlInterval tx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, tw_); + CqlDateTime ty_ = context.Operators.End(tx_); + + return ty_; + }; + IEnumerable qz_ = context.Operators.SortBy(qx_, qy_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ra_ = context.Operators.Last(qz_); + Period rb_ = ra_?.Period; + CqlInterval rc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, rb_); + CqlDateTime rd_ = context.Operators.Start(rc_); + CqlInterval rf_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qp_); + CqlDateTime rg_ = context.Operators.Start(rf_); + CqlInterval rh_ = context.Operators.Interval(qt_, rd_ ?? rg_, true, true); + bool? ri_ = context.Operators.In(qe_, rh_, default); + IEnumerable rk_ = context.Operators.Retrieve(new RetrieveParameters(default, qf_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? rl_(Encounter LastObs) + { + Code tz_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ua_ = tz_?.Value; + Code ub_ = context.Operators.Convert>(ua_); + bool? uc_ = context.Operators.Equal(ub_, "finished"); + Period ud_ = LastObs?.Period; + CqlInterval ue_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ud_); + CqlDateTime uf_ = context.Operators.End(ue_); + Period ug_ = Visit?.Period; + CqlInterval uh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ug_); + CqlDateTime ui_ = context.Operators.Start(uh_); + CqlQuantity uj_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime uk_ = context.Operators.Subtract(ui_, uj_); + CqlInterval um_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ug_); + CqlDateTime un_ = context.Operators.Start(um_); + CqlInterval uo_ = context.Operators.Interval(uk_, un_, true, true); + bool? up_ = context.Operators.In(uf_, uo_, default); + CqlInterval ur_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ug_); + CqlDateTime us_ = context.Operators.Start(ur_); + bool? ut_ = context.Operators.Not((bool?)(us_ is null)); + bool? uu_ = context.Operators.And(up_, ut_); + bool? uv_ = context.Operators.And(uc_, uu_); + + return uv_; + }; + IEnumerable rm_ = context.Operators.Where(rk_, rl_); + object rn_(Encounter @this) + { + Period uw_ = @this?.Period; + CqlInterval ux_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, uw_); + CqlDateTime uy_ = context.Operators.End(ux_); + + return uy_; + }; + IEnumerable ro_ = context.Operators.SortBy(rm_, rn_, System.ComponentModel.ListSortDirection.Ascending); + Encounter rp_ = context.Operators.Last(ro_); + Period rq_ = rp_?.Period; + CqlInterval rr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, rq_); + CqlDateTime rs_ = context.Operators.Start(rr_); + CqlInterval ru_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, qp_); + CqlDateTime rv_ = context.Operators.Start(ru_); + bool? rw_ = context.Operators.Not((bool?)((rs_ ?? rv_) is null)); + bool? rx_ = context.Operators.And(ri_, rw_); + bool? ry_ = context.Operators.And(qb_, rx_); + + return ry_; + }; + IEnumerable cu_ = context.Operators.Where(cs_, ct_); + object cv_(Encounter @this) + { + Period uz_ = @this?.Period; + CqlInterval va_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, uz_); + CqlDateTime vb_ = context.Operators.End(va_); + + return vb_; + }; + IEnumerable cw_ = context.Operators.SortBy(cu_, cv_, System.ComponentModel.ListSortDirection.Ascending); + Encounter cx_ = context.Operators.Last(cw_); + Period cy_ = cx_?.Period; + CqlInterval cz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, cy_); + CqlDateTime da_ = context.Operators.Start(cz_); + IEnumerable dc_ = context.Operators.Retrieve(new RetrieveParameters(default, bd_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? dd_(Encounter LastObs) + { + Code vc_ = LastObs?.StatusElement; + Encounter.EncounterStatus? vd_ = vc_?.Value; + Code ve_ = context.Operators.Convert>(vd_); + bool? vf_ = context.Operators.Equal(ve_, "finished"); + Period vg_ = LastObs?.Period; + CqlInterval vh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vg_); + CqlDateTime vi_ = context.Operators.End(vh_); + Period vj_ = Visit?.Period; + CqlInterval vk_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vj_); + CqlDateTime vl_ = context.Operators.Start(vk_); + CqlQuantity vm_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime vn_ = context.Operators.Subtract(vl_, vm_); + CqlInterval vp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vj_); + CqlDateTime vq_ = context.Operators.Start(vp_); + CqlInterval vr_ = context.Operators.Interval(vn_, vq_, true, true); + bool? vs_ = context.Operators.In(vi_, vr_, default); + CqlInterval vu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vj_); + CqlDateTime vv_ = context.Operators.Start(vu_); + bool? vw_ = context.Operators.Not((bool?)(vv_ is null)); + bool? vx_ = context.Operators.And(vs_, vw_); + bool? vy_ = context.Operators.And(vf_, vx_); + + return vy_; + }; + IEnumerable de_ = context.Operators.Where(dc_, dd_); + object df_(Encounter @this) + { + Period vz_ = @this?.Period; + CqlInterval wa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, vz_); + CqlDateTime wb_ = context.Operators.End(wa_); + + return wb_; + }; + IEnumerable dg_ = context.Operators.SortBy(de_, df_, System.ComponentModel.ListSortDirection.Ascending); + Encounter dh_ = context.Operators.Last(dg_); + Period di_ = dh_?.Period; + CqlInterval dj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, di_); + CqlDateTime dk_ = context.Operators.Start(dj_); + CqlInterval dm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + CqlDateTime dn_ = context.Operators.Start(dm_); + bool? do_ = context.Operators.Not((bool?)((da_ ?? dk_ ?? dn_) is null)); + bool? dp_ = context.Operators.And(cq_, do_); + + return dp_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + object j_(Encounter @this) + { + Period wc_ = @this?.Period; + CqlInterval wd_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, wc_); + CqlDateTime we_ = context.Operators.End(wd_); + + return we_; + }; + IEnumerable k_ = context.Operators.SortBy(i_, j_, System.ComponentModel.ListSortDirection.Ascending); + Encounter l_ = context.Operators.Last(k_); + Period m_ = l_?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.Start(n_); + CqlValueSet p_ = this.Emergency_Department_Visit(context); + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, p_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? r_(Encounter LastED) + { + Code wf_ = LastED?.StatusElement; + Encounter.EncounterStatus? wg_ = wf_?.Value; + Code wh_ = context.Operators.Convert>(wg_); + bool? wi_ = context.Operators.Equal(wh_, "finished"); + Period wj_ = LastED?.Period; + CqlInterval wk_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, wj_); + CqlDateTime wl_ = context.Operators.End(wk_); + CqlValueSet wm_ = this.Observation_Services(context); + IEnumerable wn_ = context.Operators.Retrieve(new RetrieveParameters(default, wm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? wo_(Encounter LastObs) + { + Code yg_ = LastObs?.StatusElement; + Encounter.EncounterStatus? yh_ = yg_?.Value; + Code yi_ = context.Operators.Convert>(yh_); + bool? yj_ = context.Operators.Equal(yi_, "finished"); + Period yk_ = LastObs?.Period; + CqlInterval yl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yk_); + CqlDateTime ym_ = context.Operators.End(yl_); + Period yn_ = Visit?.Period; + CqlInterval yo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yn_); + CqlDateTime yp_ = context.Operators.Start(yo_); + CqlQuantity yq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime yr_ = context.Operators.Subtract(yp_, yq_); + CqlInterval yt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yn_); + CqlDateTime yu_ = context.Operators.Start(yt_); + CqlInterval yv_ = context.Operators.Interval(yr_, yu_, true, true); + bool? yw_ = context.Operators.In(ym_, yv_, default); + CqlInterval yy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, yn_); + CqlDateTime yz_ = context.Operators.Start(yy_); + bool? za_ = context.Operators.Not((bool?)(yz_ is null)); + bool? zb_ = context.Operators.And(yw_, za_); + bool? zc_ = context.Operators.And(yj_, zb_); + + return zc_; + }; + IEnumerable wp_ = context.Operators.Where(wn_, wo_); + object wq_(Encounter @this) + { + Period zd_ = @this?.Period; + CqlInterval ze_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zd_); + CqlDateTime zf_ = context.Operators.End(ze_); + + return zf_; + }; + IEnumerable wr_ = context.Operators.SortBy(wp_, wq_, System.ComponentModel.ListSortDirection.Ascending); + Encounter ws_ = context.Operators.Last(wr_); + Period wt_ = ws_?.Period; + CqlInterval wu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, wt_); + CqlDateTime wv_ = context.Operators.Start(wu_); + Period ww_ = Visit?.Period; + CqlInterval wx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ww_); + CqlDateTime wy_ = context.Operators.Start(wx_); + CqlQuantity wz_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime xa_ = context.Operators.Subtract(wv_ ?? wy_, wz_); + IEnumerable xc_ = context.Operators.Retrieve(new RetrieveParameters(default, wm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? xd_(Encounter LastObs) + { + Code zg_ = LastObs?.StatusElement; + Encounter.EncounterStatus? zh_ = zg_?.Value; + Code zi_ = context.Operators.Convert>(zh_); + bool? zj_ = context.Operators.Equal(zi_, "finished"); + Period zk_ = LastObs?.Period; + CqlInterval zl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zk_); + CqlDateTime zm_ = context.Operators.End(zl_); + Period zn_ = Visit?.Period; + CqlInterval zo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zn_); + CqlDateTime zp_ = context.Operators.Start(zo_); + CqlQuantity zq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime zr_ = context.Operators.Subtract(zp_, zq_); + CqlInterval zt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zn_); + CqlDateTime zu_ = context.Operators.Start(zt_); + CqlInterval zv_ = context.Operators.Interval(zr_, zu_, true, true); + bool? zw_ = context.Operators.In(zm_, zv_, default); + CqlInterval zy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, zn_); + CqlDateTime zz_ = context.Operators.Start(zy_); + bool? aza_ = context.Operators.Not((bool?)(zz_ is null)); + bool? azb_ = context.Operators.And(zw_, aza_); + bool? azc_ = context.Operators.And(zj_, azb_); + + return azc_; + }; + IEnumerable xe_ = context.Operators.Where(xc_, xd_); + object xf_(Encounter @this) + { + Period azd_ = @this?.Period; + CqlInterval aze_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azd_); + CqlDateTime azf_ = context.Operators.End(aze_); + + return azf_; + }; + IEnumerable xg_ = context.Operators.SortBy(xe_, xf_, System.ComponentModel.ListSortDirection.Ascending); + Encounter xh_ = context.Operators.Last(xg_); + Period xi_ = xh_?.Period; + CqlInterval xj_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, xi_); + CqlDateTime xk_ = context.Operators.Start(xj_); + CqlInterval xm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ww_); + CqlDateTime xn_ = context.Operators.Start(xm_); + CqlInterval xo_ = context.Operators.Interval(xa_, xk_ ?? xn_, true, true); + bool? xp_ = context.Operators.In(wl_, xo_, default); + IEnumerable xr_ = context.Operators.Retrieve(new RetrieveParameters(default, wm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? xs_(Encounter LastObs) + { + Code azg_ = LastObs?.StatusElement; + Encounter.EncounterStatus? azh_ = azg_?.Value; + Code azi_ = context.Operators.Convert>(azh_); + bool? azj_ = context.Operators.Equal(azi_, "finished"); + Period azk_ = LastObs?.Period; + CqlInterval azl_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azk_); + CqlDateTime azm_ = context.Operators.End(azl_); + Period azn_ = Visit?.Period; + CqlInterval azo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azn_); + CqlDateTime azp_ = context.Operators.Start(azo_); + CqlQuantity azq_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime azr_ = context.Operators.Subtract(azp_, azq_); + CqlInterval azt_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azn_); + CqlDateTime azu_ = context.Operators.Start(azt_); + CqlInterval azv_ = context.Operators.Interval(azr_, azu_, true, true); + bool? azw_ = context.Operators.In(azm_, azv_, default); + CqlInterval azy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, azn_); + CqlDateTime azz_ = context.Operators.Start(azy_); + bool? bza_ = context.Operators.Not((bool?)(azz_ is null)); + bool? bzb_ = context.Operators.And(azw_, bza_); + bool? bzc_ = context.Operators.And(azj_, bzb_); + + return bzc_; + }; + IEnumerable xt_ = context.Operators.Where(xr_, xs_); + object xu_(Encounter @this) + { + Period bzd_ = @this?.Period; + CqlInterval bze_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzd_); + CqlDateTime bzf_ = context.Operators.End(bze_); + + return bzf_; + }; + IEnumerable xv_ = context.Operators.SortBy(xt_, xu_, System.ComponentModel.ListSortDirection.Ascending); + Encounter xw_ = context.Operators.Last(xv_); + Period xx_ = xw_?.Period; + CqlInterval xy_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, xx_); + CqlDateTime xz_ = context.Operators.Start(xy_); + CqlInterval yb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ww_); + CqlDateTime yc_ = context.Operators.Start(yb_); + bool? yd_ = context.Operators.Not((bool?)((xz_ ?? yc_) is null)); + bool? ye_ = context.Operators.And(xp_, yd_); + bool? yf_ = context.Operators.And(wi_, ye_); + + return yf_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + object t_(Encounter @this) + { + Period bzg_ = @this?.Period; + CqlInterval bzh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzg_); + CqlDateTime bzi_ = context.Operators.End(bzh_); + + return bzi_; + }; + IEnumerable u_ = context.Operators.SortBy(s_, t_, System.ComponentModel.ListSortDirection.Ascending); + Encounter v_ = context.Operators.Last(u_); + Period w_ = v_?.Period; + CqlInterval x_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, w_); + CqlDateTime y_ = context.Operators.Start(x_); + CqlValueSet z_ = this.Observation_Services(context); + IEnumerable aa_ = context.Operators.Retrieve(new RetrieveParameters(default, z_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ab_(Encounter LastObs) + { + Code bzj_ = LastObs?.StatusElement; + Encounter.EncounterStatus? bzk_ = bzj_?.Value; + Code bzl_ = context.Operators.Convert>(bzk_); + bool? bzm_ = context.Operators.Equal(bzl_, "finished"); + Period bzn_ = LastObs?.Period; + CqlInterval bzo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzn_); + CqlDateTime bzp_ = context.Operators.End(bzo_); + Period bzq_ = Visit?.Period; + CqlInterval bzr_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzq_); + CqlDateTime bzs_ = context.Operators.Start(bzr_); + CqlQuantity bzt_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime bzu_ = context.Operators.Subtract(bzs_, bzt_); + CqlInterval bzw_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzq_); + CqlDateTime bzx_ = context.Operators.Start(bzw_); + CqlInterval bzy_ = context.Operators.Interval(bzu_, bzx_, true, true); + bool? bzz_ = context.Operators.In(bzp_, bzy_, default); + CqlInterval czb_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bzq_); + CqlDateTime czc_ = context.Operators.Start(czb_); + bool? czd_ = context.Operators.Not((bool?)(czc_ is null)); + bool? cze_ = context.Operators.And(bzz_, czd_); + bool? czf_ = context.Operators.And(bzm_, cze_); + + return czf_; + }; + IEnumerable ac_ = context.Operators.Where(aa_, ab_); + object ad_(Encounter @this) + { + Period czg_ = @this?.Period; + CqlInterval czh_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, czg_); + CqlDateTime czi_ = context.Operators.End(czh_); + + return czi_; + }; + IEnumerable ae_ = context.Operators.SortBy(ac_, ad_, System.ComponentModel.ListSortDirection.Ascending); + Encounter af_ = context.Operators.Last(ae_); + Period ag_ = af_?.Period; + CqlInterval ah_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ag_); + CqlDateTime ai_ = context.Operators.Start(ah_); + Period aj_ = Visit?.Period; + CqlInterval ak_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aj_); + CqlDateTime al_ = context.Operators.Start(ak_); + CqlInterval an_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aj_); + CqlDateTime ao_ = context.Operators.End(an_); + CqlInterval ap_ = context.Operators.Interval(o_ ?? y_ ?? ai_ ?? al_, ao_, true, true); + + return ap_; + }; + IEnumerable> c_ = context.Operators.Select>((IEnumerable)a_, b_); + IEnumerable> d_ = context.Operators.Distinct>(c_); + CqlInterval e_ = context.Operators.SingletonFrom>(d_); + + return e_; + } + + + public CqlInterval HospitalizationWithObservation(CqlContext context, Encounter TheEncounter) + { + Encounter[] a_ = [ + TheEncounter, + ]; + CqlInterval b_(Encounter Visit) + { + CqlValueSet f_ = this.Emergency_Department_Visit(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? h_(Encounter LastED) + { + Code ag_ = LastED?.StatusElement; + Encounter.EncounterStatus? ah_ = ag_?.Value; + Code ai_ = context.Operators.Convert>(ah_); + bool? aj_ = context.Operators.Equal(ai_, "finished"); + Period ak_ = LastED?.Period; + CqlInterval al_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ak_); + CqlDateTime am_ = context.Operators.End(al_); + CqlValueSet an_ = this.Observation_Services(context); + IEnumerable ao_ = context.Operators.Retrieve(new RetrieveParameters(default, an_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ap_(Encounter LastObs) + { + Code ch_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ci_ = ch_?.Value; + Code cj_ = context.Operators.Convert>(ci_); + bool? ck_ = context.Operators.Equal(cj_, "finished"); + Period cl_ = LastObs?.Period; + CqlInterval cm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, cl_); + CqlDateTime cn_ = context.Operators.End(cm_); + Period co_ = Visit?.Period; + CqlInterval cp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, co_); + CqlDateTime cq_ = context.Operators.Start(cp_); + CqlQuantity cr_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime cs_ = context.Operators.Subtract(cq_, cr_); + CqlInterval cu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, co_); + CqlDateTime cv_ = context.Operators.Start(cu_); + CqlInterval cw_ = context.Operators.Interval(cs_, cv_, true, true); + bool? cx_ = context.Operators.In(cn_, cw_, default); + CqlInterval cz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, co_); + CqlDateTime da_ = context.Operators.Start(cz_); + bool? db_ = context.Operators.Not((bool?)(da_ is null)); + bool? dc_ = context.Operators.And(cx_, db_); + bool? dd_ = context.Operators.And(ck_, dc_); + + return dd_; + }; + IEnumerable aq_ = context.Operators.Where(ao_, ap_); + object ar_(Encounter @this) + { + Period de_ = @this?.Period; + CqlInterval df_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, de_); + CqlDateTime dg_ = context.Operators.End(df_); + + return dg_; + }; + IEnumerable as_ = context.Operators.SortBy(aq_, ar_, System.ComponentModel.ListSortDirection.Ascending); + Encounter at_ = context.Operators.Last(as_); + Period au_ = at_?.Period; + CqlInterval av_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, au_); + CqlDateTime aw_ = context.Operators.Start(av_); + Period ax_ = Visit?.Period; + CqlInterval ay_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ax_); + CqlDateTime az_ = context.Operators.Start(ay_); + CqlQuantity ba_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime bb_ = context.Operators.Subtract(aw_ ?? az_, ba_); + IEnumerable bd_ = context.Operators.Retrieve(new RetrieveParameters(default, an_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? be_(Encounter LastObs) + { + Code dh_ = LastObs?.StatusElement; + Encounter.EncounterStatus? di_ = dh_?.Value; + Code dj_ = context.Operators.Convert>(di_); + bool? dk_ = context.Operators.Equal(dj_, "finished"); + Period dl_ = LastObs?.Period; + CqlInterval dm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, dl_); + CqlDateTime dn_ = context.Operators.End(dm_); + Period do_ = Visit?.Period; + CqlInterval dp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, do_); + CqlDateTime dq_ = context.Operators.Start(dp_); + CqlQuantity dr_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime ds_ = context.Operators.Subtract(dq_, dr_); + CqlInterval du_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, do_); + CqlDateTime dv_ = context.Operators.Start(du_); + CqlInterval dw_ = context.Operators.Interval(ds_, dv_, true, true); + bool? dx_ = context.Operators.In(dn_, dw_, default); + CqlInterval dz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, do_); + CqlDateTime ea_ = context.Operators.Start(dz_); + bool? eb_ = context.Operators.Not((bool?)(ea_ is null)); + bool? ec_ = context.Operators.And(dx_, eb_); + bool? ed_ = context.Operators.And(dk_, ec_); + + return ed_; + }; + IEnumerable bf_ = context.Operators.Where(bd_, be_); + object bg_(Encounter @this) + { + Period ee_ = @this?.Period; + CqlInterval ef_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ee_); + CqlDateTime eg_ = context.Operators.End(ef_); + + return eg_; + }; + IEnumerable bh_ = context.Operators.SortBy(bf_, bg_, System.ComponentModel.ListSortDirection.Ascending); + Encounter bi_ = context.Operators.Last(bh_); + Period bj_ = bi_?.Period; + CqlInterval bk_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bj_); + CqlDateTime bl_ = context.Operators.Start(bk_); + CqlInterval bn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ax_); + CqlDateTime bo_ = context.Operators.Start(bn_); + CqlInterval bp_ = context.Operators.Interval(bb_, bl_ ?? bo_, true, true); + bool? bq_ = context.Operators.In(am_, bp_, default); + IEnumerable bs_ = context.Operators.Retrieve(new RetrieveParameters(default, an_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? bt_(Encounter LastObs) + { + Code eh_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ei_ = eh_?.Value; + Code ej_ = context.Operators.Convert>(ei_); + bool? ek_ = context.Operators.Equal(ej_, "finished"); + Period el_ = LastObs?.Period; + CqlInterval em_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, el_); + CqlDateTime en_ = context.Operators.End(em_); + Period eo_ = Visit?.Period; + CqlInterval ep_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eo_); + CqlDateTime eq_ = context.Operators.Start(ep_); + CqlQuantity er_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime es_ = context.Operators.Subtract(eq_, er_); + CqlInterval eu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eo_); + CqlDateTime ev_ = context.Operators.Start(eu_); + CqlInterval ew_ = context.Operators.Interval(es_, ev_, true, true); + bool? ex_ = context.Operators.In(en_, ew_, default); + CqlInterval ez_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eo_); + CqlDateTime fa_ = context.Operators.Start(ez_); + bool? fb_ = context.Operators.Not((bool?)(fa_ is null)); + bool? fc_ = context.Operators.And(ex_, fb_); + bool? fd_ = context.Operators.And(ek_, fc_); + + return fd_; + }; + IEnumerable bu_ = context.Operators.Where(bs_, bt_); + object bv_(Encounter @this) + { + Period fe_ = @this?.Period; + CqlInterval ff_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fe_); + CqlDateTime fg_ = context.Operators.End(ff_); + + return fg_; + }; + IEnumerable bw_ = context.Operators.SortBy(bu_, bv_, System.ComponentModel.ListSortDirection.Ascending); + Encounter bx_ = context.Operators.Last(bw_); + Period by_ = bx_?.Period; + CqlInterval bz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, by_); + CqlDateTime ca_ = context.Operators.Start(bz_); + CqlInterval cc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ax_); + CqlDateTime cd_ = context.Operators.Start(cc_); + bool? ce_ = context.Operators.Not((bool?)((ca_ ?? cd_) is null)); + bool? cf_ = context.Operators.And(bq_, ce_); + bool? cg_ = context.Operators.And(aj_, cf_); + + return cg_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + object j_(Encounter @this) + { + Period fh_ = @this?.Period; + CqlInterval fi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fh_); + CqlDateTime fj_ = context.Operators.End(fi_); + + return fj_; + }; + IEnumerable k_ = context.Operators.SortBy(i_, j_, System.ComponentModel.ListSortDirection.Ascending); + Encounter l_ = context.Operators.Last(k_); + Period m_ = l_?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.Start(n_); + CqlValueSet p_ = this.Observation_Services(context); + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, p_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? r_(Encounter LastObs) + { + Code fk_ = LastObs?.StatusElement; + Encounter.EncounterStatus? fl_ = fk_?.Value; + Code fm_ = context.Operators.Convert>(fl_); + bool? fn_ = context.Operators.Equal(fm_, "finished"); + Period fo_ = LastObs?.Period; + CqlInterval fp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fo_); + CqlDateTime fq_ = context.Operators.End(fp_); + Period fr_ = Visit?.Period; + CqlInterval fs_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fr_); + CqlDateTime ft_ = context.Operators.Start(fs_); + CqlQuantity fu_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime fv_ = context.Operators.Subtract(ft_, fu_); + CqlInterval fx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fr_); + CqlDateTime fy_ = context.Operators.Start(fx_); + CqlInterval fz_ = context.Operators.Interval(fv_, fy_, true, true); + bool? ga_ = context.Operators.In(fq_, fz_, default); + CqlInterval gc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fr_); + CqlDateTime gd_ = context.Operators.Start(gc_); + bool? ge_ = context.Operators.Not((bool?)(gd_ is null)); + bool? gf_ = context.Operators.And(ga_, ge_); + bool? gg_ = context.Operators.And(fn_, gf_); + + return gg_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + object t_(Encounter @this) + { + Period gh_ = @this?.Period; + CqlInterval gi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gh_); + CqlDateTime gj_ = context.Operators.End(gi_); + + return gj_; + }; + IEnumerable u_ = context.Operators.SortBy(s_, t_, System.ComponentModel.ListSortDirection.Ascending); + Encounter v_ = context.Operators.Last(u_); + Period w_ = v_?.Period; + CqlInterval x_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, w_); + CqlDateTime y_ = context.Operators.Start(x_); + Period z_ = Visit?.Period; + CqlInterval aa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, z_); + CqlDateTime ab_ = context.Operators.Start(aa_); + CqlInterval ad_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, z_); + CqlDateTime ae_ = context.Operators.End(ad_); + CqlInterval af_ = context.Operators.Interval(o_ ?? y_ ?? ab_, ae_, true, true); + + return af_; + }; + IEnumerable> c_ = context.Operators.Select>((IEnumerable)a_, b_); + IEnumerable> d_ = context.Operators.Distinct>(c_); + CqlInterval e_ = context.Operators.SingletonFrom>(d_); + + return e_; + } + + + public CqlInterval hospitalizationWithObservation(CqlContext context, Encounter TheEncounter) + { + Encounter[] a_ = [ + TheEncounter, + ]; + CqlInterval b_(Encounter Visit) + { + CqlValueSet f_ = this.Emergency_Department_Visit(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? h_(Encounter LastED) + { + Code ag_ = LastED?.StatusElement; + Encounter.EncounterStatus? ah_ = ag_?.Value; + Code ai_ = context.Operators.Convert>(ah_); + bool? aj_ = context.Operators.Equal(ai_, "finished"); + Period ak_ = LastED?.Period; + CqlInterval al_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ak_); + CqlDateTime am_ = context.Operators.End(al_); + CqlValueSet an_ = this.Observation_Services(context); + IEnumerable ao_ = context.Operators.Retrieve(new RetrieveParameters(default, an_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? ap_(Encounter LastObs) + { + Code ch_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ci_ = ch_?.Value; + Code cj_ = context.Operators.Convert>(ci_); + bool? ck_ = context.Operators.Equal(cj_, "finished"); + Period cl_ = LastObs?.Period; + CqlInterval cm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, cl_); + CqlDateTime cn_ = context.Operators.End(cm_); + Period co_ = Visit?.Period; + CqlInterval cp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, co_); + CqlDateTime cq_ = context.Operators.Start(cp_); + CqlQuantity cr_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime cs_ = context.Operators.Subtract(cq_, cr_); + CqlInterval cu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, co_); + CqlDateTime cv_ = context.Operators.Start(cu_); + CqlInterval cw_ = context.Operators.Interval(cs_, cv_, true, true); + bool? cx_ = context.Operators.In(cn_, cw_, default); + CqlInterval cz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, co_); + CqlDateTime da_ = context.Operators.Start(cz_); + bool? db_ = context.Operators.Not((bool?)(da_ is null)); + bool? dc_ = context.Operators.And(cx_, db_); + bool? dd_ = context.Operators.And(ck_, dc_); + + return dd_; + }; + IEnumerable aq_ = context.Operators.Where(ao_, ap_); + object ar_(Encounter @this) + { + Period de_ = @this?.Period; + CqlInterval df_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, de_); + CqlDateTime dg_ = context.Operators.End(df_); + + return dg_; + }; + IEnumerable as_ = context.Operators.SortBy(aq_, ar_, System.ComponentModel.ListSortDirection.Ascending); + Encounter at_ = context.Operators.Last(as_); + Period au_ = at_?.Period; + CqlInterval av_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, au_); + CqlDateTime aw_ = context.Operators.Start(av_); + Period ax_ = Visit?.Period; + CqlInterval ay_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ax_); + CqlDateTime az_ = context.Operators.Start(ay_); + CqlQuantity ba_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime bb_ = context.Operators.Subtract(aw_ ?? az_, ba_); + IEnumerable bd_ = context.Operators.Retrieve(new RetrieveParameters(default, an_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? be_(Encounter LastObs) + { + Code dh_ = LastObs?.StatusElement; + Encounter.EncounterStatus? di_ = dh_?.Value; + Code dj_ = context.Operators.Convert>(di_); + bool? dk_ = context.Operators.Equal(dj_, "finished"); + Period dl_ = LastObs?.Period; + CqlInterval dm_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, dl_); + CqlDateTime dn_ = context.Operators.End(dm_); + Period do_ = Visit?.Period; + CqlInterval dp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, do_); + CqlDateTime dq_ = context.Operators.Start(dp_); + CqlQuantity dr_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime ds_ = context.Operators.Subtract(dq_, dr_); + CqlInterval du_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, do_); + CqlDateTime dv_ = context.Operators.Start(du_); + CqlInterval dw_ = context.Operators.Interval(ds_, dv_, true, true); + bool? dx_ = context.Operators.In(dn_, dw_, default); + CqlInterval dz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, do_); + CqlDateTime ea_ = context.Operators.Start(dz_); + bool? eb_ = context.Operators.Not((bool?)(ea_ is null)); + bool? ec_ = context.Operators.And(dx_, eb_); + bool? ed_ = context.Operators.And(dk_, ec_); + + return ed_; + }; + IEnumerable bf_ = context.Operators.Where(bd_, be_); + object bg_(Encounter @this) + { + Period ee_ = @this?.Period; + CqlInterval ef_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ee_); + CqlDateTime eg_ = context.Operators.End(ef_); + + return eg_; + }; + IEnumerable bh_ = context.Operators.SortBy(bf_, bg_, System.ComponentModel.ListSortDirection.Ascending); + Encounter bi_ = context.Operators.Last(bh_); + Period bj_ = bi_?.Period; + CqlInterval bk_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bj_); + CqlDateTime bl_ = context.Operators.Start(bk_); + CqlInterval bn_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ax_); + CqlDateTime bo_ = context.Operators.Start(bn_); + CqlInterval bp_ = context.Operators.Interval(bb_, bl_ ?? bo_, true, true); + bool? bq_ = context.Operators.In(am_, bp_, default); + IEnumerable bs_ = context.Operators.Retrieve(new RetrieveParameters(default, an_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? bt_(Encounter LastObs) + { + Code eh_ = LastObs?.StatusElement; + Encounter.EncounterStatus? ei_ = eh_?.Value; + Code ej_ = context.Operators.Convert>(ei_); + bool? ek_ = context.Operators.Equal(ej_, "finished"); + Period el_ = LastObs?.Period; + CqlInterval em_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, el_); + CqlDateTime en_ = context.Operators.End(em_); + Period eo_ = Visit?.Period; + CqlInterval ep_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eo_); + CqlDateTime eq_ = context.Operators.Start(ep_); + CqlQuantity er_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime es_ = context.Operators.Subtract(eq_, er_); + CqlInterval eu_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eo_); + CqlDateTime ev_ = context.Operators.Start(eu_); + CqlInterval ew_ = context.Operators.Interval(es_, ev_, true, true); + bool? ex_ = context.Operators.In(en_, ew_, default); + CqlInterval ez_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, eo_); + CqlDateTime fa_ = context.Operators.Start(ez_); + bool? fb_ = context.Operators.Not((bool?)(fa_ is null)); + bool? fc_ = context.Operators.And(ex_, fb_); + bool? fd_ = context.Operators.And(ek_, fc_); + + return fd_; + }; + IEnumerable bu_ = context.Operators.Where(bs_, bt_); + object bv_(Encounter @this) + { + Period fe_ = @this?.Period; + CqlInterval ff_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fe_); + CqlDateTime fg_ = context.Operators.End(ff_); + + return fg_; + }; + IEnumerable bw_ = context.Operators.SortBy(bu_, bv_, System.ComponentModel.ListSortDirection.Ascending); + Encounter bx_ = context.Operators.Last(bw_); + Period by_ = bx_?.Period; + CqlInterval bz_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, by_); + CqlDateTime ca_ = context.Operators.Start(bz_); + CqlInterval cc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ax_); + CqlDateTime cd_ = context.Operators.Start(cc_); + bool? ce_ = context.Operators.Not((bool?)((ca_ ?? cd_) is null)); + bool? cf_ = context.Operators.And(bq_, ce_); + bool? cg_ = context.Operators.And(aj_, cf_); + + return cg_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + object j_(Encounter @this) + { + Period fh_ = @this?.Period; + CqlInterval fi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fh_); + CqlDateTime fj_ = context.Operators.End(fi_); + + return fj_; + }; + IEnumerable k_ = context.Operators.SortBy(i_, j_, System.ComponentModel.ListSortDirection.Ascending); + Encounter l_ = context.Operators.Last(k_); + Period m_ = l_?.Period; + CqlInterval n_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, m_); + CqlDateTime o_ = context.Operators.Start(n_); + CqlValueSet p_ = this.Observation_Services(context); + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, p_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? r_(Encounter LastObs) + { + Code fk_ = LastObs?.StatusElement; + Encounter.EncounterStatus? fl_ = fk_?.Value; + Code fm_ = context.Operators.Convert>(fl_); + bool? fn_ = context.Operators.Equal(fm_, "finished"); + Period fo_ = LastObs?.Period; + CqlInterval fp_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fo_); + CqlDateTime fq_ = context.Operators.End(fp_); + Period fr_ = Visit?.Period; + CqlInterval fs_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fr_); + CqlDateTime ft_ = context.Operators.Start(fs_); + CqlQuantity fu_ = context.Operators.Quantity(1m, "hour"); + CqlDateTime fv_ = context.Operators.Subtract(ft_, fu_); + CqlInterval fx_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fr_); + CqlDateTime fy_ = context.Operators.Start(fx_); + CqlInterval fz_ = context.Operators.Interval(fv_, fy_, true, true); + bool? ga_ = context.Operators.In(fq_, fz_, default); + CqlInterval gc_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, fr_); + CqlDateTime gd_ = context.Operators.Start(gc_); + bool? ge_ = context.Operators.Not((bool?)(gd_ is null)); + bool? gf_ = context.Operators.And(ga_, ge_); + bool? gg_ = context.Operators.And(fn_, gf_); + + return gg_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + object t_(Encounter @this) + { + Period gh_ = @this?.Period; + CqlInterval gi_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, gh_); + CqlDateTime gj_ = context.Operators.End(gi_); + + return gj_; + }; + IEnumerable u_ = context.Operators.SortBy(s_, t_, System.ComponentModel.ListSortDirection.Ascending); + Encounter v_ = context.Operators.Last(u_); + Period w_ = v_?.Period; + CqlInterval x_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, w_); + CqlDateTime y_ = context.Operators.Start(x_); + Period z_ = Visit?.Period; + CqlInterval aa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, z_); + CqlDateTime ab_ = context.Operators.Start(aa_); + CqlInterval ad_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, z_); + CqlDateTime ae_ = context.Operators.End(ad_); + CqlInterval af_ = context.Operators.Interval(o_ ?? y_ ?? ab_, ae_, true, true); + + return af_; + }; + IEnumerable> c_ = context.Operators.Select>((IEnumerable)a_, b_); + IEnumerable> d_ = context.Operators.Distinct>(c_); + CqlInterval e_ = context.Operators.SingletonFrom>(d_); + + return e_; + } + + + public int? HospitalizationWithObservationLengthofStay(CqlContext context, Encounter TheEncounter) + { + CqlInterval a_ = this.HospitalizationWithObservation(context, TheEncounter); + int? b_ = this.LengthInDays(context, a_); + + return b_; + } + + + public int? hospitalizationWithObservationLengthofStay(CqlContext context, Encounter TheEncounter) + { + CqlInterval a_ = this.hospitalizationWithObservation(context, TheEncounter); + int? b_ = this.lengthInDays(context, a_); + + return b_; + } + + + public Encounter.LocationComponent FirstInpatientIntensiveCareUnit(CqlContext context, Encounter Encounter) + { + List a_ = Encounter?.Location; + bool? b_(Encounter.LocationComponent HospitalLocation) + { + ResourceReference g_ = HospitalLocation?.Location; + Location h_ = this.GetLocation(context, g_); + List i_ = h_?.Type; + CqlConcept j_(CodeableConcept @this) + { + CqlConcept t_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return t_; + }; + IEnumerable k_ = context.Operators.Select((IEnumerable)i_, j_); + CqlValueSet l_ = this.Intensive_Care_Unit(context); + bool? m_ = context.Operators.ConceptsInValueSet(k_, l_); + Period n_ = Encounter?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + Period p_ = HospitalLocation?.Period; + CqlInterval q_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, p_); + bool? r_ = context.Operators.IntervalIncludesInterval(o_, q_, default); + bool? s_ = context.Operators.And(m_, r_); + + return s_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + object d_(Encounter.LocationComponent @this) + { + Period u_ = @this?.Period; + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlDateTime w_ = context.Operators.Start(v_); + + return w_; + }; + IEnumerable e_ = context.Operators.SortBy(c_, d_, System.ComponentModel.ListSortDirection.Ascending); + Encounter.LocationComponent f_ = context.Operators.First(e_); + + return f_; + } + + + public Encounter.LocationComponent firstInpatientIntensiveCareUnit(CqlContext context, Encounter Encounter) + { + List a_ = Encounter?.Location; + bool? b_(Encounter.LocationComponent HospitalLocation) + { + ResourceReference g_ = HospitalLocation?.Location; + Location h_ = this.GetLocation(context, g_); + List i_ = h_?.Type; + CqlConcept j_(CodeableConcept @this) + { + CqlConcept t_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return t_; + }; + IEnumerable k_ = context.Operators.Select((IEnumerable)i_, j_); + CqlValueSet l_ = this.Intensive_Care_Unit(context); + bool? m_ = context.Operators.ConceptsInValueSet(k_, l_); + Period n_ = Encounter?.Period; + CqlInterval o_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, n_); + Period p_ = HospitalLocation?.Period; + CqlInterval q_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, p_); + bool? r_ = context.Operators.IntervalIncludesInterval(o_, q_, default); + bool? s_ = context.Operators.And(m_, r_); + + return s_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + object d_(Encounter.LocationComponent @this) + { + Period u_ = @this?.Period; + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlDateTime w_ = context.Operators.Start(v_); + + return w_; + }; + IEnumerable e_ = context.Operators.SortBy(c_, d_, System.ComponentModel.ListSortDirection.Ascending); + Encounter.LocationComponent f_ = context.Operators.First(e_); + + return f_; + } + + + public IEnumerable EncounterDiagnosis(CqlContext context, Encounter Encounter) + { + List a_ = Encounter?.Diagnosis; + Condition b_(Encounter.DiagnosisComponent D) + { + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? f_(Condition C) + { + Id i_ = C?.IdElement; + string j_ = i_?.Value; + ResourceReference k_ = D?.Condition; + FhirString l_ = k_?.ReferenceElement; + string m_ = l_?.Value; + string n_ = QICoreCommon_2_1_000.Instance.getId(context, m_); + bool? o_ = context.Operators.Equal(j_, n_); + + return o_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Condition h_ = context.Operators.SingletonFrom(g_); + + return h_; + }; + IEnumerable c_ = context.Operators.Select((IEnumerable)a_, b_); + IEnumerable d_ = context.Operators.Distinct(c_); + + return d_; + } + + + public IEnumerable encounterDiagnosis(CqlContext context, Encounter Encounter) + { + List a_ = Encounter?.Diagnosis; + Condition b_(Encounter.DiagnosisComponent D) + { + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? f_(Condition C) + { + Id i_ = C?.IdElement; + string j_ = i_?.Value; + ResourceReference k_ = D?.Condition; + FhirString l_ = k_?.ReferenceElement; + string m_ = l_?.Value; + string n_ = QICoreCommon_2_1_000.Instance.getId(context, m_); + bool? o_ = context.Operators.Equal(j_, n_); + + return o_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Condition h_ = context.Operators.SingletonFrom(g_); + + return h_; + }; + IEnumerable c_ = context.Operators.Select((IEnumerable)a_, b_); + IEnumerable d_ = context.Operators.Distinct(c_); + + return d_; + } + + + public Condition GetCondition(CqlContext context, ResourceReference reference) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? b_(Condition C) + { + Id e_ = C?.IdElement; + string f_ = e_?.Value; + FhirString g_ = reference?.ReferenceElement; + string h_ = g_?.Value; + string i_ = QICoreCommon_2_1_000.Instance.getId(context, h_); + bool? j_ = context.Operators.Equal(f_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Condition d_ = context.Operators.SingletonFrom(c_); + + return d_; + } + + + public Condition getCondition(CqlContext context, ResourceReference reference) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? b_(Condition C) + { + Id e_ = C?.IdElement; + string f_ = e_?.Value; + FhirString g_ = reference?.ReferenceElement; + string h_ = g_?.Value; + string i_ = QICoreCommon_2_1_000.Instance.getId(context, h_); + bool? j_ = context.Operators.Equal(f_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Condition d_ = context.Operators.SingletonFrom(c_); + + return d_; + } + + + public Condition PrincipalDiagnosis(CqlContext context, Encounter Encounter) + { + List a_ = Encounter?.Diagnosis; + bool? b_(Encounter.DiagnosisComponent D) + { + PositiveInt h_ = D?.RankElement; + int? i_ = h_?.Value; + bool? j_ = context.Operators.Equal(i_, 1); + CodeableConcept k_ = D?.Use; + CqlConcept l_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, k_); + CqlCode m_ = this.Billing(context); + CqlConcept n_ = context.Operators.ConvertCodeToConcept(m_); + bool? o_ = context.Operators.Equivalent(l_, n_); + bool? p_ = context.Operators.And(j_, o_); + + return p_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + Condition d_(Encounter.DiagnosisComponent PD) + { + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? r_(Condition C) + { + Id u_ = C?.IdElement; + string v_ = u_?.Value; + ResourceReference w_ = PD?.Condition; + FhirString x_ = w_?.ReferenceElement; + string y_ = x_?.Value; + string z_ = QICoreCommon_2_1_000.Instance.getId(context, y_); + bool? aa_ = context.Operators.Equal(v_, z_); + + return aa_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + Condition t_ = context.Operators.SingletonFrom(s_); + + return t_; + }; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + Condition g_ = context.Operators.SingletonFrom(f_); + + return g_; + } + + + public Condition principalDiagnosis(CqlContext context, Encounter Encounter) + { + List a_ = Encounter?.Diagnosis; + bool? b_(Encounter.DiagnosisComponent D) + { + PositiveInt h_ = D?.RankElement; + int? i_ = h_?.Value; + bool? j_ = context.Operators.Equal(i_, 1); + CodeableConcept k_ = D?.Use; + CqlConcept l_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, k_); + CqlCode m_ = this.Billing(context); + CqlConcept n_ = context.Operators.ConvertCodeToConcept(m_); + bool? o_ = context.Operators.Equivalent(l_, n_); + bool? p_ = context.Operators.And(j_, o_); + + return p_; + }; + IEnumerable c_ = context.Operators.Where((IEnumerable)a_, b_); + Condition d_(Encounter.DiagnosisComponent PD) + { + IEnumerable q_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? r_(Condition C) + { + Id u_ = C?.IdElement; + string v_ = u_?.Value; + ResourceReference w_ = PD?.Condition; + FhirString x_ = w_?.ReferenceElement; + string y_ = x_?.Value; + string z_ = QICoreCommon_2_1_000.Instance.getId(context, y_); + bool? aa_ = context.Operators.Equal(v_, z_); + + return aa_; + }; + IEnumerable s_ = context.Operators.Where(q_, r_); + Condition t_ = context.Operators.SingletonFrom(s_); + + return t_; + }; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + Condition g_ = context.Operators.SingletonFrom(f_); + + return g_; + } + + + public Location getLocation(CqlContext context, ResourceReference reference) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-location")); + bool? b_(Location L) + { + Id e_ = L?.IdElement; + string f_ = e_?.Value; + FhirString g_ = reference?.ReferenceElement; + string h_ = g_?.Value; + string i_ = QICoreCommon_2_1_000.Instance.getId(context, h_); + bool? j_ = context.Operators.Equal(f_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Location d_ = context.Operators.SingletonFrom(c_); + + return d_; + } + + + public CqlConcept GetMedicationCode(CqlContext context, MedicationRequest request) + { + CqlConcept a_() + { + bool b_() + { + DataType c_ = request?.Medication; + object d_ = FHIRHelpers_4_4_000.Instance.ToValue(context, c_); + bool e_ = d_ is CqlConcept; + + return e_; + }; + if (b_()) + { + DataType f_ = request?.Medication; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + + return g_ as CqlConcept; + } + else + { + IEnumerable h_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medication")); + bool? i_(Medication M) + { + Id n_ = M?.IdElement; + string o_ = n_?.Value; + DataType p_ = request?.Medication; + object q_ = FHIRHelpers_4_4_000.Instance.ToValue(context, p_); + FhirString r_ = (q_ as ResourceReference)?.ReferenceElement; + string s_ = r_?.Value; + string t_ = QICoreCommon_2_1_000.Instance.getId(context, s_); + bool? u_ = context.Operators.Equal(o_, t_); + + return u_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Medication k_ = context.Operators.SingletonFrom(j_); + CodeableConcept l_ = k_?.Code; + CqlConcept m_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, l_); + + return m_; + } + }; + + return a_(); + } + + + public CqlConcept getMedicationCode(CqlContext context, MedicationRequest request) + { + CqlConcept a_() + { + bool b_() + { + DataType c_ = request?.Medication; + object d_ = FHIRHelpers_4_4_000.Instance.ToValue(context, c_); + bool e_ = d_ is CqlConcept; + + return e_; + }; + if (b_()) + { + DataType f_ = request?.Medication; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + + return g_ as CqlConcept; + } + else + { + IEnumerable h_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medication")); + bool? i_(Medication M) + { + Id n_ = M?.IdElement; + string o_ = n_?.Value; + DataType p_ = request?.Medication; + object q_ = FHIRHelpers_4_4_000.Instance.ToValue(context, p_); + FhirString r_ = (q_ as ResourceReference)?.ReferenceElement; + string s_ = r_?.Value; + string t_ = QICoreCommon_2_1_000.Instance.getId(context, s_); + bool? u_ = context.Operators.Equal(o_, t_); + + return u_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + Medication k_ = context.Operators.SingletonFrom(j_); + CodeableConcept l_ = k_?.Code; + CqlConcept m_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, l_); + + return m_; + } + }; + + return a_(); + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/CRLReceiptofSpecialistReportFHIR-0.3.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CRLReceiptofSpecialistReportFHIR-0.3.000.g.cs new file mode 100644 index 000000000..92c63d8b9 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CRLReceiptofSpecialistReportFHIR-0.3.000.g.cs @@ -0,0 +1,538 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("CRLReceiptofSpecialistReportFHIR", "0.3.000")] +public partial class CRLReceiptofSpecialistReportFHIR_0_3_000 : ILibrary, ISingleton +{ + private CRLReceiptofSpecialistReportFHIR_0_3_000() {} + + public static CRLReceiptofSpecialistReportFHIR_0_3_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "CRLReceiptofSpecialistReportFHIR"; + public string Version => "0.3.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Behavioral/Neuropsych Assessment")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1023")] + public CqlValueSet Behavioral_Neuropsych_Assessment(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1023", default); + + + [CqlDeclaration("Consultant Report")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.121.12.1006")] + public CqlValueSet Consultant_Report(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.121.12.1006", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Ophthalmological Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285")] + public CqlValueSet Ophthalmological_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1285", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services, Initial Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022")] + public CqlValueSet Preventive_Care_Services__Initial_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Preventive Care, Established Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024")] + public CqlValueSet Preventive_Care__Established_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024", default); + + + [CqlDeclaration("Psych Visit Diagnostic Evaluation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492")] + public CqlValueSet Psych_Visit_Diagnostic_Evaluation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492", default); + + + [CqlDeclaration("Referral")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1046")] + public CqlValueSet Referral(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1046", default); + + + [CqlDeclaration("Developmental test administration (including assessment of fine and/or gross motor, language, cognitive level, social, memory and/or executive functions by standardized developmental instruments when performed), by physician or other qualified health care professional, with interpretation and report; first hour")] + public CqlCode Developmental_test_administration__including_assessment_of_fine_and_or_gross_motor__language__cognitive_level__social__memory_and_or_executive_functions_by_standardized_developmental_instruments_when_performed___by_physician_or_other_qualified_health_care_professional__with_interpretation_and_report__first_hour(CqlContext context) => + new CqlCode("96112", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("Health behavior assessment, or re-assessment (ie, health-focused clinical interview, behavioral observations, clinical decision making)")] + public CqlCode Health_behavior_assessment__or_re_assessment__ie__health_focused_clinical_interview__behavioral_observations__clinical_decision_making_(CqlContext context) => + new CqlCode("96156", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("Psychological or neuropsychological test administration and scoring by physician or other qualified health care professional, two or more tests, any method; first 30 minutes")] + public CqlCode Psychological_or_neuropsychological_test_administration_and_scoring_by_physician_or_other_qualified_health_care_professional__two_or_more_tests__any_method__first_30_minutes(CqlContext context) => + new CqlCode("96136", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("Psychological or neuropsychological test administration and scoring by technician, two or more tests, any method; first 30 minutes")] + public CqlCode Psychological_or_neuropsychological_test_administration_and_scoring_by_technician__two_or_more_tests__any_method__first_30_minutes(CqlContext context) => + new CqlCode("96138", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("Psychotherapy for crisis; first 60 minutes")] + public CqlCode Psychotherapy_for_crisis__first_60_minutes(CqlContext context) => + new CqlCode("90839", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("CPT")] + public CqlCode[] CPT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("96112", "http://www.ama-assn.org/go/cpt", default, default), + new CqlCode("96156", "http://www.ama-assn.org/go/cpt", default, default), + new CqlCode("96136", "http://www.ama-assn.org/go/cpt", default, default), + new CqlCode("96138", "http://www.ama-assn.org/go/cpt", default, default), + new CqlCode("90839", "http://www.ama-assn.org/go/cpt", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("CRLReceiptofSpecialistReportFHIR-0.3.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Has Encounter from Valuesets during Measurement Period")] + public bool? Has_Encounter_from_Valuesets_during_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Behavioral_Neuropsych_Assessment(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Office_Visit(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Ophthalmological_Services(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Preventive_Care_Services__Initial_Office_Visit__0_to_17(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Preventive_Care__Established_Office_Visit__0_to_17(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet t_ = this.Psych_Visit_Diagnostic_Evaluation(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = context.Operators.Union(q_, v_); + bool? x_(Encounter Encounter) + { + Code aa_ = Encounter?.StatusElement; + Encounter.EncounterStatus? ab_ = aa_?.Value; + Code ac_ = context.Operators.Convert>(ab_); + bool? ad_ = context.Operators.Equal(ac_, "finished"); + CqlInterval ae_ = this.Measurement_Period(context); + Period af_ = Encounter?.Period; + CqlInterval ag_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, af_); + bool? ah_ = context.Operators.IntervalIncludesInterval(ae_, ag_, "day"); + bool? ai_ = context.Operators.And(ad_, ah_); + + return ai_; + }; + IEnumerable y_ = context.Operators.Where(w_, x_); + bool? z_ = context.Operators.Exists(y_); + + return z_; + } + + + [CqlDeclaration("Has Encounter from DRCs during Measurement Period")] + public bool? Has_Encounter_from_DRCs_during_Measurement_Period(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? b_(Encounter EncDRC) + { + List g_ = EncDRC?.Type; + CqlConcept h_(CodeableConcept @this) + { + CqlConcept ao_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return ao_; + }; + IEnumerable i_ = context.Operators.Select((IEnumerable)g_, h_); + bool? j_(CqlConcept T) + { + CqlCode ap_ = this.Psychological_or_neuropsychological_test_administration_and_scoring_by_physician_or_other_qualified_health_care_professional__two_or_more_tests__any_method__first_30_minutes(context); + CqlConcept aq_ = context.Operators.ConvertCodeToConcept(ap_); + bool? ar_ = context.Operators.Equivalent(T, aq_); + + return ar_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + bool? l_ = context.Operators.Exists(k_); + CqlConcept n_(CodeableConcept @this) + { + CqlConcept as_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return as_; + }; + IEnumerable o_ = context.Operators.Select((IEnumerable)g_, n_); + bool? p_(CqlConcept T) + { + CqlCode at_ = this.Psychological_or_neuropsychological_test_administration_and_scoring_by_technician__two_or_more_tests__any_method__first_30_minutes(context); + CqlConcept au_ = context.Operators.ConvertCodeToConcept(at_); + bool? av_ = context.Operators.Equivalent(T, au_); + + return av_; + }; + IEnumerable q_ = context.Operators.Where(o_, p_); + bool? r_ = context.Operators.Exists(q_); + bool? s_ = context.Operators.Or(l_, r_); + CqlConcept u_(CodeableConcept @this) + { + CqlConcept aw_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return aw_; + }; + IEnumerable v_ = context.Operators.Select((IEnumerable)g_, u_); + bool? w_(CqlConcept T) + { + CqlCode ax_ = this.Psychotherapy_for_crisis__first_60_minutes(context); + CqlConcept ay_ = context.Operators.ConvertCodeToConcept(ax_); + bool? az_ = context.Operators.Equivalent(T, ay_); + + return az_; + }; + IEnumerable x_ = context.Operators.Where(v_, w_); + bool? y_ = context.Operators.Exists(x_); + bool? z_ = context.Operators.Or(s_, y_); + CqlConcept ab_(CodeableConcept @this) + { + CqlConcept ba_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return ba_; + }; + IEnumerable ac_ = context.Operators.Select((IEnumerable)g_, ab_); + bool? ad_(CqlConcept T) + { + CqlCode bb_ = this.Developmental_test_administration__including_assessment_of_fine_and_or_gross_motor__language__cognitive_level__social__memory_and_or_executive_functions_by_standardized_developmental_instruments_when_performed___by_physician_or_other_qualified_health_care_professional__with_interpretation_and_report__first_hour(context); + CqlConcept bc_ = context.Operators.ConvertCodeToConcept(bb_); + bool? bd_ = context.Operators.Equivalent(T, bc_); + + return bd_; + }; + IEnumerable ae_ = context.Operators.Where(ac_, ad_); + bool? af_ = context.Operators.Exists(ae_); + bool? ag_ = context.Operators.Or(z_, af_); + CqlConcept ai_(CodeableConcept @this) + { + CqlConcept be_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return be_; + }; + IEnumerable aj_ = context.Operators.Select((IEnumerable)g_, ai_); + bool? ak_(CqlConcept T) + { + CqlCode bf_ = this.Health_behavior_assessment__or_re_assessment__ie__health_focused_clinical_interview__behavioral_observations__clinical_decision_making_(context); + CqlConcept bg_ = context.Operators.ConvertCodeToConcept(bf_); + bool? bh_ = context.Operators.Equivalent(T, bg_); + + return bh_; + }; + IEnumerable al_ = context.Operators.Where(aj_, ak_); + bool? am_ = context.Operators.Exists(al_); + bool? an_ = context.Operators.Or(ag_, am_); + + return an_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_(Encounter Encounter) + { + Code bi_ = Encounter?.StatusElement; + Encounter.EncounterStatus? bj_ = bi_?.Value; + Code bk_ = context.Operators.Convert>(bj_); + bool? bl_ = context.Operators.Equal(bk_, "finished"); + CqlInterval bm_ = this.Measurement_Period(context); + Period bn_ = Encounter?.Period; + CqlInterval bo_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, bn_); + bool? bp_ = context.Operators.IntervalIncludesInterval(bm_, bo_, "day"); + bool? bq_ = context.Operators.And(bl_, bp_); + + return bq_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + + return f_; + } + + + [CqlDeclaration("Has Encounter during Measurement Period")] + public bool? Has_Encounter_during_Measurement_Period(CqlContext context) + { + bool? a_ = this.Has_Encounter_from_Valuesets_during_Measurement_Period(context); + bool? b_ = this.Has_Encounter_from_DRCs_during_Measurement_Period(context); + bool? c_ = context.Operators.Or(a_, b_); + + return c_; + } + + + [CqlDeclaration("First Referral during First 10 Months of Measurement Period")] + public (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? First_Referral_during_First_10_Months_of_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Referral(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + bool? c_(ServiceRequest ReferralOrder) + { + Code k_ = ReferralOrder?.StatusElement; + RequestStatus? l_ = k_?.Value; + Code m_ = context.Operators.Convert>(l_); + string n_ = context.Operators.Convert(m_); + string[] o_ = [ + "active", + "completed", + ]; + bool? p_ = context.Operators.In(n_, o_ as IEnumerable); + Code q_ = ReferralOrder?.IntentElement; + RequestIntent? r_ = q_?.Value; + Code s_ = context.Operators.Convert>(r_); + bool? t_ = context.Operators.Equal(s_, "order"); + bool? u_ = context.Operators.And(p_, t_); + FhirDateTime v_ = ReferralOrder?.AuthoredOnElement; + CqlDateTime w_ = context.Operators.Convert(v_); + CqlInterval x_ = this.Measurement_Period(context); + CqlDateTime y_ = context.Operators.Start(x_); + CqlDateTime aa_ = context.Operators.Start(x_); + int? ab_ = context.Operators.DateTimeComponentFrom(aa_, "year"); + CqlDate ac_ = context.Operators.Date(ab_, 10, 31); + CqlDateTime ad_ = context.Operators.ConvertDateToDateTime(ac_); + CqlInterval ae_ = context.Operators.Interval(y_, ad_, true, true); + bool? af_ = context.Operators.In(w_, ae_, "day"); + bool? ag_ = context.Operators.And(u_, af_); + + return ag_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? e_(ServiceRequest ReferralOrder) + { + Id ah_ = ReferralOrder?.IdElement; + string ai_ = ah_?.Value; + FhirDateTime aj_ = ReferralOrder?.AuthoredOnElement; + CqlDateTime ak_ = context.Operators.Convert(aj_); + (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? al_ = (CqlTupleMetadata_EDdTRBfWHaSNbiiXJfIVJUXdb, ai_, ak_); + + return al_; + }; + IEnumerable<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?> f_ = context.Operators.Select(d_, e_); + IEnumerable<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?> g_ = context.Operators.Distinct<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?>(f_); + object h_((CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? @this) + { + CqlDateTime am_ = @this?.AuthorDate; + + return am_; + }; + IEnumerable<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?> i_ = context.Operators.SortBy<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?>(g_, h_, System.ComponentModel.ListSortDirection.Ascending); + (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? j_ = context.Operators.First<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?>(i_); + + return j_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + bool? a_ = this.Has_Encounter_during_Measurement_Period(context); + (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? b_ = this.First_Referral_during_First_10_Months_of_Measurement_Period(context); + bool? c_ = context.Operators.Not((bool?)(b_ is null)); + bool? d_ = context.Operators.And(a_, c_); + + return d_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + public IEnumerable TaskGetRequestID(CqlContext context, Task task) + { + List a_ = task?.BasedOn; + string b_(ResourceReference Task) + { + FhirString e_ = Task?.ReferenceElement; + string f_ = e_?.Value; + string g_ = QICoreCommon_2_1_000.Instance.GetId(context, f_); + + return g_; + }; + IEnumerable c_ = context.Operators.Select((IEnumerable)a_, b_); + IEnumerable d_ = context.Operators.Distinct(c_); + + return d_; + } + + + [CqlDeclaration("Referring Clinician Receives Consultant Report to Close Referral Loop")] + public bool? Referring_Clinician_Receives_Consultant_Report_to_Close_Referral_Loop(CqlContext context) + { + CqlValueSet a_ = this.Consultant_Report(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-task")); + IEnumerable c_(Task ConsultantReportObtained) + { + (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? f_ = this.First_Referral_during_First_10_Months_of_Measurement_Period(context); + (CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?[] g_ = [ + f_, + ]; + bool? h_((CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? FirstReferral) + { + string l_ = FirstReferral?.ID; + IEnumerable m_ = this.TaskGetRequestID(context, ConsultantReportObtained); + bool? n_ = context.Operators.In(l_, m_); + Period o_ = ConsultantReportObtained?.ExecutionPeriod; + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime q_ = context.Operators.End(p_); + CqlDateTime r_ = FirstReferral?.AuthorDate; + bool? s_ = context.Operators.After(q_, r_, default); + bool? t_ = context.Operators.And(n_, s_); + Code u_ = ConsultantReportObtained?.StatusElement; + Task.TaskStatus? v_ = u_?.Value; + Code w_ = context.Operators.Convert>(v_); + bool? x_ = context.Operators.Equal(w_, "completed"); + bool? y_ = context.Operators.And(t_, x_); + CqlInterval aa_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + CqlDateTime ab_ = context.Operators.End(aa_); + CqlInterval ac_ = this.Measurement_Period(context); + bool? ad_ = context.Operators.In(ab_, ac_, "day"); + bool? ae_ = context.Operators.And(y_, ad_); + + return ae_; + }; + IEnumerable<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?> i_ = context.Operators.Where<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?>((IEnumerable<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?>)g_, h_); + Task j_((CqlTupleMetadata, string ID, CqlDateTime AuthorDate)? FirstReferral) => + ConsultantReportObtained; + IEnumerable k_ = context.Operators.Select<(CqlTupleMetadata, string ID, CqlDateTime AuthorDate)?, Task>(i_, j_); + + return k_; + }; + IEnumerable d_ = context.Operators.SelectMany(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + bool? a_ = this.Referring_Clinician_Receives_Consultant_Report_to_Close_Referral_Loop(context); + + return a_; + } + + + #endregion Definition Methods + + #region CqlTupleMetadata Properties + + private static CqlTupleMetadata CqlTupleMetadata_EDdTRBfWHaSNbiiXJfIVJUXdb = new( + [typeof(string), typeof(CqlDateTime)], + ["ID", "AuthorDate"]); + + #endregion CqlTupleMetadata Properties + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/Cataracts2040BCVAwithin90DaysFHIR-0.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/Cataracts2040BCVAwithin90DaysFHIR-0.1.000.g.cs new file mode 100644 index 000000000..66403bcbf --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/Cataracts2040BCVAwithin90DaysFHIR-0.1.000.g.cs @@ -0,0 +1,786 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("Cataracts2040BCVAwithin90DaysFHIR", "0.1.000")] +public partial class Cataracts2040BCVAwithin90DaysFHIR_0_1_000 : ILibrary, ISingleton +{ + private Cataracts2040BCVAwithin90DaysFHIR_0_1_000() {} + + public static Cataracts2040BCVAwithin90DaysFHIR_0_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "Cataracts2040BCVAwithin90DaysFHIR"; + public string Version => "0.1.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Acute and Subacute Iridocyclitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1241")] + public CqlValueSet Acute_and_Subacute_Iridocyclitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1241", default); + + + [CqlDeclaration("Amblyopia")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1448")] + public CqlValueSet Amblyopia(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1448", default); + + + [CqlDeclaration("Best Corrected Visual Acuity Exam Using Snellen Chart")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1560")] + public CqlValueSet Best_Corrected_Visual_Acuity_Exam_Using_Snellen_Chart(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1560", default); + + + [CqlDeclaration("Burn Confined to Eye and Adnexa")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1409")] + public CqlValueSet Burn_Confined_to_Eye_and_Adnexa(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1409", default); + + + [CqlDeclaration("Cataract Congenital")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1412")] + public CqlValueSet Cataract_Congenital(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1412", default); + + + [CqlDeclaration("Cataract Mature or Hypermature")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1413")] + public CqlValueSet Cataract_Mature_or_Hypermature(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1413", default); + + + [CqlDeclaration("Cataract Posterior Polar")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1414")] + public CqlValueSet Cataract_Posterior_Polar(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1414", default); + + + [CqlDeclaration("Cataract Secondary to Ocular Disorders")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1410")] + public CqlValueSet Cataract_Secondary_to_Ocular_Disorders(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1410", default); + + + [CqlDeclaration("Cataract Surgery")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1411")] + public CqlValueSet Cataract_Surgery(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1411", default); + + + [CqlDeclaration("Central Corneal Ulcer")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1428")] + public CqlValueSet Central_Corneal_Ulcer(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1428", default); + + + [CqlDeclaration("Certain Types of Iridocyclitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1415")] + public CqlValueSet Certain_Types_of_Iridocyclitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1415", default); + + + [CqlDeclaration("Choroidal Degenerations")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1450")] + public CqlValueSet Choroidal_Degenerations(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1450", default); + + + [CqlDeclaration("Choroidal Detachment")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1451")] + public CqlValueSet Choroidal_Detachment(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1451", default); + + + [CqlDeclaration("Choroidal Hemorrhage and Rupture")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1452")] + public CqlValueSet Choroidal_Hemorrhage_and_Rupture(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1452", default); + + + [CqlDeclaration("Chronic Iridocyclitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1416")] + public CqlValueSet Chronic_Iridocyclitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1416", default); + + + [CqlDeclaration("Cloudy Cornea")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1417")] + public CqlValueSet Cloudy_Cornea(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1417", default); + + + [CqlDeclaration("Corneal Edema")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1418")] + public CqlValueSet Corneal_Edema(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1418", default); + + + [CqlDeclaration("Degeneration of Macula and Posterior Pole")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1453")] + public CqlValueSet Degeneration_of_Macula_and_Posterior_Pole(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1453", default); + + + [CqlDeclaration("Degenerative Disorders of Globe")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1454")] + public CqlValueSet Degenerative_Disorders_of_Globe(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1454", default); + + + [CqlDeclaration("Diabetic Macular Edema")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1455")] + public CqlValueSet Diabetic_Macular_Edema(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1455", default); + + + [CqlDeclaration("Diabetic Retinopathy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.327")] + public CqlValueSet Diabetic_Retinopathy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.327", default); + + + [CqlDeclaration("Disorders of Cornea Including Corneal Opacity")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1419")] + public CqlValueSet Disorders_of_Cornea_Including_Corneal_Opacity(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1419", default); + + + [CqlDeclaration("Disorders of Optic Chiasm")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1457")] + public CqlValueSet Disorders_of_Optic_Chiasm(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1457", default); + + + [CqlDeclaration("Disorders of Visual Cortex")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1458")] + public CqlValueSet Disorders_of_Visual_Cortex(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1458", default); + + + [CqlDeclaration("Disseminated Chorioretinitis and Disseminated Retinochoroiditis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1459")] + public CqlValueSet Disseminated_Chorioretinitis_and_Disseminated_Retinochoroiditis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1459", default); + + + [CqlDeclaration("Focal Chorioretinitis and Focal Retinochoroiditis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1460")] + public CqlValueSet Focal_Chorioretinitis_and_Focal_Retinochoroiditis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1460", default); + + + [CqlDeclaration("Glaucoma")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1423")] + public CqlValueSet Glaucoma(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1423", default); + + + [CqlDeclaration("Glaucoma Associated with Congenital Anomalies and Dystrophies and Systemic Syndromes")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1461")] + public CqlValueSet Glaucoma_Associated_with_Congenital_Anomalies_and_Dystrophies_and_Systemic_Syndromes(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1461", default); + + + [CqlDeclaration("Hereditary Choroidal Dystrophies")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1462")] + public CqlValueSet Hereditary_Choroidal_Dystrophies(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1462", default); + + + [CqlDeclaration("Hereditary Corneal Dystrophies")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1424")] + public CqlValueSet Hereditary_Corneal_Dystrophies(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1424", default); + + + [CqlDeclaration("Hereditary Retinal Dystrophies")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1463")] + public CqlValueSet Hereditary_Retinal_Dystrophies(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1463", default); + + + [CqlDeclaration("Hypotony of Eye")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1426")] + public CqlValueSet Hypotony_of_Eye(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1426", default); + + + [CqlDeclaration("Injury to Optic Nerve and Pathways")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1427")] + public CqlValueSet Injury_to_Optic_Nerve_and_Pathways(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1427", default); + + + [CqlDeclaration("Macular Scar of Posterior Polar")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1559")] + public CqlValueSet Macular_Scar_of_Posterior_Polar(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1559", default); + + + [CqlDeclaration("Morgagnian Cataract")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1558")] + public CqlValueSet Morgagnian_Cataract(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1558", default); + + + [CqlDeclaration("Nystagmus and Other Irregular Eye Movements")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1465")] + public CqlValueSet Nystagmus_and_Other_Irregular_Eye_Movements(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1465", default); + + + [CqlDeclaration("Open Wound of Eyeball")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1430")] + public CqlValueSet Open_Wound_of_Eyeball(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1430", default); + + + [CqlDeclaration("Optic Atrophy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1466")] + public CqlValueSet Optic_Atrophy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1466", default); + + + [CqlDeclaration("Optic Neuritis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1467")] + public CqlValueSet Optic_Neuritis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1467", default); + + + [CqlDeclaration("Other and Unspecified Forms of Chorioretinitis and Retinochoroiditis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1468")] + public CqlValueSet Other_and_Unspecified_Forms_of_Chorioretinitis_and_Retinochoroiditis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1468", default); + + + [CqlDeclaration("Other Background Retinopathy and Retinal Vascular Changes")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1469")] + public CqlValueSet Other_Background_Retinopathy_and_Retinal_Vascular_Changes(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1469", default); + + + [CqlDeclaration("Other Disorders of Optic Nerve")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1471")] + public CqlValueSet Other_Disorders_of_Optic_Nerve(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1471", default); + + + [CqlDeclaration("Other Endophthalmitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1473")] + public CqlValueSet Other_Endophthalmitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1473", default); + + + [CqlDeclaration("Other Proliferative Retinopathy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1480")] + public CqlValueSet Other_Proliferative_Retinopathy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1480", default); + + + [CqlDeclaration("Pathologic Myopia")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1432")] + public CqlValueSet Pathologic_Myopia(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1432", default); + + + [CqlDeclaration("Posterior Lenticonus")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1433")] + public CqlValueSet Posterior_Lenticonus(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1433", default); + + + [CqlDeclaration("Prior Penetrating Keratoplasty")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1475")] + public CqlValueSet Prior_Penetrating_Keratoplasty(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1475", default); + + + [CqlDeclaration("Purulent Endophthalmitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1477")] + public CqlValueSet Purulent_Endophthalmitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1477", default); + + + [CqlDeclaration("Retinal Detachment with Retinal Defect")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1478")] + public CqlValueSet Retinal_Detachment_with_Retinal_Defect(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1478", default); + + + [CqlDeclaration("Retinal Vascular Occlusion")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1479")] + public CqlValueSet Retinal_Vascular_Occlusion(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1479", default); + + + [CqlDeclaration("Retrolental Fibroplasias")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1438")] + public CqlValueSet Retrolental_Fibroplasias(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1438", default); + + + [CqlDeclaration("Scleritis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1226.1")] + public CqlValueSet Scleritis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1226.1", default); + + + [CqlDeclaration("Separation of Retinal Layers")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1482")] + public CqlValueSet Separation_of_Retinal_Layers(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1482", default); + + + [CqlDeclaration("Traumatic Cataract")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1443")] + public CqlValueSet Traumatic_Cataract(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1443", default); + + + [CqlDeclaration("Uveitis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1444")] + public CqlValueSet Uveitis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1444", default); + + + [CqlDeclaration("Vascular Disorders of Iris and Ciliary Body")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1445")] + public CqlValueSet Vascular_Disorders_of_Iris_and_Ciliary_Body(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1445", default); + + + [CqlDeclaration("Visual Acuity 20/40 or Better")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1483")] + public CqlValueSet Visual_Acuity_20_40_or_Better(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1483", default); + + + [CqlDeclaration("Visual Field Defects")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1446")] + public CqlValueSet Visual_Field_Defects(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1446", default); + + + [CqlDeclaration("Best corrected visual acuity (observable entity)")] + public CqlCode Best_corrected_visual_acuity__observable_entity_(CqlContext context) => + new CqlCode("419775003", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("419775003", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("Cataracts2040BCVAwithin90DaysFHIR-0.1.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Cataract Surgery Between January and September of Measurement Period")] + public IEnumerable Cataract_Surgery_Between_January_and_September_of_Measurement_Period(CqlContext context) + { + CqlValueSet a_ = this.Cataract_Surgery(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? c_(Procedure CataractSurgery) + { + CqlInterval e_ = this.Measurement_Period(context); + DataType f_ = CataractSurgery?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + bool? i_ = context.Operators.IntervalIncludesInterval(e_, h_, default); + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_); + CqlDateTime m_ = context.Operators.Start(l_); + CqlDateTime o_ = context.Operators.End(e_); + CqlQuantity p_ = context.Operators.Quantity(92m, "days"); + CqlDateTime q_ = context.Operators.Subtract(o_, p_); + bool? r_ = context.Operators.SameOrBefore(m_, q_, default); + bool? s_ = context.Operators.And(i_, r_); + Code t_ = CataractSurgery?.StatusElement; + EventStatus? u_ = t_?.Value; + string v_ = context.Operators.Convert(u_); + bool? w_ = context.Operators.Equal(v_, "completed"); + bool? x_ = context.Operators.And(s_, w_); + + return x_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Cataract_Surgery_Between_January_and_September_of_Measurement_Period(context); + bool? b_(Procedure CataractSurgeryPerformed) + { + Patient d_ = this.Patient(context); + Date e_ = d_?.BirthDateElement; + string f_ = e_?.Value; + CqlDate g_ = context.Operators.ConvertStringToDate(f_); + CqlInterval h_ = this.Measurement_Period(context); + CqlDateTime i_ = context.Operators.Start(h_); + CqlDate j_ = context.Operators.DateFrom(i_); + int? k_ = context.Operators.CalculateAgeAt(g_, j_, "year"); + bool? l_ = context.Operators.GreaterOrEqual(k_, 18); + + return l_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public IEnumerable Denominator_Exclusions(CqlContext context) + { + IEnumerable a_ = this.Cataract_Surgery_Between_January_and_September_of_Measurement_Period(context); + IEnumerable b_(Procedure CataractSurgeryPerformed) + { + CqlValueSet d_ = this.Acute_and_Subacute_Iridocyclitis(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet f_ = this.Amblyopia(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable h_ = context.Operators.Union(e_, g_); + CqlValueSet i_ = this.Burn_Confined_to_Eye_and_Adnexa(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet k_ = this.Cataract_Secondary_to_Ocular_Disorders(context); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, k_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable m_ = context.Operators.Union(j_, l_); + IEnumerable n_ = context.Operators.Union(h_, m_); + CqlValueSet o_ = this.Cataract_Congenital(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet q_ = this.Cataract_Mature_or_Hypermature(context); + IEnumerable r_ = context.Operators.Retrieve(new RetrieveParameters(default, q_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable s_ = context.Operators.Union(p_, r_); + IEnumerable t_ = context.Operators.Union(n_, s_); + CqlValueSet u_ = this.Cataract_Posterior_Polar(context); + IEnumerable v_ = context.Operators.Retrieve(new RetrieveParameters(default, u_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet w_ = this.Central_Corneal_Ulcer(context); + IEnumerable x_ = context.Operators.Retrieve(new RetrieveParameters(default, w_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable y_ = context.Operators.Union(v_, x_); + IEnumerable z_ = context.Operators.Union(t_, y_); + CqlValueSet aa_ = this.Certain_Types_of_Iridocyclitis(context); + IEnumerable ab_ = context.Operators.Retrieve(new RetrieveParameters(default, aa_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ac_ = this.Choroidal_Degenerations(context); + IEnumerable ad_ = context.Operators.Retrieve(new RetrieveParameters(default, ac_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ae_ = context.Operators.Union(ab_, ad_); + IEnumerable af_ = context.Operators.Union(z_, ae_); + CqlValueSet ag_ = this.Choroidal_Detachment(context); + IEnumerable ah_ = context.Operators.Retrieve(new RetrieveParameters(default, ag_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ai_ = this.Choroidal_Hemorrhage_and_Rupture(context); + IEnumerable aj_ = context.Operators.Retrieve(new RetrieveParameters(default, ai_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ak_ = context.Operators.Union(ah_, aj_); + IEnumerable al_ = context.Operators.Union(af_, ak_); + CqlValueSet am_ = this.Chronic_Iridocyclitis(context); + IEnumerable an_ = context.Operators.Retrieve(new RetrieveParameters(default, am_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ao_ = this.Cloudy_Cornea(context); + IEnumerable ap_ = context.Operators.Retrieve(new RetrieveParameters(default, ao_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable aq_ = context.Operators.Union(an_, ap_); + IEnumerable ar_ = context.Operators.Union(al_, aq_); + CqlValueSet as_ = this.Corneal_Edema(context); + IEnumerable at_ = context.Operators.Retrieve(new RetrieveParameters(default, as_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet au_ = this.Disorders_of_Cornea_Including_Corneal_Opacity(context); + IEnumerable av_ = context.Operators.Retrieve(new RetrieveParameters(default, au_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable aw_ = context.Operators.Union(at_, av_); + IEnumerable ax_ = context.Operators.Union(ar_, aw_); + CqlValueSet ay_ = this.Degeneration_of_Macula_and_Posterior_Pole(context); + IEnumerable az_ = context.Operators.Retrieve(new RetrieveParameters(default, ay_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ba_ = this.Degenerative_Disorders_of_Globe(context); + IEnumerable bb_ = context.Operators.Retrieve(new RetrieveParameters(default, ba_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable bc_ = context.Operators.Union(az_, bb_); + IEnumerable bd_ = context.Operators.Union(ax_, bc_); + CqlValueSet be_ = this.Diabetic_Macular_Edema(context); + IEnumerable bf_ = context.Operators.Retrieve(new RetrieveParameters(default, be_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet bg_ = this.Diabetic_Retinopathy(context); + IEnumerable bh_ = context.Operators.Retrieve(new RetrieveParameters(default, bg_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable bi_ = context.Operators.Union(bf_, bh_); + IEnumerable bj_ = context.Operators.Union(bd_, bi_); + CqlValueSet bk_ = this.Disorders_of_Optic_Chiasm(context); + IEnumerable bl_ = context.Operators.Retrieve(new RetrieveParameters(default, bk_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet bm_ = this.Disorders_of_Visual_Cortex(context); + IEnumerable bn_ = context.Operators.Retrieve(new RetrieveParameters(default, bm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable bo_ = context.Operators.Union(bl_, bn_); + IEnumerable bp_ = context.Operators.Union(bj_, bo_); + CqlValueSet bq_ = this.Disseminated_Chorioretinitis_and_Disseminated_Retinochoroiditis(context); + IEnumerable br_ = context.Operators.Retrieve(new RetrieveParameters(default, bq_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet bs_ = this.Focal_Chorioretinitis_and_Focal_Retinochoroiditis(context); + IEnumerable bt_ = context.Operators.Retrieve(new RetrieveParameters(default, bs_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable bu_ = context.Operators.Union(br_, bt_); + IEnumerable bv_ = context.Operators.Union(bp_, bu_); + CqlValueSet bw_ = this.Glaucoma(context); + IEnumerable bx_ = context.Operators.Retrieve(new RetrieveParameters(default, bw_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet by_ = this.Glaucoma_Associated_with_Congenital_Anomalies_and_Dystrophies_and_Systemic_Syndromes(context); + IEnumerable bz_ = context.Operators.Retrieve(new RetrieveParameters(default, by_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ca_ = context.Operators.Union(bx_, bz_); + IEnumerable cb_ = context.Operators.Union(bv_, ca_); + CqlValueSet cc_ = this.Hereditary_Choroidal_Dystrophies(context); + IEnumerable cd_ = context.Operators.Retrieve(new RetrieveParameters(default, cc_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ce_ = this.Hereditary_Corneal_Dystrophies(context); + IEnumerable cf_ = context.Operators.Retrieve(new RetrieveParameters(default, ce_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable cg_ = context.Operators.Union(cd_, cf_); + IEnumerable ch_ = context.Operators.Union(cb_, cg_); + CqlValueSet ci_ = this.Hereditary_Retinal_Dystrophies(context); + IEnumerable cj_ = context.Operators.Retrieve(new RetrieveParameters(default, ci_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ck_ = this.Hypotony_of_Eye(context); + IEnumerable cl_ = context.Operators.Retrieve(new RetrieveParameters(default, ck_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable cm_ = context.Operators.Union(cj_, cl_); + IEnumerable cn_ = context.Operators.Union(ch_, cm_); + CqlValueSet co_ = this.Injury_to_Optic_Nerve_and_Pathways(context); + IEnumerable cp_ = context.Operators.Retrieve(new RetrieveParameters(default, co_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet cq_ = this.Macular_Scar_of_Posterior_Polar(context); + IEnumerable cr_ = context.Operators.Retrieve(new RetrieveParameters(default, cq_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable cs_ = context.Operators.Union(cp_, cr_); + IEnumerable ct_ = context.Operators.Union(cn_, cs_); + CqlValueSet cu_ = this.Morgagnian_Cataract(context); + IEnumerable cv_ = context.Operators.Retrieve(new RetrieveParameters(default, cu_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet cw_ = this.Nystagmus_and_Other_Irregular_Eye_Movements(context); + IEnumerable cx_ = context.Operators.Retrieve(new RetrieveParameters(default, cw_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable cy_ = context.Operators.Union(cv_, cx_); + IEnumerable cz_ = context.Operators.Union(ct_, cy_); + CqlValueSet da_ = this.Open_Wound_of_Eyeball(context); + IEnumerable db_ = context.Operators.Retrieve(new RetrieveParameters(default, da_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet dc_ = this.Optic_Atrophy(context); + IEnumerable dd_ = context.Operators.Retrieve(new RetrieveParameters(default, dc_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable de_ = context.Operators.Union(db_, dd_); + IEnumerable df_ = context.Operators.Union(cz_, de_); + CqlValueSet dg_ = this.Optic_Neuritis(context); + IEnumerable dh_ = context.Operators.Retrieve(new RetrieveParameters(default, dg_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet di_ = this.Other_and_Unspecified_Forms_of_Chorioretinitis_and_Retinochoroiditis(context); + IEnumerable dj_ = context.Operators.Retrieve(new RetrieveParameters(default, di_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable dk_ = context.Operators.Union(dh_, dj_); + IEnumerable dl_ = context.Operators.Union(df_, dk_); + CqlValueSet dm_ = this.Other_Background_Retinopathy_and_Retinal_Vascular_Changes(context); + IEnumerable dn_ = context.Operators.Retrieve(new RetrieveParameters(default, dm_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet do_ = this.Other_Disorders_of_Optic_Nerve(context); + IEnumerable dp_ = context.Operators.Retrieve(new RetrieveParameters(default, do_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable dq_ = context.Operators.Union(dn_, dp_); + IEnumerable dr_ = context.Operators.Union(dl_, dq_); + CqlValueSet ds_ = this.Other_Endophthalmitis(context); + IEnumerable dt_ = context.Operators.Retrieve(new RetrieveParameters(default, ds_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet du_ = this.Other_Proliferative_Retinopathy(context); + IEnumerable dv_ = context.Operators.Retrieve(new RetrieveParameters(default, du_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable dw_ = context.Operators.Union(dt_, dv_); + IEnumerable dx_ = context.Operators.Union(dr_, dw_); + CqlValueSet dy_ = this.Pathologic_Myopia(context); + IEnumerable dz_ = context.Operators.Retrieve(new RetrieveParameters(default, dy_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ea_ = this.Posterior_Lenticonus(context); + IEnumerable eb_ = context.Operators.Retrieve(new RetrieveParameters(default, ea_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ec_ = context.Operators.Union(dz_, eb_); + IEnumerable ed_ = context.Operators.Union(dx_, ec_); + CqlValueSet ee_ = this.Prior_Penetrating_Keratoplasty(context); + IEnumerable ef_ = context.Operators.Retrieve(new RetrieveParameters(default, ee_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet eg_ = this.Purulent_Endophthalmitis(context); + IEnumerable eh_ = context.Operators.Retrieve(new RetrieveParameters(default, eg_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable ei_ = context.Operators.Union(ef_, eh_); + IEnumerable ej_ = context.Operators.Union(ed_, ei_); + CqlValueSet ek_ = this.Retinal_Detachment_with_Retinal_Defect(context); + IEnumerable el_ = context.Operators.Retrieve(new RetrieveParameters(default, ek_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet em_ = this.Retinal_Vascular_Occlusion(context); + IEnumerable en_ = context.Operators.Retrieve(new RetrieveParameters(default, em_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable eo_ = context.Operators.Union(el_, en_); + IEnumerable ep_ = context.Operators.Union(ej_, eo_); + CqlValueSet eq_ = this.Retrolental_Fibroplasias(context); + IEnumerable er_ = context.Operators.Retrieve(new RetrieveParameters(default, eq_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet es_ = this.Scleritis(context); + IEnumerable et_ = context.Operators.Retrieve(new RetrieveParameters(default, es_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable eu_ = context.Operators.Union(er_, et_); + IEnumerable ev_ = context.Operators.Union(ep_, eu_); + CqlValueSet ew_ = this.Separation_of_Retinal_Layers(context); + IEnumerable ex_ = context.Operators.Retrieve(new RetrieveParameters(default, ew_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet ey_ = this.Traumatic_Cataract(context); + IEnumerable ez_ = context.Operators.Retrieve(new RetrieveParameters(default, ey_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable fa_ = context.Operators.Union(ex_, ez_); + IEnumerable fb_ = context.Operators.Union(ev_, fa_); + CqlValueSet fc_ = this.Uveitis(context); + IEnumerable fd_ = context.Operators.Retrieve(new RetrieveParameters(default, fc_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet fe_ = this.Vascular_Disorders_of_Iris_and_Ciliary_Body(context); + IEnumerable ff_ = context.Operators.Retrieve(new RetrieveParameters(default, fe_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable fg_ = context.Operators.Union(fd_, ff_); + IEnumerable fh_ = context.Operators.Union(fb_, fg_); + CqlValueSet fi_ = this.Visual_Field_Defects(context); + IEnumerable fj_ = context.Operators.Retrieve(new RetrieveParameters(default, fi_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable fk_ = context.Operators.Union(fh_, fj_); + bool? fl_(Condition ComorbidDiagnosis) + { + CqlInterval fp_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ComorbidDiagnosis); + DataType fq_ = CataractSurgeryPerformed?.Performed; + object fr_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fq_); + CqlInterval fs_ = QICoreCommon_2_1_000.Instance.toInterval(context, fr_); + bool? ft_ = context.Operators.OverlapsBefore(fp_, fs_, default); + bool? fu_ = QICoreCommon_2_1_000.Instance.isActive(context, ComorbidDiagnosis); + bool? fv_ = context.Operators.And(ft_, fu_); + + return fv_; + }; + IEnumerable fm_ = context.Operators.Where(fk_, fl_); + Procedure fn_(Condition ComorbidDiagnosis) => + CataractSurgeryPerformed; + IEnumerable fo_ = context.Operators.Select(fm_, fn_); + + return fo_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Cataract_Surgery_Between_January_and_September_of_Measurement_Period(context); + IEnumerable b_(Procedure CataractSurgeryPerformed) + { + CqlCode d_ = this.Best_corrected_visual_acuity__observable_entity_(context); + IEnumerable e_ = context.Operators.ToList(d_); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, default, e_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + CqlValueSet g_ = this.Best_Corrected_Visual_Acuity_Exam_Using_Snellen_Chart(context); + IEnumerable h_ = context.Operators.Retrieve(new RetrieveParameters(default, g_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable i_ = context.Operators.Union(f_, h_); + bool? j_(Observation VisualAcuityExamPerformed) + { + DataType n_ = VisualAcuityExamPerformed?.Effective; + object o_ = FHIRHelpers_4_4_000.Instance.ToValue(context, n_); + CqlInterval p_ = QICoreCommon_2_1_000.Instance.toInterval(context, o_); + CqlDateTime q_ = context.Operators.Start(p_); + DataType r_ = CataractSurgeryPerformed?.Performed; + object s_ = FHIRHelpers_4_4_000.Instance.ToValue(context, r_); + CqlInterval t_ = QICoreCommon_2_1_000.Instance.toInterval(context, s_); + CqlDateTime u_ = context.Operators.End(t_); + object w_ = FHIRHelpers_4_4_000.Instance.ToValue(context, r_); + CqlInterval x_ = QICoreCommon_2_1_000.Instance.toInterval(context, w_); + CqlDateTime y_ = context.Operators.End(x_); + CqlQuantity z_ = context.Operators.Quantity(90m, "days"); + CqlDateTime aa_ = context.Operators.Add(y_, z_); + CqlInterval ab_ = context.Operators.Interval(u_, aa_, false, true); + bool? ac_ = context.Operators.In(q_, ab_, "day"); + object ae_ = FHIRHelpers_4_4_000.Instance.ToValue(context, r_); + CqlInterval af_ = QICoreCommon_2_1_000.Instance.toInterval(context, ae_); + CqlDateTime ag_ = context.Operators.End(af_); + bool? ah_ = context.Operators.Not((bool?)(ag_ is null)); + bool? ai_ = context.Operators.And(ac_, ah_); + Code aj_ = VisualAcuityExamPerformed?.StatusElement; + ObservationStatus? ak_ = aj_?.Value; + Code al_ = context.Operators.Convert>(ak_); + string am_ = context.Operators.Convert(al_); + string[] an_ = [ + "final", + "amended", + "corrected", + "preliminary", + ]; + bool? ao_ = context.Operators.In(am_, an_ as IEnumerable); + bool? ap_ = context.Operators.And(ai_, ao_); + DataType aq_ = VisualAcuityExamPerformed?.Value; + object ar_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aq_); + CqlValueSet as_ = this.Visual_Acuity_20_40_or_Better(context); + bool? at_ = context.Operators.ConceptInValueSet(ar_ as CqlConcept, as_); + bool? au_ = context.Operators.And(ap_, at_); + + return au_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + Procedure l_(Observation VisualAcuityExamPerformed) => + CataractSurgeryPerformed; + IEnumerable m_ = context.Operators.Select(k_, l_); + + return m_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/CervicalCancerScreeningFHIR-0.0.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CervicalCancerScreeningFHIR-0.0.001.g.cs new file mode 100644 index 000000000..5137cbd33 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CervicalCancerScreeningFHIR-0.0.001.g.cs @@ -0,0 +1,513 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("CervicalCancerScreeningFHIR", "0.0.001")] +public partial class CervicalCancerScreeningFHIR_0_0_001 : ILibrary, ISingleton +{ + private CervicalCancerScreeningFHIR_0_0_001() {} + + public static CervicalCancerScreeningFHIR_0_0_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "CervicalCancerScreeningFHIR"; + public string Version => "0.0.001"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance, Hospice_6_12_000.Instance, PalliativeCare_1_11_000.Instance, Status_1_8_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Congenital or Acquired Absence of Cervix")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1016")] + public CqlValueSet Congenital_or_Acquired_Absence_of_Cervix(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1016", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("HPV Test")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1059")] + public CqlValueSet HPV_Test(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1059", default); + + + [CqlDeclaration("Hysterectomy with No Residual Cervix")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1014")] + public CqlValueSet Hysterectomy_with_No_Residual_Cervix(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1014", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Pap Test")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1017")] + public CqlValueSet Pap_Test(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1017", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("CervicalCancerScreeningFHIR-0.0.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Home_Healthcare_Services(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Telephone_Visits(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Virtual_Encounter(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + IEnumerable r_ = Status_1_8_000.Instance.isEncounterPerformed(context, q_); + bool? s_(Encounter ValidEncounters) + { + CqlInterval u_ = this.Measurement_Period(context); + Period v_ = ValidEncounters?.Period; + CqlInterval w_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, v_); + CqlInterval x_ = QICoreCommon_2_1_000.Instance.toInterval(context, w_ as object); + bool? y_ = context.Operators.IntervalIncludesInterval(u_, x_, "day"); + + return y_; + }; + IEnumerable t_ = context.Operators.Where(r_, s_); + + return t_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(24, 64, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + Code l_ = a_?.GenderElement; + AdministrativeGender? m_ = l_?.Value; + string n_ = context.Operators.Convert(m_); + bool? o_ = context.Operators.Equal(n_, "female"); + bool? p_ = context.Operators.And(j_, o_); + IEnumerable q_ = this.Qualifying_Encounters(context); + bool? r_ = context.Operators.Exists(q_); + bool? s_ = context.Operators.And(p_, r_); + + return s_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Absence of Cervix")] + public IEnumerable Absence_of_Cervix(CqlContext context) + { + CqlValueSet a_ = this.Hysterectomy_with_No_Residual_Cervix(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure NoCervixProcedure) + { + DataType k_ = NoCervixProcedure?.Performed; + object l_ = FHIRHelpers_4_4_000.Instance.ToValue(context, k_); + CqlInterval m_ = QICoreCommon_2_1_000.Instance.toInterval(context, l_); + CqlDateTime n_ = context.Operators.End(m_); + CqlInterval o_ = this.Measurement_Period(context); + CqlDateTime p_ = context.Operators.End(o_); + bool? q_ = context.Operators.SameOrBefore(n_, p_, default); + + return q_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlValueSet f_ = this.Congenital_or_Acquired_Absence_of_Cervix(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? h_(Condition NoCervixDiagnosis) + { + CqlInterval r_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, NoCervixDiagnosis); + CqlDateTime s_ = context.Operators.Start(r_); + CqlInterval t_ = this.Measurement_Period(context); + CqlDateTime u_ = context.Operators.End(t_); + bool? v_ = context.Operators.SameOrBefore(s_, u_, default); + + return v_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + IEnumerable j_ = context.Operators.Union(e_ as IEnumerable, i_ as IEnumerable); + + return j_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + IEnumerable b_ = this.Absence_of_Cervix(context); + bool? c_ = context.Operators.Exists(b_); + bool? d_ = context.Operators.Or(a_, c_); + bool? e_ = PalliativeCare_1_11_000.Instance.Has_Palliative_Care_in_the_Measurement_Period(context); + bool? f_ = context.Operators.Or(d_, e_); + + return f_; + } + + + [CqlDeclaration("Cervical Cytology Within 3 Years")] + public IEnumerable Cervical_Cytology_Within_3_Years(CqlContext context) + { + CqlValueSet a_ = this.Pap_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestPerformed(context, b_); + bool? d_(Observation CervicalCytology) + { + object f_() + { + bool t_() + { + DataType w_ = CervicalCytology?.Effective; + object x_ = FHIRHelpers_4_4_000.Instance.ToValue(context, w_); + bool y_ = x_ is CqlDateTime; + + return y_; + }; + bool u_() + { + DataType z_ = CervicalCytology?.Effective; + object aa_ = FHIRHelpers_4_4_000.Instance.ToValue(context, z_); + bool ab_ = aa_ is CqlInterval; + + return ab_; + }; + bool v_() + { + DataType ac_ = CervicalCytology?.Effective; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + bool ae_ = ad_ is CqlDateTime; + + return ae_; + }; + if (t_()) + { + DataType af_ = CervicalCytology?.Effective; + object ag_ = FHIRHelpers_4_4_000.Instance.ToValue(context, af_); + + return (ag_ as CqlDateTime) as object; + } + else if (u_()) + { + DataType ah_ = CervicalCytology?.Effective; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + + return (ai_ as CqlInterval) as object; + } + else if (v_()) + { + DataType aj_ = CervicalCytology?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + + return (ak_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime g_ = QICoreCommon_2_1_000.Instance.latest(context, f_()); + CqlInterval h_ = this.Measurement_Period(context); + CqlDateTime i_ = context.Operators.Start(h_); + CqlQuantity j_ = context.Operators.Quantity(2m, "years"); + CqlDateTime k_ = context.Operators.Subtract(i_, j_); + CqlDateTime m_ = context.Operators.End(h_); + CqlInterval n_ = context.Operators.Interval(k_, m_, true, true); + bool? o_ = context.Operators.In(g_, n_, "day"); + DataType p_ = CervicalCytology?.Value; + object q_ = FHIRHelpers_4_4_000.Instance.ToValue(context, p_); + bool? r_ = context.Operators.Not((bool?)(q_ is null)); + bool? s_ = context.Operators.And(o_, r_); + + return s_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("HPV Test Within 5 Years for Women Age 30 and Older")] + public IEnumerable HPV_Test_Within_5_Years_for_Women_Age_30_and_Older(CqlContext context) + { + CqlValueSet a_ = this.HPV_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestPerformed(context, b_); + bool? d_(Observation HPVTest) + { + Patient f_ = this.Patient(context); + Date g_ = f_?.BirthDateElement; + string h_ = g_?.Value; + CqlDate i_ = context.Operators.ConvertStringToDate(h_); + object j_() + { + bool ad_() + { + DataType ag_ = HPVTest?.Effective; + object ah_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ag_); + bool ai_ = ah_ is CqlDateTime; + + return ai_; + }; + bool ae_() + { + DataType aj_ = HPVTest?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + bool al_ = ak_ is CqlInterval; + + return al_; + }; + bool af_() + { + DataType am_ = HPVTest?.Effective; + object an_ = FHIRHelpers_4_4_000.Instance.ToValue(context, am_); + bool ao_ = an_ is CqlDateTime; + + return ao_; + }; + if (ad_()) + { + DataType ap_ = HPVTest?.Effective; + object aq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ap_); + + return (aq_ as CqlDateTime) as object; + } + else if (ae_()) + { + DataType ar_ = HPVTest?.Effective; + object as_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ar_); + + return (as_ as CqlInterval) as object; + } + else if (af_()) + { + DataType at_ = HPVTest?.Effective; + object au_ = FHIRHelpers_4_4_000.Instance.ToValue(context, at_); + + return (au_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime k_ = QICoreCommon_2_1_000.Instance.latest(context, j_()); + CqlDate l_ = context.Operators.DateFrom(k_); + int? m_ = context.Operators.CalculateAgeAt(i_, l_, "year"); + bool? n_ = context.Operators.GreaterOrEqual(m_, 30); + object o_() + { + bool av_() + { + DataType ay_ = HPVTest?.Effective; + object az_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ay_); + bool ba_ = az_ is CqlDateTime; + + return ba_; + }; + bool aw_() + { + DataType bb_ = HPVTest?.Effective; + object bc_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bb_); + bool bd_ = bc_ is CqlInterval; + + return bd_; + }; + bool ax_() + { + DataType be_ = HPVTest?.Effective; + object bf_ = FHIRHelpers_4_4_000.Instance.ToValue(context, be_); + bool bg_ = bf_ is CqlDateTime; + + return bg_; + }; + if (av_()) + { + DataType bh_ = HPVTest?.Effective; + object bi_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bh_); + + return (bi_ as CqlDateTime) as object; + } + else if (aw_()) + { + DataType bj_ = HPVTest?.Effective; + object bk_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bj_); + + return (bk_ as CqlInterval) as object; + } + else if (ax_()) + { + DataType bl_ = HPVTest?.Effective; + object bm_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bl_); + + return (bm_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime p_ = QICoreCommon_2_1_000.Instance.latest(context, o_()); + CqlInterval q_ = this.Measurement_Period(context); + CqlDateTime r_ = context.Operators.Start(q_); + CqlQuantity s_ = context.Operators.Quantity(4m, "years"); + CqlDateTime t_ = context.Operators.Subtract(r_, s_); + CqlDateTime v_ = context.Operators.End(q_); + CqlInterval w_ = context.Operators.Interval(t_, v_, true, true); + bool? x_ = context.Operators.In(p_, w_, "day"); + bool? y_ = context.Operators.And(n_, x_); + DataType z_ = HPVTest?.Value; + object aa_ = FHIRHelpers_4_4_000.Instance.ToValue(context, z_); + bool? ab_ = context.Operators.Not((bool?)(aa_ is null)); + bool? ac_ = context.Operators.And(y_, ab_); + + return ac_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + IEnumerable a_ = this.Cervical_Cytology_Within_3_Years(context); + bool? b_ = context.Operators.Exists(a_); + IEnumerable c_ = this.HPV_Test_Within_5_Years_for_Women_Age_30_and_Older(context); + bool? d_ = context.Operators.Exists(c_); + bool? e_ = context.Operators.Or(b_, d_); + + return e_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/CesareanBirthFHIR-0.2.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CesareanBirthFHIR-0.2.000.g.cs new file mode 100644 index 000000000..b62a3c4b5 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CesareanBirthFHIR-0.2.000.g.cs @@ -0,0 +1,1940 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("CesareanBirthFHIR", "0.2.000")] +public partial class CesareanBirthFHIR_0_2_000 : ILibrary, ISingleton +{ + private CesareanBirthFHIR_0_2_000() {} + + public static CesareanBirthFHIR_0_2_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "CesareanBirthFHIR"; + public string Version => "0.2.000"; + public ILibrary[] Dependencies => [CQMCommon_2_2_000.Instance, FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, PCMaternal_5_19_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Abnormal Presentation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.105")] + public CqlValueSet Abnormal_Presentation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.105", default); + + + [CqlDeclaration("Cesarean Birth")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.282")] + public CqlValueSet Cesarean_Birth(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.282", default); + + + [CqlDeclaration("Delivery of Singleton")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.99")] + public CqlValueSet Delivery_of_Singleton(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.99", default); + + + [CqlDeclaration("Delivery Procedures")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.59")] + public CqlValueSet Delivery_Procedures(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1045.59", default); + + + [CqlDeclaration("Encounter Inpatient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307")] + public CqlValueSet Encounter_Inpatient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307", default); + + + [CqlDeclaration("Genital Herpes")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1049")] + public CqlValueSet Genital_Herpes(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1049", default); + + + [CqlDeclaration("Placenta Accreta Spectrum Previa or Vasa Previa")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.37")] + public CqlValueSet Placenta_Accreta_Spectrum_Previa_or_Vasa_Previa(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.37", default); + + + [CqlDeclaration("37 to 42 Plus Weeks Gestation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.68")] + public CqlValueSet _37_to_42_Plus_Weeks_Gestation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.68", default); + + + [CqlDeclaration("[#] Births.preterm")] + public CqlCode ____Births_preterm(CqlContext context) => + new CqlCode("11637-6", "http://loinc.org", default, default); + + + [CqlDeclaration("[#] Births.term")] + public CqlCode ____Births_term(CqlContext context) => + new CqlCode("11639-2", "http://loinc.org", default, default); + + + [CqlDeclaration("[#] Parity")] + public CqlCode ____Parity(CqlContext context) => + new CqlCode("11977-6", "http://loinc.org", default, default); + + + [CqlDeclaration("[#] Pregnancies")] + public CqlCode ____Pregnancies(CqlContext context) => + new CqlCode("11996-6", "http://loinc.org", default, default); + + + [CqlDeclaration("Date and time of obstetric delivery")] + public CqlCode Date_and_time_of_obstetric_delivery(CqlContext context) => + new CqlCode("93857-1", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("11637-6", "http://loinc.org", default, default), + new CqlCode("11639-2", "http://loinc.org", default, default), + new CqlCode("11977-6", "http://loinc.org", default, default), + new CqlCode("11996-6", "http://loinc.org", default, default), + new CqlCode("93857-1", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("CesareanBirthFHIR-0.2.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Delivery Encounter with Calculated Gestational Age Greater than or Equal to 37 Weeks")] + public IEnumerable Delivery_Encounter_with_Calculated_Gestational_Age_Greater_than_or_Equal_to_37_Weeks(CqlContext context) + { + IEnumerable a_ = PCMaternal_5_19_000.Instance.Delivery_Encounter_with_Age_Range(context); + bool? b_(Encounter DeliveryEncounter) + { + int? d_ = PCMaternal_5_19_000.Instance.calculatedGestationalAge(context, DeliveryEncounter); + bool? e_ = context.Operators.GreaterOrEqual(d_, 37); + + return e_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Delivery Encounter with Estimated Gestational Age Greater than or Equal to 37 Weeks")] + public IEnumerable Delivery_Encounter_with_Estimated_Gestational_Age_Greater_than_or_Equal_to_37_Weeks(CqlContext context) + { + IEnumerable a_ = PCMaternal_5_19_000.Instance.Delivery_Encounter_with_Age_Range(context); + bool? b_(Encounter DeliveryEncounter) + { + int? d_ = PCMaternal_5_19_000.Instance.calculatedGestationalAge(context, DeliveryEncounter); + CqlQuantity e_ = PCMaternal_5_19_000.Instance.lastEstimatedGestationalAge(context, DeliveryEncounter); + CqlQuantity f_ = context.Operators.Quantity(37m, "weeks"); + bool? g_ = context.Operators.GreaterOrEqual(e_, f_); + bool? h_ = context.Operators.And((bool?)(d_ is null), g_); + + return h_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Delivery Encounter with Gestational Age Greater than or Equal to 37 Weeks Based on Coding")] + public IEnumerable Delivery_Encounter_with_Gestational_Age_Greater_than_or_Equal_to_37_Weeks_Based_on_Coding(CqlContext context) + { + IEnumerable a_ = PCMaternal_5_19_000.Instance.Delivery_Encounter_with_Age_Range(context); + bool? b_(Encounter DeliveryEncounter) + { + int? d_ = PCMaternal_5_19_000.Instance.calculatedGestationalAge(context, DeliveryEncounter); + CqlQuantity e_ = PCMaternal_5_19_000.Instance.lastEstimatedGestationalAge(context, DeliveryEncounter); + bool? f_ = context.Operators.And((bool?)(d_ is null), (bool?)(e_ is null)); + IEnumerable g_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, DeliveryEncounter); + bool? h_(Condition EncounterDiagnosis) + { + CodeableConcept l_ = EncounterDiagnosis?.Code; + CqlConcept m_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, l_); + CqlValueSet n_ = this._37_to_42_Plus_Weeks_Gestation(context); + bool? o_ = context.Operators.ConceptInValueSet(m_, n_); + + return o_; + }; + IEnumerable i_ = context.Operators.Where(g_, h_); + bool? j_ = context.Operators.Exists(i_); + bool? k_ = context.Operators.And(f_, j_); + + return k_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Delivery Encounter with Gestational Age Greater than or Equal to 37 Weeks")] + public IEnumerable Delivery_Encounter_with_Gestational_Age_Greater_than_or_Equal_to_37_Weeks(CqlContext context) + { + IEnumerable a_ = this.Delivery_Encounter_with_Calculated_Gestational_Age_Greater_than_or_Equal_to_37_Weeks(context); + IEnumerable b_ = this.Delivery_Encounter_with_Estimated_Gestational_Age_Greater_than_or_Equal_to_37_Weeks(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + IEnumerable d_ = this.Delivery_Encounter_with_Gestational_Age_Greater_than_or_Equal_to_37_Weeks_Based_on_Coding(context); + IEnumerable e_ = context.Operators.Union(c_, d_); + + return e_; + } + + + [CqlDeclaration("Encounter with Singleton Delivery")] + public IEnumerable Encounter_with_Singleton_Delivery(CqlContext context) + { + IEnumerable a_ = PCMaternal_5_19_000.Instance.Delivery_Encounter_with_Age_Range(context); + bool? b_(Encounter DeliveryEncounter) + { + IEnumerable d_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, DeliveryEncounter); + bool? e_(Condition EncounterDiagnosis) + { + CodeableConcept h_ = EncounterDiagnosis?.Code; + CqlConcept i_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, h_); + CqlValueSet j_ = this.Delivery_of_Singleton(context); + bool? k_ = context.Operators.ConceptInValueSet(i_, j_); + + return k_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + public int? lastGravida(CqlContext context, Encounter TheEncounter) + { + CqlCode a_ = this.____Pregnancies(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? d_(Observation Gravida) + { + DataType k_ = Gravida?.Value; + object l_ = FHIRHelpers_4_4_000.Instance.ToValue(context, k_); + bool? m_ = context.Operators.Not((bool?)(l_ is null)); + Code n_ = Gravida?.StatusElement; + ObservationStatus? o_ = n_?.Value; + Code p_ = context.Operators.Convert>(o_); + string q_ = context.Operators.Convert(p_); + string[] r_ = [ + "final", + "amended", + "corrected", + ]; + bool? s_ = context.Operators.In(q_, r_ as IEnumerable); + bool? t_ = context.Operators.And(m_, s_); + object u_() + { + bool ag_() + { + DataType aj_ = Gravida?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + bool al_ = ak_ is CqlDateTime; + + return al_; + }; + bool ah_() + { + DataType am_ = Gravida?.Effective; + object an_ = FHIRHelpers_4_4_000.Instance.ToValue(context, am_); + bool ao_ = an_ is CqlInterval; + + return ao_; + }; + bool ai_() + { + DataType ap_ = Gravida?.Effective; + object aq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ap_); + bool ar_ = aq_ is CqlDateTime; + + return ar_; + }; + if (ag_()) + { + DataType as_ = Gravida?.Effective; + object at_ = FHIRHelpers_4_4_000.Instance.ToValue(context, as_); + + return (at_ as CqlDateTime) as object; + } + else if (ah_()) + { + DataType au_ = Gravida?.Effective; + object av_ = FHIRHelpers_4_4_000.Instance.ToValue(context, au_); + + return (av_ as CqlInterval) as object; + } + else if (ai_()) + { + DataType aw_ = Gravida?.Effective; + object ax_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aw_); + + return (ax_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime v_ = QICoreCommon_2_1_000.Instance.earliest(context, u_()); + CqlDateTime w_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, TheEncounter); + CqlQuantity x_ = context.Operators.Quantity(42m, "weeks"); + CqlDateTime y_ = context.Operators.Subtract(w_, x_); + CqlInterval aa_ = context.Operators.Interval(y_, w_, true, false); + bool? ab_ = context.Operators.In(v_, aa_, default); + bool? ad_ = context.Operators.Not((bool?)(w_ is null)); + bool? ae_ = context.Operators.And(ab_, ad_); + bool? af_ = context.Operators.And(t_, ae_); + + return af_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + object f_(Observation @this) + { + object ay_() + { + bool ba_() + { + DataType bd_ = @this?.Effective; + object be_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bd_); + bool bf_ = be_ is CqlDateTime; + + return bf_; + }; + bool bb_() + { + DataType bg_ = @this?.Effective; + object bh_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bg_); + bool bi_ = bh_ is CqlInterval; + + return bi_; + }; + bool bc_() + { + DataType bj_ = @this?.Effective; + object bk_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bj_); + bool bl_ = bk_ is CqlDateTime; + + return bl_; + }; + if (ba_()) + { + DataType bm_ = @this?.Effective; + object bn_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bm_); + + return (bn_ as CqlDateTime) as object; + } + else if (bb_()) + { + DataType bo_ = @this?.Effective; + object bp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bo_); + + return (bp_ as CqlInterval) as object; + } + else if (bc_()) + { + DataType bq_ = @this?.Effective; + object br_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bq_); + + return (br_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime az_ = QICoreCommon_2_1_000.Instance.earliest(context, ay_()); + + return az_; + }; + IEnumerable g_ = context.Operators.SortBy(e_, f_, System.ComponentModel.ListSortDirection.Ascending); + Observation h_ = context.Operators.Last(g_); + DataType i_ = h_?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + + return j_ as int?; + } + + + public int? lastParity(CqlContext context, Encounter TheEncounter) + { + CqlCode a_ = this.____Parity(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? d_(Observation Parity) + { + object k_() + { + bool ag_() + { + DataType aj_ = Parity?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + bool al_ = ak_ is CqlDateTime; + + return al_; + }; + bool ah_() + { + DataType am_ = Parity?.Effective; + object an_ = FHIRHelpers_4_4_000.Instance.ToValue(context, am_); + bool ao_ = an_ is CqlInterval; + + return ao_; + }; + bool ai_() + { + DataType ap_ = Parity?.Effective; + object aq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ap_); + bool ar_ = aq_ is CqlDateTime; + + return ar_; + }; + if (ag_()) + { + DataType as_ = Parity?.Effective; + object at_ = FHIRHelpers_4_4_000.Instance.ToValue(context, as_); + + return (at_ as CqlDateTime) as object; + } + else if (ah_()) + { + DataType au_ = Parity?.Effective; + object av_ = FHIRHelpers_4_4_000.Instance.ToValue(context, au_); + + return (av_ as CqlInterval) as object; + } + else if (ai_()) + { + DataType aw_ = Parity?.Effective; + object ax_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aw_); + + return (ax_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime l_ = QICoreCommon_2_1_000.Instance.earliest(context, k_()); + CqlDateTime m_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, TheEncounter); + CqlQuantity n_ = context.Operators.Quantity(42m, "weeks"); + CqlDateTime o_ = context.Operators.Subtract(m_, n_); + CqlInterval q_ = context.Operators.Interval(o_, m_, true, false); + bool? r_ = context.Operators.In(l_, q_, default); + bool? t_ = context.Operators.Not((bool?)(m_ is null)); + bool? u_ = context.Operators.And(r_, t_); + Code v_ = Parity?.StatusElement; + ObservationStatus? w_ = v_?.Value; + Code x_ = context.Operators.Convert>(w_); + string y_ = context.Operators.Convert(x_); + string[] z_ = [ + "final", + "amended", + "corrected", + ]; + bool? aa_ = context.Operators.In(y_, z_ as IEnumerable); + bool? ab_ = context.Operators.And(u_, aa_); + DataType ac_ = Parity?.Value; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + bool? ae_ = context.Operators.Not((bool?)(ad_ is null)); + bool? af_ = context.Operators.And(ab_, ae_); + + return af_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + object f_(Observation @this) + { + object ay_() + { + bool ba_() + { + DataType bd_ = @this?.Effective; + object be_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bd_); + bool bf_ = be_ is CqlDateTime; + + return bf_; + }; + bool bb_() + { + DataType bg_ = @this?.Effective; + object bh_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bg_); + bool bi_ = bh_ is CqlInterval; + + return bi_; + }; + bool bc_() + { + DataType bj_ = @this?.Effective; + object bk_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bj_); + bool bl_ = bk_ is CqlDateTime; + + return bl_; + }; + if (ba_()) + { + DataType bm_ = @this?.Effective; + object bn_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bm_); + + return (bn_ as CqlDateTime) as object; + } + else if (bb_()) + { + DataType bo_ = @this?.Effective; + object bp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bo_); + + return (bp_ as CqlInterval) as object; + } + else if (bc_()) + { + DataType bq_ = @this?.Effective; + object br_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bq_); + + return (br_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime az_ = QICoreCommon_2_1_000.Instance.earliest(context, ay_()); + + return az_; + }; + IEnumerable g_ = context.Operators.SortBy(e_, f_, System.ComponentModel.ListSortDirection.Ascending); + Observation h_ = context.Operators.Last(g_); + DataType i_ = h_?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + + return j_ as int?; + } + + + public int? lastHistoryPretermBirth(CqlContext context, Encounter TheEncounter) + { + CqlCode a_ = this.____Births_preterm(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? d_(Observation PretermBirth) + { + object k_() + { + bool ag_() + { + DataType aj_ = PretermBirth?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + bool al_ = ak_ is CqlDateTime; + + return al_; + }; + bool ah_() + { + DataType am_ = PretermBirth?.Effective; + object an_ = FHIRHelpers_4_4_000.Instance.ToValue(context, am_); + bool ao_ = an_ is CqlInterval; + + return ao_; + }; + bool ai_() + { + DataType ap_ = PretermBirth?.Effective; + object aq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ap_); + bool ar_ = aq_ is CqlDateTime; + + return ar_; + }; + if (ag_()) + { + DataType as_ = PretermBirth?.Effective; + object at_ = FHIRHelpers_4_4_000.Instance.ToValue(context, as_); + + return (at_ as CqlDateTime) as object; + } + else if (ah_()) + { + DataType au_ = PretermBirth?.Effective; + object av_ = FHIRHelpers_4_4_000.Instance.ToValue(context, au_); + + return (av_ as CqlInterval) as object; + } + else if (ai_()) + { + DataType aw_ = PretermBirth?.Effective; + object ax_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aw_); + + return (ax_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime l_ = QICoreCommon_2_1_000.Instance.earliest(context, k_()); + CqlDateTime m_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, TheEncounter); + CqlQuantity n_ = context.Operators.Quantity(42m, "weeks"); + CqlDateTime o_ = context.Operators.Subtract(m_, n_); + CqlInterval q_ = context.Operators.Interval(o_, m_, true, false); + bool? r_ = context.Operators.In(l_, q_, default); + bool? t_ = context.Operators.Not((bool?)(m_ is null)); + bool? u_ = context.Operators.And(r_, t_); + Code v_ = PretermBirth?.StatusElement; + ObservationStatus? w_ = v_?.Value; + Code x_ = context.Operators.Convert>(w_); + string y_ = context.Operators.Convert(x_); + string[] z_ = [ + "final", + "amended", + "corrected", + ]; + bool? aa_ = context.Operators.In(y_, z_ as IEnumerable); + bool? ab_ = context.Operators.And(u_, aa_); + DataType ac_ = PretermBirth?.Value; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + bool? ae_ = context.Operators.Not((bool?)(ad_ is null)); + bool? af_ = context.Operators.And(ab_, ae_); + + return af_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + object f_(Observation @this) + { + object ay_() + { + bool ba_() + { + DataType bd_ = @this?.Effective; + object be_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bd_); + bool bf_ = be_ is CqlDateTime; + + return bf_; + }; + bool bb_() + { + DataType bg_ = @this?.Effective; + object bh_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bg_); + bool bi_ = bh_ is CqlInterval; + + return bi_; + }; + bool bc_() + { + DataType bj_ = @this?.Effective; + object bk_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bj_); + bool bl_ = bk_ is CqlDateTime; + + return bl_; + }; + if (ba_()) + { + DataType bm_ = @this?.Effective; + object bn_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bm_); + + return (bn_ as CqlDateTime) as object; + } + else if (bb_()) + { + DataType bo_ = @this?.Effective; + object bp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bo_); + + return (bp_ as CqlInterval) as object; + } + else if (bc_()) + { + DataType bq_ = @this?.Effective; + object br_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bq_); + + return (br_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime az_ = QICoreCommon_2_1_000.Instance.earliest(context, ay_()); + + return az_; + }; + IEnumerable g_ = context.Operators.SortBy(e_, f_, System.ComponentModel.ListSortDirection.Ascending); + Observation h_ = context.Operators.Last(g_); + DataType i_ = h_?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + + return j_ as int?; + } + + + public int? lastHistoryTermBirth(CqlContext context, Encounter TheEncounter) + { + CqlCode a_ = this.____Births_term(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? d_(Observation TermBirth) + { + object k_() + { + bool ag_() + { + DataType aj_ = TermBirth?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + bool al_ = ak_ is CqlDateTime; + + return al_; + }; + bool ah_() + { + DataType am_ = TermBirth?.Effective; + object an_ = FHIRHelpers_4_4_000.Instance.ToValue(context, am_); + bool ao_ = an_ is CqlInterval; + + return ao_; + }; + bool ai_() + { + DataType ap_ = TermBirth?.Effective; + object aq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ap_); + bool ar_ = aq_ is CqlDateTime; + + return ar_; + }; + if (ag_()) + { + DataType as_ = TermBirth?.Effective; + object at_ = FHIRHelpers_4_4_000.Instance.ToValue(context, as_); + + return (at_ as CqlDateTime) as object; + } + else if (ah_()) + { + DataType au_ = TermBirth?.Effective; + object av_ = FHIRHelpers_4_4_000.Instance.ToValue(context, au_); + + return (av_ as CqlInterval) as object; + } + else if (ai_()) + { + DataType aw_ = TermBirth?.Effective; + object ax_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aw_); + + return (ax_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime l_ = QICoreCommon_2_1_000.Instance.earliest(context, k_()); + CqlDateTime m_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, TheEncounter); + CqlQuantity n_ = context.Operators.Quantity(42m, "weeks"); + CqlDateTime o_ = context.Operators.Subtract(m_, n_); + CqlInterval q_ = context.Operators.Interval(o_, m_, true, false); + bool? r_ = context.Operators.In(l_, q_, default); + bool? t_ = context.Operators.Not((bool?)(m_ is null)); + bool? u_ = context.Operators.And(r_, t_); + Code v_ = TermBirth?.StatusElement; + ObservationStatus? w_ = v_?.Value; + Code x_ = context.Operators.Convert>(w_); + string y_ = context.Operators.Convert(x_); + string[] z_ = [ + "final", + "amended", + "corrected", + ]; + bool? aa_ = context.Operators.In(y_, z_ as IEnumerable); + bool? ab_ = context.Operators.And(u_, aa_); + DataType ac_ = TermBirth?.Value; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + bool? ae_ = context.Operators.Not((bool?)(ad_ is null)); + bool? af_ = context.Operators.And(ab_, ae_); + + return af_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + object f_(Observation @this) + { + object ay_() + { + bool ba_() + { + DataType bd_ = @this?.Effective; + object be_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bd_); + bool bf_ = be_ is CqlDateTime; + + return bf_; + }; + bool bb_() + { + DataType bg_ = @this?.Effective; + object bh_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bg_); + bool bi_ = bh_ is CqlInterval; + + return bi_; + }; + bool bc_() + { + DataType bj_ = @this?.Effective; + object bk_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bj_); + bool bl_ = bk_ is CqlDateTime; + + return bl_; + }; + if (ba_()) + { + DataType bm_ = @this?.Effective; + object bn_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bm_); + + return (bn_ as CqlDateTime) as object; + } + else if (bb_()) + { + DataType bo_ = @this?.Effective; + object bp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bo_); + + return (bp_ as CqlInterval) as object; + } + else if (bc_()) + { + DataType bq_ = @this?.Effective; + object br_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bq_); + + return (br_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime az_ = QICoreCommon_2_1_000.Instance.earliest(context, ay_()); + + return az_; + }; + IEnumerable g_ = context.Operators.SortBy(e_, f_, System.ComponentModel.ListSortDirection.Ascending); + Observation h_ = context.Operators.Last(g_); + DataType i_ = h_?.Value; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + + return j_ as int?; + } + + + [CqlDeclaration("Singleton Delivery Encounters at 37 Plus Weeks Gravida 1 Parity 0, No Previous Births")] + public IEnumerable Singleton_Delivery_Encounters_at_37_Plus_Weeks_Gravida_1_Parity_0__No_Previous_Births(CqlContext context) + { + IEnumerable a_ = this.Delivery_Encounter_with_Gestational_Age_Greater_than_or_Equal_to_37_Weeks(context); + IEnumerable b_ = this.Encounter_with_Singleton_Delivery(context); + IEnumerable c_ = context.Operators.Intersect(a_, b_); + bool? d_(Encounter SingletonEncounterGE37Weeks) + { + int? f_ = this.lastGravida(context, SingletonEncounterGE37Weeks); + bool? g_ = context.Operators.Equal(f_, 1); + int? h_ = this.lastParity(context, SingletonEncounterGE37Weeks); + bool? i_ = context.Operators.Equal(h_, 0); + bool? j_ = context.Operators.Or(g_, i_); + int? k_ = this.lastHistoryPretermBirth(context, SingletonEncounterGE37Weeks); + bool? l_ = context.Operators.Equal(k_, 0); + int? m_ = this.lastHistoryTermBirth(context, SingletonEncounterGE37Weeks); + bool? n_ = context.Operators.Equal(m_, 0); + bool? o_ = context.Operators.And(l_, n_); + bool? p_ = context.Operators.Or(j_, o_); + + return p_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Encounter with Abnormal Presentation")] + public IEnumerable Encounter_with_Abnormal_Presentation(CqlContext context) + { + IEnumerable a_ = this.Singleton_Delivery_Encounters_at_37_Plus_Weeks_Gravida_1_Parity_0__No_Previous_Births(context); + bool? b_(Encounter ThirtysevenWeeksPlusEncounter) + { + object d_() + { + bool n_() + { + CqlValueSet q_ = this.Abnormal_Presentation(context); + IEnumerable r_ = context.Operators.Retrieve(new RetrieveParameters(default, q_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? s_(Observation AbnormalPresentation) + { + object aa_() + { + bool al_() + { + DataType ao_ = AbnormalPresentation?.Effective; + object ap_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ao_); + bool aq_ = ap_ is CqlDateTime; + + return aq_; + }; + bool am_() + { + DataType ar_ = AbnormalPresentation?.Effective; + object as_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ar_); + bool at_ = as_ is CqlInterval; + + return at_; + }; + bool an_() + { + DataType au_ = AbnormalPresentation?.Effective; + object av_ = FHIRHelpers_4_4_000.Instance.ToValue(context, au_); + bool aw_ = av_ is CqlDateTime; + + return aw_; + }; + if (al_()) + { + DataType ax_ = AbnormalPresentation?.Effective; + object ay_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ax_); + + return (ay_ as CqlDateTime) as object; + } + else if (am_()) + { + DataType az_ = AbnormalPresentation?.Effective; + object ba_ = FHIRHelpers_4_4_000.Instance.ToValue(context, az_); + + return (ba_ as CqlInterval) as object; + } + else if (an_()) + { + DataType bb_ = AbnormalPresentation?.Effective; + object bc_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bb_); + + return (bc_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime ab_ = QICoreCommon_2_1_000.Instance.earliest(context, aa_()); + CqlDateTime ac_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, ThirtysevenWeeksPlusEncounter); + bool? ad_ = context.Operators.SameOrBefore(ab_, ac_, default); + Code ae_ = AbnormalPresentation?.StatusElement; + ObservationStatus? af_ = ae_?.Value; + Code ag_ = context.Operators.Convert>(af_); + string ah_ = context.Operators.Convert(ag_); + string[] ai_ = [ + "final", + "amended", + "corrected", + ]; + bool? aj_ = context.Operators.In(ah_, ai_ as IEnumerable); + bool? ak_ = context.Operators.And(ad_, aj_); + + return ak_; + }; + IEnumerable t_ = context.Operators.Where(r_, s_); + object u_(Observation @this) + { + object bd_() + { + bool bf_() + { + DataType bi_ = @this?.Effective; + object bj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bi_); + bool bk_ = bj_ is CqlDateTime; + + return bk_; + }; + bool bg_() + { + DataType bl_ = @this?.Effective; + object bm_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bl_); + bool bn_ = bm_ is CqlInterval; + + return bn_; + }; + bool bh_() + { + DataType bo_ = @this?.Effective; + object bp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bo_); + bool bq_ = bp_ is CqlDateTime; + + return bq_; + }; + if (bf_()) + { + DataType br_ = @this?.Effective; + object bs_ = FHIRHelpers_4_4_000.Instance.ToValue(context, br_); + + return (bs_ as CqlDateTime) as object; + } + else if (bg_()) + { + DataType bt_ = @this?.Effective; + object bu_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bt_); + + return (bu_ as CqlInterval) as object; + } + else if (bh_()) + { + DataType bv_ = @this?.Effective; + object bw_ = FHIRHelpers_4_4_000.Instance.ToValue(context, bv_); + + return (bw_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime be_ = QICoreCommon_2_1_000.Instance.earliest(context, bd_()); + + return be_; + }; + IEnumerable v_ = context.Operators.SortBy(t_, u_, System.ComponentModel.ListSortDirection.Ascending); + Observation w_ = context.Operators.Last(v_); + DataType x_ = w_?.Effective; + object y_ = FHIRHelpers_4_4_000.Instance.ToValue(context, x_); + bool z_ = y_ is CqlDateTime; + + return z_; + }; + bool o_() + { + CqlValueSet bx_ = this.Abnormal_Presentation(context); + IEnumerable by_ = context.Operators.Retrieve(new RetrieveParameters(default, bx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? bz_(Observation AbnormalPresentation) + { + object ch_() + { + bool cs_() + { + DataType cv_ = AbnormalPresentation?.Effective; + object cw_ = FHIRHelpers_4_4_000.Instance.ToValue(context, cv_); + bool cx_ = cw_ is CqlDateTime; + + return cx_; + }; + bool ct_() + { + DataType cy_ = AbnormalPresentation?.Effective; + object cz_ = FHIRHelpers_4_4_000.Instance.ToValue(context, cy_); + bool da_ = cz_ is CqlInterval; + + return da_; + }; + bool cu_() + { + DataType db_ = AbnormalPresentation?.Effective; + object dc_ = FHIRHelpers_4_4_000.Instance.ToValue(context, db_); + bool dd_ = dc_ is CqlDateTime; + + return dd_; + }; + if (cs_()) + { + DataType de_ = AbnormalPresentation?.Effective; + object df_ = FHIRHelpers_4_4_000.Instance.ToValue(context, de_); + + return (df_ as CqlDateTime) as object; + } + else if (ct_()) + { + DataType dg_ = AbnormalPresentation?.Effective; + object dh_ = FHIRHelpers_4_4_000.Instance.ToValue(context, dg_); + + return (dh_ as CqlInterval) as object; + } + else if (cu_()) + { + DataType di_ = AbnormalPresentation?.Effective; + object dj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, di_); + + return (dj_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime ci_ = QICoreCommon_2_1_000.Instance.earliest(context, ch_()); + CqlDateTime cj_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, ThirtysevenWeeksPlusEncounter); + bool? ck_ = context.Operators.SameOrBefore(ci_, cj_, default); + Code cl_ = AbnormalPresentation?.StatusElement; + ObservationStatus? cm_ = cl_?.Value; + Code cn_ = context.Operators.Convert>(cm_); + string co_ = context.Operators.Convert(cn_); + string[] cp_ = [ + "final", + "amended", + "corrected", + ]; + bool? cq_ = context.Operators.In(co_, cp_ as IEnumerable); + bool? cr_ = context.Operators.And(ck_, cq_); + + return cr_; + }; + IEnumerable ca_ = context.Operators.Where(by_, bz_); + object cb_(Observation @this) + { + object dk_() + { + bool dm_() + { + DataType dp_ = @this?.Effective; + object dq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, dp_); + bool dr_ = dq_ is CqlDateTime; + + return dr_; + }; + bool dn_() + { + DataType ds_ = @this?.Effective; + object dt_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ds_); + bool du_ = dt_ is CqlInterval; + + return du_; + }; + bool do_() + { + DataType dv_ = @this?.Effective; + object dw_ = FHIRHelpers_4_4_000.Instance.ToValue(context, dv_); + bool dx_ = dw_ is CqlDateTime; + + return dx_; + }; + if (dm_()) + { + DataType dy_ = @this?.Effective; + object dz_ = FHIRHelpers_4_4_000.Instance.ToValue(context, dy_); + + return (dz_ as CqlDateTime) as object; + } + else if (dn_()) + { + DataType ea_ = @this?.Effective; + object eb_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ea_); + + return (eb_ as CqlInterval) as object; + } + else if (do_()) + { + DataType ec_ = @this?.Effective; + object ed_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ec_); + + return (ed_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime dl_ = QICoreCommon_2_1_000.Instance.earliest(context, dk_()); + + return dl_; + }; + IEnumerable cc_ = context.Operators.SortBy(ca_, cb_, System.ComponentModel.ListSortDirection.Ascending); + Observation cd_ = context.Operators.Last(cc_); + DataType ce_ = cd_?.Effective; + object cf_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ce_); + bool cg_ = cf_ is CqlInterval; + + return cg_; + }; + bool p_() + { + CqlValueSet ee_ = this.Abnormal_Presentation(context); + IEnumerable ef_ = context.Operators.Retrieve(new RetrieveParameters(default, ee_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? eg_(Observation AbnormalPresentation) + { + object eo_() + { + bool ez_() + { + DataType fc_ = AbnormalPresentation?.Effective; + object fd_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fc_); + bool fe_ = fd_ is CqlDateTime; + + return fe_; + }; + bool fa_() + { + DataType ff_ = AbnormalPresentation?.Effective; + object fg_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ff_); + bool fh_ = fg_ is CqlInterval; + + return fh_; + }; + bool fb_() + { + DataType fi_ = AbnormalPresentation?.Effective; + object fj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fi_); + bool fk_ = fj_ is CqlDateTime; + + return fk_; + }; + if (ez_()) + { + DataType fl_ = AbnormalPresentation?.Effective; + object fm_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fl_); + + return (fm_ as CqlDateTime) as object; + } + else if (fa_()) + { + DataType fn_ = AbnormalPresentation?.Effective; + object fo_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fn_); + + return (fo_ as CqlInterval) as object; + } + else if (fb_()) + { + DataType fp_ = AbnormalPresentation?.Effective; + object fq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fp_); + + return (fq_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime ep_ = QICoreCommon_2_1_000.Instance.earliest(context, eo_()); + CqlDateTime eq_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, ThirtysevenWeeksPlusEncounter); + bool? er_ = context.Operators.SameOrBefore(ep_, eq_, default); + Code es_ = AbnormalPresentation?.StatusElement; + ObservationStatus? et_ = es_?.Value; + Code eu_ = context.Operators.Convert>(et_); + string ev_ = context.Operators.Convert(eu_); + string[] ew_ = [ + "final", + "amended", + "corrected", + ]; + bool? ex_ = context.Operators.In(ev_, ew_ as IEnumerable); + bool? ey_ = context.Operators.And(er_, ex_); + + return ey_; + }; + IEnumerable eh_ = context.Operators.Where(ef_, eg_); + object ei_(Observation @this) + { + object fr_() + { + bool ft_() + { + DataType fw_ = @this?.Effective; + object fx_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fw_); + bool fy_ = fx_ is CqlDateTime; + + return fy_; + }; + bool fu_() + { + DataType fz_ = @this?.Effective; + object ga_ = FHIRHelpers_4_4_000.Instance.ToValue(context, fz_); + bool gb_ = ga_ is CqlInterval; + + return gb_; + }; + bool fv_() + { + DataType gc_ = @this?.Effective; + object gd_ = FHIRHelpers_4_4_000.Instance.ToValue(context, gc_); + bool ge_ = gd_ is CqlDateTime; + + return ge_; + }; + if (ft_()) + { + DataType gf_ = @this?.Effective; + object gg_ = FHIRHelpers_4_4_000.Instance.ToValue(context, gf_); + + return (gg_ as CqlDateTime) as object; + } + else if (fu_()) + { + DataType gh_ = @this?.Effective; + object gi_ = FHIRHelpers_4_4_000.Instance.ToValue(context, gh_); + + return (gi_ as CqlInterval) as object; + } + else if (fv_()) + { + DataType gj_ = @this?.Effective; + object gk_ = FHIRHelpers_4_4_000.Instance.ToValue(context, gj_); + + return (gk_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime fs_ = QICoreCommon_2_1_000.Instance.earliest(context, fr_()); + + return fs_; + }; + IEnumerable ej_ = context.Operators.SortBy(eh_, ei_, System.ComponentModel.ListSortDirection.Ascending); + Observation ek_ = context.Operators.Last(ej_); + DataType el_ = ek_?.Effective; + object em_ = FHIRHelpers_4_4_000.Instance.ToValue(context, el_); + bool en_ = em_ is CqlDateTime; + + return en_; + }; + if (n_()) + { + CqlValueSet gl_ = this.Abnormal_Presentation(context); + IEnumerable gm_ = context.Operators.Retrieve(new RetrieveParameters(default, gl_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? gn_(Observation AbnormalPresentation) + { + object gu_() + { + bool hf_() + { + DataType hi_ = AbnormalPresentation?.Effective; + object hj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, hi_); + bool hk_ = hj_ is CqlDateTime; + + return hk_; + }; + bool hg_() + { + DataType hl_ = AbnormalPresentation?.Effective; + object hm_ = FHIRHelpers_4_4_000.Instance.ToValue(context, hl_); + bool hn_ = hm_ is CqlInterval; + + return hn_; + }; + bool hh_() + { + DataType ho_ = AbnormalPresentation?.Effective; + object hp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ho_); + bool hq_ = hp_ is CqlDateTime; + + return hq_; + }; + if (hf_()) + { + DataType hr_ = AbnormalPresentation?.Effective; + object hs_ = FHIRHelpers_4_4_000.Instance.ToValue(context, hr_); + + return (hs_ as CqlDateTime) as object; + } + else if (hg_()) + { + DataType ht_ = AbnormalPresentation?.Effective; + object hu_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ht_); + + return (hu_ as CqlInterval) as object; + } + else if (hh_()) + { + DataType hv_ = AbnormalPresentation?.Effective; + object hw_ = FHIRHelpers_4_4_000.Instance.ToValue(context, hv_); + + return (hw_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime gv_ = QICoreCommon_2_1_000.Instance.earliest(context, gu_()); + CqlDateTime gw_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, ThirtysevenWeeksPlusEncounter); + bool? gx_ = context.Operators.SameOrBefore(gv_, gw_, default); + Code gy_ = AbnormalPresentation?.StatusElement; + ObservationStatus? gz_ = gy_?.Value; + Code ha_ = context.Operators.Convert>(gz_); + string hb_ = context.Operators.Convert(ha_); + string[] hc_ = [ + "final", + "amended", + "corrected", + ]; + bool? hd_ = context.Operators.In(hb_, hc_ as IEnumerable); + bool? he_ = context.Operators.And(gx_, hd_); + + return he_; + }; + IEnumerable go_ = context.Operators.Where(gm_, gn_); + object gp_(Observation @this) + { + object hx_() + { + bool hz_() + { + DataType ic_ = @this?.Effective; + object id_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ic_); + bool ie_ = id_ is CqlDateTime; + + return ie_; + }; + bool ia_() + { + DataType if_ = @this?.Effective; + object ig_ = FHIRHelpers_4_4_000.Instance.ToValue(context, if_); + bool ih_ = ig_ is CqlInterval; + + return ih_; + }; + bool ib_() + { + DataType ii_ = @this?.Effective; + object ij_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ii_); + bool ik_ = ij_ is CqlDateTime; + + return ik_; + }; + if (hz_()) + { + DataType il_ = @this?.Effective; + object im_ = FHIRHelpers_4_4_000.Instance.ToValue(context, il_); + + return (im_ as CqlDateTime) as object; + } + else if (ia_()) + { + DataType in_ = @this?.Effective; + object io_ = FHIRHelpers_4_4_000.Instance.ToValue(context, in_); + + return (io_ as CqlInterval) as object; + } + else if (ib_()) + { + DataType ip_ = @this?.Effective; + object iq_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ip_); + + return (iq_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime hy_ = QICoreCommon_2_1_000.Instance.earliest(context, hx_()); + + return hy_; + }; + IEnumerable gq_ = context.Operators.SortBy(go_, gp_, System.ComponentModel.ListSortDirection.Ascending); + Observation gr_ = context.Operators.Last(gq_); + DataType gs_ = gr_?.Effective; + object gt_ = FHIRHelpers_4_4_000.Instance.ToValue(context, gs_); + + return (gt_ as CqlDateTime) as object; + } + else if (o_()) + { + CqlValueSet ir_ = this.Abnormal_Presentation(context); + IEnumerable is_ = context.Operators.Retrieve(new RetrieveParameters(default, ir_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? it_(Observation AbnormalPresentation) + { + object ja_() + { + bool jl_() + { + DataType jo_ = AbnormalPresentation?.Effective; + object jp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, jo_); + bool jq_ = jp_ is CqlDateTime; + + return jq_; + }; + bool jm_() + { + DataType jr_ = AbnormalPresentation?.Effective; + object js_ = FHIRHelpers_4_4_000.Instance.ToValue(context, jr_); + bool jt_ = js_ is CqlInterval; + + return jt_; + }; + bool jn_() + { + DataType ju_ = AbnormalPresentation?.Effective; + object jv_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ju_); + bool jw_ = jv_ is CqlDateTime; + + return jw_; + }; + if (jl_()) + { + DataType jx_ = AbnormalPresentation?.Effective; + object jy_ = FHIRHelpers_4_4_000.Instance.ToValue(context, jx_); + + return (jy_ as CqlDateTime) as object; + } + else if (jm_()) + { + DataType jz_ = AbnormalPresentation?.Effective; + object ka_ = FHIRHelpers_4_4_000.Instance.ToValue(context, jz_); + + return (ka_ as CqlInterval) as object; + } + else if (jn_()) + { + DataType kb_ = AbnormalPresentation?.Effective; + object kc_ = FHIRHelpers_4_4_000.Instance.ToValue(context, kb_); + + return (kc_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime jb_ = QICoreCommon_2_1_000.Instance.earliest(context, ja_()); + CqlDateTime jc_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, ThirtysevenWeeksPlusEncounter); + bool? jd_ = context.Operators.SameOrBefore(jb_, jc_, default); + Code je_ = AbnormalPresentation?.StatusElement; + ObservationStatus? jf_ = je_?.Value; + Code jg_ = context.Operators.Convert>(jf_); + string jh_ = context.Operators.Convert(jg_); + string[] ji_ = [ + "final", + "amended", + "corrected", + ]; + bool? jj_ = context.Operators.In(jh_, ji_ as IEnumerable); + bool? jk_ = context.Operators.And(jd_, jj_); + + return jk_; + }; + IEnumerable iu_ = context.Operators.Where(is_, it_); + object iv_(Observation @this) + { + object kd_() + { + bool kf_() + { + DataType ki_ = @this?.Effective; + object kj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ki_); + bool kk_ = kj_ is CqlDateTime; + + return kk_; + }; + bool kg_() + { + DataType kl_ = @this?.Effective; + object km_ = FHIRHelpers_4_4_000.Instance.ToValue(context, kl_); + bool kn_ = km_ is CqlInterval; + + return kn_; + }; + bool kh_() + { + DataType ko_ = @this?.Effective; + object kp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ko_); + bool kq_ = kp_ is CqlDateTime; + + return kq_; + }; + if (kf_()) + { + DataType kr_ = @this?.Effective; + object ks_ = FHIRHelpers_4_4_000.Instance.ToValue(context, kr_); + + return (ks_ as CqlDateTime) as object; + } + else if (kg_()) + { + DataType kt_ = @this?.Effective; + object ku_ = FHIRHelpers_4_4_000.Instance.ToValue(context, kt_); + + return (ku_ as CqlInterval) as object; + } + else if (kh_()) + { + DataType kv_ = @this?.Effective; + object kw_ = FHIRHelpers_4_4_000.Instance.ToValue(context, kv_); + + return (kw_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime ke_ = QICoreCommon_2_1_000.Instance.earliest(context, kd_()); + + return ke_; + }; + IEnumerable iw_ = context.Operators.SortBy(iu_, iv_, System.ComponentModel.ListSortDirection.Ascending); + Observation ix_ = context.Operators.Last(iw_); + DataType iy_ = ix_?.Effective; + object iz_ = FHIRHelpers_4_4_000.Instance.ToValue(context, iy_); + + return (iz_ as CqlInterval) as object; + } + else if (p_()) + { + CqlValueSet kx_ = this.Abnormal_Presentation(context); + IEnumerable ky_ = context.Operators.Retrieve(new RetrieveParameters(default, kx_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + bool? kz_(Observation AbnormalPresentation) + { + object lg_() + { + bool lr_() + { + DataType lu_ = AbnormalPresentation?.Effective; + object lv_ = FHIRHelpers_4_4_000.Instance.ToValue(context, lu_); + bool lw_ = lv_ is CqlDateTime; + + return lw_; + }; + bool ls_() + { + DataType lx_ = AbnormalPresentation?.Effective; + object ly_ = FHIRHelpers_4_4_000.Instance.ToValue(context, lx_); + bool lz_ = ly_ is CqlInterval; + + return lz_; + }; + bool lt_() + { + DataType ma_ = AbnormalPresentation?.Effective; + object mb_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ma_); + bool mc_ = mb_ is CqlDateTime; + + return mc_; + }; + if (lr_()) + { + DataType md_ = AbnormalPresentation?.Effective; + object me_ = FHIRHelpers_4_4_000.Instance.ToValue(context, md_); + + return (me_ as CqlDateTime) as object; + } + else if (ls_()) + { + DataType mf_ = AbnormalPresentation?.Effective; + object mg_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mf_); + + return (mg_ as CqlInterval) as object; + } + else if (lt_()) + { + DataType mh_ = AbnormalPresentation?.Effective; + object mi_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mh_); + + return (mi_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime lh_ = QICoreCommon_2_1_000.Instance.earliest(context, lg_()); + CqlDateTime li_ = PCMaternal_5_19_000.Instance.lastTimeOfDelivery(context, ThirtysevenWeeksPlusEncounter); + bool? lj_ = context.Operators.SameOrBefore(lh_, li_, default); + Code lk_ = AbnormalPresentation?.StatusElement; + ObservationStatus? ll_ = lk_?.Value; + Code lm_ = context.Operators.Convert>(ll_); + string ln_ = context.Operators.Convert(lm_); + string[] lo_ = [ + "final", + "amended", + "corrected", + ]; + bool? lp_ = context.Operators.In(ln_, lo_ as IEnumerable); + bool? lq_ = context.Operators.And(lj_, lp_); + + return lq_; + }; + IEnumerable la_ = context.Operators.Where(ky_, kz_); + object lb_(Observation @this) + { + object mj_() + { + bool ml_() + { + DataType mo_ = @this?.Effective; + object mp_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mo_); + bool mq_ = mp_ is CqlDateTime; + + return mq_; + }; + bool mm_() + { + DataType mr_ = @this?.Effective; + object ms_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mr_); + bool mt_ = ms_ is CqlInterval; + + return mt_; + }; + bool mn_() + { + DataType mu_ = @this?.Effective; + object mv_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mu_); + bool mw_ = mv_ is CqlDateTime; + + return mw_; + }; + if (ml_()) + { + DataType mx_ = @this?.Effective; + object my_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mx_); + + return (my_ as CqlDateTime) as object; + } + else if (mm_()) + { + DataType mz_ = @this?.Effective; + object na_ = FHIRHelpers_4_4_000.Instance.ToValue(context, mz_); + + return (na_ as CqlInterval) as object; + } + else if (mn_()) + { + DataType nb_ = @this?.Effective; + object nc_ = FHIRHelpers_4_4_000.Instance.ToValue(context, nb_); + + return (nc_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime mk_ = QICoreCommon_2_1_000.Instance.earliest(context, mj_()); + + return mk_; + }; + IEnumerable lc_ = context.Operators.SortBy(la_, lb_, System.ComponentModel.ListSortDirection.Ascending); + Observation ld_ = context.Operators.Last(lc_); + DataType le_ = ld_?.Effective; + object lf_ = FHIRHelpers_4_4_000.Instance.ToValue(context, le_); + + return (lf_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime e_ = QICoreCommon_2_1_000.Instance.earliest(context, d_()); + Period f_ = ThirtysevenWeeksPlusEncounter?.Period; + CqlInterval g_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, f_); + bool? h_ = context.Operators.In(e_, g_, default); + IEnumerable i_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, ThirtysevenWeeksPlusEncounter); + bool? j_(Condition EncounterDiagnosis) + { + CodeableConcept nd_ = EncounterDiagnosis?.Code; + CqlConcept ne_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, nd_); + CqlValueSet nf_ = this.Abnormal_Presentation(context); + bool? ng_ = context.Operators.ConceptInValueSet(ne_, nf_); + + return ng_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + bool? l_ = context.Operators.Exists(k_); + bool? m_ = context.Operators.Or(h_, l_); + + return m_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Encounter with Genital Herpes, Placenta Previa, Vasa Previa or Placenta Accreta Spectrum")] + public IEnumerable Encounter_with_Genital_Herpes__Placenta_Previa__Vasa_Previa_or_Placenta_Accreta_Spectrum(CqlContext context) + { + IEnumerable a_ = this.Singleton_Delivery_Encounters_at_37_Plus_Weeks_Gravida_1_Parity_0__No_Previous_Births(context); + bool? b_(Encounter ThirtysevenWeeksPlusEncounter) + { + IEnumerable d_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, ThirtysevenWeeksPlusEncounter); + bool? e_(Condition EncounterDiagnosis) + { + CodeableConcept h_ = EncounterDiagnosis?.Code; + CqlConcept i_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, h_); + CqlValueSet j_ = this.Placenta_Accreta_Spectrum_Previa_or_Vasa_Previa(context); + bool? k_ = context.Operators.ConceptInValueSet(i_, j_); + CqlConcept m_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, h_); + CqlValueSet n_ = this.Genital_Herpes(context); + bool? o_ = context.Operators.ConceptInValueSet(m_, n_); + bool? p_ = context.Operators.Or(k_, o_); + + return p_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Delivery Encounter with Abnormal Presentation, Genital Herpes, Placenta Previa, Vasa Previa or Placenta Accreta Spectrum")] + public IEnumerable Delivery_Encounter_with_Abnormal_Presentation__Genital_Herpes__Placenta_Previa__Vasa_Previa_or_Placenta_Accreta_Spectrum(CqlContext context) + { + IEnumerable a_ = this.Encounter_with_Abnormal_Presentation(context); + IEnumerable b_ = this.Encounter_with_Genital_Herpes__Placenta_Previa__Vasa_Previa_or_Placenta_Accreta_Spectrum(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Singleton_Delivery_Encounters_at_37_Plus_Weeks_Gravida_1_Parity_0__No_Previous_Births(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public IEnumerable Denominator_Exclusions(CqlContext context) + { + IEnumerable a_ = this.Delivery_Encounter_with_Abnormal_Presentation__Genital_Herpes__Placenta_Previa__Vasa_Previa_or_Placenta_Accreta_Spectrum(context); + + return a_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = PCMaternal_5_19_000.Instance.Delivery_Encounter_with_Age_Range(context); + + return a_; + } + + + [CqlDeclaration("Delivery Encounter with Cesarean Birth")] + public IEnumerable Delivery_Encounter_with_Cesarean_Birth(CqlContext context) + { + IEnumerable a_ = this.Singleton_Delivery_Encounters_at_37_Plus_Weeks_Gravida_1_Parity_0__No_Previous_Births(context); + IEnumerable b_(Encounter ThirtysevenWeeksPlusEncounter) + { + CqlValueSet d_ = this.Cesarean_Birth(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? f_(Procedure CSection) + { + CqlInterval j_ = PCMaternal_5_19_000.Instance.hospitalizationWithEDOBTriageObservation(context, ThirtysevenWeeksPlusEncounter); + DataType k_ = CSection?.Performed; + object l_ = FHIRHelpers_4_4_000.Instance.ToValue(context, k_); + CqlInterval m_ = QICoreCommon_2_1_000.Instance.toInterval(context, l_); + bool? n_ = context.Operators.IntervalIncludesInterval(j_, m_, default); + Code o_ = CSection?.StatusElement; + EventStatus? p_ = o_?.Value; + string q_ = context.Operators.Convert(p_); + bool? r_ = context.Operators.Equal(q_, "completed"); + bool? s_ = context.Operators.And(n_, r_); + + return s_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + Encounter h_(Procedure CSection) => + ThirtysevenWeeksPlusEncounter; + IEnumerable i_ = context.Operators.Select(g_, h_); + + return i_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Delivery_Encounter_with_Cesarean_Birth(context); + + return a_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("SDE Variable Calculated Gestational Age")] + public IEnumerable<(CqlTupleMetadata, string EncounterID, int? CalculatedCGA)?> SDE_Variable_Calculated_Gestational_Age(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, string EncounterID, int? CalculatedCGA)?> a_ = PCMaternal_5_19_000.Instance.Variable_Calculated_Gestational_Age(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR-0.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR-0.1.000.g.cs new file mode 100644 index 000000000..fc9731b82 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR-0.1.000.g.cs @@ -0,0 +1,354 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR", "0.1.000")] +public partial class ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR_0_1_000 : ILibrary, ISingleton +{ + private ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR_0_1_000() {} + + public static ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR_0_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR"; + public string Version => "0.1.000"; + public ILibrary[] Dependencies => [SupplementalDataElements_3_5_000.Instance, QICoreCommon_2_1_000.Instance, FHIRHelpers_4_4_000.Instance, CQMCommon_2_2_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Group Psychotherapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1187")] + public CqlValueSet Group_Psychotherapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1187", default); + + + [CqlDeclaration("Major Depressive Disorder Active")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1491")] + public CqlValueSet Major_Depressive_Disorder_Active(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1491", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Outpatient Consultation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008")] + public CqlValueSet Outpatient_Consultation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1008", default); + + + [CqlDeclaration("Psych Visit Diagnostic Evaluation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492")] + public CqlValueSet Psych_Visit_Diagnostic_Evaluation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1492", default); + + + [CqlDeclaration("Psych Visit for Family Psychotherapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1018")] + public CqlValueSet Psych_Visit_for_Family_Psychotherapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1018", default); + + + [CqlDeclaration("Psych Visit Psychotherapy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496")] + public CqlValueSet Psych_Visit_Psychotherapy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1496", default); + + + [CqlDeclaration("Psychoanalysis")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1141")] + public CqlValueSet Psychoanalysis(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1141", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Birth date")] + public CqlCode Birth_date(CqlContext context) => + new CqlCode("21112-8", "http://loinc.org", default, default); + + + [CqlDeclaration("Suicide risk assessment (procedure)")] + public CqlCode Suicide_risk_assessment__procedure_(CqlContext context) => + new CqlCode("225337009", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("AMB")] + public CqlCode AMB(CqlContext context) => + new CqlCode("AMB", "http://terminology.hl7.org/CodeSystem/v3-ActCode", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("21112-8", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("225337009", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("ActCode")] + public CqlCode[] ActCode(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("AMB", "http://terminology.hl7.org/CodeSystem/v3-ActCode", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("ICD10CM")] + public CqlCode[] ICD10CM(CqlContext context) + { + CqlCode[] a_ = [] +; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ChildandAdolescentMajorDepressiveDisorderMDDSuicideRiskAssessmentFHIR-0.1.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Major Depressive Disorder Encounter")] + public IEnumerable Major_Depressive_Disorder_Encounter(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Outpatient_Consultation(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Psych_Visit_Diagnostic_Evaluation(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Psych_Visit_for_Family_Psychotherapy(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Psych_Visit_Psychotherapy(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Psychoanalysis(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Group_Psychotherapy(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet t_ = this.Telephone_Visits(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = context.Operators.Union(q_, v_); + bool? x_(Encounter ValidEncounter) + { + Code z_ = ValidEncounter?.StatusElement; + Encounter.EncounterStatus? aa_ = z_?.Value; + Code ab_ = context.Operators.Convert>(aa_); + bool? ac_ = context.Operators.Equal(ab_, "finished"); + List ad_ = ValidEncounter?.ReasonCode; + CqlConcept ae_(CodeableConcept @this) + { + CqlConcept at_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return at_; + }; + IEnumerable af_ = context.Operators.Select((IEnumerable)ad_, ae_); + CqlValueSet ag_ = this.Major_Depressive_Disorder_Active(context); + bool? ah_ = context.Operators.ConceptsInValueSet(af_, ag_); + IEnumerable ai_ = CQMCommon_2_2_000.Instance.encounterDiagnosis(context, ValidEncounter); + bool? aj_(Condition EncounterDiagnosis) + { + CodeableConcept au_ = EncounterDiagnosis?.Code; + CqlConcept av_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, au_); + CqlValueSet aw_ = this.Major_Depressive_Disorder_Active(context); + bool? ax_ = context.Operators.ConceptInValueSet(av_, aw_); + + return ax_; + }; + IEnumerable ak_ = context.Operators.Where(ai_, aj_); + bool? al_ = context.Operators.Exists(ak_); + bool? am_ = context.Operators.Or(ah_, al_); + bool? an_ = context.Operators.And(ac_, am_); + CqlInterval ao_ = this.Measurement_Period(context); + Period ap_ = ValidEncounter?.Period; + CqlInterval aq_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ap_); + bool? ar_ = context.Operators.IntervalIncludesInterval(ao_, aq_, "day"); + bool? as_ = context.Operators.And(an_, ar_); + + return as_; + }; + IEnumerable y_ = context.Operators.Where(w_, x_); + + return y_; + } + + + [CqlDeclaration("Initial Population")] + public IEnumerable Initial_Population(CqlContext context) + { + IEnumerable a_ = this.Major_Depressive_Disorder_Encounter(context); + bool? b_(Encounter MDDEncounter) + { + Patient d_ = this.Patient(context); + Date e_ = d_?.BirthDateElement; + string f_ = e_?.Value; + CqlDate g_ = context.Operators.ConvertStringToDate(f_); + CqlInterval h_ = this.Measurement_Period(context); + CqlDateTime i_ = context.Operators.Start(h_); + CqlDate j_ = context.Operators.DateFrom(i_); + int? k_ = context.Operators.CalculateAgeAt(g_, j_, "year"); + bool? l_ = context.Operators.GreaterOrEqual(k_, 6); + Date n_ = d_?.BirthDateElement; + string o_ = n_?.Value; + CqlDate p_ = context.Operators.ConvertStringToDate(o_); + CqlDateTime r_ = context.Operators.Start(h_); + CqlDate s_ = context.Operators.DateFrom(r_); + int? t_ = context.Operators.CalculateAgeAt(p_, s_, "year"); + bool? u_ = context.Operators.LessOrEqual(t_, 16); + bool? v_ = context.Operators.And(l_, u_); + + return v_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + + return c_; + } + + + [CqlDeclaration("Denominator")] + public IEnumerable Denominator(CqlContext context) + { + IEnumerable a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Numerator")] + public IEnumerable Numerator(CqlContext context) + { + IEnumerable a_ = this.Major_Depressive_Disorder_Encounter(context); + IEnumerable b_(Encounter MDDEncounter) + { + CqlCode d_ = this.Suicide_risk_assessment__procedure_(context); + IEnumerable e_ = context.Operators.ToList(d_); + IEnumerable f_ = context.Operators.Retrieve(new RetrieveParameters(default, default, e_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + bool? g_(Procedure SuicideRiskAssessment) + { + Code k_ = SuicideRiskAssessment?.StatusElement; + EventStatus? l_ = k_?.Value; + string m_ = context.Operators.Convert(l_); + bool? n_ = context.Operators.Equal(m_, "completed"); + Period o_ = MDDEncounter?.Period; + CqlInterval p_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, o_); + DataType q_ = SuicideRiskAssessment?.Performed; + object r_ = FHIRHelpers_4_4_000.Instance.ToValue(context, q_); + CqlInterval s_ = QICoreCommon_2_1_000.Instance.toInterval(context, r_); + bool? t_ = context.Operators.IntervalIncludesInterval(p_, s_, default); + bool? u_ = context.Operators.And(n_, t_); + + return u_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + Encounter i_(Procedure SuicideRiskAssessment) => + MDDEncounter; + IEnumerable j_ = context.Operators.Select(h_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.SelectMany(a_, b_); + + return c_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildhoodImmunizationStatusFHIR-0.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildhoodImmunizationStatusFHIR-0.1.000.g.cs new file mode 100644 index 000000000..a3c69d9bb --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildhoodImmunizationStatusFHIR-0.1.000.g.cs @@ -0,0 +1,2489 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ChildhoodImmunizationStatusFHIR", "0.1.000")] +public partial class ChildhoodImmunizationStatusFHIR_0_1_000 : ILibrary, ISingleton +{ + private ChildhoodImmunizationStatusFHIR_0_1_000() {} + + public static ChildhoodImmunizationStatusFHIR_0_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ChildhoodImmunizationStatusFHIR"; + public string Version => "0.1.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, Status_1_8_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Anaphylactic Reaction to DTaP Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1031")] + public CqlValueSet Anaphylactic_Reaction_to_DTaP_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1031", default); + + + [CqlDeclaration("Disorders of the Immune System")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1001")] + public CqlValueSet Disorders_of_the_Immune_System(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1001", default); + + + [CqlDeclaration("DTaP Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1214")] + public CqlValueSet DTaP_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1214", default); + + + [CqlDeclaration("DTaP Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1022")] + public CqlValueSet DTaP_Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1022", default); + + + [CqlDeclaration("Encephalitis Due to Diphtheria, Tetanus or Pertussis Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1164")] + public CqlValueSet Encephalitis_Due_to_Diphtheria__Tetanus_or_Pertussis_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.1164", default); + + + [CqlDeclaration("Haemophilus Influenzae Type B (Hib) Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1043")] + public CqlValueSet Haemophilus_Influenzae_Type_B__Hib__Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1043", default); + + + [CqlDeclaration("Hepatitis A")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1024")] + public CqlValueSet Hepatitis_A(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1024", default); + + + [CqlDeclaration("Hepatitis A Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1215")] + public CqlValueSet Hepatitis_A_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1215", default); + + + [CqlDeclaration("Hepatitis A Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1041")] + public CqlValueSet Hepatitis_A_Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1041", default); + + + [CqlDeclaration("Hepatitis B")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1025")] + public CqlValueSet Hepatitis_B(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1025", default); + + + [CqlDeclaration("Hepatitis B Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1216")] + public CqlValueSet Hepatitis_B_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1216", default); + + + [CqlDeclaration("Hepatitis B Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1042")] + public CqlValueSet Hepatitis_B_Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1042", default); + + + [CqlDeclaration("Hib Vaccine (3 dose schedule)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1083")] + public CqlValueSet Hib_Vaccine__3_dose_schedule_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1083", default); + + + [CqlDeclaration("Hib Vaccine (3 dose schedule) Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1084")] + public CqlValueSet Hib_Vaccine__3_dose_schedule__Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1084", default); + + + [CqlDeclaration("Hib Vaccine (4 dose schedule)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1085")] + public CqlValueSet Hib_Vaccine__4_dose_schedule_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1085", default); + + + [CqlDeclaration("Hib Vaccine (4 dose schedule) Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1086")] + public CqlValueSet Hib_Vaccine__4_dose_schedule__Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1086", default); + + + [CqlDeclaration("HIV")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1003")] + public CqlValueSet HIV(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1003", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Hospice care ambulatory")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15")] + public CqlValueSet Hospice_care_ambulatory(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1108.15", default); + + + [CqlDeclaration("Inactivated Polio Vaccine (IPV)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1219")] + public CqlValueSet Inactivated_Polio_Vaccine__IPV_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1219", default); + + + [CqlDeclaration("Inactivated Polio Vaccine (IPV) Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1045")] + public CqlValueSet Inactivated_Polio_Vaccine__IPV__Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1045", default); + + + [CqlDeclaration("Child Influenza Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1218")] + public CqlValueSet Child_Influenza_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1218", default); + + + [CqlDeclaration("Child Influenza Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1044")] + public CqlValueSet Child_Influenza_Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1044", default); + + + [CqlDeclaration("Influenza Virus LAIV Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1087")] + public CqlValueSet Influenza_Virus_LAIV_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1087", default); + + + [CqlDeclaration("Influenza Virus LAIV Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1088")] + public CqlValueSet Influenza_Virus_LAIV_Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1088", default); + + + [CqlDeclaration("Intussusception")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1056")] + public CqlValueSet Intussusception(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.199.12.1056", default); + + + [CqlDeclaration("Malignant Neoplasm of Lymphatic and Hematopoietic Tissue")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1009")] + public CqlValueSet Malignant_Neoplasm_of_Lymphatic_and_Hematopoietic_Tissue(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1009", default); + + + [CqlDeclaration("Measles")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1053")] + public CqlValueSet Measles(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1053", default); + + + [CqlDeclaration("Measles, Mumps and Rubella (MMR) Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1224")] + public CqlValueSet Measles__Mumps_and_Rubella__MMR__Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1224", default); + + + [CqlDeclaration("Measles, Mumps and Rubella (MMR) Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1031")] + public CqlValueSet Measles__Mumps_and_Rubella__MMR__Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1031", default); + + + [CqlDeclaration("Mumps")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1032")] + public CqlValueSet Mumps(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1032", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Pneumococcal Conjugate Vaccine")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1221")] + public CqlValueSet Pneumococcal_Conjugate_Vaccine(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1221", default); + + + [CqlDeclaration("Pneumococcal Conjugate Vaccine Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1046")] + public CqlValueSet Pneumococcal_Conjugate_Vaccine_Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1046", default); + + + [CqlDeclaration("Preventive Care Services, Initial Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022")] + public CqlValueSet Preventive_Care_Services__Initial_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022", default); + + + [CqlDeclaration("Preventive Care, Established Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024")] + public CqlValueSet Preventive_Care__Established_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024", default); + + + [CqlDeclaration("Rotavirus Vaccine (2 dose schedule) Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1048")] + public CqlValueSet Rotavirus_Vaccine__2_dose_schedule__Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1048", default); + + + [CqlDeclaration("Rotavirus Vaccine (3 dose schedule)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1223")] + public CqlValueSet Rotavirus_Vaccine__3_dose_schedule_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1223", default); + + + [CqlDeclaration("Rotavirus Vaccine (3 dose schedule) Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1047")] + public CqlValueSet Rotavirus_Vaccine__3_dose_schedule__Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1047", default); + + + [CqlDeclaration("Rubella")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1037")] + public CqlValueSet Rubella(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1037", default); + + + [CqlDeclaration("Severe Combined Immunodeficiency")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1007")] + public CqlValueSet Severe_Combined_Immunodeficiency(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1007", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("Varicella Zoster")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1039")] + public CqlValueSet Varicella_Zoster(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1039", default); + + + [CqlDeclaration("Varicella Zoster Vaccine (VZV)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1170")] + public CqlValueSet Varicella_Zoster_Vaccine__VZV_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1170", default); + + + [CqlDeclaration("Varicella Zoster Vaccine (VZV) Administered")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1040")] + public CqlValueSet Varicella_Zoster_Vaccine__VZV__Administered(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1040", default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing only Haemophilus influenzae type b antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_only_Haemophilus_influenzae_type_b_antigen__disorder_(CqlContext context) => + new CqlCode("433621000124101", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing Hepatitis B virus antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_Hepatitis_B_virus_antigen__disorder_(CqlContext context) => + new CqlCode("428321000124101", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Anaphylaxis due to rotavirus vaccine (disorder)")] + public CqlCode Anaphylaxis_due_to_rotavirus_vaccine__disorder_(CqlContext context) => + new CqlCode("428331000124103", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Office or other outpatient visit for the evaluation and management of an established patient that may not require the presence of a physician or other qualified health care professional")] + public CqlCode Office_or_other_outpatient_visit_for_the_evaluation_and_management_of_an_established_patient_that_may_not_require_the_presence_of_a_physician_or_other_qualified_health_care_professional(CqlContext context) => + new CqlCode("99211", "http://www.ama-assn.org/go/cpt", default, default); + + + [CqlDeclaration("rotavirus, live, monovalent vaccine")] + public CqlCode rotavirus__live__monovalent_vaccine(CqlContext context) => + new CqlCode("119", "http://hl7.org/fhir/sid/cvx", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing Hepatitis A virus antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_Hepatitis_A_virus_antigen__disorder_(CqlContext context) => + new CqlCode("471311000124103", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Introduction of Serum, Toxoid and Vaccine into Muscle, Percutaneous Approach")] + public CqlCode Introduction_of_Serum__Toxoid_and_Vaccine_into_Muscle__Percutaneous_Approach(CqlContext context) => + new CqlCode("3E0234Z", "http://www.cms.gov/Medicare/Coding/ICD10", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing Influenza virus antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_Influenza_virus_antigen__disorder_(CqlContext context) => + new CqlCode("471361000124100", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing Measles morbillivirus and Mumps orthorubulavirus and Rubella virus antigens (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_Measles_morbillivirus_and_Mumps_orthorubulavirus_and_Rubella_virus_antigens__disorder_(CqlContext context) => + new CqlCode("471331000124109", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing Streptococcus pneumoniae antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_Streptococcus_pneumoniae_antigen__disorder_(CqlContext context) => + new CqlCode("471141000124102", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine product containing human poliovirus antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_product_containing_human_poliovirus_antigen__disorder_(CqlContext context) => + new CqlCode("471321000124106", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Anaphylaxis caused by vaccine containing Human alphaherpesvirus 3 antigen (disorder)")] + public CqlCode Anaphylaxis_caused_by_vaccine_containing_Human_alphaherpesvirus_3_antigen__disorder_(CqlContext context) => + new CqlCode("471341000124104", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("433621000124101", "http://snomed.info/sct", default, default), + new CqlCode("428321000124101", "http://snomed.info/sct", default, default), + new CqlCode("428331000124103", "http://snomed.info/sct", default, default), + new CqlCode("471311000124103", "http://snomed.info/sct", default, default), + new CqlCode("471361000124100", "http://snomed.info/sct", default, default), + new CqlCode("471331000124109", "http://snomed.info/sct", default, default), + new CqlCode("471141000124102", "http://snomed.info/sct", default, default), + new CqlCode("471321000124106", "http://snomed.info/sct", default, default), + new CqlCode("471341000124104", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("CPT")] + public CqlCode[] CPT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("99211", "http://www.ama-assn.org/go/cpt", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("CVX")] + public CqlCode[] CVX(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("119", "http://hl7.org/fhir/sid/cvx", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("ICD10")] + public CqlCode[] ICD10(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("3E0234Z", "http://www.cms.gov/Medicare/Coding/ICD10", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ChildhoodImmunizationStatusFHIR-0.1.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Home_Healthcare_Services(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Preventive_Care__Established_Office_Visit__0_to_17(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Preventive_Care_Services__Initial_Office_Visit__0_to_17(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + IEnumerable l_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? m_(Encounter E) + { + List y_ = E?.Type; + CqlConcept z_(CodeableConcept @this) + { + CqlConcept ae_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, @this); + + return ae_; + }; + IEnumerable aa_ = context.Operators.Select((IEnumerable)y_, z_); + bool? ab_(CqlConcept T) + { + CqlCode af_ = this.Office_or_other_outpatient_visit_for_the_evaluation_and_management_of_an_established_patient_that_may_not_require_the_presence_of_a_physician_or_other_qualified_health_care_professional(context); + CqlConcept ag_ = context.Operators.ConvertCodeToConcept(af_); + bool? ah_ = context.Operators.Equivalent(T, ag_); + + return ah_; + }; + IEnumerable ac_ = context.Operators.Where(aa_, ab_); + bool? ad_ = context.Operators.Exists(ac_); + + return ad_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + CqlValueSet o_ = this.Virtual_Encounter(context); + IEnumerable p_ = context.Operators.Retrieve(new RetrieveParameters(default, o_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable q_ = context.Operators.Union(n_, p_); + IEnumerable r_ = context.Operators.Union(k_, q_); + CqlValueSet s_ = this.Telephone_Visits(context); + IEnumerable t_ = context.Operators.Retrieve(new RetrieveParameters(default, s_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable u_ = context.Operators.Union(r_, t_); + IEnumerable v_ = Status_1_8_000.Instance.isEncounterPerformed(context, u_); + bool? w_(Encounter ValidEncounters) + { + CqlInterval ai_ = this.Measurement_Period(context); + Period aj_ = ValidEncounters?.Period; + CqlInterval ak_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, aj_); + CqlInterval al_ = QICoreCommon_2_1_000.Instance.toInterval(context, ak_ as object); + bool? am_ = context.Operators.IntervalIncludesInterval(ai_, al_, "day"); + + return am_; + }; + IEnumerable x_ = context.Operators.Where(v_, w_); + + return x_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + bool? i_ = context.Operators.Equal(h_, 2); + IEnumerable j_ = this.Qualifying_Encounters(context); + bool? k_ = context.Operators.Exists(j_); + bool? l_ = context.Operators.And(i_, k_); + + return l_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Date of Second Birthday")] + public CqlDate Date_of_Second_Birthday(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlQuantity e_ = context.Operators.Quantity(2m, "years"); + CqlDate f_ = context.Operators.Add(d_, e_); + + return f_; + } + + + [CqlDeclaration("First Two Years")] + public CqlInterval First_Two_Years(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlDateTime e_ = context.Operators.ConvertDateToDateTime(d_); + CqlDate f_ = context.Operators.DateFrom(e_); + CqlDate g_ = this.Date_of_Second_Birthday(context); + CqlInterval h_ = context.Operators.Interval(f_, g_, true, true); + + return h_; + } + + + [CqlDeclaration("Has Severe Combined Immunodeficiency")] + public bool? Has_Severe_Combined_Immunodeficiency(CqlContext context) + { + CqlValueSet a_ = this.Severe_Combined_Immunodeficiency(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition SevereImmuneDisorder) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, SevereImmuneDisorder); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Has Immunodeficiency")] + public bool? Has_Immunodeficiency(CqlContext context) + { + CqlValueSet a_ = this.Disorders_of_the_Immune_System(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition ImmuneDisorder) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ImmuneDisorder); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Has HIV")] + public bool? Has_HIV(CqlContext context) + { + CqlValueSet a_ = this.HIV(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition HIV) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, HIV); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Has Lymphoreticular Cancer, Multiple Myeloma or Leukemia")] + public bool? Has_Lymphoreticular_Cancer__Multiple_Myeloma_or_Leukemia(CqlContext context) + { + CqlValueSet a_ = this.Malignant_Neoplasm_of_Lymphatic_and_Hematopoietic_Tissue(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition LymphaticMalignantNeoplasm) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, LymphaticMalignantNeoplasm); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Has Intussusception")] + public bool? Has_Intussusception(CqlContext context) + { + CqlValueSet a_ = this.Intussusception(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition IntussusceptionDisorder) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, IntussusceptionDisorder); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + bool? b_ = this.Has_Severe_Combined_Immunodeficiency(context); + bool? c_ = context.Operators.Or(a_, b_); + bool? d_ = this.Has_Immunodeficiency(context); + bool? e_ = context.Operators.Or(c_, d_); + bool? f_ = this.Has_HIV(context); + bool? g_ = context.Operators.Or(e_, f_); + bool? h_ = this.Has_Lymphoreticular_Cancer__Multiple_Myeloma_or_Leukemia(context); + bool? i_ = context.Operators.Or(g_, h_); + bool? j_ = this.Has_Intussusception(context); + bool? k_ = context.Operators.Or(i_, j_); + + return k_; + } + + + [CqlDeclaration("Vaccine Administration Interval - 42 Days up to 2 Years Old")] + public CqlInterval Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlDateTime e_ = context.Operators.ConvertDateToDateTime(d_); + CqlDate f_ = context.Operators.DateFrom(e_); + CqlQuantity g_ = context.Operators.Quantity(42m, "days"); + CqlDate h_ = context.Operators.Add(f_, g_); + CqlDate i_ = this.Date_of_Second_Birthday(context); + CqlInterval j_ = context.Operators.Interval(h_, i_, true, true); + + return j_; + } + + + [CqlDeclaration("DTaP Immunizations or Procedures")] + public IEnumerable DTaP_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.DTaP_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization DTaPVaccination) + { + DataType r_ = DTaPVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization DTaPVaccination) + { + DataType x_ = DTaPVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.DTaP_Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure DTaPProcedure) + { + DataType ab_ = DTaPProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure DTaPProcedure) + { + DataType ah_ = DTaPProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Four DTaP Vaccinations")] + public IEnumerable Four_DTaP_Vaccinations(CqlContext context) + { + IEnumerable a_ = this.DTaP_Immunizations_or_Procedures(context); + IEnumerable> e_ = context.Operators.CrossJoin(a_, a_, a_, a_); + (CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)? f_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)? l_ = (CqlTupleMetadata_EMDhFLcFhWVERAVVNfLAZYXJi, _valueTuple.Item1, _valueTuple.Item2, _valueTuple.Item3, _valueTuple.Item4); + + return l_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)?> g_ = context.Operators.Select, (CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)?>(e_, f_); + bool? h_((CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)? tuple_emdhflcfhwveravvnflazyxji) + { + CqlDateTime m_ = context.Operators.ConvertDateToDateTime(tuple_emdhflcfhwveravvnflazyxji?.DTaPVaccination2 as CqlDate); + CqlDateTime n_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate o_ = context.Operators.DateFrom(n_); + CqlDateTime p_ = context.Operators.ConvertDateToDateTime(tuple_emdhflcfhwveravvnflazyxji?.DTaPVaccination1 as CqlDate); + CqlDateTime q_ = QICoreCommon_2_1_000.Instance.earliest(context, p_); + CqlDate r_ = context.Operators.DateFrom(q_); + CqlQuantity s_ = context.Operators.Quantity(1m, "day"); + CqlDate t_ = context.Operators.Add(r_, s_); + bool? u_ = context.Operators.SameOrAfter(o_, t_, "day"); + CqlDateTime v_ = context.Operators.ConvertDateToDateTime(tuple_emdhflcfhwveravvnflazyxji?.DTaPVaccination3 as CqlDate); + CqlDateTime w_ = QICoreCommon_2_1_000.Instance.earliest(context, v_); + CqlDate x_ = context.Operators.DateFrom(w_); + CqlDateTime y_ = context.Operators.ConvertDateToDateTime(x_); + CqlDateTime aa_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDateTime ac_ = context.Operators.Add(aa_, s_); + bool? ad_ = context.Operators.SameOrAfter(y_, ac_, "day"); + bool? ae_ = context.Operators.And(u_, ad_); + CqlDateTime af_ = context.Operators.ConvertDateToDateTime(tuple_emdhflcfhwveravvnflazyxji?.DTaPVaccination4 as CqlDate); + CqlDateTime ag_ = QICoreCommon_2_1_000.Instance.earliest(context, af_); + CqlDate ah_ = context.Operators.DateFrom(ag_); + CqlDateTime ai_ = context.Operators.ConvertDateToDateTime(ah_); + CqlDateTime ak_ = QICoreCommon_2_1_000.Instance.earliest(context, v_); + CqlDateTime am_ = context.Operators.Add(ak_, s_); + bool? an_ = context.Operators.SameOrAfter(ai_, am_, "day"); + bool? ao_ = context.Operators.And(ae_, an_); + + return ao_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)?> i_ = context.Operators.Where<(CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)?>(g_, h_); + CqlDate j_((CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)? tuple_emdhflcfhwveravvnflazyxji) => + tuple_emdhflcfhwveravvnflazyxji?.DTaPVaccination1; + IEnumerable k_ = context.Operators.Select<(CqlTupleMetadata, CqlDate DTaPVaccination1, CqlDate DTaPVaccination2, CqlDate DTaPVaccination3, CqlDate DTaPVaccination4)?, CqlDate>(i_, j_); + + return k_; + } + + + [CqlDeclaration("DTaP Numerator Inclusion Conditions")] + public IEnumerable DTaP_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlValueSet a_ = this.Anaphylactic_Reaction_to_DTaP_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet c_ = this.Encephalitis_Due_to_Diphtheria__Tetanus_or_Pertussis_Vaccine(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable e_ = context.Operators.Union(b_, d_); + bool? f_(Condition DTaPConditions) + { + CqlInterval h_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, DTaPConditions); + CqlDateTime i_ = context.Operators.Start(h_); + CqlDate j_ = context.Operators.DateFrom(i_); + CqlInterval k_ = this.First_Two_Years(context); + bool? l_ = context.Operators.In(j_, k_, "day"); + + return l_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + + return g_; + } + + + [CqlDeclaration("Polio Immunizations or Procedures")] + public IEnumerable Polio_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Inactivated_Polio_Vaccine__IPV_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization PolioVaccination) + { + DataType r_ = PolioVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization PolioVaccination) + { + DataType x_ = PolioVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlInterval z_ = QICoreCommon_2_1_000.Instance.toInterval(context, y_ as object); + CqlDateTime aa_ = QICoreCommon_2_1_000.Instance.Earliest(context, z_ as object); + CqlDate ab_ = context.Operators.DateFrom(aa_); + + return ab_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Inactivated_Polio_Vaccine__IPV__Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure PolioProcedure) + { + DataType ac_ = PolioProcedure?.Performed; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + CqlDateTime ae_ = QICoreCommon_2_1_000.Instance.earliest(context, ad_); + CqlDate af_ = context.Operators.DateFrom(ae_); + CqlInterval ag_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ah_ = context.Operators.In(af_, ag_, "day"); + + return ah_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure PolioProcedure) + { + DataType ai_ = PolioProcedure?.Performed; + object aj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ai_); + CqlDateTime ak_ = QICoreCommon_2_1_000.Instance.earliest(context, aj_); + CqlDate al_ = context.Operators.DateFrom(ak_); + + return al_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Three Polio Vaccinations")] + public IEnumerable Three_Polio_Vaccinations(CqlContext context) + { + IEnumerable a_ = this.Polio_Immunizations_or_Procedures(context); + IEnumerable> d_ = context.Operators.CrossJoin(a_, a_, a_); + (CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)? e_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)? l_ = (CqlTupleMetadata_CNGHaZROXaJTHPICcbIaJbRXV, _valueTuple.Item1, _valueTuple.Item2, _valueTuple.Item3); + + return l_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)?> f_ = context.Operators.Select, (CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)?>(d_, e_); + bool? g_((CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)? tuple_cnghazroxajthpiccbiajbrxv) + { + CqlDateTime m_ = context.Operators.ConvertDateToDateTime(tuple_cnghazroxajthpiccbiajbrxv?.PolioVaccination2 as CqlDate); + CqlDateTime n_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate o_ = context.Operators.DateFrom(n_); + CqlDateTime p_ = context.Operators.ConvertDateToDateTime(tuple_cnghazroxajthpiccbiajbrxv?.PolioVaccination1 as CqlDate); + CqlDateTime q_ = QICoreCommon_2_1_000.Instance.earliest(context, p_); + CqlDate r_ = context.Operators.DateFrom(q_); + CqlQuantity s_ = context.Operators.Quantity(1m, "day"); + CqlDate t_ = context.Operators.Add(r_, s_); + bool? u_ = context.Operators.SameOrAfter(o_, t_, default); + CqlDateTime v_ = context.Operators.ConvertDateToDateTime(tuple_cnghazroxajthpiccbiajbrxv?.PolioVaccination3 as CqlDate); + CqlDateTime w_ = QICoreCommon_2_1_000.Instance.earliest(context, v_); + CqlDate x_ = context.Operators.DateFrom(w_); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate aa_ = context.Operators.DateFrom(z_); + CqlDate ac_ = context.Operators.Add(aa_, s_); + bool? ad_ = context.Operators.SameOrAfter(x_, ac_, default); + bool? ae_ = context.Operators.And(u_, ad_); + + return ae_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)?> h_ = context.Operators.Where<(CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)?>(f_, g_); + CqlDate i_((CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)? tuple_cnghazroxajthpiccbiajbrxv) + { + CqlDateTime af_ = context.Operators.ConvertDateToDateTime(tuple_cnghazroxajthpiccbiajbrxv?.PolioVaccination1 as CqlDate); + CqlDateTime ag_ = QICoreCommon_2_1_000.Instance.earliest(context, af_); + CqlDate ah_ = context.Operators.DateFrom(ag_); + + return ah_; + }; + IEnumerable j_ = context.Operators.Select<(CqlTupleMetadata, CqlDate PolioVaccination1, CqlDate PolioVaccination2, CqlDate PolioVaccination3)?, CqlDate>(h_, i_); + IEnumerable k_ = context.Operators.Distinct(j_); + + return k_; + } + + + [CqlDeclaration("Polio Numerator Inclusion Conditions")] + public IEnumerable Polio_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_caused_by_vaccine_product_containing_human_poliovirus_antigen__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? d_(Condition PolioConditions) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, PolioConditions); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Date of First Birthday")] + public CqlDate Date_of_First_Birthday(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlDateTime e_ = context.Operators.ConvertDateToDateTime(d_); + CqlDate f_ = context.Operators.DateFrom(e_); + CqlQuantity g_ = context.Operators.Quantity(1m, "year"); + CqlDate h_ = context.Operators.Add(f_, g_); + + return h_; + } + + + [CqlDeclaration("Date of First Birthday to Date of Second Birthday")] + public CqlInterval Date_of_First_Birthday_to_Date_of_Second_Birthday(CqlContext context) + { + CqlDate a_ = this.Date_of_First_Birthday(context); + CqlDate b_ = this.Date_of_Second_Birthday(context); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + + return c_; + } + + + [CqlDeclaration("One MMR Vaccination")] + public IEnumerable One_MMR_Vaccination(CqlContext context) + { + CqlValueSet a_ = this.Measles__Mumps_and_Rubella__MMR__Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization MMRVaccination) + { + DataType r_ = MMRVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Date_of_First_Birthday_to_Date_of_Second_Birthday(context); + bool? w_ = context.Operators.In(u_, v_, default); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization MMRVaccination) + { + DataType x_ = MMRVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Measles__Mumps_and_Rubella__MMR__Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure MMRProcedure) + { + DataType ab_ = MMRProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Date_of_First_Birthday_to_Date_of_Second_Birthday(context); + bool? ag_ = context.Operators.In(ae_, af_, default); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure MMRProcedure) + { + DataType ah_ = MMRProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("MMR Numerator Inclusion Conditions")] + public IEnumerable MMR_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_caused_by_vaccine_product_containing_Measles_morbillivirus_and_Mumps_orthorubulavirus_and_Rubella_virus_antigens__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? d_(Condition MMRConditions) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, MMRConditions); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Measles Indicators")] + public IEnumerable Measles_Indicators(CqlContext context) + { + CqlValueSet a_ = this.Measles(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition MeaslesDiagnosis) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, MeaslesDiagnosis); + CqlDateTime f_ = context.Operators.Start(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + CqlInterval h_ = this.First_Two_Years(context); + bool? i_ = context.Operators.In(g_, h_, "day"); + + return i_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Mumps Indicators")] + public IEnumerable Mumps_Indicators(CqlContext context) + { + CqlValueSet a_ = this.Mumps(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition MumpsDiagnosis) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, MumpsDiagnosis); + CqlDateTime f_ = context.Operators.Start(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + CqlInterval h_ = this.First_Two_Years(context); + bool? i_ = context.Operators.In(g_, h_, "day"); + + return i_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Rubella Indicators")] + public IEnumerable Rubella_Indicators(CqlContext context) + { + CqlValueSet a_ = this.Rubella(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition RubellaDiagnosis) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, RubellaDiagnosis); + CqlDateTime f_ = context.Operators.Start(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + CqlInterval h_ = this.First_Two_Years(context); + bool? i_ = context.Operators.In(g_, h_, "day"); + + return i_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Hib 3 Dose Immunizations or Procedures")] + public IEnumerable Hib_3_Dose_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Hib_Vaccine__3_dose_schedule_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization ThreeDoseHibVaccine) + { + DataType r_ = ThreeDoseHibVaccine?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization ThreeDoseHibVaccine) + { + DataType x_ = ThreeDoseHibVaccine?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Hib_Vaccine__3_dose_schedule__Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure ThreeDoseHibProcedure) + { + DataType ab_ = ThreeDoseHibProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure ThreeDoseHibProcedure) + { + DataType ah_ = ThreeDoseHibProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Hib 4 Dose Immunizations or Procedures")] + public IEnumerable Hib_4_Dose_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Hib_Vaccine__4_dose_schedule_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization HibVaccine) + { + DataType r_ = HibVaccine?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization HibVaccine) + { + DataType x_ = HibVaccine?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Hib_Vaccine__4_dose_schedule__Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure HibProcedure) + { + DataType ab_ = HibProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure HibProcedure) + { + DataType ah_ = HibProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Hib 3 or 4 Dose Immunizations")] + public IEnumerable Hib_3_or_4_Dose_Immunizations(CqlContext context) + { + IEnumerable a_ = this.Hib_3_Dose_Immunizations_or_Procedures(context); + IEnumerable b_ = this.Hib_4_Dose_Immunizations_or_Procedures(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + + return c_; + } + + + [CqlDeclaration("Has Appropriate Number of Hib Immunizations")] + public bool? Has_Appropriate_Number_of_Hib_Immunizations(CqlContext context) + { + IEnumerable a_ = this.Hib_3_or_4_Dose_Immunizations(context); + bool? b_(CqlDate HibImmunization) + { + IEnumerable e_ = this.Hib_4_Dose_Immunizations_or_Procedures(context); + int? f_ = context.Operators.Count(e_); + bool? g_ = context.Operators.Greater(f_, 0); + IEnumerable h_ = this.Hib_3_or_4_Dose_Immunizations(context); + CqlDate i_(CqlDate HibVaccinations) + { + CqlDateTime ac_ = context.Operators.ConvertDateToDateTime(HibVaccinations as CqlDate); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + + return ae_; + }; + IEnumerable j_ = context.Operators.Select(h_, i_); + IEnumerable k_ = context.Operators.Distinct(j_); + IEnumerable l_ = context.Operators.Distinct(k_); + int? m_ = context.Operators.Count(l_); + bool? n_ = context.Operators.GreaterOrEqual(m_, 4); + bool? o_ = context.Operators.And(g_, n_); + int? q_ = context.Operators.Count(e_); + bool? r_ = context.Operators.Greater(q_, 0); + bool? s_ = context.Operators.IsFalse(r_); + CqlDate u_(CqlDate HibVaccinations) + { + CqlDateTime af_ = context.Operators.ConvertDateToDateTime(HibVaccinations as CqlDate); + CqlDateTime ag_ = QICoreCommon_2_1_000.Instance.earliest(context, af_); + CqlDate ah_ = context.Operators.DateFrom(ag_); + + return ah_; + }; + IEnumerable v_ = context.Operators.Select(h_, u_); + IEnumerable w_ = context.Operators.Distinct(v_); + IEnumerable x_ = context.Operators.Distinct(w_); + int? y_ = context.Operators.Count(x_); + bool? z_ = context.Operators.GreaterOrEqual(y_, 3); + bool? aa_ = context.Operators.And(s_, z_); + bool? ab_ = context.Operators.Or(o_, aa_); + + return ab_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + [CqlDeclaration("Hib Numerator Inclusion Conditions")] + public IEnumerable Hib_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_caused_by_vaccine_product_containing_only_Haemophilus_influenzae_type_b_antigen__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? d_(Condition HibReaction) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, HibReaction); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Hepatitis B Immunizations or Procedures")] + public IEnumerable Hepatitis_B_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Hepatitis_B_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization HepatitisBVaccination) + { + DataType r_ = HepatitisBVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.First_Two_Years(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization HepatitisBVaccination) + { + DataType x_ = HepatitisBVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Hepatitis_B_Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure HepatitisBProcedure) + { + DataType ab_ = HepatitisBProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.First_Two_Years(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure HepatitisBProcedure) + { + DataType ah_ = HepatitisBProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Three Hepatitis B Vaccinations")] + public IEnumerable Three_Hepatitis_B_Vaccinations(CqlContext context) + { + IEnumerable a_ = this.Hepatitis_B_Immunizations_or_Procedures(context); + IEnumerable> d_ = context.Operators.CrossJoin(a_, a_, a_); + (CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)? e_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)? l_ = (CqlTupleMetadata_EZTgahAUWGgSdGaDCgQNNIPGW, _valueTuple.Item1, _valueTuple.Item2, _valueTuple.Item3); + + return l_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)?> f_ = context.Operators.Select, (CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)?>(d_, e_); + bool? g_((CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)? tuple_eztgahauwggsdgadcgqnnipgw) + { + CqlDateTime m_ = context.Operators.ConvertDateToDateTime(tuple_eztgahauwggsdgadcgqnnipgw?.HepatitisBVaccination2 as CqlDate); + CqlDateTime n_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate o_ = context.Operators.DateFrom(n_); + CqlDateTime p_ = context.Operators.ConvertDateToDateTime(tuple_eztgahauwggsdgadcgqnnipgw?.HepatitisBVaccination1 as CqlDate); + CqlDateTime q_ = QICoreCommon_2_1_000.Instance.earliest(context, p_); + CqlDate r_ = context.Operators.DateFrom(q_); + CqlQuantity s_ = context.Operators.Quantity(1m, "day"); + CqlDate t_ = context.Operators.Add(r_, s_); + bool? u_ = context.Operators.SameOrAfter(o_, t_, default); + CqlDateTime v_ = context.Operators.ConvertDateToDateTime(tuple_eztgahauwggsdgadcgqnnipgw?.HepatitisBVaccination3 as CqlDate); + CqlDateTime w_ = QICoreCommon_2_1_000.Instance.earliest(context, v_); + CqlDate x_ = context.Operators.DateFrom(w_); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate aa_ = context.Operators.DateFrom(z_); + CqlDate ac_ = context.Operators.Add(aa_, s_); + bool? ad_ = context.Operators.SameOrAfter(x_, ac_, default); + bool? ae_ = context.Operators.And(u_, ad_); + + return ae_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)?> h_ = context.Operators.Where<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)?>(f_, g_); + CqlDate i_((CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)? tuple_eztgahauwggsdgadcgqnnipgw) + { + CqlDateTime af_ = context.Operators.ConvertDateToDateTime(tuple_eztgahauwggsdgadcgqnnipgw?.HepatitisBVaccination1 as CqlDate); + CqlDateTime ag_ = QICoreCommon_2_1_000.Instance.earliest(context, af_); + CqlDate ah_ = context.Operators.DateFrom(ag_); + + return ah_; + }; + IEnumerable j_ = context.Operators.Select<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate HepatitisBVaccination3)?, CqlDate>(h_, i_); + IEnumerable k_ = context.Operators.Distinct(j_); + + return k_; + } + + + [CqlDeclaration("NewBorn Vaccine Requirement")] + public IEnumerable NewBorn_Vaccine_Requirement(CqlContext context) + { + CqlCode a_ = this.Introduction_of_Serum__Toxoid_and_Vaccine_into_Muscle__Percutaneous_Approach(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable d_ = Status_1_8_000.Instance.isProcedurePerformed(context, c_); + bool? e_(Procedure NewBornVaccine) + { + DataType j_ = NewBornVaccine?.Performed; + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlDateTime l_ = QICoreCommon_2_1_000.Instance.earliest(context, k_); + CqlDate m_ = context.Operators.DateFrom(l_); + Patient n_ = this.Patient(context); + Date o_ = n_?.BirthDateElement; + string p_ = o_?.Value; + CqlDate q_ = context.Operators.ConvertStringToDate(p_); + CqlDateTime r_ = context.Operators.ConvertDateToDateTime(q_); + CqlDate s_ = context.Operators.DateFrom(r_); + Date u_ = n_?.BirthDateElement; + string v_ = u_?.Value; + CqlDate w_ = context.Operators.ConvertStringToDate(v_); + CqlDateTime x_ = context.Operators.ConvertDateToDateTime(w_); + CqlDate y_ = context.Operators.DateFrom(x_); + CqlQuantity z_ = context.Operators.Quantity(7m, "days"); + CqlDate aa_ = context.Operators.Add(y_, z_); + CqlInterval ab_ = context.Operators.Interval(s_, aa_, true, true); + bool? ac_ = context.Operators.In(m_, ab_, "day"); + + return ac_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + CqlDate g_(Procedure NewBornVaccine) + { + DataType ad_ = NewBornVaccine?.Performed; + object ae_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ad_); + CqlDateTime af_ = QICoreCommon_2_1_000.Instance.earliest(context, ae_); + CqlDate ag_ = context.Operators.DateFrom(af_); + + return ag_; + }; + IEnumerable h_ = context.Operators.Select(f_, g_); + IEnumerable i_ = context.Operators.Distinct(h_); + + return i_; + } + + + [CqlDeclaration("Meets HepB Vaccination Requirement")] + public IEnumerable Meets_HepB_Vaccination_Requirement(CqlContext context) + { + IEnumerable a_ = this.Hepatitis_B_Immunizations_or_Procedures(context); + IEnumerable c_ = this.NewBorn_Vaccine_Requirement(context); + IEnumerable> d_ = context.Operators.CrossJoin(a_, a_, c_); + (CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)? e_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)? l_ = (CqlTupleMetadata_HDfaMbZGBWDPFETGQNFbceEeg, _valueTuple.Item1, _valueTuple.Item2, _valueTuple.Item3); + + return l_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)?> f_ = context.Operators.Select, (CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)?>(d_, e_); + bool? g_((CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)? tuple_hdfambzgbwdpfetgqnfbceeeg) + { + CqlDateTime m_ = context.Operators.ConvertDateToDateTime(tuple_hdfambzgbwdpfetgqnfbceeeg?.HepatitisBVaccination2 as CqlDate); + CqlDateTime n_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate o_ = context.Operators.DateFrom(n_); + CqlDateTime p_ = context.Operators.ConvertDateToDateTime(tuple_hdfambzgbwdpfetgqnfbceeeg?.HepatitisBVaccination1 as CqlDate); + CqlDateTime q_ = QICoreCommon_2_1_000.Instance.earliest(context, p_); + CqlDate r_ = context.Operators.DateFrom(q_); + CqlQuantity s_ = context.Operators.Quantity(1m, "day"); + CqlDate t_ = context.Operators.Add(r_, s_); + bool? u_ = context.Operators.SameOrAfter(o_, t_, default); + CqlDateTime w_ = QICoreCommon_2_1_000.Instance.earliest(context, p_); + CqlDate x_ = context.Operators.DateFrom(w_); + CqlDateTime y_ = context.Operators.ConvertDateToDateTime(tuple_hdfambzgbwdpfetgqnfbceeeg?.NewBornVaccine3 as CqlDate); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_); + CqlDate aa_ = context.Operators.DateFrom(z_); + CqlDate ac_ = context.Operators.Add(aa_, s_); + bool? ad_ = context.Operators.SameOrAfter(x_, ac_, default); + bool? ae_ = context.Operators.And(u_, ad_); + CqlDateTime ag_ = QICoreCommon_2_1_000.Instance.earliest(context, m_); + CqlDate ah_ = context.Operators.DateFrom(ag_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, y_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + CqlDate am_ = context.Operators.Add(ak_, s_); + bool? an_ = context.Operators.SameOrAfter(ah_, am_, default); + bool? ao_ = context.Operators.And(ae_, an_); + + return ao_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)?> h_ = context.Operators.Where<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)?>(f_, g_); + CqlDate i_((CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)? tuple_hdfambzgbwdpfetgqnfbceeeg) + { + CqlDateTime ap_ = context.Operators.ConvertDateToDateTime(tuple_hdfambzgbwdpfetgqnfbceeeg?.HepatitisBVaccination1 as CqlDate); + CqlDateTime aq_ = QICoreCommon_2_1_000.Instance.earliest(context, ap_); + CqlDate ar_ = context.Operators.DateFrom(aq_); + + return ar_; + }; + IEnumerable j_ = context.Operators.Select<(CqlTupleMetadata, CqlDate HepatitisBVaccination1, CqlDate HepatitisBVaccination2, CqlDate NewBornVaccine3)?, CqlDate>(h_, i_); + IEnumerable k_ = context.Operators.Distinct(j_); + + return k_; + } + + + [CqlDeclaration("Hepatitis B Numerator Inclusion Conditions")] + public IEnumerable Hepatitis_B_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_caused_by_vaccine_product_containing_Hepatitis_B_virus_antigen__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet d_ = this.Hepatitis_B(context); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, d_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable f_ = context.Operators.Union(c_, e_); + bool? g_(Condition HepBConditions) + { + CqlInterval i_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, HepBConditions); + CqlDateTime j_ = context.Operators.Start(i_); + CqlDate k_ = context.Operators.DateFrom(j_); + CqlInterval l_ = this.First_Two_Years(context); + bool? m_ = context.Operators.In(k_, l_, "day"); + + return m_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + + return h_; + } + + + [CqlDeclaration("One Chicken Pox Vaccination")] + public IEnumerable One_Chicken_Pox_Vaccination(CqlContext context) + { + CqlValueSet a_ = this.Varicella_Zoster_Vaccine__VZV_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization ChickenPoxVaccination) + { + DataType r_ = ChickenPoxVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Date_of_First_Birthday_to_Date_of_Second_Birthday(context); + bool? w_ = context.Operators.In(u_, v_, default); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization ChickenPoxVaccination) + { + DataType x_ = ChickenPoxVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Varicella_Zoster_Vaccine__VZV__Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure ChickenPoxProcedure) + { + DataType ab_ = ChickenPoxProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Date_of_First_Birthday_to_Date_of_Second_Birthday(context); + bool? ag_ = context.Operators.In(ae_, af_, default); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure ChickenPoxProcedure) + { + DataType ah_ = ChickenPoxProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Varicella Zoster Numerator Inclusion Conditions")] + public IEnumerable Varicella_Zoster_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlValueSet a_ = this.Varicella_Zoster(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlCode c_ = this.Anaphylaxis_caused_by_vaccine_containing_Human_alphaherpesvirus_3_antigen__disorder_(context); + IEnumerable d_ = context.Operators.ToList(c_); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, default, d_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable f_ = context.Operators.Union(b_, e_); + bool? g_(Condition VaricellaZoster) + { + CqlInterval i_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, VaricellaZoster); + CqlDateTime j_ = context.Operators.Start(i_); + CqlDate k_ = context.Operators.DateFrom(j_); + CqlInterval l_ = this.First_Two_Years(context); + bool? m_ = context.Operators.In(k_, l_, "day"); + + return m_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + + return h_; + } + + + [CqlDeclaration("Pneumococcal Conjugate Immunizations or Procedures")] + public IEnumerable Pneumococcal_Conjugate_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Pneumococcal_Conjugate_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization PneumococcalVaccination) + { + DataType r_ = PneumococcalVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization PneumococcalVaccination) + { + DataType x_ = PneumococcalVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Pneumococcal_Conjugate_Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure PneumococcalProcedure) + { + DataType ab_ = PneumococcalProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure PneumococcalProcedure) + { + DataType ah_ = PneumococcalProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Four Pneumococcal Conjugate Vaccinations")] + public IEnumerable Four_Pneumococcal_Conjugate_Vaccinations(CqlContext context) + { + IEnumerable a_ = this.Pneumococcal_Conjugate_Immunizations_or_Procedures(context); + IEnumerable> e_ = context.Operators.CrossJoin(a_, a_, a_, a_); + (CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)? f_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)? m_ = (CqlTupleMetadata_DdPDeOJhPYESfHGCOcBNOiPPP, _valueTuple.Item1, _valueTuple.Item2, _valueTuple.Item3, _valueTuple.Item4); + + return m_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)?> g_ = context.Operators.Select, (CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)?>(e_, f_); + bool? h_((CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)? tuple_ddpdeojhpyesfhgcocbnoippp) + { + CqlDateTime n_ = context.Operators.ConvertDateToDateTime(tuple_ddpdeojhpyesfhgcocbnoippp?.PneumococcalVaccination2 as CqlDate); + CqlDateTime o_ = QICoreCommon_2_1_000.Instance.earliest(context, n_); + CqlDate p_ = context.Operators.DateFrom(o_); + CqlDateTime q_ = context.Operators.ConvertDateToDateTime(tuple_ddpdeojhpyesfhgcocbnoippp?.PneumococcalVaccination1 as CqlDate); + CqlDateTime r_ = QICoreCommon_2_1_000.Instance.earliest(context, q_); + CqlDate s_ = context.Operators.DateFrom(r_); + CqlQuantity t_ = context.Operators.Quantity(1m, "day"); + CqlDate u_ = context.Operators.Add(s_, t_); + bool? v_ = context.Operators.SameOrAfter(p_, u_, default); + CqlDateTime w_ = context.Operators.ConvertDateToDateTime(tuple_ddpdeojhpyesfhgcocbnoippp?.PneumococcalVaccination3 as CqlDate); + CqlDateTime x_ = QICoreCommon_2_1_000.Instance.earliest(context, w_); + CqlDate y_ = context.Operators.DateFrom(x_); + CqlDateTime aa_ = QICoreCommon_2_1_000.Instance.earliest(context, n_); + CqlDate ab_ = context.Operators.DateFrom(aa_); + CqlDate ad_ = context.Operators.Add(ab_, t_); + bool? ae_ = context.Operators.SameOrAfter(y_, ad_, default); + bool? af_ = context.Operators.And(v_, ae_); + CqlDateTime ag_ = context.Operators.ConvertDateToDateTime(tuple_ddpdeojhpyesfhgcocbnoippp?.PneumococcalVaccination4 as CqlDate); + CqlDateTime ah_ = QICoreCommon_2_1_000.Instance.earliest(context, ag_); + CqlDate ai_ = context.Operators.DateFrom(ah_); + CqlDateTime ak_ = QICoreCommon_2_1_000.Instance.earliest(context, w_); + CqlDate al_ = context.Operators.DateFrom(ak_); + CqlDate an_ = context.Operators.Add(al_, t_); + bool? ao_ = context.Operators.SameOrAfter(ai_, an_, default); + bool? ap_ = context.Operators.And(af_, ao_); + + return ap_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)?> i_ = context.Operators.Where<(CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)?>(g_, h_); + CqlDate j_((CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)? tuple_ddpdeojhpyesfhgcocbnoippp) + { + CqlDateTime aq_ = context.Operators.ConvertDateToDateTime(tuple_ddpdeojhpyesfhgcocbnoippp?.PneumococcalVaccination1 as CqlDate); + CqlDateTime ar_ = QICoreCommon_2_1_000.Instance.earliest(context, aq_); + CqlDate as_ = context.Operators.DateFrom(ar_); + + return as_; + }; + IEnumerable k_ = context.Operators.Select<(CqlTupleMetadata, CqlDate PneumococcalVaccination1, CqlDate PneumococcalVaccination2, CqlDate PneumococcalVaccination3, CqlDate PneumococcalVaccination4)?, CqlDate>(i_, j_); + IEnumerable l_ = context.Operators.Distinct(k_); + + return l_; + } + + + [CqlDeclaration("Pneumococcal Conjugate Numerator Inclusion Conditions")] + public IEnumerable Pneumococcal_Conjugate_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_caused_by_vaccine_product_containing_Streptococcus_pneumoniae_antigen__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? d_(Condition PneumococcalReaction) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, PneumococcalReaction); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("One Hepatitis A Vaccinations")] + public IEnumerable One_Hepatitis_A_Vaccinations(CqlContext context) + { + CqlValueSet a_ = this.Hepatitis_A_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization HepatitisAVaccination) + { + DataType r_ = HepatitisAVaccination?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Date_of_First_Birthday_to_Date_of_Second_Birthday(context); + bool? w_ = context.Operators.In(u_, v_, default); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization HepatitisAVaccination) + { + DataType x_ = HepatitisAVaccination?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Hepatitis_A_Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure HepatitisAProcedure) + { + DataType ab_ = HepatitisAProcedure?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Date_of_First_Birthday_to_Date_of_Second_Birthday(context); + bool? ag_ = context.Operators.In(ae_, af_, default); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure HepatitisAProcedure) + { + DataType ah_ = HepatitisAProcedure?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Hepatitis A Numerator Inclusion Conditions")] + public IEnumerable Hepatitis_A_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlValueSet a_ = this.Hepatitis_A(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlCode c_ = this.Anaphylaxis_caused_by_vaccine_product_containing_Hepatitis_A_virus_antigen__disorder_(context); + IEnumerable d_ = context.Operators.ToList(c_); + IEnumerable e_ = context.Operators.Retrieve(new RetrieveParameters(default, default, d_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable f_ = context.Operators.Union(b_, e_); + bool? g_(Condition HepatitisADiagnosis) + { + CqlInterval i_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, HepatitisADiagnosis); + CqlDateTime j_ = context.Operators.Start(i_); + CqlDate k_ = context.Operators.DateFrom(j_); + CqlInterval l_ = this.First_Two_Years(context); + bool? m_ = context.Operators.In(k_, l_, "day"); + + return m_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + + return h_; + } + + + [CqlDeclaration("Rotavirus 2 Dose Immunizations or Procedures")] + public IEnumerable Rotavirus_2_Dose_Immunizations_or_Procedures(CqlContext context) + { + CqlCode a_ = this.rotavirus__live__monovalent_vaccine(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable d_ = Status_1_8_000.Instance.isImmunizationAdministered(context, c_); + bool? e_(Immunization TwoDoseRotavirusVaccine) + { + DataType s_ = TwoDoseRotavirusVaccine?.Occurrence; + CqlDateTime t_ = context.Operators.LateBoundProperty(s_, "value"); + CqlDateTime u_ = QICoreCommon_2_1_000.Instance.earliest(context, t_ as object); + CqlDate v_ = context.Operators.DateFrom(u_); + CqlInterval w_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? x_ = context.Operators.In(v_, w_, "day"); + + return x_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + CqlDate g_(Immunization TwoDoseRotavirusVaccine) + { + DataType y_ = TwoDoseRotavirusVaccine?.Occurrence; + CqlDateTime z_ = context.Operators.LateBoundProperty(y_, "value"); + CqlDateTime aa_ = QICoreCommon_2_1_000.Instance.earliest(context, z_ as object); + CqlDate ab_ = context.Operators.DateFrom(aa_); + + return ab_; + }; + IEnumerable h_ = context.Operators.Select(f_, g_); + IEnumerable i_ = context.Operators.Distinct(h_); + CqlValueSet j_ = this.Rotavirus_Vaccine__2_dose_schedule__Administered(context); + IEnumerable k_ = context.Operators.Retrieve(new RetrieveParameters(default, j_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable l_ = Status_1_8_000.Instance.isProcedurePerformed(context, k_); + bool? m_(Procedure TwoDoseRotavirusProcedure) + { + DataType ac_ = TwoDoseRotavirusProcedure?.Performed; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + CqlDateTime ae_ = QICoreCommon_2_1_000.Instance.earliest(context, ad_); + CqlDate af_ = context.Operators.DateFrom(ae_); + CqlInterval ag_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ah_ = context.Operators.In(af_, ag_, "day"); + + return ah_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + CqlDate o_(Procedure TwoDoseRotavirusProcedure) + { + DataType ai_ = TwoDoseRotavirusProcedure?.Performed; + object aj_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ai_); + CqlDateTime ak_ = QICoreCommon_2_1_000.Instance.earliest(context, aj_); + CqlDate al_ = context.Operators.DateFrom(ak_); + + return al_; + }; + IEnumerable p_ = context.Operators.Select(n_, o_); + IEnumerable q_ = context.Operators.Distinct(p_); + IEnumerable r_ = context.Operators.Union(i_, q_); + + return r_; + } + + + [CqlDeclaration("Rotavirus 3 Dose Immunizations or Procedures")] + public IEnumerable Rotavirus_3_Dose_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Rotavirus_Vaccine__3_dose_schedule_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization ThreeDoseRotavirusVaccine) + { + DataType r_ = ThreeDoseRotavirusVaccine?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization ThreeDoseRotavirusVaccine) + { + DataType x_ = ThreeDoseRotavirusVaccine?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Rotavirus_Vaccine__3_dose_schedule__Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure ThreeDoseRotavirusAdministered) + { + DataType ab_ = ThreeDoseRotavirusAdministered?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure ThreeDoseRotavirusAdministered) + { + DataType ah_ = ThreeDoseRotavirusAdministered?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Rotavirus 2 or 3 Dose Immunizations")] + public IEnumerable Rotavirus_2_or_3_Dose_Immunizations(CqlContext context) + { + IEnumerable a_ = this.Rotavirus_2_Dose_Immunizations_or_Procedures(context); + IEnumerable b_ = this.Rotavirus_3_Dose_Immunizations_or_Procedures(context); + IEnumerable c_ = context.Operators.Union(a_, b_); + + return c_; + } + + + [CqlDeclaration("Has Appropriate Number of Rotavirus Immunizations")] + public bool? Has_Appropriate_Number_of_Rotavirus_Immunizations(CqlContext context) + { + IEnumerable a_ = this.Rotavirus_2_or_3_Dose_Immunizations(context); + bool? b_(CqlDate RotavirusImmunization) + { + IEnumerable e_ = this.Rotavirus_3_Dose_Immunizations_or_Procedures(context); + int? f_ = context.Operators.Count(e_); + bool? g_ = context.Operators.Greater(f_, 0); + IEnumerable h_ = this.Rotavirus_2_or_3_Dose_Immunizations(context); + CqlDate i_(CqlDate RotavirusVaccinations) + { + CqlDateTime ac_ = context.Operators.ConvertDateToDateTime(RotavirusVaccinations as CqlDate); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + + return ae_; + }; + IEnumerable j_ = context.Operators.Select(h_, i_); + IEnumerable k_ = context.Operators.Distinct(j_); + IEnumerable l_ = context.Operators.Distinct(k_); + int? m_ = context.Operators.Count(l_); + bool? n_ = context.Operators.GreaterOrEqual(m_, 3); + bool? o_ = context.Operators.And(g_, n_); + int? q_ = context.Operators.Count(e_); + bool? r_ = context.Operators.Greater(q_, 0); + bool? s_ = context.Operators.IsFalse(r_); + CqlDate u_(CqlDate RotavirusVaccinations) + { + CqlDateTime af_ = context.Operators.ConvertDateToDateTime(RotavirusVaccinations as CqlDate); + CqlDateTime ag_ = QICoreCommon_2_1_000.Instance.earliest(context, af_); + CqlDate ah_ = context.Operators.DateFrom(ag_); + + return ah_; + }; + IEnumerable v_ = context.Operators.Select(h_, u_); + IEnumerable w_ = context.Operators.Distinct(v_); + IEnumerable x_ = context.Operators.Distinct(w_); + int? y_ = context.Operators.Count(x_); + bool? z_ = context.Operators.GreaterOrEqual(y_, 2); + bool? aa_ = context.Operators.And(s_, z_); + bool? ab_ = context.Operators.Or(o_, aa_); + + return ab_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + bool? d_ = context.Operators.Exists(c_); + + return d_; + } + + + [CqlDeclaration("Rotavirus Numerator Inclusion Conditions")] + public IEnumerable Rotavirus_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_due_to_rotavirus_vaccine__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? d_(Condition RotavirusConditions) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, RotavirusConditions); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Vaccine Administration Interval - 180 Days up to 2 Years Old")] + public CqlInterval Vaccine_Administration_Interval___180_Days_up_to_2_Years_Old(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlDateTime e_ = context.Operators.ConvertDateToDateTime(d_); + CqlDate f_ = context.Operators.DateFrom(e_); + CqlQuantity g_ = context.Operators.Quantity(180m, "days"); + CqlDate h_ = context.Operators.Add(f_, g_); + CqlDate i_ = this.Date_of_Second_Birthday(context); + CqlInterval j_ = context.Operators.Interval(h_, i_, true, true); + + return j_; + } + + + [CqlDeclaration("Influenza Immunizations or Procedures")] + public IEnumerable Influenza_Immunizations_or_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Child_Influenza_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization InfluenzaVaccine) + { + DataType r_ = InfluenzaVaccine?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlInterval v_ = this.Vaccine_Administration_Interval___42_Days_up_to_2_Years_Old(context); + bool? w_ = context.Operators.In(u_, v_, "day"); + + return w_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization InfluenzaVaccine) + { + DataType x_ = InfluenzaVaccine?.Occurrence; + CqlDateTime y_ = context.Operators.LateBoundProperty(x_, "value"); + CqlDateTime z_ = QICoreCommon_2_1_000.Instance.earliest(context, y_ as object); + CqlDate aa_ = context.Operators.DateFrom(z_); + + return aa_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Child_Influenza_Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure InfluenzaAdministration) + { + DataType ab_ = InfluenzaAdministration?.Performed; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + CqlDateTime ad_ = QICoreCommon_2_1_000.Instance.earliest(context, ac_); + CqlDate ae_ = context.Operators.DateFrom(ad_); + CqlInterval af_ = this.Vaccine_Administration_Interval___180_Days_up_to_2_Years_Old(context); + bool? ag_ = context.Operators.In(ae_, af_, "day"); + + return ag_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure InfluenzaAdministration) + { + DataType ah_ = InfluenzaAdministration?.Performed; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + CqlDateTime aj_ = QICoreCommon_2_1_000.Instance.earliest(context, ai_); + CqlDate ak_ = context.Operators.DateFrom(aj_); + + return ak_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Two Influenza Vaccinations")] + public IEnumerable Two_Influenza_Vaccinations(CqlContext context) + { + IEnumerable a_ = this.Influenza_Immunizations_or_Procedures(context); + IEnumerable> c_ = context.Operators.CrossJoin(a_, a_); + (CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)? d_(ValueTuple _valueTuple) + { + (CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)? k_ = (CqlTupleMetadata_BZhFLeRDagbPQMNheVJcUNfNQ, _valueTuple.Item1, _valueTuple.Item2); + + return k_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)?> e_ = context.Operators.Select, (CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)?>(c_, d_); + bool? f_((CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)? tuple_bzhflerdagbpqmnhevjcunfnq) + { + CqlDateTime l_ = context.Operators.ConvertDateToDateTime(tuple_bzhflerdagbpqmnhevjcunfnq?.FluVaccination2 as CqlDate); + CqlDateTime m_ = QICoreCommon_2_1_000.Instance.earliest(context, l_); + CqlDate n_ = context.Operators.DateFrom(m_); + CqlDateTime o_ = context.Operators.ConvertDateToDateTime(tuple_bzhflerdagbpqmnhevjcunfnq?.FluVaccination1 as CqlDate); + CqlDateTime p_ = QICoreCommon_2_1_000.Instance.earliest(context, o_); + CqlDate q_ = context.Operators.DateFrom(p_); + CqlQuantity r_ = context.Operators.Quantity(1m, "day"); + CqlDate s_ = context.Operators.Add(q_, r_); + bool? t_ = context.Operators.SameOrAfter(n_, s_, default); + + return t_; + }; + IEnumerable<(CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)?> g_ = context.Operators.Where<(CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)?>(e_, f_); + CqlDate h_((CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)? tuple_bzhflerdagbpqmnhevjcunfnq) + { + CqlDateTime u_ = context.Operators.ConvertDateToDateTime(tuple_bzhflerdagbpqmnhevjcunfnq?.FluVaccination1 as CqlDate); + CqlDateTime v_ = QICoreCommon_2_1_000.Instance.earliest(context, u_); + CqlDate w_ = context.Operators.DateFrom(v_); + + return w_; + }; + IEnumerable i_ = context.Operators.Select<(CqlTupleMetadata, CqlDate FluVaccination1, CqlDate FluVaccination2)?, CqlDate>(g_, h_); + IEnumerable j_ = context.Operators.Distinct(i_); + + return j_; + } + + + [CqlDeclaration("LAIV Vaccinations")] + public IEnumerable LAIV_Vaccinations(CqlContext context) + { + CqlValueSet a_ = this.Influenza_Virus_LAIV_Vaccine(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-immunization")); + IEnumerable c_ = Status_1_8_000.Instance.isImmunizationAdministered(context, b_); + bool? d_(Immunization LAIVVaccine) + { + DataType r_ = LAIVVaccine?.Occurrence; + CqlDateTime s_ = context.Operators.LateBoundProperty(r_, "value"); + CqlDateTime t_ = QICoreCommon_2_1_000.Instance.earliest(context, s_ as object); + CqlDate u_ = context.Operators.DateFrom(t_); + CqlDate v_ = this.Date_of_Second_Birthday(context); + CqlInterval x_ = context.Operators.Interval(v_, v_, true, true); + bool? y_ = context.Operators.In(u_, x_, "day"); + + return y_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + CqlDate f_(Immunization LAIVVaccine) + { + DataType z_ = LAIVVaccine?.Occurrence; + CqlDateTime aa_ = context.Operators.LateBoundProperty(z_, "value"); + CqlDateTime ab_ = QICoreCommon_2_1_000.Instance.earliest(context, aa_ as object); + CqlDate ac_ = context.Operators.DateFrom(ab_); + + return ac_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + CqlValueSet i_ = this.Influenza_Virus_LAIV_Vaccine_Administered(context); + IEnumerable j_ = context.Operators.Retrieve(new RetrieveParameters(default, i_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable k_ = Status_1_8_000.Instance.isProcedurePerformed(context, j_); + bool? l_(Procedure InfluenzaAdministration) + { + DataType ad_ = InfluenzaAdministration?.Performed; + object ae_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ad_); + CqlDateTime af_ = QICoreCommon_2_1_000.Instance.earliest(context, ae_); + CqlDate ag_ = context.Operators.DateFrom(af_); + CqlDate ah_ = this.Date_of_Second_Birthday(context); + CqlInterval aj_ = context.Operators.Interval(ah_, ah_, true, true); + bool? ak_ = context.Operators.In(ag_, aj_, "day"); + + return ak_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + CqlDate n_(Procedure InfluenzaAdministration) + { + DataType al_ = InfluenzaAdministration?.Performed; + object am_ = FHIRHelpers_4_4_000.Instance.ToValue(context, al_); + CqlDateTime an_ = QICoreCommon_2_1_000.Instance.earliest(context, am_); + CqlDate ao_ = context.Operators.DateFrom(an_); + + return ao_; + }; + IEnumerable o_ = context.Operators.Select(m_, n_); + IEnumerable p_ = context.Operators.Distinct(o_); + IEnumerable q_ = context.Operators.Union(h_, p_); + + return q_; + } + + + [CqlDeclaration("Two Influenza Vaccinations Including One LAIV Vaccination")] + public bool? Two_Influenza_Vaccinations_Including_One_LAIV_Vaccination(CqlContext context) + { + IEnumerable a_ = this.LAIV_Vaccinations(context); + bool? b_ = context.Operators.Exists(a_); + IEnumerable c_ = this.Influenza_Immunizations_or_Procedures(context); + bool? d_ = context.Operators.Exists(c_); + bool? e_ = context.Operators.And(b_, d_); + + return e_; + } + + + [CqlDeclaration("Influenza Numerator Inclusion Conditions")] + public IEnumerable Influenza_Numerator_Inclusion_Conditions(CqlContext context) + { + CqlCode a_ = this.Anaphylaxis_caused_by_vaccine_product_containing_Influenza_virus_antigen__disorder_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? d_(Condition InfluenzaConditions) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, InfluenzaConditions); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDate h_ = context.Operators.DateFrom(g_); + CqlInterval i_ = this.First_Two_Years(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + IEnumerable a_ = this.Four_DTaP_Vaccinations(context); + bool? b_ = context.Operators.Exists(a_); + IEnumerable c_ = this.DTaP_Numerator_Inclusion_Conditions(context); + bool? d_ = context.Operators.Exists(c_); + bool? e_ = context.Operators.Or(b_, d_); + IEnumerable f_ = this.Three_Polio_Vaccinations(context); + bool? g_ = context.Operators.Exists(f_); + IEnumerable h_ = this.Polio_Numerator_Inclusion_Conditions(context); + bool? i_ = context.Operators.Exists(h_); + bool? j_ = context.Operators.Or(g_, i_); + bool? k_ = context.Operators.And(e_, j_); + IEnumerable l_ = this.One_MMR_Vaccination(context); + bool? m_ = context.Operators.Exists(l_); + IEnumerable n_ = this.MMR_Numerator_Inclusion_Conditions(context); + bool? o_ = context.Operators.Exists(n_); + bool? p_ = context.Operators.Or(m_, o_); + IEnumerable q_ = this.Measles_Indicators(context); + bool? r_ = context.Operators.Exists(q_); + IEnumerable s_ = this.Mumps_Indicators(context); + bool? t_ = context.Operators.Exists(s_); + bool? u_ = context.Operators.And(r_, t_); + IEnumerable v_ = this.Rubella_Indicators(context); + bool? w_ = context.Operators.Exists(v_); + bool? x_ = context.Operators.And(u_, w_); + bool? y_ = context.Operators.Or(p_, x_); + bool? z_ = context.Operators.And(k_, y_); + bool? aa_ = this.Has_Appropriate_Number_of_Hib_Immunizations(context); + IEnumerable ab_ = this.Hib_Numerator_Inclusion_Conditions(context); + bool? ac_ = context.Operators.Exists(ab_); + bool? ad_ = context.Operators.Or(aa_, ac_); + bool? ae_ = context.Operators.And(z_, ad_); + IEnumerable af_ = this.Three_Hepatitis_B_Vaccinations(context); + bool? ag_ = context.Operators.Exists(af_); + IEnumerable ah_ = this.Meets_HepB_Vaccination_Requirement(context); + bool? ai_ = context.Operators.Exists(ah_); + IEnumerable aj_ = this.Hepatitis_B_Numerator_Inclusion_Conditions(context); + bool? ak_ = context.Operators.Exists(aj_); + bool? al_ = context.Operators.Or(ai_, ak_); + bool? am_ = context.Operators.Or(ag_, al_); + bool? an_ = context.Operators.And(ae_, am_); + IEnumerable ao_ = this.One_Chicken_Pox_Vaccination(context); + bool? ap_ = context.Operators.Exists(ao_); + IEnumerable aq_ = this.Varicella_Zoster_Numerator_Inclusion_Conditions(context); + bool? ar_ = context.Operators.Exists(aq_); + bool? as_ = context.Operators.Or(ap_, ar_); + bool? at_ = context.Operators.And(an_, as_); + IEnumerable au_ = this.Four_Pneumococcal_Conjugate_Vaccinations(context); + bool? av_ = context.Operators.Exists(au_); + IEnumerable aw_ = this.Pneumococcal_Conjugate_Numerator_Inclusion_Conditions(context); + bool? ax_ = context.Operators.Exists(aw_); + bool? ay_ = context.Operators.Or(av_, ax_); + bool? az_ = context.Operators.And(at_, ay_); + IEnumerable ba_ = this.One_Hepatitis_A_Vaccinations(context); + bool? bb_ = context.Operators.Exists(ba_); + IEnumerable bc_ = this.Hepatitis_A_Numerator_Inclusion_Conditions(context); + bool? bd_ = context.Operators.Exists(bc_); + bool? be_ = context.Operators.Or(bb_, bd_); + bool? bf_ = context.Operators.And(az_, be_); + bool? bg_ = this.Has_Appropriate_Number_of_Rotavirus_Immunizations(context); + IEnumerable bh_ = this.Rotavirus_Numerator_Inclusion_Conditions(context); + bool? bi_ = context.Operators.Exists(bh_); + bool? bj_ = context.Operators.Or(bg_, bi_); + bool? bk_ = context.Operators.And(bf_, bj_); + IEnumerable bl_ = this.Two_Influenza_Vaccinations(context); + bool? bm_ = context.Operators.Exists(bl_); + bool? bn_ = this.Two_Influenza_Vaccinations_Including_One_LAIV_Vaccination(context); + bool? bo_ = context.Operators.Or(bm_, bn_); + IEnumerable bp_ = this.Influenza_Numerator_Inclusion_Conditions(context); + bool? bq_ = context.Operators.Exists(bp_); + bool? br_ = context.Operators.Or(bo_, bq_); + bool? bs_ = context.Operators.And(bk_, br_); + + return bs_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + + #region CqlTupleMetadata Properties + + private static CqlTupleMetadata CqlTupleMetadata_BZhFLeRDagbPQMNheVJcUNfNQ = new( + [typeof(CqlDate), typeof(CqlDate)], + ["FluVaccination1", "FluVaccination2"]); + + private static CqlTupleMetadata CqlTupleMetadata_CNGHaZROXaJTHPICcbIaJbRXV = new( + [typeof(CqlDate), typeof(CqlDate), typeof(CqlDate)], + ["PolioVaccination1", "PolioVaccination2", "PolioVaccination3"]); + + private static CqlTupleMetadata CqlTupleMetadata_DdPDeOJhPYESfHGCOcBNOiPPP = new( + [typeof(CqlDate), typeof(CqlDate), typeof(CqlDate), typeof(CqlDate)], + ["PneumococcalVaccination1", "PneumococcalVaccination2", "PneumococcalVaccination3", "PneumococcalVaccination4"]); + + private static CqlTupleMetadata CqlTupleMetadata_EMDhFLcFhWVERAVVNfLAZYXJi = new( + [typeof(CqlDate), typeof(CqlDate), typeof(CqlDate), typeof(CqlDate)], + ["DTaPVaccination1", "DTaPVaccination2", "DTaPVaccination3", "DTaPVaccination4"]); + + private static CqlTupleMetadata CqlTupleMetadata_EZTgahAUWGgSdGaDCgQNNIPGW = new( + [typeof(CqlDate), typeof(CqlDate), typeof(CqlDate)], + ["HepatitisBVaccination1", "HepatitisBVaccination2", "HepatitisBVaccination3"]); + + private static CqlTupleMetadata CqlTupleMetadata_HDfaMbZGBWDPFETGQNFbceEeg = new( + [typeof(CqlDate), typeof(CqlDate), typeof(CqlDate)], + ["HepatitisBVaccination1", "HepatitisBVaccination2", "NewBornVaccine3"]); + + #endregion CqlTupleMetadata Properties + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildrenWhoHaveDentalDecayOrCavitiesFHIR-0.0.001.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildrenWhoHaveDentalDecayOrCavitiesFHIR-0.0.001.g.cs new file mode 100644 index 000000000..5c76d0426 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChildrenWhoHaveDentalDecayOrCavitiesFHIR-0.0.001.g.cs @@ -0,0 +1,248 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ChildrenWhoHaveDentalDecayOrCavitiesFHIR", "0.0.001")] +public partial class ChildrenWhoHaveDentalDecayOrCavitiesFHIR_0_0_001 : ILibrary, ISingleton +{ + private ChildrenWhoHaveDentalDecayOrCavitiesFHIR_0_0_001() {} + + public static ChildrenWhoHaveDentalDecayOrCavitiesFHIR_0_0_001 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ChildrenWhoHaveDentalDecayOrCavitiesFHIR"; + public string Version => "0.0.001"; + public ILibrary[] Dependencies => [QICoreCommon_2_1_000.Instance, FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, Status_1_8_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Clinical Oral Evaluation")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.125.12.1003")] + public CqlValueSet Clinical_Oral_Evaluation(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.125.12.1003", default); + + + [CqlDeclaration("Dental Caries")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.125.12.1004")] + public CqlValueSet Dental_Caries(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.125.12.1004", default); + + + [CqlDeclaration("Discharged to Health Care Facility for Hospice Care")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.207")] + public CqlValueSet Discharged_to_Health_Care_Facility_for_Hospice_Care(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.207", default); + + + [CqlDeclaration("Discharged to Home for Hospice Care")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.209")] + public CqlValueSet Discharged_to_Home_for_Hospice_Care(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.117.1.7.1.209", default); + + + [CqlDeclaration("Encounter Inpatient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307")] + public CqlValueSet Encounter_Inpatient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307", default); + + + [CqlDeclaration("Discharge to healthcare facility for hospice care (procedure)")] + public CqlCode Discharge_to_healthcare_facility_for_hospice_care__procedure_(CqlContext context) => + new CqlCode("428371000124100", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Discharge to home for hospice care (procedure)")] + public CqlCode Discharge_to_home_for_hospice_care__procedure_(CqlContext context) => + new CqlCode("428361000124107", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Hospice care [Minimum Data Set]")] + public CqlCode Hospice_care__Minimum_Data_Set_(CqlContext context) => + new CqlCode("45755-6", "http://loinc.org", default, default); + + + [CqlDeclaration("Yes (qualifier value)")] + public CqlCode Yes__qualifier_value_(CqlContext context) => + new CqlCode("373066001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("45755-6", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("428371000124100", "http://snomed.info/sct", default, default), + new CqlCode("428361000124107", "http://snomed.info/sct", default, default), + new CqlCode("373066001", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ChildrenWhoHaveDentalDecayOrCavitiesFHIR-0.0.001", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Clinical_Oral_Evaluation(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable c_ = Status_1_8_000.Instance.isEncounterPerformed(context, b_); + bool? d_(Encounter ValidEncounter) + { + CqlInterval f_ = this.Measurement_Period(context); + Period g_ = ValidEncounter?.Period; + CqlInterval h_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, g_); + CqlInterval i_ = QICoreCommon_2_1_000.Instance.toInterval(context, h_ as object); + bool? j_ = context.Operators.IntervalIncludesInterval(f_, i_, "day"); + + return j_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.Start(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(1, 20, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + IEnumerable k_ = this.Qualifying_Encounters(context); + bool? l_ = context.Operators.Exists(k_); + bool? m_ = context.Operators.And(j_, l_); + + return m_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + + return a_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + CqlValueSet a_ = this.Dental_Caries(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition DentalCaries) + { + CqlInterval f_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, DentalCaries); + CqlInterval g_ = this.Measurement_Period(context); + bool? h_ = context.Operators.Overlaps(f_, g_, default); + + return h_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + bool? e_ = context.Operators.Exists(d_); + + return e_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChlamydiaScreeninginWomenFHIR-0.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChlamydiaScreeninginWomenFHIR-0.1.000.g.cs new file mode 100644 index 000000000..a2cb98db1 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ChlamydiaScreeninginWomenFHIR-0.1.000.g.cs @@ -0,0 +1,852 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ChlamydiaScreeninginWomenFHIR", "0.1.000")] +public partial class ChlamydiaScreeninginWomenFHIR_0_1_000 : ILibrary, ISingleton +{ + private ChlamydiaScreeninginWomenFHIR_0_1_000() {} + + public static ChlamydiaScreeninginWomenFHIR_0_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ChlamydiaScreeninginWomenFHIR"; + public string Version => "0.1.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, CumulativeMedicationDuration_4_1_000.Instance, Status_1_8_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Chlamydia Screening")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1052")] + public CqlValueSet Chlamydia_Screening(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1052", default); + + + [CqlDeclaration("Complications of Pregnancy, Childbirth and the Puerperium")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1012")] + public CqlValueSet Complications_of_Pregnancy__Childbirth_and_the_Puerperium(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1012", default); + + + [CqlDeclaration("Contraceptive Medications")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1080")] + public CqlValueSet Contraceptive_Medications(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1080", default); + + + [CqlDeclaration("Diagnoses Used to Indicate Sexual Activity")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1018")] + public CqlValueSet Diagnoses_Used_to_Indicate_Sexual_Activity(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1018", default); + + + [CqlDeclaration("Diagnostic Studies During Pregnancy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1008")] + public CqlValueSet Diagnostic_Studies_During_Pregnancy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1008", default); + + + [CqlDeclaration("HIV")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1003")] + public CqlValueSet HIV(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.120.12.1003", default); + + + [CqlDeclaration("Home Healthcare Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016")] + public CqlValueSet Home_Healthcare_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1016", default); + + + [CqlDeclaration("Isotretinoin")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1143")] + public CqlValueSet Isotretinoin(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.196.12.1143", default); + + + [CqlDeclaration("Lab Tests During Pregnancy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1007")] + public CqlValueSet Lab_Tests_During_Pregnancy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1007", default); + + + [CqlDeclaration("Lab Tests for Sexually Transmitted Infections")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1051")] + public CqlValueSet Lab_Tests_for_Sexually_Transmitted_Infections(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.110.12.1051", default); + + + [CqlDeclaration("Office Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001")] + public CqlValueSet Office_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1001", default); + + + [CqlDeclaration("Virtual Encounter")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089")] + public CqlValueSet Virtual_Encounter(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1089", default); + + + [CqlDeclaration("Pap Test")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1017")] + public CqlValueSet Pap_Test(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1017", default); + + + [CqlDeclaration("Pregnancy Test")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1011")] + public CqlValueSet Pregnancy_Test(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1011", default); + + + [CqlDeclaration("Preventive Care Services Established Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025")] + public CqlValueSet Preventive_Care_Services_Established_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1025", default); + + + [CqlDeclaration("Preventive Care Services Initial Office Visit, 18 and Up")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023")] + public CqlValueSet Preventive_Care_Services_Initial_Office_Visit__18_and_Up(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1023", default); + + + [CqlDeclaration("Preventive Care Services, Initial Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022")] + public CqlValueSet Preventive_Care_Services__Initial_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1022", default); + + + [CqlDeclaration("Preventive Care, Established Office Visit, 0 to 17")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024")] + public CqlValueSet Preventive_Care__Established_Office_Visit__0_to_17(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1024", default); + + + [CqlDeclaration("Procedures Used to Indicate Sexual Activity")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1017")] + public CqlValueSet Procedures_Used_to_Indicate_Sexual_Activity(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.111.12.1017", default); + + + [CqlDeclaration("Telephone Visits")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080")] + public CqlValueSet Telephone_Visits(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1080", default); + + + [CqlDeclaration("XRay Study")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1034")] + public CqlValueSet XRay_Study(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1034", default); + + + [CqlDeclaration("Female")] + public CqlCode Female(CqlContext context) => + new CqlCode("F", "http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender", default, default); + + + [CqlDeclaration("Have you ever had vaginal intercourse [PhenX]")] + public CqlCode Have_you_ever_had_vaginal_intercourse__PhenX_(CqlContext context) => + new CqlCode("64728-9", "http://loinc.org", default, default); + + + [CqlDeclaration("Yes (qualifier value)")] + public CqlCode Yes__qualifier_value_(CqlContext context) => + new CqlCode("373066001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("AdministrativeGender")] + public CqlCode[] AdministrativeGender(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("F", "http://terminology.hl7.org/CodeSystem/v3-AdministrativeGender", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("64728-9", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("SNOMEDCT")] + public CqlCode[] SNOMEDCT(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("373066001", "http://snomed.info/sct", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ChlamydiaScreeninginWomenFHIR-0.1.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Qualifying Encounters")] + public IEnumerable Qualifying_Encounters(CqlContext context) + { + CqlValueSet a_ = this.Office_Visit(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet c_ = this.Preventive_Care_Services_Established_Office_Visit__18_and_Up(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Preventive_Care_Services_Initial_Office_Visit__18_and_Up(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet h_ = this.Preventive_Care_Services__Initial_Office_Visit__0_to_17(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + CqlValueSet l_ = this.Preventive_Care__Established_Office_Visit__0_to_17(context); + IEnumerable m_ = context.Operators.Retrieve(new RetrieveParameters(default, l_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet n_ = this.Home_Healthcare_Services(context); + IEnumerable o_ = context.Operators.Retrieve(new RetrieveParameters(default, n_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable p_ = context.Operators.Union(m_, o_); + IEnumerable q_ = context.Operators.Union(k_, p_); + CqlValueSet r_ = this.Telephone_Visits(context); + IEnumerable s_ = context.Operators.Retrieve(new RetrieveParameters(default, r_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + CqlValueSet t_ = this.Virtual_Encounter(context); + IEnumerable u_ = context.Operators.Retrieve(new RetrieveParameters(default, t_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable v_ = context.Operators.Union(s_, u_); + IEnumerable w_ = context.Operators.Union(q_, v_); + IEnumerable x_ = Status_1_8_000.Instance.isEncounterPerformed(context, w_); + bool? y_(Encounter ValidEncounters) + { + CqlInterval aa_ = this.Measurement_Period(context); + Period ab_ = ValidEncounters?.Period; + CqlInterval ac_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, ab_); + CqlInterval ad_ = QICoreCommon_2_1_000.Instance.toInterval(context, ac_ as object); + bool? ae_ = context.Operators.IntervalIncludesInterval(aa_, ad_, "day"); + + return ae_; + }; + IEnumerable z_ = context.Operators.Where(x_, y_); + + return z_; + } + + + [CqlDeclaration("Has Assessments Identifying Sexual Activity")] + public bool? Has_Assessments_Identifying_Sexual_Activity(CqlContext context) + { + CqlCode a_ = this.Have_you_ever_had_vaginal_intercourse__PhenX_(context); + IEnumerable b_ = context.Operators.ToList(a_); + IEnumerable c_ = context.Operators.Retrieve(new RetrieveParameters(default, default, b_, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable d_ = Status_1_8_000.Instance.isAssessmentPerformed(context, c_); + bool? e_(Observation SexualActivityAssessment) + { + DataType h_ = SexualActivityAssessment?.Value; + object i_ = FHIRHelpers_4_4_000.Instance.ToValue(context, h_); + CqlCode j_ = this.Yes__qualifier_value_(context); + CqlConcept k_ = context.Operators.ConvertCodeToConcept(j_); + bool? l_ = context.Operators.Equivalent(i_ as CqlConcept, k_); + DataType m_ = SexualActivityAssessment?.Effective; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlInterval o_ = QICoreCommon_2_1_000.Instance.toInterval(context, n_); + CqlInterval p_() + { + bool s_() + { + CqlInterval t_ = this.Measurement_Period(context); + CqlDateTime u_ = context.Operators.End(t_); + + return u_ is null; + }; + if (s_()) + { + return default; + } + else + { + CqlInterval v_ = this.Measurement_Period(context); + CqlDateTime w_ = context.Operators.End(v_); + CqlDateTime y_ = context.Operators.End(v_); + CqlInterval z_ = context.Operators.Interval(w_, y_, true, true); + + return z_; + } + }; + bool? q_ = context.Operators.SameOrBefore(o_, p_(), default); + bool? r_ = context.Operators.And(l_, q_); + + return r_; + }; + IEnumerable f_ = context.Operators.Where(d_, e_); + bool? g_ = context.Operators.Exists(f_); + + return g_; + } + + + [CqlDeclaration("Has Diagnoses Identifying Sexual Activity")] + public bool? Has_Diagnoses_Identifying_Sexual_Activity(CqlContext context) + { + CqlValueSet a_ = this.Diagnoses_Used_to_Indicate_Sexual_Activity(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet c_ = this.HIV(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Complications_of_Pregnancy__Childbirth_and_the_Puerperium(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable h_ = context.Operators.Union(e_, g_); + bool? i_(Condition SexualActivityDiagnosis) + { + CqlInterval l_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, SexualActivityDiagnosis); + CqlInterval m_ = this.Measurement_Period(context); + bool? n_ = context.Operators.Overlaps(l_, m_, default); + + return n_; + }; + IEnumerable j_ = context.Operators.Where(h_, i_); + bool? k_ = context.Operators.Exists(j_); + + return k_; + } + + + [CqlDeclaration("Has Active Contraceptive Medications")] + public bool? Has_Active_Contraceptive_Medications(CqlContext context) + { + CqlValueSet a_ = this.Contraceptive_Medications(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isMedicationActive(context, e_); + bool? g_(MedicationRequest ActiveContraceptives) + { + CqlInterval j_ = CumulativeMedicationDuration_4_1_000.Instance.medicationRequestPeriod(context, ActiveContraceptives); + CqlDate k_ = j_?.low; + CqlDateTime l_ = context.Operators.ConvertDateToDateTime(k_); + CqlDate n_ = j_?.high; + CqlDateTime o_ = context.Operators.ConvertDateToDateTime(n_); + bool? q_ = j_?.lowClosed; + bool? s_ = j_?.highClosed; + CqlInterval t_ = context.Operators.Interval(l_, o_, q_, s_); + CqlInterval u_ = this.Measurement_Period(context); + bool? v_ = context.Operators.Overlaps(t_, u_, default); + + return v_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + bool? i_ = context.Operators.Exists(h_); + + return i_; + } + + + [CqlDeclaration("Has Ordered Contraceptive Medications")] + public bool? Has_Ordered_Contraceptive_Medications(CqlContext context) + { + CqlValueSet a_ = this.Contraceptive_Medications(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isMedicationOrder(context, e_); + bool? g_(MedicationRequest OrderedContraceptives) + { + CqlInterval j_ = this.Measurement_Period(context); + FhirDateTime k_ = OrderedContraceptives?.AuthoredOnElement; + CqlDateTime l_ = context.Operators.Convert(k_); + CqlInterval m_ = QICoreCommon_2_1_000.Instance.toInterval(context, l_ as object); + bool? n_ = context.Operators.IntervalIncludesInterval(j_, m_, "day"); + + return n_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + bool? i_ = context.Operators.Exists(h_); + + return i_; + } + + + [CqlDeclaration("Has Laboratory Tests Identifying Sexual Activity But Not Pregnancy")] + public bool? Has_Laboratory_Tests_Identifying_Sexual_Activity_But_Not_Pregnancy(CqlContext context) + { + CqlValueSet a_ = this.Pap_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + CqlValueSet c_ = this.Lab_Tests_During_Pregnancy(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Lab_Tests_for_Sexually_Transmitted_Infections(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable h_ = context.Operators.Union(e_, g_); + IEnumerable i_ = Status_1_8_000.Instance.isLaboratoryTestOrder(context, h_); + bool? j_(ServiceRequest LabOrders) + { + CqlInterval m_ = this.Measurement_Period(context); + FhirDateTime n_ = LabOrders?.AuthoredOnElement; + CqlDateTime o_ = context.Operators.Convert(n_); + CqlInterval p_ = QICoreCommon_2_1_000.Instance.toInterval(context, o_ as object); + bool? q_ = context.Operators.IntervalIncludesInterval(m_, p_, "day"); + + return q_; + }; + IEnumerable k_ = context.Operators.Where(i_, j_); + bool? l_ = context.Operators.Exists(k_); + + return l_; + } + + + [CqlDeclaration("Has Laboratory Tests Identifying Sexual Activity")] + public bool? Has_Laboratory_Tests_Identifying_Sexual_Activity(CqlContext context) + { + CqlValueSet a_ = this.Pregnancy_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestOrder(context, b_); + bool? d_(ServiceRequest PregnancyTest) + { + CqlInterval i_ = this.Measurement_Period(context); + FhirDateTime j_ = PregnancyTest?.AuthoredOnElement; + CqlDateTime k_ = context.Operators.Convert(j_); + CqlInterval l_ = QICoreCommon_2_1_000.Instance.toInterval(context, k_ as object); + bool? m_ = context.Operators.IntervalIncludesInterval(i_, l_, "day"); + + return m_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + bool? g_ = this.Has_Laboratory_Tests_Identifying_Sexual_Activity_But_Not_Pregnancy(context); + bool? h_ = context.Operators.Or(f_, g_); + + return h_; + } + + + [CqlDeclaration("Has Diagnostic Studies Identifying Sexual Activity")] + public bool? Has_Diagnostic_Studies_Identifying_Sexual_Activity(CqlContext context) + { + CqlValueSet a_ = this.Diagnostic_Studies_During_Pregnancy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable c_ = Status_1_8_000.Instance.isDiagnosticStudyOrder(context, b_); + bool? d_(ServiceRequest SexualActivityDiagnostics) + { + CqlInterval g_ = this.Measurement_Period(context); + FhirDateTime h_ = SexualActivityDiagnostics?.AuthoredOnElement; + CqlDateTime i_ = context.Operators.Convert(h_); + CqlInterval j_ = QICoreCommon_2_1_000.Instance.toInterval(context, i_ as object); + bool? k_ = context.Operators.IntervalIncludesInterval(g_, j_, "day"); + + return k_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + + return f_; + } + + + [CqlDeclaration("Has Procedures Identifying Sexual Activity")] + public bool? Has_Procedures_Identifying_Sexual_Activity(CqlContext context) + { + CqlValueSet a_ = this.Procedures_Used_to_Indicate_Sexual_Activity(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure ProceduresForSexualActivity) + { + CqlInterval g_ = this.Measurement_Period(context); + DataType h_ = ProceduresForSexualActivity?.Performed; + object i_ = FHIRHelpers_4_4_000.Instance.ToValue(context, h_); + CqlInterval j_ = QICoreCommon_2_1_000.Instance.toInterval(context, i_); + bool? k_ = context.Operators.IntervalIncludesInterval(g_, j_, "day"); + + return k_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + + return f_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(16, 24, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + Code l_ = a_?.GenderElement; + AdministrativeGender? m_ = l_?.Value; + string n_ = context.Operators.Convert(m_); + bool? o_ = context.Operators.Equal(n_, "female"); + bool? p_ = context.Operators.And(j_, o_); + IEnumerable q_ = this.Qualifying_Encounters(context); + bool? r_ = context.Operators.Exists(q_); + bool? s_ = context.Operators.And(p_, r_); + bool? t_ = this.Has_Assessments_Identifying_Sexual_Activity(context); + bool? u_ = this.Has_Diagnoses_Identifying_Sexual_Activity(context); + bool? v_ = context.Operators.Or(t_, u_); + bool? w_ = this.Has_Active_Contraceptive_Medications(context); + bool? x_ = context.Operators.Or(v_, w_); + bool? y_ = this.Has_Ordered_Contraceptive_Medications(context); + bool? z_ = context.Operators.Or(x_, y_); + bool? aa_ = this.Has_Laboratory_Tests_Identifying_Sexual_Activity(context); + bool? ab_ = context.Operators.Or(z_, aa_); + bool? ac_ = this.Has_Diagnostic_Studies_Identifying_Sexual_Activity(context); + bool? ad_ = context.Operators.Or(ab_, ac_); + bool? ae_ = this.Has_Procedures_Identifying_Sexual_Activity(context); + bool? af_ = context.Operators.Or(ad_, ae_); + bool? ag_ = context.Operators.And(s_, af_); + + return ag_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Has Pregnancy Test Exclusion")] + public bool? Has_Pregnancy_Test_Exclusion(CqlContext context) + { + CqlValueSet a_ = this.Pregnancy_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestOrder(context, b_); + IEnumerable d_(ServiceRequest PregnancyTest) + { + CqlValueSet q_ = this.XRay_Study(context); + IEnumerable r_ = context.Operators.Retrieve(new RetrieveParameters(default, q_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable s_ = Status_1_8_000.Instance.isDiagnosticStudyOrder(context, r_); + bool? t_(ServiceRequest XrayOrder) + { + FhirDateTime x_ = XrayOrder?.AuthoredOnElement; + CqlDateTime y_ = context.Operators.Convert(x_); + CqlInterval z_ = QICoreCommon_2_1_000.Instance.toInterval(context, y_ as object); + CqlDateTime aa_ = context.Operators.Start(z_); + FhirDateTime ab_ = PregnancyTest?.AuthoredOnElement; + CqlDateTime ac_ = context.Operators.Convert(ab_); + CqlInterval ad_ = QICoreCommon_2_1_000.Instance.toInterval(context, ac_ as object); + CqlDateTime ae_ = context.Operators.End(ad_); + CqlDateTime ag_ = context.Operators.Convert(ab_); + CqlInterval ah_ = QICoreCommon_2_1_000.Instance.toInterval(context, ag_ as object); + CqlDateTime ai_ = context.Operators.End(ah_); + CqlQuantity aj_ = context.Operators.Quantity(6m, "days"); + CqlDateTime ak_ = context.Operators.Add(ai_, aj_); + CqlInterval al_ = context.Operators.Interval(ae_, ak_, true, true); + bool? am_ = context.Operators.In(aa_, al_, "day"); + CqlDateTime ao_ = context.Operators.Convert(ab_); + CqlInterval ap_ = QICoreCommon_2_1_000.Instance.toInterval(context, ao_ as object); + CqlDateTime aq_ = context.Operators.End(ap_); + bool? ar_ = context.Operators.Not((bool?)(aq_ is null)); + bool? as_ = context.Operators.And(am_, ar_); + + return as_; + }; + IEnumerable u_ = context.Operators.Where(s_, t_); + ServiceRequest v_(ServiceRequest XrayOrder) => + PregnancyTest; + IEnumerable w_ = context.Operators.Select(u_, v_); + + return w_; + }; + IEnumerable e_ = context.Operators.SelectMany(c_, d_); + bool? f_(ServiceRequest PregnancyTest) + { + CqlInterval at_ = this.Measurement_Period(context); + FhirDateTime au_ = PregnancyTest?.AuthoredOnElement; + CqlDateTime av_ = context.Operators.Convert(au_); + CqlInterval aw_ = QICoreCommon_2_1_000.Instance.toInterval(context, av_ as object); + bool? ax_ = context.Operators.IntervalIncludesInterval(at_, aw_, default); + + return ax_; + }; + IEnumerable g_ = context.Operators.Where(e_, f_); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-servicerequest")); + IEnumerable j_ = Status_1_8_000.Instance.isLaboratoryTestOrder(context, i_); + IEnumerable k_(ServiceRequest PregnancyTestOrder) + { + CqlValueSet ay_ = this.Isotretinoin(context); + IEnumerable az_ = context.Operators.Retrieve(new RetrieveParameters(default, ay_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable bb_ = context.Operators.Retrieve(new RetrieveParameters(default, ay_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-medicationrequest")); + IEnumerable bc_ = context.Operators.Union(az_, bb_); + IEnumerable bd_ = Status_1_8_000.Instance.isMedicationOrder(context, bc_); + bool? be_(MedicationRequest AccutaneOrder) + { + FhirDateTime bi_ = AccutaneOrder?.AuthoredOnElement; + CqlDateTime bj_ = context.Operators.Convert(bi_); + CqlInterval bk_ = QICoreCommon_2_1_000.Instance.toInterval(context, bj_ as object); + CqlDateTime bl_ = context.Operators.Start(bk_); + FhirDateTime bm_ = PregnancyTestOrder?.AuthoredOnElement; + CqlDateTime bn_ = context.Operators.Convert(bm_); + CqlInterval bo_ = QICoreCommon_2_1_000.Instance.toInterval(context, bn_ as object); + CqlDateTime bp_ = context.Operators.End(bo_); + CqlDateTime br_ = context.Operators.Convert(bm_); + CqlInterval bs_ = QICoreCommon_2_1_000.Instance.toInterval(context, br_ as object); + CqlDateTime bt_ = context.Operators.End(bs_); + CqlQuantity bu_ = context.Operators.Quantity(6m, "days"); + CqlDateTime bv_ = context.Operators.Add(bt_, bu_); + CqlInterval bw_ = context.Operators.Interval(bp_, bv_, true, true); + bool? bx_ = context.Operators.In(bl_, bw_, "day"); + CqlDateTime bz_ = context.Operators.Convert(bm_); + CqlInterval ca_ = QICoreCommon_2_1_000.Instance.toInterval(context, bz_ as object); + CqlDateTime cb_ = context.Operators.End(ca_); + bool? cc_ = context.Operators.Not((bool?)(cb_ is null)); + bool? cd_ = context.Operators.And(bx_, cc_); + + return cd_; + }; + IEnumerable bf_ = context.Operators.Where(bd_, be_); + ServiceRequest bg_(MedicationRequest AccutaneOrder) => + PregnancyTestOrder; + IEnumerable bh_ = context.Operators.Select(bf_, bg_); + + return bh_; + }; + IEnumerable l_ = context.Operators.SelectMany(j_, k_); + bool? m_(ServiceRequest PregnancyTestOrder) + { + CqlInterval ce_ = this.Measurement_Period(context); + FhirDateTime cf_ = PregnancyTestOrder?.AuthoredOnElement; + CqlDateTime cg_ = context.Operators.Convert(cf_); + CqlInterval ch_ = QICoreCommon_2_1_000.Instance.toInterval(context, cg_ as object); + bool? ci_ = context.Operators.IntervalIncludesInterval(ce_, ch_, default); + + return ci_; + }; + IEnumerable n_ = context.Operators.Where(l_, m_); + IEnumerable o_ = context.Operators.Union(g_, n_); + bool? p_ = context.Operators.Exists(o_); + + return p_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + bool? b_ = this.Has_Pregnancy_Test_Exclusion(context); + bool? c_ = this.Has_Assessments_Identifying_Sexual_Activity(context); + bool? d_ = context.Operators.Not(c_); + bool? e_ = context.Operators.And(b_, d_); + bool? f_ = this.Has_Diagnoses_Identifying_Sexual_Activity(context); + bool? g_ = context.Operators.Not(f_); + bool? h_ = context.Operators.And(e_, g_); + bool? i_ = this.Has_Active_Contraceptive_Medications(context); + bool? j_ = context.Operators.Not(i_); + bool? k_ = context.Operators.And(h_, j_); + bool? l_ = this.Has_Ordered_Contraceptive_Medications(context); + bool? m_ = context.Operators.Not(l_); + bool? n_ = context.Operators.And(k_, m_); + bool? o_ = this.Has_Laboratory_Tests_Identifying_Sexual_Activity_But_Not_Pregnancy(context); + bool? p_ = context.Operators.Not(o_); + bool? q_ = context.Operators.And(n_, p_); + bool? r_ = this.Has_Diagnostic_Studies_Identifying_Sexual_Activity(context); + bool? s_ = context.Operators.Not(r_); + bool? t_ = context.Operators.And(q_, s_); + bool? u_ = this.Has_Procedures_Identifying_Sexual_Activity(context); + bool? v_ = context.Operators.Not(u_); + bool? w_ = context.Operators.And(t_, v_); + bool? x_ = context.Operators.Or(a_, w_); + + return x_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + CqlValueSet a_ = this.Chlamydia_Screening(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestPerformed(context, b_); + bool? d_(Observation ChlamydiaTest) + { + object g_() + { + bool o_() + { + DataType r_ = ChlamydiaTest?.Effective; + object s_ = FHIRHelpers_4_4_000.Instance.ToValue(context, r_); + bool t_ = s_ is CqlDateTime; + + return t_; + }; + bool p_() + { + DataType u_ = ChlamydiaTest?.Effective; + object v_ = FHIRHelpers_4_4_000.Instance.ToValue(context, u_); + bool w_ = v_ is CqlInterval; + + return w_; + }; + bool q_() + { + DataType x_ = ChlamydiaTest?.Effective; + object y_ = FHIRHelpers_4_4_000.Instance.ToValue(context, x_); + bool z_ = y_ is CqlDateTime; + + return z_; + }; + if (o_()) + { + DataType aa_ = ChlamydiaTest?.Effective; + object ab_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aa_); + + return (ab_ as CqlDateTime) as object; + } + else if (p_()) + { + DataType ac_ = ChlamydiaTest?.Effective; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + + return (ad_ as CqlInterval) as object; + } + else if (q_()) + { + DataType ae_ = ChlamydiaTest?.Effective; + object af_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ae_); + + return (af_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime h_ = QICoreCommon_2_1_000.Instance.latest(context, g_()); + CqlInterval i_ = this.Measurement_Period(context); + bool? j_ = context.Operators.In(h_, i_, "day"); + DataType k_ = ChlamydiaTest?.Value; + object l_ = FHIRHelpers_4_4_000.Instance.ToValue(context, k_); + bool? m_ = context.Operators.Not((bool?)(l_ is null)); + bool? n_ = context.Operators.And(j_, m_); + + return n_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + bool? f_ = context.Operators.Exists(e_); + + return f_; + } + + + [CqlDeclaration("Stratification 1")] + public bool? Stratification_1(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(16, 20, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + + return j_; + } + + + [CqlDeclaration("Stratification 2")] + public bool? Stratification_2(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(21, 24, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + + return j_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ColonCancerScreeningFHIR-0.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ColonCancerScreeningFHIR-0.1.000.g.cs new file mode 100644 index 000000000..551b1f894 --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ColonCancerScreeningFHIR-0.1.000.g.cs @@ -0,0 +1,530 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ColonCancerScreeningFHIR", "0.1.000")] +public partial class ColonCancerScreeningFHIR_0_1_000 : ILibrary, ISingleton +{ + private ColonCancerScreeningFHIR_0_1_000() {} + + public static ColonCancerScreeningFHIR_0_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ColonCancerScreeningFHIR"; + public string Version => "0.1.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, SupplementalDataElements_3_5_000.Instance, Hospice_6_12_000.Instance, PalliativeCare_1_11_000.Instance, AdultOutpatientEncounters_4_11_000.Instance, AdvancedIllnessandFrailty_1_16_000.Instance, Status_1_8_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Colonoscopy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1020")] + public CqlValueSet Colonoscopy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1020", default); + + + [CqlDeclaration("CT Colonography")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1038")] + public CqlValueSet CT_Colonography(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1038", default); + + + [CqlDeclaration("Fecal Occult Blood Test (FOBT)")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1011")] + public CqlValueSet Fecal_Occult_Blood_Test__FOBT_(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1011", default); + + + [CqlDeclaration("sDNA FIT Test")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1039")] + public CqlValueSet sDNA_FIT_Test(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1039", default); + + + [CqlDeclaration("Flexible Sigmoidoscopy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1010")] + public CqlValueSet Flexible_Sigmoidoscopy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1010", default); + + + [CqlDeclaration("Malignant Neoplasm of Colon")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1001")] + public CqlValueSet Malignant_Neoplasm_of_Colon(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1001", default); + + + [CqlDeclaration("Total Colectomy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1019")] + public CqlValueSet Total_Colectomy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.198.12.1019", default); + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ColonCancerScreeningFHIR-0.1.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(46, 75, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + IEnumerable k_ = AdultOutpatientEncounters_4_11_000.Instance.Qualifying_Encounters(context); + bool? l_ = context.Operators.Exists(k_); + bool? m_ = context.Operators.And(j_, l_); + + return m_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Malignant Neoplasm")] + public IEnumerable Malignant_Neoplasm(CqlContext context) + { + CqlValueSet a_ = this.Malignant_Neoplasm_of_Colon(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition ColorectalCancer) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, ColorectalCancer); + CqlDateTime f_ = context.Operators.Start(e_); + CqlInterval g_ = this.Measurement_Period(context); + CqlDateTime h_ = context.Operators.End(g_); + bool? i_ = context.Operators.SameOrBefore(f_, h_, "day"); + + return i_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Total Colectomy Performed")] + public IEnumerable Total_Colectomy_Performed(CqlContext context) + { + CqlValueSet a_ = this.Total_Colectomy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure Colectomy) + { + DataType f_ = Colectomy?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.End(j_); + bool? l_ = context.Operators.SameOrBefore(i_, k_, "day"); + + return l_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Denominator Exclusion")] + public bool? Denominator_Exclusion(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + IEnumerable b_ = this.Malignant_Neoplasm(context); + bool? c_ = context.Operators.Exists(b_); + bool? d_ = context.Operators.Or(a_, c_); + IEnumerable e_ = this.Total_Colectomy_Performed(context); + bool? f_ = context.Operators.Exists(e_); + bool? g_ = context.Operators.Or(d_, f_); + bool? h_ = AdvancedIllnessandFrailty_1_16_000.Instance.Is_Age_66_or_Older_with_Advanced_Illness_and_Frailty(context); + bool? i_ = context.Operators.Or(g_, h_); + bool? j_ = AdvancedIllnessandFrailty_1_16_000.Instance.Is_Age_66_or_Older_Living_Long_Term_in_a_Nursing_Home(context); + bool? k_ = context.Operators.Or(i_, j_); + bool? l_ = PalliativeCare_1_11_000.Instance.Has_Palliative_Care_in_the_Measurement_Period(context); + bool? m_ = context.Operators.Or(k_, l_); + + return m_; + } + + + [CqlDeclaration("Fecal Occult Blood Test Performed")] + public IEnumerable Fecal_Occult_Blood_Test_Performed(CqlContext context) + { + CqlValueSet a_ = this.Fecal_Occult_Blood_Test__FOBT_(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestPerformed(context, b_); + bool? d_(Observation FecalOccultResult) + { + DataType f_ = FecalOccultResult?.Value; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + bool? h_ = context.Operators.Not((bool?)(g_ is null)); + object i_() + { + bool n_() + { + DataType q_ = FecalOccultResult?.Effective; + object r_ = FHIRHelpers_4_4_000.Instance.ToValue(context, q_); + bool s_ = r_ is CqlDateTime; + + return s_; + }; + bool o_() + { + DataType t_ = FecalOccultResult?.Effective; + object u_ = FHIRHelpers_4_4_000.Instance.ToValue(context, t_); + bool v_ = u_ is CqlInterval; + + return v_; + }; + bool p_() + { + DataType w_ = FecalOccultResult?.Effective; + object x_ = FHIRHelpers_4_4_000.Instance.ToValue(context, w_); + bool y_ = x_ is CqlDateTime; + + return y_; + }; + if (n_()) + { + DataType z_ = FecalOccultResult?.Effective; + object aa_ = FHIRHelpers_4_4_000.Instance.ToValue(context, z_); + + return (aa_ as CqlDateTime) as object; + } + else if (o_()) + { + DataType ab_ = FecalOccultResult?.Effective; + object ac_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ab_); + + return (ac_ as CqlInterval) as object; + } + else if (p_()) + { + DataType ad_ = FecalOccultResult?.Effective; + object ae_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ad_); + + return (ae_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime j_ = QICoreCommon_2_1_000.Instance.latest(context, i_()); + CqlInterval k_ = this.Measurement_Period(context); + bool? l_ = context.Operators.In(j_, k_, "day"); + bool? m_ = context.Operators.And(h_, l_); + + return m_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Stool DNA with FIT Test Performed")] + public IEnumerable Stool_DNA_with_FIT_Test_Performed(CqlContext context) + { + CqlValueSet a_ = this.sDNA_FIT_Test(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isLaboratoryTestPerformed(context, b_); + bool? d_(Observation sDNATest) + { + DataType f_ = sDNATest?.Value; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + bool? h_ = context.Operators.Not((bool?)(g_ is null)); + object i_() + { + bool t_() + { + DataType w_ = sDNATest?.Effective; + object x_ = FHIRHelpers_4_4_000.Instance.ToValue(context, w_); + bool y_ = x_ is CqlDateTime; + + return y_; + }; + bool u_() + { + DataType z_ = sDNATest?.Effective; + object aa_ = FHIRHelpers_4_4_000.Instance.ToValue(context, z_); + bool ab_ = aa_ is CqlInterval; + + return ab_; + }; + bool v_() + { + DataType ac_ = sDNATest?.Effective; + object ad_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ac_); + bool ae_ = ad_ is CqlDateTime; + + return ae_; + }; + if (t_()) + { + DataType af_ = sDNATest?.Effective; + object ag_ = FHIRHelpers_4_4_000.Instance.ToValue(context, af_); + + return (ag_ as CqlDateTime) as object; + } + else if (u_()) + { + DataType ah_ = sDNATest?.Effective; + object ai_ = FHIRHelpers_4_4_000.Instance.ToValue(context, ah_); + + return (ai_ as CqlInterval) as object; + } + else if (v_()) + { + DataType aj_ = sDNATest?.Effective; + object ak_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aj_); + + return (ak_ as CqlDateTime) as object; + } + else + { + return null; + } + }; + CqlDateTime j_ = QICoreCommon_2_1_000.Instance.latest(context, i_()); + CqlInterval k_ = this.Measurement_Period(context); + CqlDateTime l_ = context.Operators.Start(k_); + CqlQuantity m_ = context.Operators.Quantity(2m, "years"); + CqlDateTime n_ = context.Operators.Subtract(l_, m_); + CqlDateTime p_ = context.Operators.End(k_); + CqlInterval q_ = context.Operators.Interval(n_, p_, true, true); + bool? r_ = context.Operators.In(j_, q_, "day"); + bool? s_ = context.Operators.And(h_, r_); + + return s_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Flexible Sigmoidoscopy Performed")] + public IEnumerable Flexible_Sigmoidoscopy_Performed(CqlContext context) + { + CqlValueSet a_ = this.Flexible_Sigmoidoscopy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure FlexibleSigmoidoscopy) + { + DataType f_ = FlexibleSigmoidoscopy?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.Start(j_); + CqlQuantity l_ = context.Operators.Quantity(4m, "years"); + CqlDateTime m_ = context.Operators.Subtract(k_, l_); + CqlDateTime o_ = context.Operators.End(j_); + CqlInterval p_ = context.Operators.Interval(m_, o_, true, true); + bool? q_ = context.Operators.In(i_, p_, "day"); + + return q_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("CT Colonography Performed")] + public IEnumerable CT_Colonography_Performed(CqlContext context) + { + CqlValueSet a_ = this.CT_Colonography(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-observation")); + IEnumerable c_ = Status_1_8_000.Instance.isDiagnosticStudyPerformed(context, b_); + bool? d_(Observation Colonography) + { + DataType f_ = Colonography?.Effective; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.Start(j_); + CqlQuantity l_ = context.Operators.Quantity(4m, "years"); + CqlDateTime m_ = context.Operators.Subtract(k_, l_); + CqlDateTime o_ = context.Operators.End(j_); + CqlInterval p_ = context.Operators.Interval(m_, o_, true, true); + bool? q_ = context.Operators.In(i_, p_, "day"); + + return q_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Colonoscopy Performed")] + public IEnumerable Colonoscopy_Performed(CqlContext context) + { + CqlValueSet a_ = this.Colonoscopy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable c_ = Status_1_8_000.Instance.isProcedurePerformed(context, b_); + bool? d_(Procedure Colonoscopy) + { + DataType f_ = Colonoscopy?.Performed; + object g_ = FHIRHelpers_4_4_000.Instance.ToValue(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_); + CqlDateTime i_ = context.Operators.End(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.Start(j_); + CqlQuantity l_ = context.Operators.Quantity(9m, "years"); + CqlDateTime m_ = context.Operators.Subtract(k_, l_); + CqlDateTime o_ = context.Operators.End(j_); + CqlInterval p_ = context.Operators.Interval(m_, o_, true, true); + bool? q_ = context.Operators.In(i_, p_, "day"); + + return q_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + IEnumerable a_ = this.Fecal_Occult_Blood_Test_Performed(context); + bool? b_ = context.Operators.Exists(a_); + IEnumerable c_ = this.Stool_DNA_with_FIT_Test_Performed(context); + bool? d_ = context.Operators.Exists(c_); + bool? e_ = context.Operators.Or(b_, d_); + IEnumerable f_ = this.Flexible_Sigmoidoscopy_Performed(context); + bool? g_ = context.Operators.Exists(f_); + bool? h_ = context.Operators.Or(e_, g_); + IEnumerable i_ = this.CT_Colonography_Performed(context); + bool? j_ = context.Operators.Exists(i_); + bool? k_ = context.Operators.Or(h_, j_); + IEnumerable l_ = this.Colonoscopy_Performed(context); + bool? m_ = context.Operators.Exists(l_); + bool? n_ = context.Operators.Or(k_, m_); + + return n_; + } + + + [CqlDeclaration("Stratification 1")] + public bool? Stratification_1(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(46, 49, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + + return j_; + } + + + [CqlDeclaration("Stratification 2")] + public bool? Stratification_2(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(50, 75, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + + return j_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/ControllingHighBloodPressureFHIR-0.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ControllingHighBloodPressureFHIR-0.1.000.g.cs new file mode 100644 index 000000000..11718b97d --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/ControllingHighBloodPressureFHIR-0.1.000.g.cs @@ -0,0 +1,611 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("ControllingHighBloodPressureFHIR", "0.1.000")] +public partial class ControllingHighBloodPressureFHIR_0_1_000 : ILibrary, ISingleton +{ + private ControllingHighBloodPressureFHIR_0_1_000() {} + + public static ControllingHighBloodPressureFHIR_0_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "ControllingHighBloodPressureFHIR"; + public string Version => "0.1.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance, SupplementalDataElements_3_5_000.Instance, Status_1_8_000.Instance, AdvancedIllnessandFrailty_1_16_000.Instance, AdultOutpatientEncounters_4_11_000.Instance, Hospice_6_12_000.Instance, PalliativeCare_1_11_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("Chronic Kidney Disease, Stage 5")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1002")] + public CqlValueSet Chronic_Kidney_Disease__Stage_5(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.1002", default); + + + [CqlDeclaration("Dialysis Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1013")] + public CqlValueSet Dialysis_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1013", default); + + + [CqlDeclaration("Emergency Department Evaluation and Management Visit")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010")] + public CqlValueSet Emergency_Department_Evaluation_and_Management_Visit(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.101.12.1010", default); + + + [CqlDeclaration("Encounter Inpatient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307")] + public CqlValueSet Encounter_Inpatient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.666.5.307", default); + + + [CqlDeclaration("End Stage Renal Disease")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.353")] + public CqlValueSet End_Stage_Renal_Disease(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.353", default); + + + [CqlDeclaration("ESRD Monthly Outpatient Services")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1014")] + public CqlValueSet ESRD_Monthly_Outpatient_Services(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1014", default); + + + [CqlDeclaration("Essential Hypertension")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.104.12.1011")] + public CqlValueSet Essential_Hypertension(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.104.12.1011", default); + + + [CqlDeclaration("Kidney Transplant")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1012")] + public CqlValueSet Kidney_Transplant(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1012", default); + + + [CqlDeclaration("Kidney Transplant Recipient")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1029")] + public CqlValueSet Kidney_Transplant_Recipient(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.109.12.1029", default); + + + [CqlDeclaration("Pregnancy")] + [CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.378")] + public CqlValueSet Pregnancy(CqlContext context) => + new CqlValueSet("http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.526.3.378", default); + + + [CqlDeclaration("Diastolic blood pressure")] + public CqlCode Diastolic_blood_pressure(CqlContext context) => + new CqlCode("8462-4", "http://loinc.org", default, default); + + + [CqlDeclaration("Systolic blood pressure")] + public CqlCode Systolic_blood_pressure(CqlContext context) => + new CqlCode("8480-6", "http://loinc.org", default, default); + + + [CqlDeclaration("LOINC")] + public CqlCode[] LOINC(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("8462-4", "http://loinc.org", default, default), + new CqlCode("8480-6", "http://loinc.org", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("Measurement Period")] + public CqlInterval Measurement_Period(CqlContext context) + { + CqlDateTime a_ = context.Operators.DateTime(2025, 1, 1, 0, 0, 0, 0, 0.0m); + CqlDateTime b_ = context.Operators.DateTime(2025, 12, 31, 23, 59, 59, 999, 0.0m); + CqlInterval c_ = context.Operators.Interval(a_, b_, true, true); + object d_ = context.ResolveParameter("ControllingHighBloodPressureFHIR-0.1.000", "Measurement Period", c_); + + return (CqlInterval)d_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + [CqlDeclaration("Essential Hypertension Diagnosis")] + public IEnumerable Essential_Hypertension_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.Essential_Hypertension(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + bool? c_(Condition Hypertension) + { + CqlInterval e_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, Hypertension); + CqlInterval f_ = this.Measurement_Period(context); + CqlDateTime g_ = context.Operators.Start(f_); + CqlDateTime i_ = context.Operators.Start(f_); + CqlQuantity j_ = context.Operators.Quantity(6m, "months"); + CqlDateTime k_ = context.Operators.Add(i_, j_); + CqlInterval l_ = context.Operators.Interval(g_, k_, true, false); + bool? m_ = context.Operators.Overlaps(e_, l_, default); + + return m_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Initial Population")] + public bool? Initial_Population(CqlContext context) + { + Patient a_ = this.Patient(context); + Date b_ = a_?.BirthDateElement; + string c_ = b_?.Value; + CqlDate d_ = context.Operators.ConvertStringToDate(c_); + CqlInterval e_ = this.Measurement_Period(context); + CqlDateTime f_ = context.Operators.End(e_); + CqlDate g_ = context.Operators.DateFrom(f_); + int? h_ = context.Operators.CalculateAgeAt(d_, g_, "year"); + CqlInterval i_ = context.Operators.Interval(18, 85, true, true); + bool? j_ = context.Operators.In(h_, i_, default); + IEnumerable k_ = this.Essential_Hypertension_Diagnosis(context); + bool? l_ = context.Operators.Exists(k_); + bool? m_ = context.Operators.And(j_, l_); + IEnumerable n_ = AdultOutpatientEncounters_4_11_000.Instance.Qualifying_Encounters(context); + bool? o_ = context.Operators.Exists(n_); + bool? p_ = context.Operators.And(m_, o_); + + return p_; + } + + + [CqlDeclaration("Denominator")] + public bool? Denominator(CqlContext context) + { + bool? a_ = this.Initial_Population(context); + + return a_; + } + + + [CqlDeclaration("Pregnancy or Renal Diagnosis")] + public IEnumerable Pregnancy_or_Renal_Diagnosis(CqlContext context) + { + CqlValueSet a_ = this.Pregnancy(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet c_ = this.End_Stage_Renal_Disease(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable e_ = context.Operators.Union(b_, d_); + CqlValueSet f_ = this.Kidney_Transplant_Recipient(context); + IEnumerable g_ = context.Operators.Retrieve(new RetrieveParameters(default, f_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + CqlValueSet h_ = this.Chronic_Kidney_Disease__Stage_5(context); + IEnumerable i_ = context.Operators.Retrieve(new RetrieveParameters(default, h_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-condition")); + IEnumerable j_ = context.Operators.Union(g_, i_); + IEnumerable k_ = context.Operators.Union(e_, j_); + bool? l_(Condition PregnancyESRDDiagnosis) + { + CqlInterval n_ = QICoreCommon_2_1_000.Instance.prevalenceInterval(context, PregnancyESRDDiagnosis); + CqlInterval o_ = this.Measurement_Period(context); + bool? p_ = context.Operators.Overlaps(n_, o_, default); + + return p_; + }; + IEnumerable m_ = context.Operators.Where(k_, l_); + + return m_; + } + + + [CqlDeclaration("End Stage Renal Disease Procedures")] + public IEnumerable End_Stage_Renal_Disease_Procedures(CqlContext context) + { + CqlValueSet a_ = this.Kidney_Transplant(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + CqlValueSet c_ = this.Dialysis_Services(context); + IEnumerable d_ = context.Operators.Retrieve(new RetrieveParameters(default, c_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-procedure")); + IEnumerable e_ = context.Operators.Union(b_, d_); + IEnumerable f_ = Status_1_8_000.Instance.isProcedurePerformed(context, e_); + bool? g_(Procedure ESRDProcedure) + { + DataType i_ = ESRDProcedure?.Performed; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + CqlInterval k_ = QICoreCommon_2_1_000.Instance.toInterval(context, j_); + CqlDateTime l_ = context.Operators.End(k_); + CqlInterval m_ = this.Measurement_Period(context); + CqlDateTime n_ = context.Operators.End(m_); + bool? o_ = context.Operators.SameOrBefore(l_, n_, default); + + return o_; + }; + IEnumerable h_ = context.Operators.Where(f_, g_); + + return h_; + } + + + [CqlDeclaration("End Stage Renal Disease Encounter")] + public IEnumerable End_Stage_Renal_Disease_Encounter(CqlContext context) + { + CqlValueSet a_ = this.ESRD_Monthly_Outpatient_Services(context); + IEnumerable b_ = context.Operators.Retrieve(new RetrieveParameters(default, a_, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + IEnumerable c_ = Status_1_8_000.Instance.isEncounterPerformed(context, b_); + bool? d_(Encounter ESRDEncounter) + { + Period f_ = ESRDEncounter?.Period; + CqlInterval g_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, f_); + CqlInterval h_ = QICoreCommon_2_1_000.Instance.toInterval(context, g_ as object); + CqlDateTime i_ = context.Operators.Start(h_); + CqlInterval j_ = this.Measurement_Period(context); + CqlDateTime k_ = context.Operators.End(j_); + bool? l_ = context.Operators.SameOrBefore(i_, k_, default); + + return l_; + }; + IEnumerable e_ = context.Operators.Where(c_, d_); + + return e_; + } + + + [CqlDeclaration("Denominator Exclusions")] + public bool? Denominator_Exclusions(CqlContext context) + { + bool? a_ = Hospice_6_12_000.Instance.Has_Hospice_Services(context); + IEnumerable b_ = this.Pregnancy_or_Renal_Diagnosis(context); + bool? c_ = context.Operators.Exists(b_); + bool? d_ = context.Operators.Or(a_, c_); + IEnumerable e_ = this.End_Stage_Renal_Disease_Procedures(context); + bool? f_ = context.Operators.Exists(e_); + bool? g_ = context.Operators.Or(d_, f_); + IEnumerable h_ = this.End_Stage_Renal_Disease_Encounter(context); + bool? i_ = context.Operators.Exists(h_); + bool? j_ = context.Operators.Or(g_, i_); + bool? k_ = AdvancedIllnessandFrailty_1_16_000.Instance.Is_Age_66_to_80_with_Advanced_Illness_and_Frailty_or_Is_Age_81_or_Older_with_Frailty(context); + bool? l_ = context.Operators.Or(j_, k_); + bool? m_ = AdvancedIllnessandFrailty_1_16_000.Instance.Is_Age_66_or_Older_Living_Long_Term_in_a_Nursing_Home(context); + bool? n_ = context.Operators.Or(l_, m_); + bool? o_ = PalliativeCare_1_11_000.Instance.Has_Palliative_Care_in_the_Measurement_Period(context); + bool? p_ = context.Operators.Or(n_, o_); + + return p_; + } + + + public Encounter getEncounter(CqlContext context, ResourceReference reference) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-encounter")); + bool? b_(Encounter E) + { + Id e_ = E?.IdElement; + string f_ = e_?.Value; + FhirString g_ = reference?.ReferenceElement; + string h_ = g_?.Value; + string i_ = QICoreCommon_2_1_000.Instance.getId(context, h_); + bool? j_ = context.Operators.Equal(f_, i_); + + return j_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + Encounter d_ = context.Operators.SingletonFrom(c_); + + return d_; + } + + + [CqlDeclaration("Qualifying Systolic Blood Pressure Reading")] + public IEnumerable Qualifying_Systolic_Blood_Pressure_Reading(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/StructureDefinition/bp")); + IEnumerable b_ = Status_1_8_000.Instance.isObservationBP(context, a_); + bool? c_(Observation BloodPressure) + { + ResourceReference e_ = BloodPressure?.Encounter; + Encounter f_ = this.getEncounter(context, e_); + Coding g_ = f_?.Class; + CqlCode h_ = FHIRHelpers_4_4_000.Instance.ToCode(context, g_); + string i_ = h_?.code; + string[] j_ = [ + "EMER", + "IMP", + "ACUTE", + "NONAC", + "PRENC", + "SS", + ]; + bool? k_ = context.Operators.In(i_, j_ as IEnumerable); + bool? l_ = context.Operators.Not(k_); + DataType m_ = BloodPressure?.Effective; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlDateTime o_ = QICoreCommon_2_1_000.Instance.latest(context, n_); + CqlInterval p_ = this.Measurement_Period(context); + bool? q_ = context.Operators.In(o_, p_, "day"); + bool? r_ = context.Operators.And(l_, q_); + + return r_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Qualifying Diastolic Blood Pressure Reading")] + public IEnumerable Qualifying_Diastolic_Blood_Pressure_Reading(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/StructureDefinition/bp")); + IEnumerable b_ = Status_1_8_000.Instance.isObservationBP(context, a_); + bool? c_(Observation BloodPressure) + { + ResourceReference e_ = BloodPressure?.Encounter; + Encounter f_ = this.getEncounter(context, e_); + Coding g_ = f_?.Class; + CqlCode h_ = FHIRHelpers_4_4_000.Instance.ToCode(context, g_); + string i_ = h_?.code; + string[] j_ = [ + "EMER", + "IMP", + "ACUTE", + "NONAC", + "PRENC", + "SS", + ]; + bool? k_ = context.Operators.In(i_, j_ as IEnumerable); + bool? l_ = context.Operators.Not(k_); + DataType m_ = BloodPressure?.Effective; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlDateTime o_ = QICoreCommon_2_1_000.Instance.latest(context, n_); + CqlInterval p_ = this.Measurement_Period(context); + bool? q_ = context.Operators.In(o_, p_, "day"); + bool? r_ = context.Operators.And(l_, q_); + + return r_; + }; + IEnumerable d_ = context.Operators.Where(b_, c_); + + return d_; + } + + + [CqlDeclaration("Blood Pressure Days")] + public IEnumerable Blood_Pressure_Days(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Diastolic_Blood_Pressure_Reading(context); + CqlDate b_(Observation DBPExam) + { + DataType j_ = DBPExam?.Effective; + object k_ = FHIRHelpers_4_4_000.Instance.ToValue(context, j_); + CqlDateTime l_ = QICoreCommon_2_1_000.Instance.latest(context, k_); + CqlDate m_ = context.Operators.DateFrom(l_); + + return m_; + }; + IEnumerable c_ = context.Operators.Select(a_, b_); + IEnumerable d_ = context.Operators.Distinct(c_); + IEnumerable e_ = this.Qualifying_Systolic_Blood_Pressure_Reading(context); + CqlDate f_(Observation SBPExam) + { + DataType n_ = SBPExam?.Effective; + object o_ = FHIRHelpers_4_4_000.Instance.ToValue(context, n_); + CqlDateTime p_ = QICoreCommon_2_1_000.Instance.latest(context, o_); + CqlDate q_ = context.Operators.DateFrom(p_); + + return q_; + }; + IEnumerable g_ = context.Operators.Select(e_, f_); + IEnumerable h_ = context.Operators.Distinct(g_); + IEnumerable i_ = context.Operators.Intersect(d_, h_); + + return i_; + } + + + [CqlDeclaration("Most Recent Blood Pressure Day")] + public CqlDate Most_Recent_Blood_Pressure_Day(CqlContext context) + { + IEnumerable a_ = this.Blood_Pressure_Days(context); + IEnumerable b_ = context.Operators.ListSort(a_, System.ComponentModel.ListSortDirection.Ascending); + CqlDate c_ = context.Operators.Last(b_); + + return c_; + } + + + [CqlDeclaration("Lowest Systolic Reading on Most Recent Blood Pressure Day")] + public CqlQuantity Lowest_Systolic_Reading_on_Most_Recent_Blood_Pressure_Day(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Systolic_Blood_Pressure_Reading(context); + bool? b_(Observation SBPReading) + { + DataType i_ = SBPReading?.Effective; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + CqlDateTime k_ = QICoreCommon_2_1_000.Instance.latest(context, j_); + CqlDate l_ = this.Most_Recent_Blood_Pressure_Day(context); + CqlDateTime m_ = context.Operators.ConvertDateToDateTime(l_); + bool? n_ = context.Operators.SameAs(k_, m_, "day"); + + return n_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + CqlQuantity d_(Observation SBPReading) + { + List o_ = SBPReading?.Component; + bool? p_(Observation.ComponentComponent SBPComponent) + { + CodeableConcept v_ = SBPComponent?.Code; + CqlConcept w_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, v_); + CqlCode x_ = this.Systolic_blood_pressure(context); + CqlConcept y_ = context.Operators.ConvertCodeToConcept(x_); + bool? z_ = context.Operators.Equivalent(w_, y_); + + return z_; + }; + IEnumerable q_ = context.Operators.Where((IEnumerable)o_, p_); + CqlQuantity r_(Observation.ComponentComponent SBPComponent) + { + DataType aa_ = SBPComponent?.Value; + object ab_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aa_); + + return ab_ as CqlQuantity; + }; + IEnumerable s_ = context.Operators.Select(q_, r_); + IEnumerable t_ = context.Operators.Distinct(s_); + CqlQuantity u_ = context.Operators.SingletonFrom(t_); + + return u_; + }; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + IEnumerable g_ = context.Operators.ListSort(f_, System.ComponentModel.ListSortDirection.Ascending); + CqlQuantity h_ = context.Operators.First(g_); + + return h_; + } + + + [CqlDeclaration("Has Systolic Blood Pressure Less Than 140")] + public bool? Has_Systolic_Blood_Pressure_Less_Than_140(CqlContext context) + { + CqlQuantity a_ = this.Lowest_Systolic_Reading_on_Most_Recent_Blood_Pressure_Day(context); + CqlQuantity b_ = context.Operators.Quantity(140m, "mm[Hg]"); + bool? c_ = context.Operators.Less(a_, b_); + + return c_; + } + + + [CqlDeclaration("Lowest Diastolic Reading on Most Recent Blood Pressure Day")] + public CqlQuantity Lowest_Diastolic_Reading_on_Most_Recent_Blood_Pressure_Day(CqlContext context) + { + IEnumerable a_ = this.Qualifying_Diastolic_Blood_Pressure_Reading(context); + bool? b_(Observation DBPReading) + { + DataType i_ = DBPReading?.Effective; + object j_ = FHIRHelpers_4_4_000.Instance.ToValue(context, i_); + CqlDateTime k_ = QICoreCommon_2_1_000.Instance.latest(context, j_); + CqlDate l_ = this.Most_Recent_Blood_Pressure_Day(context); + CqlDateTime m_ = context.Operators.ConvertDateToDateTime(l_); + bool? n_ = context.Operators.SameAs(k_, m_, "day"); + + return n_; + }; + IEnumerable c_ = context.Operators.Where(a_, b_); + CqlQuantity d_(Observation DBPReading) + { + List o_ = DBPReading?.Component; + bool? p_(Observation.ComponentComponent DBPComponent) + { + CodeableConcept v_ = DBPComponent?.Code; + CqlConcept w_ = FHIRHelpers_4_4_000.Instance.ToConcept(context, v_); + CqlCode x_ = this.Diastolic_blood_pressure(context); + CqlConcept y_ = context.Operators.ConvertCodeToConcept(x_); + bool? z_ = context.Operators.Equivalent(w_, y_); + + return z_; + }; + IEnumerable q_ = context.Operators.Where((IEnumerable)o_, p_); + CqlQuantity r_(Observation.ComponentComponent DBPComponent) + { + DataType aa_ = DBPComponent?.Value; + object ab_ = FHIRHelpers_4_4_000.Instance.ToValue(context, aa_); + + return ab_ as CqlQuantity; + }; + IEnumerable s_ = context.Operators.Select(q_, r_); + IEnumerable t_ = context.Operators.Distinct(s_); + CqlQuantity u_ = context.Operators.SingletonFrom(t_); + + return u_; + }; + IEnumerable e_ = context.Operators.Select(c_, d_); + IEnumerable f_ = context.Operators.Distinct(e_); + IEnumerable g_ = context.Operators.ListSort(f_, System.ComponentModel.ListSortDirection.Ascending); + CqlQuantity h_ = context.Operators.First(g_); + + return h_; + } + + + [CqlDeclaration("Has Diastolic Blood Pressure Less Than 90")] + public bool? Has_Diastolic_Blood_Pressure_Less_Than_90(CqlContext context) + { + CqlQuantity a_ = this.Lowest_Diastolic_Reading_on_Most_Recent_Blood_Pressure_Day(context); + CqlQuantity b_ = context.Operators.Quantity(90m, "mm[Hg]"); + bool? c_ = context.Operators.Less(a_, b_); + + return c_; + } + + + [CqlDeclaration("Numerator")] + public bool? Numerator(CqlContext context) + { + bool? a_ = this.Has_Systolic_Blood_Pressure_Less_Than_140(context); + bool? b_ = this.Has_Diastolic_Blood_Pressure_Less_Than_90(context); + bool? c_ = context.Operators.And(a_, b_); + + return c_; + } + + + [CqlDeclaration("SDE Ethnicity")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Ethnicity(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Ethnicity(context); + + return a_; + } + + + [CqlDeclaration("SDE Payer")] + public IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> SDE_Payer(CqlContext context) + { + IEnumerable<(CqlTupleMetadata, CqlConcept code, CqlInterval period)?> a_ = SupplementalDataElements_3_5_000.Instance.SDE_Payer(context); + + return a_; + } + + + [CqlDeclaration("SDE Race")] + public (CqlTupleMetadata, IEnumerable codes, string display)? SDE_Race(CqlContext context) + { + (CqlTupleMetadata, IEnumerable codes, string display)? a_ = SupplementalDataElements_3_5_000.Instance.SDE_Race(context); + + return a_; + } + + + [CqlDeclaration("SDE Sex")] + public CqlCode SDE_Sex(CqlContext context) + { + CqlCode a_ = SupplementalDataElements_3_5_000.Instance.SDE_Sex(context); + + return a_; + } + + + #endregion Definition Methods + +} diff --git a/Cql/CqlSdkPrototype/generated/CMS/CSharp/CumulativeMedicationDuration-4.1.000.g.cs b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CumulativeMedicationDuration-4.1.000.g.cs new file mode 100644 index 000000000..4b311717f --- /dev/null +++ b/Cql/CqlSdkPrototype/generated/CMS/CSharp/CumulativeMedicationDuration-4.1.000.g.cs @@ -0,0 +1,2603 @@ +using System; +using System.Linq; +using System.Collections.Generic; +using Hl7.Cql.Runtime; +using Hl7.Cql.Primitives; +using Hl7.Cql.Abstractions; +using Hl7.Cql.ValueSets; +using Hl7.Cql.Iso8601; +using System.Reflection; +using Hl7.Cql.Operators; +using Hl7.Fhir.Model; +using Range = Hl7.Fhir.Model.Range; +using Task = Hl7.Fhir.Model.Task; + +[System.CodeDom.Compiler.GeneratedCode(".NET Code Generation", "2.0.11.0")] +[CqlLibrary("CumulativeMedicationDuration", "4.1.000")] +public partial class CumulativeMedicationDuration_4_1_000 : ILibrary, ISingleton +{ + private CumulativeMedicationDuration_4_1_000() {} + + public static CumulativeMedicationDuration_4_1_000 Instance { get; } = new(); + + #region ILibrary Implementation + + public string Name => "CumulativeMedicationDuration"; + public string Version => "4.1.000"; + public ILibrary[] Dependencies => [FHIRHelpers_4_4_000.Instance, QICoreCommon_2_1_000.Instance]; + + #endregion ILibrary Implementation + + #region Definition Methods + + [CqlDeclaration("HS")] + public CqlCode HS(CqlContext context) => + new CqlCode("HS", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("WAKE")] + public CqlCode WAKE(CqlContext context) => + new CqlCode("WAKE", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("C")] + public CqlCode C(CqlContext context) => + new CqlCode("C", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("CM")] + public CqlCode CM(CqlContext context) => + new CqlCode("CM", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("CD")] + public CqlCode CD(CqlContext context) => + new CqlCode("CD", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("CV")] + public CqlCode CV(CqlContext context) => + new CqlCode("CV", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("AC")] + public CqlCode AC(CqlContext context) => + new CqlCode("AC", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("ACM")] + public CqlCode ACM(CqlContext context) => + new CqlCode("ACM", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("ACD")] + public CqlCode ACD(CqlContext context) => + new CqlCode("ACD", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("ACV")] + public CqlCode ACV(CqlContext context) => + new CqlCode("ACV", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("PC")] + public CqlCode PC(CqlContext context) => + new CqlCode("PC", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("PCM")] + public CqlCode PCM(CqlContext context) => + new CqlCode("PCM", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("PCD")] + public CqlCode PCD(CqlContext context) => + new CqlCode("PCD", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("PCV")] + public CqlCode PCV(CqlContext context) => + new CqlCode("PCV", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default); + + + [CqlDeclaration("MORN")] + public CqlCode MORN(CqlContext context) => + new CqlCode("MORN", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("MORN.early")] + public CqlCode MORN_early(CqlContext context) => + new CqlCode("MORN.early", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("MORN.late")] + public CqlCode MORN_late(CqlContext context) => + new CqlCode("MORN.late", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("NOON")] + public CqlCode NOON(CqlContext context) => + new CqlCode("NOON", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("AFT")] + public CqlCode AFT(CqlContext context) => + new CqlCode("AFT", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("AFT.early")] + public CqlCode AFT_early(CqlContext context) => + new CqlCode("AFT.early", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("AFT.late")] + public CqlCode AFT_late(CqlContext context) => + new CqlCode("AFT.late", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("EVE")] + public CqlCode EVE(CqlContext context) => + new CqlCode("EVE", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("EVE.early")] + public CqlCode EVE_early(CqlContext context) => + new CqlCode("EVE.early", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("EVE.late")] + public CqlCode EVE_late(CqlContext context) => + new CqlCode("EVE.late", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("NIGHT")] + public CqlCode NIGHT(CqlContext context) => + new CqlCode("NIGHT", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("PHS")] + public CqlCode PHS(CqlContext context) => + new CqlCode("PHS", "http://hl7.org/fhir/event-timing", default, default); + + + [CqlDeclaration("Every eight hours (qualifier value)")] + public CqlCode Every_eight_hours__qualifier_value_(CqlContext context) => + new CqlCode("307469008", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every eight to twelve hours (qualifier value)")] + public CqlCode Every_eight_to_twelve_hours__qualifier_value_(CqlContext context) => + new CqlCode("396140003", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every forty eight hours (qualifier value)")] + public CqlCode Every_forty_eight_hours__qualifier_value_(CqlContext context) => + new CqlCode("396131002", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every forty hours (qualifier value)")] + public CqlCode Every_forty_hours__qualifier_value_(CqlContext context) => + new CqlCode("396130001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every four hours (qualifier value)")] + public CqlCode Every_four_hours__qualifier_value_(CqlContext context) => + new CqlCode("225756002", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every seventy two hours (qualifier value)")] + public CqlCode Every_seventy_two_hours__qualifier_value_(CqlContext context) => + new CqlCode("396143001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every six hours (qualifier value)")] + public CqlCode Every_six_hours__qualifier_value_(CqlContext context) => + new CqlCode("307468000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every six to eight hours (qualifier value)")] + public CqlCode Every_six_to_eight_hours__qualifier_value_(CqlContext context) => + new CqlCode("396139000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every thirty six hours (qualifier value)")] + public CqlCode Every_thirty_six_hours__qualifier_value_(CqlContext context) => + new CqlCode("396126004", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every three to four hours (qualifier value)")] + public CqlCode Every_three_to_four_hours__qualifier_value_(CqlContext context) => + new CqlCode("225754004", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every three to six hours (qualifier value)")] + public CqlCode Every_three_to_six_hours__qualifier_value_(CqlContext context) => + new CqlCode("396127008", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every twelve hours (qualifier value)")] + public CqlCode Every_twelve_hours__qualifier_value_(CqlContext context) => + new CqlCode("307470009", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every twenty four hours (qualifier value)")] + public CqlCode Every_twenty_four_hours__qualifier_value_(CqlContext context) => + new CqlCode("396125000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Every two to four hours (qualifier value)")] + public CqlCode Every_two_to_four_hours__qualifier_value_(CqlContext context) => + new CqlCode("225752000", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Four times daily (qualifier value)")] + public CqlCode Four_times_daily__qualifier_value_(CqlContext context) => + new CqlCode("307439001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Once daily (qualifier value)")] + public CqlCode Once_daily__qualifier_value_(CqlContext context) => + new CqlCode("229797004", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("One to four times a day (qualifier value)")] + public CqlCode One_to_four_times_a_day__qualifier_value_(CqlContext context) => + new CqlCode("396109005", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("One to three times a day (qualifier value)")] + public CqlCode One_to_three_times_a_day__qualifier_value_(CqlContext context) => + new CqlCode("396108002", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("One to two times a day (qualifier value)")] + public CqlCode One_to_two_times_a_day__qualifier_value_(CqlContext context) => + new CqlCode("396107007", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Three times daily (qualifier value)")] + public CqlCode Three_times_daily__qualifier_value_(CqlContext context) => + new CqlCode("229798009", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Twice a day (qualifier value)")] + public CqlCode Twice_a_day__qualifier_value_(CqlContext context) => + new CqlCode("229799001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("Two to four times a day (qualifier value)")] + public CqlCode Two_to_four_times_a_day__qualifier_value_(CqlContext context) => + new CqlCode("396111001", "http://snomed.info/sct", default, default); + + + [CqlDeclaration("V3TimingEvent")] + public CqlCode[] V3TimingEvent(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("HS", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("WAKE", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("C", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("CM", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("CD", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("CV", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("AC", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("ACM", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("ACD", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("ACV", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("PC", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("PCM", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("PCD", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + new CqlCode("PCV", "http://terminology.hl7.org/CodeSystem/v3-TimingEvent", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("EventTiming")] + public CqlCode[] EventTiming(CqlContext context) + { + CqlCode[] a_ = [ + new CqlCode("MORN", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("MORN.early", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("MORN.late", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("NOON", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("AFT", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("AFT.early", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("AFT.late", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("EVE", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("EVE.early", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("EVE.late", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("NIGHT", "http://hl7.org/fhir/event-timing", default, default), + new CqlCode("PHS", "http://hl7.org/fhir/event-timing", default, default), + ]; + + return a_; + } + + + [CqlDeclaration("ErrorLevel")] + public string ErrorLevel(CqlContext context) + { + object a_ = context.ResolveParameter("CumulativeMedicationDuration-4.1.000", "ErrorLevel", "Warning"); + + return (string)a_; + } + + + [CqlDeclaration("Patient")] + public Patient Patient(CqlContext context) + { + IEnumerable a_ = context.Operators.Retrieve(new RetrieveParameters(default, default, default, "http://hl7.org/fhir/us/qicore/StructureDefinition/qicore-patient")); + Patient b_ = context.Operators.SingletonFrom(a_); + + return b_; + } + + + public decimal? ToDaily(CqlContext context, int? frequency, CqlQuantity period) + { + decimal? a_() + { + bool b_() + { + string w_ = period?.unit; + bool? x_ = context.Operators.Equal(w_, "h"); + + return x_ ?? false; + }; + bool c_() + { + string y_ = period?.unit; + bool? z_ = context.Operators.Equal(y_, "min"); + + return z_ ?? false; + }; + bool d_() + { + string aa_ = period?.unit; + bool? ab_ = context.Operators.Equal(aa_, "s"); + + return ab_ ?? false; + }; + bool e_() + { + string ac_ = period?.unit; + bool? ad_ = context.Operators.Equal(ac_, "d"); + + return ad_ ?? false; + }; + bool f_() + { + string ae_ = period?.unit; + bool? af_ = context.Operators.Equal(ae_, "wk"); + + return af_ ?? false; + }; + bool g_() + { + string ag_ = period?.unit; + bool? ah_ = context.Operators.Equal(ag_, "mo"); + + return ah_ ?? false; + }; + bool h_() + { + string ai_ = period?.unit; + bool? aj_ = context.Operators.Equal(ai_, "a"); + + return aj_ ?? false; + }; + bool i_() + { + string ak_ = period?.unit; + bool? al_ = context.Operators.Equal(ak_, "hour"); + + return al_ ?? false; + }; + bool j_() + { + string am_ = period?.unit; + bool? an_ = context.Operators.Equal(am_, "minute"); + + return an_ ?? false; + }; + bool k_() + { + string ao_ = period?.unit; + bool? ap_ = context.Operators.Equal(ao_, "second"); + + return ap_ ?? false; + }; + bool l_() + { + string aq_ = period?.unit; + bool? ar_ = context.Operators.Equal(aq_, "day"); + + return ar_ ?? false; + }; + bool m_() + { + string as_ = period?.unit; + bool? at_ = context.Operators.Equal(as_, "week"); + + return at_ ?? false; + }; + bool n_() + { + string au_ = period?.unit; + bool? av_ = context.Operators.Equal(au_, "month"); + + return av_ ?? false; + }; + bool o_() + { + string aw_ = period?.unit; + bool? ax_ = context.Operators.Equal(aw_, "year"); + + return ax_ ?? false; + }; + bool p_() + { + string ay_ = period?.unit; + bool? az_ = context.Operators.Equal(ay_, "hours"); + + return az_ ?? false; + }; + bool q_() + { + string ba_ = period?.unit; + bool? bb_ = context.Operators.Equal(ba_, "minutes"); + + return bb_ ?? false; + }; + bool r_() + { + string bc_ = period?.unit; + bool? bd_ = context.Operators.Equal(bc_, "seconds"); + + return bd_ ?? false; + }; + bool s_() + { + string be_ = period?.unit; + bool? bf_ = context.Operators.Equal(be_, "days"); + + return bf_ ?? false; + }; + bool t_() + { + string bg_ = period?.unit; + bool? bh_ = context.Operators.Equal(bg_, "weeks"); + + return bh_ ?? false; + }; + bool u_() + { + string bi_ = period?.unit; + bool? bj_ = context.Operators.Equal(bi_, "months"); + + return bj_ ?? false; + }; + bool v_() + { + string bk_ = period?.unit; + bool? bl_ = context.Operators.Equal(bk_, "years"); + + return bl_ ?? false; + }; + if (b_()) + { + decimal? bm_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? bn_ = period?.value; + decimal? bo_ = context.Operators.Divide(24.0m, bn_); + decimal? bp_ = context.Operators.Multiply(bm_, bo_); + + return bp_; + } + else if (c_()) + { + decimal? bq_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? br_ = period?.value; + decimal? bs_ = context.Operators.Divide(24.0m, br_); + decimal? bt_ = context.Operators.Multiply(bq_, bs_); + decimal? bu_ = context.Operators.ConvertIntegerToDecimal(60); + decimal? bv_ = context.Operators.Multiply(bt_, bu_); + + return bv_; + } + else if (d_()) + { + decimal? bw_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? bx_ = period?.value; + decimal? by_ = context.Operators.Divide(24.0m, bx_); + decimal? bz_ = context.Operators.Multiply(bw_, by_); + decimal? ca_ = context.Operators.ConvertIntegerToDecimal(60); + decimal? cb_ = context.Operators.Multiply(bz_, ca_); + decimal? cd_ = context.Operators.Multiply(cb_, ca_); + + return cd_; + } + else if (e_()) + { + decimal? ce_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? cf_ = period?.value; + decimal? cg_ = context.Operators.Divide(24.0m, cf_); + decimal? ch_ = context.Operators.Multiply(ce_, cg_); + decimal? ci_ = context.Operators.ConvertIntegerToDecimal(24); + decimal? cj_ = context.Operators.Divide(ch_, ci_); + + return cj_; + } + else if (f_()) + { + decimal? ck_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? cl_ = period?.value; + decimal? cm_ = context.Operators.Divide(24.0m, cl_); + decimal? cn_ = context.Operators.Multiply(ck_, cm_); + int? co_ = context.Operators.Multiply(24, 7); + decimal? cp_ = context.Operators.ConvertIntegerToDecimal(co_); + decimal? cq_ = context.Operators.Divide(cn_, cp_); + + return cq_; + } + else if (g_()) + { + decimal? cr_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? cs_ = period?.value; + decimal? ct_ = context.Operators.Divide(24.0m, cs_); + decimal? cu_ = context.Operators.Multiply(cr_, ct_); + int? cv_ = context.Operators.Multiply(24, 30); + decimal? cw_ = context.Operators.ConvertIntegerToDecimal(cv_); + decimal? cx_ = context.Operators.Divide(cu_, cw_); + + return cx_; + } + else if (h_()) + { + decimal? cy_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? cz_ = period?.value; + decimal? da_ = context.Operators.Divide(24.0m, cz_); + decimal? db_ = context.Operators.Multiply(cy_, da_); + int? dc_ = context.Operators.Multiply(24, 365); + decimal? dd_ = context.Operators.ConvertIntegerToDecimal(dc_); + decimal? de_ = context.Operators.Divide(db_, dd_); + + return de_; + } + else if (i_()) + { + decimal? df_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? dg_ = period?.value; + decimal? dh_ = context.Operators.Divide(24.0m, dg_); + decimal? di_ = context.Operators.Multiply(df_, dh_); + + return di_; + } + else if (j_()) + { + decimal? dj_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? dk_ = period?.value; + decimal? dl_ = context.Operators.Divide(24.0m, dk_); + decimal? dm_ = context.Operators.Multiply(dj_, dl_); + decimal? dn_ = context.Operators.ConvertIntegerToDecimal(60); + decimal? do_ = context.Operators.Multiply(dm_, dn_); + + return do_; + } + else if (k_()) + { + decimal? dp_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? dq_ = period?.value; + decimal? dr_ = context.Operators.Divide(24.0m, dq_); + decimal? ds_ = context.Operators.Multiply(dp_, dr_); + decimal? dt_ = context.Operators.ConvertIntegerToDecimal(60); + decimal? du_ = context.Operators.Multiply(ds_, dt_); + decimal? dw_ = context.Operators.Multiply(du_, dt_); + + return dw_; + } + else if (l_()) + { + decimal? dx_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? dy_ = period?.value; + decimal? dz_ = context.Operators.Divide(24.0m, dy_); + decimal? ea_ = context.Operators.Multiply(dx_, dz_); + decimal? eb_ = context.Operators.ConvertIntegerToDecimal(24); + decimal? ec_ = context.Operators.Divide(ea_, eb_); + + return ec_; + } + else if (m_()) + { + decimal? ed_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? ee_ = period?.value; + decimal? ef_ = context.Operators.Divide(24.0m, ee_); + decimal? eg_ = context.Operators.Multiply(ed_, ef_); + int? eh_ = context.Operators.Multiply(24, 7); + decimal? ei_ = context.Operators.ConvertIntegerToDecimal(eh_); + decimal? ej_ = context.Operators.Divide(eg_, ei_); + + return ej_; + } + else if (n_()) + { + decimal? ek_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? el_ = period?.value; + decimal? em_ = context.Operators.Divide(24.0m, el_); + decimal? en_ = context.Operators.Multiply(ek_, em_); + int? eo_ = context.Operators.Multiply(24, 30); + decimal? ep_ = context.Operators.ConvertIntegerToDecimal(eo_); + decimal? eq_ = context.Operators.Divide(en_, ep_); + + return eq_; + } + else if (o_()) + { + decimal? er_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? es_ = period?.value; + decimal? et_ = context.Operators.Divide(24.0m, es_); + decimal? eu_ = context.Operators.Multiply(er_, et_); + int? ev_ = context.Operators.Multiply(24, 365); + decimal? ew_ = context.Operators.ConvertIntegerToDecimal(ev_); + decimal? ex_ = context.Operators.Divide(eu_, ew_); + + return ex_; + } + else if (p_()) + { + decimal? ey_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? ez_ = period?.value; + decimal? fa_ = context.Operators.Divide(24.0m, ez_); + decimal? fb_ = context.Operators.Multiply(ey_, fa_); + + return fb_; + } + else if (q_()) + { + decimal? fc_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? fd_ = period?.value; + decimal? fe_ = context.Operators.Divide(24.0m, fd_); + decimal? ff_ = context.Operators.Multiply(fc_, fe_); + decimal? fg_ = context.Operators.ConvertIntegerToDecimal(60); + decimal? fh_ = context.Operators.Multiply(ff_, fg_); + + return fh_; + } + else if (r_()) + { + decimal? fi_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? fj_ = period?.value; + decimal? fk_ = context.Operators.Divide(24.0m, fj_); + decimal? fl_ = context.Operators.Multiply(fi_, fk_); + decimal? fm_ = context.Operators.ConvertIntegerToDecimal(60); + decimal? fn_ = context.Operators.Multiply(fl_, fm_); + decimal? fp_ = context.Operators.Multiply(fn_, fm_); + + return fp_; + } + else if (s_()) + { + decimal? fq_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? fr_ = period?.value; + decimal? fs_ = context.Operators.Divide(24.0m, fr_); + decimal? ft_ = context.Operators.Multiply(fq_, fs_); + decimal? fu_ = context.Operators.ConvertIntegerToDecimal(24); + decimal? fv_ = context.Operators.Divide(ft_, fu_); + + return fv_; + } + else if (t_()) + { + decimal? fw_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? fx_ = period?.value; + decimal? fy_ = context.Operators.Divide(24.0m, fx_); + decimal? fz_ = context.Operators.Multiply(fw_, fy_); + int? ga_ = context.Operators.Multiply(24, 7); + decimal? gb_ = context.Operators.ConvertIntegerToDecimal(ga_); + decimal? gc_ = context.Operators.Divide(fz_, gb_); + + return gc_; + } + else if (u_()) + { + decimal? gd_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? ge_ = period?.value; + decimal? gf_ = context.Operators.Divide(24.0m, ge_); + decimal? gg_ = context.Operators.Multiply(gd_, gf_); + int? gh_ = context.Operators.Multiply(24, 30); + decimal? gi_ = context.Operators.ConvertIntegerToDecimal(gh_); + decimal? gj_ = context.Operators.Divide(gg_, gi_); + + return gj_; + } + else if (v_()) + { + decimal? gk_ = context.Operators.ConvertIntegerToDecimal(frequency); + decimal? gl_ = period?.value; + decimal? gm_ = context.Operators.Divide(24.0m, gl_); + decimal? gn_ = context.Operators.Multiply(gk_, gm_); + int? go_ = context.Operators.Multiply(24, 365); + decimal? gp_ = context.Operators.ConvertIntegerToDecimal(go_); + decimal? gq_ = context.Operators.Divide(gn_, gp_); + + return gq_; + } + else + { + string gr_ = this.ErrorLevel(context); + string gs_ = period?.unit; + string gt_ = context.Operators.Concatenate("Unknown unit ", gs_ ?? ""); + object gu_ = context.Operators.Message(null, "CMDLogic.ToDaily.UnknownUnit", gr_, gt_); + + return gu_ as decimal?; + } + }; + + return a_(); + } + + + public decimal? ToDaily(CqlContext context, CqlCode frequency) + { + decimal? a_() + { + bool b_() + { + CqlCode aw_ = this.HS(context); + bool? ax_ = context.Operators.Equivalent(frequency, aw_); + + return ax_ ?? false; + }; + bool c_() + { + CqlCode ay_ = this.WAKE(context); + bool? az_ = context.Operators.Equivalent(frequency, ay_); + + return az_ ?? false; + }; + bool d_() + { + CqlCode ba_ = this.C(context); + bool? bb_ = context.Operators.Equivalent(frequency, ba_); + + return bb_ ?? false; + }; + bool e_() + { + CqlCode bc_ = this.CM(context); + bool? bd_ = context.Operators.Equivalent(frequency, bc_); + + return bd_ ?? false; + }; + bool f_() + { + CqlCode be_ = this.CD(context); + bool? bf_ = context.Operators.Equivalent(frequency, be_); + + return bf_ ?? false; + }; + bool g_() + { + CqlCode bg_ = this.CV(context); + bool? bh_ = context.Operators.Equivalent(frequency, bg_); + + return bh_ ?? false; + }; + bool h_() + { + CqlCode bi_ = this.AC(context); + bool? bj_ = context.Operators.Equivalent(frequency, bi_); + + return bj_ ?? false; + }; + bool i_() + { + CqlCode bk_ = this.ACM(context); + bool? bl_ = context.Operators.Equivalent(frequency, bk_); + + return bl_ ?? false; + }; + bool j_() + { + CqlCode bm_ = this.ACD(context); + bool? bn_ = context.Operators.Equivalent(frequency, bm_); + + return bn_ ?? false; + }; + bool k_() + { + CqlCode bo_ = this.ACV(context); + bool? bp_ = context.Operators.Equivalent(frequency, bo_); + + return bp_ ?? false; + }; + bool l_() + { + CqlCode bq_ = this.PC(context); + bool? br_ = context.Operators.Equivalent(frequency, bq_); + + return br_ ?? false; + }; + bool m_() + { + CqlCode bs_ = this.PCM(context); + bool? bt_ = context.Operators.Equivalent(frequency, bs_); + + return bt_ ?? false; + }; + bool n_() + { + CqlCode bu_ = this.PCD(context); + bool? bv_ = context.Operators.Equivalent(frequency, bu_); + + return bv_ ?? false; + }; + bool o_() + { + CqlCode bw_ = this.PCV(context); + bool? bx_ = context.Operators.Equivalent(frequency, bw_); + + return bx_ ?? false; + }; + bool p_() + { + CqlCode by_ = this.MORN(context); + bool? bz_ = context.Operators.Equivalent(frequency, by_); + + return bz_ ?? false; + }; + bool q_() + { + CqlCode ca_ = this.MORN_early(context); + bool? cb_ = context.Operators.Equivalent(frequency, ca_); + + return cb_ ?? false; + }; + bool r_() + { + CqlCode cc_ = this.MORN_late(context); + bool? cd_ = context.Operators.Equivalent(frequency, cc_); + + return cd_ ?? false; + }; + bool s_() + { + CqlCode ce_ = this.NOON(context); + bool? cf_ = context.Operators.Equivalent(frequency, ce_); + + return cf_ ?? false; + }; + bool t_() + { + CqlCode cg_ = this.AFT(context); + bool? ch_ = context.Operators.Equivalent(frequency, cg_); + + return ch_ ?? false; + }; + bool u_() + { + CqlCode ci_ = this.AFT_early(context); + bool? cj_ = context.Operators.Equivalent(frequency, ci_); + + return cj_ ?? false; + }; + bool v_() + { + CqlCode ck_ = this.AFT_late(context); + bool? cl_ = context.Operators.Equivalent(frequency, ck_); + + return cl_ ?? false; + }; + bool w_() + { + CqlCode cm_ = this.EVE(context); + bool? cn_ = context.Operators.Equivalent(frequency, cm_); + + return cn_ ?? false; + }; + bool x_() + { + CqlCode co_ = this.EVE_early(context); + bool? cp_ = context.Operators.Equivalent(frequency, co_); + + return cp_ ?? false; + }; + bool y_() + { + CqlCode cq_ = this.EVE_late(context); + bool? cr_ = context.Operators.Equivalent(frequency, cq_); + + return cr_ ?? false; + }; + bool z_() + { + CqlCode cs_ = this.NIGHT(context); + bool? ct_ = context.Operators.Equivalent(frequency, cs_); + + return ct_ ?? false; + }; + bool aa_() + { + CqlCode cu_ = this.PHS(context); + bool? cv_ = context.Operators.Equivalent(frequency, cu_); + + return cv_ ?? false; + }; + bool ab_() + { + CqlCode cw_ = this.Once_daily__qualifier_value_(context); + bool? cx_ = context.Operators.Equivalent(frequency, cw_); + + return cx_ ?? false; + }; + bool ac_() + { + CqlCode cy_ = this.Twice_a_day__qualifier_value_(context); + bool? cz_ = context.Operators.Equivalent(frequency, cy_); + + return cz_ ?? false; + }; + bool ad_() + { + CqlCode da_ = this.Three_times_daily__qualifier_value_(context); + bool? db_ = context.Operators.Equivalent(frequency, da_); + + return db_ ?? false; + }; + bool ae_() + { + CqlCode dc_ = this.Four_times_daily__qualifier_value_(context); + bool? dd_ = context.Operators.Equivalent(frequency, dc_); + + return dd_ ?? false; + }; + bool af_() + { + CqlCode de_ = this.Every_twenty_four_hours__qualifier_value_(context); + bool? df_ = context.Operators.Equivalent(frequency, de_); + + return df_ ?? false; + }; + bool ag_() + { + CqlCode dg_ = this.Every_twelve_hours__qualifier_value_(context); + bool? dh_ = context.Operators.Equivalent(frequency, dg_); + + return dh_ ?? false; + }; + bool ah_() + { + CqlCode di_ = this.Every_thirty_six_hours__qualifier_value_(context); + bool? dj_ = context.Operators.Equivalent(frequency, di_); + + return dj_ ?? false; + }; + bool ai_() + { + CqlCode dk_ = this.Every_eight_hours__qualifier_value_(context); + bool? dl_ = context.Operators.Equivalent(frequency, dk_); + + return dl_ ?? false; + }; + bool aj_() + { + CqlCode dm_ = this.Every_four_hours__qualifier_value_(context); + bool? dn_ = context.Operators.Equivalent(frequency, dm_); + + return dn_ ?? false; + }; + bool ak_() + { + CqlCode do_ = this.Every_six_hours__qualifier_value_(context); + bool? dp_ = context.Operators.Equivalent(frequency, do_); + + return dp_ ?? false; + }; + bool al_() + { + CqlCode dq_ = this.Every_seventy_two_hours__qualifier_value_(context); + bool? dr_ = context.Operators.Equivalent(frequency, dq_); + + return dr_ ?? false; + }; + bool am_() + { + CqlCode ds_ = this.Every_forty_eight_hours__qualifier_value_(context); + bool? dt_ = context.Operators.Equivalent(frequency, ds_); + + return dt_ ?? false; + }; + bool an_() + { + CqlCode du_ = this.Every_eight_to_twelve_hours__qualifier_value_(context); + bool? dv_ = context.Operators.Equivalent(frequency, du_); + + return dv_ ?? false; + }; + bool ao_() + { + CqlCode dw_ = this.Every_six_to_eight_hours__qualifier_value_(context); + bool? dx_ = context.Operators.Equivalent(frequency, dw_); + + return dx_ ?? false; + }; + bool ap_() + { + CqlCode dy_ = this.Every_three_to_four_hours__qualifier_value_(context); + bool? dz_ = context.Operators.Equivalent(frequency, dy_); + + return dz_ ?? false; + }; + bool aq_() + { + CqlCode ea_ = this.Every_three_to_six_hours__qualifier_value_(context); + bool? eb_ = context.Operators.Equivalent(frequency, ea_); + + return eb_ ?? false; + }; + bool ar_() + { + CqlCode ec_ = this.Every_two_to_four_hours__qualifier_value_(context); + bool? ed_ = context.Operators.Equivalent(frequency, ec_); + + return ed_ ?? false; + }; + bool as_() + { + CqlCode ee_ = this.One_to_four_times_a_day__qualifier_value_(context); + bool? ef_ = context.Operators.Equivalent(frequency, ee_); + + return ef_ ?? false; + }; + bool at_() + { + CqlCode eg_ = this.One_to_three_times_a_day__qualifier_value_(context); + bool? eh_ = context.Operators.Equivalent(frequency, eg_); + + return eh_ ?? false; + }; + bool au_() + { + CqlCode ei_ = this.One_to_two_times_a_day__qualifier_value_(context); + bool? ej_ = context.Operators.Equivalent(frequency, ei_); + + return ej_ ?? false; + }; + bool av_() + { + CqlCode ek_ = this.Two_to_four_times_a_day__qualifier_value_(context); + bool? el_ = context.Operators.Equivalent(frequency, ek_); + + return el_ ?? false; + }; + if (b_()) + { + decimal? em_ = context.Operators.ConvertIntegerToDecimal(1); + + return em_; + } + else if (c_()) + { + decimal? en_ = context.Operators.ConvertIntegerToDecimal(1); + + return en_; + } + else if (d_()) + { + decimal? eo_ = context.Operators.ConvertIntegerToDecimal(3); + + return eo_; + } + else if (e_()) + { + decimal? ep_ = context.Operators.ConvertIntegerToDecimal(1); + + return ep_; + } + else if (f_()) + { + decimal? eq_ = context.Operators.ConvertIntegerToDecimal(1); + + return eq_; + } + else if (g_()) + { + decimal? er_ = context.Operators.ConvertIntegerToDecimal(1); + + return er_; + } + else if (h_()) + { + decimal? es_ = context.Operators.ConvertIntegerToDecimal(3); + + return es_; + } + else if (i_()) + { + decimal? et_ = context.Operators.ConvertIntegerToDecimal(1); + + return et_; + } + else if (j_()) + { + decimal? eu_ = context.Operators.ConvertIntegerToDecimal(1); + + return eu_; + } + else if (k_()) + { + decimal? ev_ = context.Operators.ConvertIntegerToDecimal(1); + + return ev_; + } + else if (l_()) + { + decimal? ew_ = context.Operators.ConvertIntegerToDecimal(3); + + return ew_; + } + else if (m_()) + { + decimal? ex_ = context.Operators.ConvertIntegerToDecimal(1); + + return ex_; + } + else if (n_()) + { + decimal? ey_ = context.Operators.ConvertIntegerToDecimal(1); + + return ey_; + } + else if (o_()) + { + decimal? ez_ = context.Operators.ConvertIntegerToDecimal(1); + + return ez_; + } + else if (p_()) + { + decimal? fa_ = context.Operators.ConvertIntegerToDecimal(1); + + return fa_; + } + else if (q_()) + { + decimal? fb_ = context.Operators.ConvertIntegerToDecimal(1); + + return fb_; + } + else if (r_()) + { + decimal? fc_ = context.Operators.ConvertIntegerToDecimal(1); + + return fc_; + } + else if (s_()) + { + decimal? fd_ = context.Operators.ConvertIntegerToDecimal(1); + + return fd_; + } + else if (t_()) + { + decimal? fe_ = context.Operators.ConvertIntegerToDecimal(1); + + return fe_; + } + else if (u_()) + { + decimal? ff_ = context.Operators.ConvertIntegerToDecimal(1); + + return ff_; + } + else if (v_()) + { + decimal? fg_ = context.Operators.ConvertIntegerToDecimal(1); + + return fg_; + } + else if (w_()) + { + decimal? fh_ = context.Operators.ConvertIntegerToDecimal(1); + + return fh_; + } + else if (x_()) + { + decimal? fi_ = context.Operators.ConvertIntegerToDecimal(1); + + return fi_; + } + else if (y_()) + { + decimal? fj_ = context.Operators.ConvertIntegerToDecimal(1); + + return fj_; + } + else if (z_()) + { + decimal? fk_ = context.Operators.ConvertIntegerToDecimal(1); + + return fk_; + } + else if (aa_()) + { + decimal? fl_ = context.Operators.ConvertIntegerToDecimal(1); + + return fl_; + } + else if (ab_()) + { + return 1.0m; + } + else if (ac_()) + { + return 2.0m; + } + else if (ad_()) + { + return 3.0m; + } + else if (ae_()) + { + return 4.0m; + } + else if (af_()) + { + return 1.0m; + } + else if (ag_()) + { + return 2.0m; + } + else if (ah_()) + { + return 0.67m; + } + else if (ai_()) + { + return 3.0m; + } + else if (aj_()) + { + return 6.0m; + } + else if (ak_()) + { + return 4.0m; + } + else if (al_()) + { + return 0.33m; + } + else if (am_()) + { + return 0.5m; + } + else if (an_()) + { + return 3.0m; + } + else if (ao_()) + { + return 4.0m; + } + else if (ap_()) + { + return 8.0m; + } + else if (aq_()) + { + return 8.0m; + } + else if (ar_()) + { + return 12.0m; + } + else if (as_()) + { + return 4.0m; + } + else if (at_()) + { + return 3.0m; + } + else if (au_()) + { + return 2.0m; + } + else if (av_()) + { + return 4.0m; + } + else + { + string fm_ = this.ErrorLevel(context); + string fn_ = frequency?.code; + string fo_ = context.Operators.Concatenate("Unknown frequency code ", fn_ ?? ""); + object fp_ = context.Operators.Message(null, "CMDLogic.ToDaily.UnknownFrequencyCode", fm_, fo_); + + return fp_ as decimal?; + } + }; + + return a_(); + } + + + public CqlQuantity Quantity(CqlContext context, decimal? value, string unit) => + ((context.Operators.Not((bool?)(value is null))) ?? false + ? new CqlQuantity(value, unit) + : default); + + + public CqlInterval MedicationRequestPeriod(CqlContext context, MedicationRequest Request) + { + MedicationRequest[] a_ = [ + Request, + ]; + CqlInterval b_(MedicationRequest R) + { + CqlInterval f_() + { + bool g_() + { + List i_ = R?.DosageInstruction; + Dosage j_ = context.Operators.SingletonFrom((IEnumerable)i_); + Timing k_ = j_?.Timing; + Timing.RepeatComponent l_ = k_?.Repeat; + DataType m_ = l_?.Bounds; + object n_ = FHIRHelpers_4_4_000.Instance.ToValue(context, m_); + CqlDateTime o_ = context.Operators.Start(n_ as CqlInterval); + CqlDate p_ = context.Operators.DateFrom(o_); + FhirDateTime q_ = R?.AuthoredOnElement; + CqlDateTime r_ = context.Operators.Convert(q_); + CqlDate s_ = context.Operators.DateFrom(r_); + MedicationRequest.DispenseRequestComponent t_ = R?.DispenseRequest; + Period u_ = t_?.ValidityPeriod; + CqlInterval v_ = FHIRHelpers_4_4_000.Instance.ToInterval(context, u_); + CqlDateTime w_ = context.Operators.Start(v_); + CqlDate x_ = context.Operators.DateFrom(w_); + bool? y_ = context.Operators.Not((bool?)(((p_ ?? s_) ?? x_) is null)); + Duration aa_ = t_?.ExpectedSupplyDuration; + CqlQuantity ab_ = FHIRHelpers_4_4_000.Instance.ToQuantity(context, aa_); + CqlQuantity ac_ = context.Operators.ConvertQuantity(ab_, "d"); + decimal? ad_ = ac_?.value; + Quantity af_ = t_?.Quantity; + CqlQuantity ag_ = FHIRHelpers_4_4_000.Instance.ToQuantity(context, af_); + decimal? ah_ = ag_?.value; + Dosage aj_ = context.Operators.SingletonFrom((IEnumerable)i_); + List ak_ = aj_?.DoseAndRate; + Dosage.DoseAndRateComponent al_ = context.Operators.SingletonFrom((IEnumerable)ak_); + DataType am_ = al_?.Dose; + object an_ = FHIRHelpers_4_4_000.Instance.ToValue(context, am_); + CqlQuantity ao_ = context.Operators.End(an_ as CqlInterval); + Dosage aq_ = context.Operators.SingletonFrom((IEnumerable)i_); + List ar_ = aq_?.DoseAndRate; + Dosage.DoseAndRateComponent as_ = context.Operators.SingletonFrom((IEnumerable)ar_); + DataType at_ = as_?.Dose; + object au_ = FHIRHelpers_4_4_000.Instance.ToValue(context, at_); + decimal? av_ = (ao_ ?? au_ as CqlQuantity)?.value; + Dosage ax_ = context.Operators.SingletonFrom((IEnumerable)i_); + Timing ay_ = ax_?.Timing; + Timing.RepeatComponent az_ = ay_?.Repeat; + PositiveInt ba_ = az_?.FrequencyMaxElement; + int? bb_ = ba_?.Value; + Dosage bd_ = context.Operators.SingletonFrom((IEnumerable)i_); + Timing be_ = bd_?.Timing; + Timing.RepeatComponent bf_ = be_?.Repeat; + PositiveInt bg_ = bf_?.FrequencyElement; + int? bh_ = bg_?.Value; + Dosage bj_ = context.Operators.SingletonFrom((IEnumerable)i_); + Timing bk_ = bj_?.Timing; + Timing.RepeatComponent bl_ = bk_?.Repeat; + FhirDecimal bm_ = bl_?.PeriodElement; + decimal? bn_ = bm_?.Value; + Dosage bp_ = context.Operators.SingletonFrom((IEnumerable)i_); + Timing bq_ = bp_?.Timing; + Timing.RepeatComponent br_ = bq_?.Repeat; + Code bs_ = br_?.PeriodUnitElement; + Timing.UnitsOfTime? bt_ = bs_?.Value; + string bu_ = context.Operators.Convert(bt_); + CqlQuantity bv_ = this.Quantity(context, bn_, bu_); + decimal? bw_ = this.ToDaily(context, bb_ ?? bh_, bv_); + Dosage by_ = context.Operators.SingletonFrom((IEnumerable)i_); + Timing bz_ = by_?.Timing; + Timing.RepeatComponent ca_ = bz_?.Repeat; + List