Uploaded image for project: 'FHIR Specification Feedback'
  1. FHIR Specification Feedback
  2. FHIR-44736

MeasureReport Group extension to capture calculated TotalDenominator and TotalNumerator

    XMLWordPrintableJSON

Details

    • Icon: Change Request Change Request
    • Resolution: Unresolved
    • Icon: Medium Medium
    • US Da Vinci DEQM (FHIR)
    • current
    • Clinical Quality Information
    • DEQM Individual MeasureReport Profile
      DEQM Subject List MeasureReport
      DEQM Summary MeasureReport Profile

    Description

      Motivation: * The current way that MeasureReports specify population membership can be confusing to end users. The counts for populations such as `denominator` and `numerator` represent the counts for those specific populations and not for the overall membership once the scoring logic is applied. See example below.

      • The overall membership should be computed using set logic and not simply summing integers. Since the original memberships is lost when summary MeasureReports are computed, this makes it impossible to correctly aggregate and score two summary MeasureReports if there are exclusions or exceptions. See example below.

       
      Example 1 (membership is not explicit):

      Given the following population results for a summary Measure Report
      Initial Population = [A, B, C, D, E]
      Numerator = [A, B]
      Denominator = [A, B, C, D]
      Exclusion = [D]
      Exception = [B, C]
      The total denominator and total numerator calculations and final score (given the proportion Measure scoring here):
      https://build.fhir.org/ig/HL7/cqf-measures/measure-conformance.html#conformance-requirement-3-11
      Total Numerator = [A, B]
      Total Denominator = [A, B]
      Measure Score = 100%
      The computed MeasureReport would be:

      {
        "resourceType":"MeasureReport",
        "status":"complete",
        "type":"summary",
        "measure":"http://localhost/Measure/test",
        "period":{
          "start":"2024-01-01T00:00:00-07:00",
          "end":"2024-01-01T23:59:59-07:00"
        },
        "group":[
          {
            "population":[
              {
                "id":"initial-population",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"initial-population",
                      "display":"Initial Population"
                    }
                  ]
                },
                "count":5
              },
              {
                "id":"denominator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator",
                      "display":"Denominator"
                    }
                  ]
                },
                "count":4
              },
              {
                "id":"denominator-exclusion",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exclusion",
                      "display":"Denominator Exclusion"
                    }
                  ]
                },
                "count":1
              },
              {
                "id":"denominator-exception",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exception",
                      "display":"Denominator Exception"
                    }
                  ]
                },
                "count":2
              },
              {
                "id":"numerator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"numerator",
                      "display":"Numerator"
                    }
                  ]
                },
                "count":2
              }
            ],
            "measureScore": {
              "value": 1.0
            }
          }
        ]
      } 

       
      Notice how at first glance the computed Measure score of 100% is misleading given the apparent numerator and denominator values. Adding explicit values for the calculated total numerator/denominator membership makes it clear that the score is calculated of the computed total membership, not values for the populations.
       
      Example 2 (report aggregation):
      Given a second set of subjects with the following values:
      Initial Population = [W, X, Y, Z]
      Numerator = [W, X]
      Denominator = [X, Y]
      Exclusion = []
      Exception = []
      The total membership would be as follows:
      Total Numerator = [X]
      Total Denominator = [X, Y]
      Measure Score = 50%
       
      Which would result in the following MeasureReport:

      {
        "resourceType":"MeasureReport",
        "status":"complete",
        "type":"summary",
        "measure":"http://localhost/Measure/test",
        "period":{
          "start":"2024-01-01T00:00:00-07:00",
          "end":"2024-01-01T23:59:59-07:00"
        },
        "group":[
          {
            "population":[
              {
                "id":"initial-population",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"initial-population",
                      "display":"Initial Population"
                    }
                  ]
                },
                "count":4
              },
              {
                "id":"denominator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator",
                      "display":"Denominator"
                    }
                  ]
                },
                "count":2
              },
              {
                "id":"denominator-exclusion",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exclusion",
                      "display":"Denominator Exclusion"
                    }
                  ]
                },
                "count":0
              },
              {
                "id":"denominator-exception",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exception",
                      "display":"Denominator Exception"
                    }
                  ]
                },
                "count":0
              },
              {
                "id":"numerator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"numerator",
                      "display":"Numerator"
                    }
                  ]
                },
                "count":2
              }
            ],
            "measureScore": {
              "value": 0.5
            },
          }
        ]
      } 

       
      If we attempted to aggregate with the report from example 1, the correct result would be:
      Total Numerator = [A, B, X]
      Total Denominator = [A, B, X, Y]
      Measure Score = 75%
       
      However, without knowing the final computation of total denominator and total numerator it's not possible to aggregate correctly. If you simply sum the values and use integer logic, you get:
       

      {
        "resourceType":"MeasureReport",
        "status":"complete",
        "type":"summary",
        "measure":"http://localhost/Measure/test",
        "period":{
          "start":"2024-01-01T00:00:00-07:00",
          "end":"2024-01-01T23:59:59-07:00"
        },
        "group":[
          {
            "population":[
              {
                "id":"initial-population",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"initial-population",
                      "display":"Initial Population"
                    }
                  ]
                },
                "count":9
              },
              {
                "id":"denominator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator",
                      "display":"Denominator"
                    }
                  ]
                },
                "count":6
              },
              {
                "id":"denominator-exclusion",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exclusion",
                      "display":"Denominator Exclusion"
                    }
                  ]
                },
                "count":1
              },
              {
                "id":"denominator-exception",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exception",
                      "display":"Denominator Exception"
                    }
                  ]
                },
                "count":2
              },
              {
                "id":"numerator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"numerator",
                      "display":"Numerator"
                    }
                  ]
                },
                "count":4
              }
            ]
          }
        ]
      } 

      Without knowing original set membership, you would assume this to be a measureScore of 4/6 or .66667. Not the correct 75%
       
      However, if you do know the values of the total denominator and total numerator, you can correctly aggregate as follows:
       

      {
        "resourceType":"MeasureReport",
        "status":"complete",
        "type":"summary",
        "measure":"http://localhost/Measure/test",
        "period":{
          "start":"2024-01-01T00:00:00-07:00",
          "end":"2024-01-01T23:59:59-07:00"
        },
        "group":[
          {
            "population":[
              {
                "id":"initial-population",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"initial-population",
                      "display":"Initial Population"
                    }
                  ]
                },
                "count":9
              },
              {
                "id":"denominator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator",
                      "display":"Denominator"
                    }
                  ]
                },
                "count":6
              },
              {
                "id":"denominator-exclusion",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exclusion",
                      "display":"Denominator Exclusion"
                    }
                  ]
                },
                "count":1
              },
              {
                "id":"denominator-exception",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"denominator-exception",
                      "display":"Denominator Exception"
                    }
                  ]
                },
                "count":2
              },
              {
                "id":"numerator",
                "code":{
                  "coding":[
                    {
                      "system":"http://terminology.hl7.org/CodeSystem/measure-population",
                      "code":"numerator",
                      "display":"Numerator"
                    }
                  ]
                },
                "count":4
              }
            ],
            "measureScore": {
              "value": 0.75
            },
            "extension":[
              {
                "url":"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-denominator-membership",
                "valueString":"3"
              },
              {
                "url":"http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-numerator-membership",
                "valueString":"4"
              }
            ]
          }
        ]
      } 

       
      Requested Resolution:

      Add two new extensions the MeasureReport profile for total denominator and numerator membership. This enables an end user to explicitly see the calculated value for the total membership, avoiding confusion about the meaning of the populations.
       
      Additionally, since the total membership is explicit in the extensions, aggregation becomes a simple matter of summing the populations, summing the values for the total-numerator and total-denominator membership extensions, and computing the Measure score based on the values in the extensions.
       
      We propose these two extension be:
        * http://hl7.org/fhir/us/davinci-deqm/StructureDefinition/extension-denominator-membership

       

      Attachments

        Activity

          People

            Unassigned Unassigned
            justin.mckelvy@smilecdr.com JustinMcKelvy
            Watchers:
            2 Start watching this issue

            Dates

              Created:
              Updated: