3.0.0
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
) andTerminologyProvider
(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 withValueSets
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
- Convert cql-execution to async by @mgramigna in #271
- Update DataProvider and PatientObject to allow async and be stricter by @mgramigna in #298
- Performance improvements by @birick1 in #307
Full Changelog: v2.4.6...v3.0.0