Skip to content

Releases: cqframework/cql-execution

3.1.0

31 Jul 18:43
288a60a
Compare
Choose a tag to compare

What's Changed

  • Implement Implies Operator and update to cql2elm 3.12.0 by @hossenlopp in #320
  • Updated cql-to-elm instructions in README.md by @sorliog in #317

New Contributors

Full Changelog: v3.0.1...v3.1.0

3.0.1

30 Aug 20:27
27c9bf7
Compare
Choose a tag to compare

What's Changed

New Contributors

Full Changelog: v3.0.0...v3.0.1

3.0.0

04 May 19:06
Compare
Choose a tag to compare

CQL Execution 3.0.0 Overview

  • CQL Execution 3.0.0 supports an asynchronous execution flow. Patients are still processed in a serial fashion, but calls to the DataProvider (a.k.a. PatientSource) and TerminologyProvider (a.k.a. CodeService) can now happen asynchronously. This allows for these providers to more easily leverage web services and databases for their data.
  • In addition to the asynchronous change, cql-execution now has some performance improvements, specifically when dealing with ValueSets that have a large amount of codes. See #278 for a detailed description of these enhancements, and huge shoutout to @birick1 for the thoughtful implementation!

Breaking Changes

The asynchronous migration is a breaking change. Implementers are required to make minor updates to their code to use this release. The code snippets below demonstrate the old way of invoking the v2.x.x engine and two ways to invoke the 3.x.x engine.

// v2.x.x usage
const result = executor.exec(patientSource);
// Do something with result

// v3.x.x usage
executor.exec(patientSource).then((result) => {
  // Do something with result
})

// or

const result = await executor.exec(patientSource);
// Do something with result

Existing implementations of DataProvider (PatientSource) and TerminologyProvider (CodeService) will continue to work as-is. Implementers who maintain their own implementations of these services may want to consider updating them to return results asynchronously.

For more information, see the V2 to V3 Migration Guide.

In addition, when running cql-execution in a Node.js environment, you should use at least Node 16.

Installation

To install this release in your project, run the following command:

npm install --save cql-execution@3

Full list of PRs

Full Changelog: v2.4.6...v3.0.0

3.0.0-beta.5

21 Apr 19:58
Compare
Choose a tag to compare
3.0.0-beta.5 Pre-release
Pre-release

What's Changed Since Beta 4

  • Fixed collapseIntervals error on null intervals by @natjoe4 in #310

CQL Execution 3.0.0 Beta Overview

CQL Execution 3.0.0 Beta supports an asynchronous execution flow. Patients are still processed in a serial fashion, but calls to the DataProvider (a.k.a. PatientSource) and TerminologyProvider (a.k.a. CodeService) can now happen asynchronously. This allows for these providers to more easily leverage web services and databases for their data.

Breaking Changes

This is a breaking change. Implementers are required to make minor updates to their code to use this release. The code snippets below demonstrate the old way of invoking the v2.x.x engine and two ways to invoke the 3.x.x engine.

// v2.x.x usage
const result = executor.exec(patientSource);
// Do something with result

// v3.x.x usage
executor.exec(patientSource).then((result) => {
  // Do something with result
})

// or

const result = await executor.exec(patientSource);
// Do something with result

Existing implementations of DataProvider (PatientSource) and TerminologyProvider (CodeService) will continue to work as-is. Implementers who maintain their own implementations of these services may want to consider updating them to return results asynchronously.

For more information, see the V2 to V3 Migration Guide.

In addition, when running cql-execution in a Node.js environment, you should use at least Node 16.

Installation

To install this beta release in your project, run the following command:

npm install --save [email protected]

This is a beta release and is subject to change. We welcome your feedback.

2.4.6

21 Apr 17:33
Compare
Choose a tag to compare

What's Changed

  • fixed collapseIntervals error on null intervals by @natjoe4 in #310

Full Changelog: v2.4.5...v2.4.6

3.0.0-beta.4

31 Mar 14:27
Compare
Choose a tag to compare
3.0.0-beta.4 Pre-release
Pre-release

What's Changed Since Beta 3

  • Add Detailed Execution Error Reporting by @natjoe4 in #308

When runtime errors are thrown from cql-execution during expression execution, the engine will attempt to extract more information about the expression that caused the error via the AnnotatedError object which is now exported from cql-execution. For example, an AnnotatedError could have the following message:

AnnotatedError: Encountered unexpected error during execution.

        Error Message:  Some error message
        CQL Library:    LibraryIdentifier|x.y.z
        Expression:     SomeELMExpressionType
        ELM Local ID:   123
        CQL Locator:    7:19-19:96

This information is also programatically accessible on the AnnotatedError object:

try {
  // some execution that might throw an error
} catch(e) {
  if (e instanceof AnnotatedError) {
    e.message; // Error message shown above
    e.libraryName; // Library identifier | Library version
    e.expressionName; // Name of the expression class that threw the error
    e.localId; // localId of the offending expression (must exist on the ELM)
    e.locator; // locator of the offending clause (must exist on the ELM)
    e.cause; // original stack trace of the error that was initially thrown
  }
}

CQL Execution 3.0.0 Beta Overview

CQL Execution 3.0.0 Beta supports an asynchronous execution flow. Patients are still processed in a serial fashion, but calls to the DataProvider (a.k.a. PatientSource) and TerminologyProvider (a.k.a. CodeService) can now happen asynchronously. This allows for these providers to more easily leverage web services and databases for their data.

Breaking Changes

This is a breaking change. Implementers are required to make minor updates to their code to use this release. The code snippets below demonstrate the old way of invoking the v2.x.x engine and two ways to invoke the 3.x.x engine.

// v2.x.x usage
const result = executor.exec(patientSource);
// Do something with result

// v3.x.x usage
executor.exec(patientSource).then((result) => {
  // Do something with result
})

// or

const result = await executor.exec(patientSource);
// Do something with result

Existing implementations of DataProvider (PatientSource) and TerminologyProvider (CodeService) will continue to work as-is. Implementers who maintain their own implementations of these services may want to consider updating them to return results asynchronously.

For more information, see the V2 to V3 Migration Guide.

In addition, when running cql-execution in a Node.js environment, you should use at least Node 16.

Installation

To install this beta release in your project, run the following command:

npm install --save [email protected]

This is a beta release and is subject to change. We welcome your feedback.

2.4.5

28 Mar 13:18
a63a9ea
Compare
Choose a tag to compare

What's Changed

  • Add Detailed Execution Error Reporting by @natjoe4 in #308

When runtime errors are thrown from cql-execution during expression execution, the engine will attempt to extract more information about the expression that caused the error via the AnnotatedError object which is now exported from cql-execution. For example, an AnnotatedError could have the following message:

AnnotatedError: Encountered unexpected error during execution.

        Error Message:  Some error message
        CQL Library:    LibraryIdentifier|x.y.z
        Expression:     SomeELMExpressionType
        ELM Local ID:   123
        CQL Locator:    7:19-19:96

This information is also programatically accessible on the AnnotatedError object:

try {
  // some execution that might throw an error
} catch(e) {
  if (e instanceof AnnotatedError) {
    e.message; // Error message shown above
    e.libraryName; // Library identifier | Library version
    e.expressionName; // Name of the expression class that threw the error
    e.localId; // localId of the offending expression (must exist on the ELM)
    e.locator; // locator of the offending clause (must exist on the ELM)
    e.cause; // original stack trace of the error that was initially thrown
  }
}

New Contributors

Full Changelog: v2.4.4...v2.4.5

3.0.0 Beta 3

17 Jan 19:56
Compare
Choose a tag to compare
3.0.0 Beta 3 Pre-release
Pre-release

What's Changed since Beta 2

  • Performance improvements for list operations by @birick1 in #307
  • Support for null-sourced queries by @cmoesel in #306
  • Update DataProvider and PatientObject to allow async and be stricter by @mgramigna in #298
  • Update Test Framework to use CQL Translator 2.x by @cmoesel in #295

Fixes projecttacoma/fqm-execution#172

New Contributors

CQL Execution 3.0.0 Beta Overview

CQL Execution 3.0.0 Beta supports an asynchronous execution flow. Patients are still processed in a serial fashion, but calls to the DataProvider (a.k.a. PatientSource) and TerminologyProvider (a.k.a. CodeService) can now happen asynchronously. This allows for these providers to more easily leverage web services and databases for their data.

Breaking Changes

This is a breaking change. Implementers are required to make minor updates to their code to use this release. The code snippets below demonstrate the old way of invoking the v2.x.x engine and two ways to invoke the 3.x.x engine.

// v2.x.x usage
const result = executor.exec(patientSource);
// Do something with result

// v3.x.x usage
executor.exec(patientSource).then((result) => {
  // Do something with result
})

// or

const result = await executor.exec(patientSource);
// Do something with result

Existing implementations of DataProvider (PatientSource) and TerminologyProvider (CodeService) will continue to work as-is. Implementers who maintain their own implementations of these services may want to consider updating them to return results asynchronously.

For more information, see the V2 to V3 Migration Guide.

In addition, when running cql-execution in a Node.js environment, you should use at least Node 16.

Installation

To install this beta release in your project, run the following command:

npm install --save [email protected]

This is a beta release and is subject to change. We welcome your feedback.

2.4.4

16 Jan 00:44
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.4.3...v2.4.4

3.0.0 Beta 2

26 Oct 19:19
ebb0cf8
Compare
Choose a tag to compare
3.0.0 Beta 2 Pre-release
Pre-release

What's Changed since Beta 1

  • Fix Context.childContext(null) to default to empty context_values object by @cmoesel in #282

Fixes #277

CQL Execution 3.0.0 Beta Overview

CQL Execution 3.0.0 Beta supports an asynchronous execution flow. Patients are still processed in a serial fashion, but calls to the DataProvider (a.k.a. PatientSource) and TerminologyProvider (a.k.a. CodeService) can now happen asynchronously. This allows for these providers to more easily leverage web services and databases for their data.

Breaking Changes

This is a breaking change. Implementers are required to make minor updates to their code to use this release. The code snippets below demonstrate the old way of invoking the v2.x.x engine and two ways to invoke the 3.x.x engine.

// v2.x.x usage
const result = executor.exec(patientSource);
// Do something with result

// v3.x.x usage
executor.exec(patientSource).then((result) => {
  // Do something with result
})

// or

const result = await executor.exec(patientSource);
// Do something with result

Existing implementations of DataProvider (PatientSource) and TerminologyProvider (CodeService) will continue to work as-is. Implementers who maintain their own implementations of these services may want to consider updating them to return results asynchronously.

For more information, see the V2 to V3 Migration Guide.

Installation

To install this beta release in your project, run the following command:

npm install --save [email protected]

This is a beta release and is subject to change. We welcome your feedback.