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

fqm-execution requires function with argument for observation function for boolean measure #145

Closed nmorasb closed 2 years ago

nmorasb commented 2 years ago

Expected behavior: For boolean measure, measure observation is a function with no parameters

define function fun(): 1

Actual behavior: For boolean measure, measure observation must have a parameter or fqm-execution fails with the error: “An error occurred in FQM-Execution Error: no function with matching signature could be found”

hossenlopp commented 2 years ago

Thanks for reporting this and opening the conversation. I don't believe this is valid. We have never seen an observation on a patient based (i.e. populationBasis of boolean) measure. Conceptually this would be making an observation about the Patient and would not need to be done in a function but simply could be done as a regular define statement. But on further review of the specs this seems like a situation that isn't supported.

The CQF-Measures IG conformance requirement for CV meaasures, here, indicates this type of measure is not valid at all.

For continuous variable measures, the measure observation is defined as a function that takes a single parameter of the type of elements returned by the population criteria. The Initial Population, Measure Population, and Measure Population Exclusion criteria expressions must all return a list of elements of the same type.

If the populations are just returning boolean, then they are not a "list" that is required for doing an observation.

JSRankins commented 2 years ago

Hi @hossenlopp, beginning with CQL-based HQMF STU 4.1, patient-based CV measures and patient-based Ratio measures with Measure Observations started being allowed. To support this enhancement, Conformance Requirement 13 was updated to contain the following:

CQL functions referenced from the value of the measureObservationDefinition SHALL: ... - accept a single argument whose type is consistent with the result typeof the CQL expression referenced from the component of the measureObservationDefinition . For non-patient-based measures, this means the function must take a single argument of the element type of the list type of the criteria; for patient-based measures, this means the function is parameterless (i.e. takes no arguments).

The reason for this update was due the following factor - only a boolean would be passing into Measure Observation function and would always equal true.

Our understanding was that this equivalent functionality was supposed to be carried over to QMIG for the same reason it was added to CQL-based HQMF. However, it appears that same level of clarification has not been added to QMIG after reviewing Conformance Requirement 3.13. We may want to rope in Bryn Rhodes to this conversation, if needed.

brynrhodes commented 2 years ago

Agreed, this clarification should have been applied to the QM IG, but it looks like it was missed. @JSRankins , would you be okay submitting an HL7 Jira ticket to that effect?

JSRankins commented 2 years ago

Thank you @brynrhodes for looking into this so quickly. Probably won't be tonight, but I will get a FHIR Tracker submitted. @hossenlopp, given the intent is to match CQL-based HQMF, is this sufficient enough to update fqm-execution, or would you prefer to wait until standard is updated? Note: if waiting, it will be some time before that occurs. I believe earliest possible time would be with January 2023 ballot, but I would defer to CQI workgroup.

mgramigna commented 2 years ago

Hi @JSRankins, I think this is sufficient for us to update fqm-execution to support observation functions with no arguments. This will be fixed by work related to the fixes for https://github.com/projecttacoma/fqm-execution/issues/144

p9g commented 2 years ago

HL7 Jira created to update QMIG https://jira.hl7.org/browse/FHIR-39169

JSRankins commented 2 years ago

Thank you @mgramigna for getting this on the list of items to fix. Thank you @p9g for entering the FHIR Tracker.

mgramigna commented 2 years ago

https://github.com/projecttacoma/fqm-execution/pull/152 adds support for observation functions that do not have any arguments (i.e. for boolean-based measures)

mgramigna commented 2 years ago

Released in https://github.com/projecttacoma/fqm-execution/releases/tag/v1.0.0-beta.6