Skip to content

Releases: projecttacoma/fqm-execution

v1.6.0

01 Nov 19:38
6f8471b
Compare
Choose a tag to compare

What's Changed

Highlighting Changes

The annotation structure used for highlighting often includes localIds that are not in the ELM expression stack. These have always been ignored in coverage calculations except for cases we can map an annotation only localId to a relevant expression localId. This most commonly occurs with creation and usage of aliases. This helps to make sure they are accurately highlighted. With fqm-execution 1.6.0 we are switching the highlighting of the annotation only localIds for which we could not find a relevant expression to link them to simply inherit the highlighting of the parent node. This fixes various highlighting bugs that were showing a gap in coverage even though the coverage calculation was at 100%.

Coverage Changes

There are times where localIds are ONLY found in the expression stack and not in the annotation stack. In these cases a gap in coverage would not be able to be highlighted to show the gap in coverage. This commonly results from translator expanding out CQL with QICore profiled authoring or something simple as is not null as expressed in this issue cqframework/clinical_quality_language#1417. The approach we are taking to resolve this is that if the user cannot see the logic, it shouldn’t be counted in the coverage calculations. These 'hidden' clauses often do have results that bubble up to an expression that can be 'seen'. With fqm-execution 1.6.0 we are filtering out clauses that do not have corresponding localIds in the annotation structure. This will remove the chance that uncovered clauses that cannot be highlighted will affect the coverage calculation.

Full Changelog: v1.5.0...v1.6.0

v1.5.0

09 Aug 15:48
d2345a1
Compare
Choose a tag to compare

What's Changed

New Feature - Stratification appliesResult

detailed calculation output now includes appliedResult in the stratifier results which gives the result with the cqfm-appliesTo population result 'applied' to it. This appliedResult makes it so the stratifier is a subset of the referenced population.

Implies Operator

This release upgrades cql-execution to 3.1.0 which brings support for the Implies operator.

Full Changelog: v1.4.1...v1.5.0

v1.4.1

15 Apr 14:56
8274f2c
Compare
Choose a tag to compare

What's Changed

This is simply a re-release that fixes an issue in our build that allowed a filename casing change to fail to propagate through the build process. This case change issue was hidden by the macOS APFS case insensitive file system. v1.4.1 will be required to run on case sensitive file systems.

Full Changelog: v1.4.0...v1.4.1

v1.4.0

12 Apr 18:45
2305b69
Compare
Choose a tag to compare

What's Changed

Notice of Clause Coverage Percentage Changes (cql-to-elm translator versions >= 3.6.0 ONLY)

For measures translated using newer versions of the cql-to-elm translator (version 3.6.0 and up), clause coverage highlighting and percentage increases compared to fqm-execution v1.3.3 due to handling of the additional localIds that were added in the ELM from the translator in version 3.6.0. Clause coverage percentage for measures using versions of the translator >= 3.6.0 is NOT going to be identical for measures that use older versions of the translator.

New Feature - Uncoverage

fqm-execution can now produce a new HTML output which highlights the measure logic which did NOT have a "truthy" value during calculation. This uses the same underlying calculation as clause coverage but inverts the highlighting. This output can be enabled by using the calculateClauseUncoverage calculation option flag. This is enabled by default when running in the CLI and will be output with debug data.

As as side effect of this work, we were able to optimize the underlying coverage calculation and HTML generation to be significantly faster. This may be noticeable when running larger measures with larger sets of patients (>30).

New Feature - Coverage Details

Details on the coverage can now be returned from fqm-execution. This information gives the counts of all clauses, covered clauses and uncovered clauses. Additionally, if there are uncovered clauses their locations are listed. This output can be enabled by using the calculateCoverageDetails calculation option flag. This is enabled by default when running in the CLI and will be output with debug data.

Example of coverage details output:

{
  "population-group-1": {
    "totalClauseCount": 333,
    "coveredClauseCount": 330,
    "uncoveredClauseCount": 3,
    "uncoveredClauses": [
      {
        "localId": "97",
        "libraryName": "MAT6725TestingMeasureCoverage",
        "statementName": "Has Medical or Patient Reason for Not Ordering ACEI or ARB or ARNI"
      },
      ...
    ]
  }
}

Full Changelog: v1.3.3...v1.4.0

v1.3.3

15 Dec 20:47
1f4a7c4
Compare
Choose a tag to compare

What's Changed

Notice of Clause Coverage Percentage Changes

In this release, an issue with the coverage percentage calculation for Not Equivalent clauses was fixed. When a !~ (Not Equivalent) clause is translated from CQL to ELM, it results in separate Not and Equivalent clauses, each with their own localId. This caused coverage percentage calculation to only reach 100% if both of these pieces of logic evaluated to true. With this update, only the Not clause is factored into the coverage percentage calculation, allowing users to reach 100% without both equivalent and not-equivalent data in test cases.

With the current version of the cql-to-elm translator, this is not a problem for != Not Equal clauses. The Not and the Equal are still separated by the translator, but only the Not clause has a localId; therefore, the Equal clause is not factored into the coverage percentage calculation and users can reach 100%. The lack of a localId on the Equal clause will be fixed by the translator in a future update. We account for this upcoming fix by including handling for both of these cases.

This change only affects the coverage percentage calculation and does not change visual highlighting of coverage.

Reminder

Some aliases, unions and library references will show visually as uncovered. These are caused by quirks in the ELM annotation and do not affect the coverage percentage calculation.

Full Changelog: v1.3.2...v1.3.3

v1.3.2

20 Oct 17:30
83b7eb3
Compare
Choose a tag to compare

What's Changed

Notice of Clause Coverage Highlighting Changes

In this release, an issue with the visual coverage for clauses that are related to conditionally relevant populations (ex. "Denominator Exclusions") was fixed. This issue caused not-covered clauses to show as covered in statements related to these populations in some situations. This change only affects the visual highlighting of coverage and does not change coverage percentage calculation. Users should now be able to see the lack of coverage visually in these cases.

Reminder

Some aliases, unions and library references will show visually as uncovered. These are caused by quirks in the ELM annotation structure and do not affect the coverage percentage calculation.

Full Changelog: v1.3.1...v1.3.2

v1.3.1

31 Aug 17:06
b48a519
Compare
Choose a tag to compare

What's Changed

  • Require cql-execution 3.0.1 or newer and bump to v1.3.1 by @hossenlopp in #278

This release simply updates the version requirement of cql-execution to ^3.0.1 to ensure users are getting the latest bug fixes made in cql-execution without needing to explicitly update the dependency in their applications.

Full Changelog: v1.3.0...v1.3.1

v1.3.0

30 Aug 21:07
510a72f
Compare
Choose a tag to compare

What's Changed

Notice of Clause Coverage Highlighting Changes

The additional support for Null and false Literals addressed in #273 impacts both visual highlighting and clause coverage percentage calculation. Users may likely see an increase in coverage if these clauses are included in the measure logic CQL and are processed during calculation. For example, users may see an increase in coverage for measures where the “SDE Sex” define statement is included in the measure logic.

The support for aliases nested within queries from QICore-authored CQL (addressed in #276) impacts visual highlighting (as these aliases now get highlighted) but does not impact the clause coverage percentage.

Two bug fixes in the cql-execution engine are reflected in this release:
(1) The lack of reasonCode highlighting (referenced in #275) has been fixed. This impacts both visual highlighting and clause coverage percentage calculation. The fix makes no changes to the calculation results.
(2) The execution results may be impacted in cases where a timezone offset is used when converting a birthDate from a Date to a DateTime in the underlying cql-execution engine. This may result in a difference in the logic highlighting that is returned from fqm-execution.

New Statement-level HTML support

See the documentation section on statement-level HTML for details. This new feature adds a string of HTML markup to each statement result. It does not have any impact on the logic highlighting or clause coverage highlighting output.

Updated Support for --patients-directory CLI Option

When running fqm-execution from the CLI, the user can supply the --patients-directory CLI option to specify a directory of test cases to use for measure calculation. This option now supports the new MADiE test case export format by scanning one level deep within the specified directory, filtering out non .json files.

Full Changelog: v1.2.2...v1.3.0

v1.2.2

26 Jul 20:20
d19580f
Compare
Choose a tag to compare

What's Changed

Notice of Coverage Calculation Percentage Changes

The fix for clause coverage in #266 means that the coverage percentage calculation now correctly correlates with the coverage highlighting. Users may likely see either a drop in coverage or potentially an increase in coverage. Measures with test cases that gave a result of 100% coverage in v1.2.1 may not see the same 100% coverage after this update. This means there likely are clauses in the logic that were not actually covered by the test cases, please refer users to the highlighting to look for gaps in their testing. No change was made to the visual coverage highlighting.

Full Changelog: v1.2.1...v1.2.2

v1.2.1

22 Jun 17:12
a977000
Compare
Choose a tag to compare

What's Changed

  • Update weighted composite measure calculation to divide by sum of all weights by @lmd59 in #253
  • Add coverage workaround for nested scopes within Property and FunctionRef by @mgramigna in #255
  • Add disableHTMLOrdering Calculation Option by @sarahmcdougall in #256

Full Changelog: v1.2.0...v1.2.1