projecttacoma / fqm-execution

fqm-execution is a library that allows users to calculate FHIR-based electronic Clinical Quality Measures (eCQMs) and retrieve the results in a variety of formats
https://projecttacoma.github.io/fqm-execution/
Apache License 2.0
18 stars 6 forks source link

Coverage Calculation Discounting Aliases and/or Union Operators #285

Closed jkotanchik-SB closed 11 months ago

jkotanchik-SB commented 11 months ago

Summary

These measures (bundles attached) are supposed to have 100% coverage but are showing between 81% and 99% even though only a few aliases and/or union operators are unhighlighted:

  1. CMS 135 - Heart Failure (HF): Angiotensin-Converting Enzyme (ACE) Inhibitor or Angiotensin Receptor Blocker (ARB) or Angiotensin Receptor-Neprilysin Inhibitor (ARNI) Therapy for Left Ventricular Systolic Dysfunction (LVSD)FHIR Coverage: 98%

  2. CMS 145 - Coronary Artery Disease (CAD): Beta-Blocker Therapy-Prior Myocardial Infarction (MI) or Left Ventricular Systolic Dysfunction (LVSD)FHIR Coverage: 99%

  3. CMS 159 - Depression Remission at Twelve MonthsFHIR Coverage: 81%

  4. CMS 645 - Bone density evaluation for patients with prostate cancer and receiving androgen deprivation therapyFHIR Coverage: 99%

  5. CMS 646 - Intravesical Bacillus-Calmette-Guerin for non-muscle invasive bladder cancerFHIR Coverage: 92%

External Tracking Ticket

https://oncprojectracking.healthit.gov/support/browse/BONNIEMAT-1627

Expected Behavior

100% coverage

Version or Commit

v1.3.1

Inputs (e.g. Measure Bundle, Patient Bundle, CQL Library)

Measure bundles:

  1. CMS135FHIR-v0.1.000-FHIR.json.zip
  2. CMS145FHIR-v0.1.000-FHIR.json.zip
  3. CMS159FHIR-v0.1.000-FHIR.json.zip
  4. CMS645FHIR-v1.3.000-FHIR.json.zip
  5. CMS646FHIR-v1.3.000-FHIR.json.zip

Patient bundles:

  1. CMS135FHIR-TestCases.zip
  2. CMS145FHIR-TestCases.zip
  3. CMS159FHIR-TestCases.zip
  4. CMS645FHIR-TestCases.zip
  5. CMS646FHIR-TestCases.zip

Relevant Calculation Options (e.g. Measurement Period, meta.profile Validation)

{
    includeClauseResults: false,
    trustMetaProfile: true,
    buildStatementLevelHTML: true,
    measurementPeriodStart: 1/1/2025,
    measurementPeriodEnd: 12/31/2025,
}

cql-to-elm Version Used for Measure Logic Translation (if known)

v2.11.0

jkotanchik-SB commented 11 months ago

Wasn't sure how best to package up the patient bundles. As a first pass, I created a zip of flat files, with each file containing a single patient bundle.

Let me know if there's preferred way to provide the patient bundles. Thanks!

hossenlopp commented 11 months ago

A zip of patient bundles as individual files works great for us! Even if they are nested in their own folders our tooling can handle this and I believe that what MADiE's current test case export does.

We will be prioritizing the investigation of these issues in our upcoming sprint which begins today.

hossenlopp commented 11 months ago

Hi @jkotanchik-SB,

The aliases, unions and library references that visually show as uncovered do not affect coverage percentage calculations. These are caused by quirks in the ELM annotations.

We have just released v1.3.2 which fixes an issue with visual coverage and should now properly show locations in the logic that are uncovered in many cases. This update should make it clear where those last few uncovered clauses are and aid in creating additional test cases.

Please test with this release and open a new issue if there are additional problems with coverage or you are unable to get to 100% after satisfying the clauses that will now properly show as uncovered.