Skip to content

Support Continuous-Variable measure scoring using Measure Observation aggregation #761

@Capt-Mac

Description

@Capt-Mac

This is a feature request to implement 'Continuous-Variable' measure scoring using Measure Observation aggregation

Continuous variable measure scoring is defined in QM IG to allow for use of measure-observation defined function pointed at results of the 'measure-population' and a specific aggregation method to calculate measure score. Use the shared link to review more specifics of the standard.

The way to define a Measure Observation in a Measure resource is to have the following required fields:

  • extension: criteria reference- this is used to specify the population.id of the measure.group that holds the input parameter values that are evaluated
  • criteria: which is the CQL function used to generate Quantity based values for aggregation
  • extension: aggregate method- this is the type of aggregation performed on the generated results from the function

Example Measure Observation as defined in Measure Resource

{
  "extension": [
    {
      "url": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-criteriaReference",
      "valueString": "measure-population-identifier"
    },
    {
      "url": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-aggregateMethod",
      "valueCode": "median"
    }
  ],
  "identifier": {
    "value": "measure-observation-identifier"
  },
  "code": {
    "coding": [
      {
        "code": "measure-observation"
      }
    ]
  },
  "criteria": "\"Measure Observation\""
}

Example Measure Report

{
  "resourceType": "MeasureReport",
  "id": "cv-summary",
  "status": "complete",
  "type": "summary",
  "measure": "http://example.org/fhir/Measure/avg-length-of-stay",
  "period": {
    "start": "2025-01-01",
    "end": "2025-06-30"
  },
  "group": [
    {
      "id": "length-of-stay",
      "population": [
        {
          "id": "ip",
          "code": {
            "coding": [
              {
                "system": "http://terminology.hl7.org/CodeSystem/measure-population",
                "code": "initial-population",
                "display": "Initial Population"
              }
            ]
          },
          "count": 120
        },
        {
          "id": "mp",
          "code": {
            "coding": [
              {
                "system": "http://terminology.hl7.org/CodeSystem/measure-population",
                "code": "measure-population",
                "display": "Measure Population"
              }
            ]
          },
          "count": 118
        },
        {
          "id": "mpe",
          "code": {
            "coding": [
              {
                "system": "http://terminology.hl7.org/CodeSystem/measure-population",
                "code": "measure-population-exclusion",
                "display": "Measure Population Exclusion"
              }
            ]
          },
          "count": 2
        },
        {
          "id": "mo",
          "code": {
            "coding": [
              {
                "system": "http://terminology.hl7.org/CodeSystem/measure-population",
                "code": "measure-observation",
                "display": "Measure Observation"
              }
            ]
          },
          "extension": [
            {
              "url": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-aggregateMethod",
              "valueCodeableConcept": {
                "text": "avg"
              }
            }
          ],
          "count": 118
        }
      ],
      "measureScore": {
        "value": 5.2
      }
    }
  ]
}

aggregate methods to implement

  • sum, max, min, avg, count, median

rules assumptions

  • population defined extensions should display on produced measure report (aggregate method) to assist with readability
  • given measureObservation currently only outputs to group score, only one measureObservation can be specified per group. If multiple need to be exposed, it will have to be in a different group. Example: aggregate avg in group1, max group2...etc
  • units are not seeded as part of this feature

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions