Skip to content

Gaps In Care

MegRiley edited this page Mar 17, 2022 · 25 revisions

Overview

A gap in care is defined as a discrepancy between recommended best practices and the services that are actually provided and documented for a given patient. For example, a gap in care would be identified if a patient was supposed to have a colonoscopy, landing them in the numerator, but that procedure was never performed.

More simply, gaps give information as to why a patient does not land in the numerator. If a patient is not in the numerator, our prototype attempts to give detailed information as to why that is the case.

The measure’s improvement notation determines whether an increase or decrease in score is the preferred result. For a positive improvement measure, patients in the denominator are considered, but patients in the numerator are not considered when calculating the gaps in care. If, instead, a negative improvement measure is specified, patients in the numerator will be considered when calculating the gaps in care.

Our current implementation only supports proportion-based scoring and does not support an episode of care of continuous variable. If you would like to read more about Gaps in Care concepts/workflows, see the DEQM implementation guide.

Types of Gaps:

  • OR Gaps - A set of gaps for which only one gap of potentially many needs to be closed in order for the patient to meet standards for quality of care. "Or" gaps are represented by a single DetectedIssue resource, with multiple GuidanceResponses, indicating that any of the nested GuidanceResponses would satisfy the DetectedIssue.

  • AND Gaps -The converse is an "And" gap (which we define as any non-Or gap, at the moment), where you need each of several gaps to be addressed to put the patient into the desired population. "And" gaps are represented by multiple DetectedIssue resources, each with a single GuidanceResponse

Further information on "Or"/"And" gaps is provided in this Pull Request description.

Representing Gaps

Representing different types of care gaps

Gaps are presented as a resource known as a "GuidanceResponse" as part of a Gaps Bundle containing information for each detected issue. It is important to note that multiple guidance responses can exist for each detected issue.

In order to showcase the relevant information for each gap, make use of reasonCode and dataRequirement elements. Instructions on generating this resource can be found here.


Value Filter -A value filter determines whether the resource has a value within a certain range. Currently this is supported using an extension . This allows for additional value-based filters to be specified as part of a data requirement. An example of what this might look like in a unit test fixture:

{
  "resourceType": "GuidanceResponse",
  "id": "e3505055-e235-401d-9487-e9e250cc16dd",
  "dataRequirement": [
    {
      "type": "Observation",
      "codeFilter": [
        {
          "path": "code",
          "valueSet": "http://example.com/test-vs"
        }
      ],
      "extension": [
        {
          "url": "http://example.com/dr-value",
          "extension": [
            {
              "url": "dr-value-attribute",
              "valueString": "result"
            },
            {
              "url": "dr-value-filter",
              "valueRange": {
                "high": {
                  "value": 9,
                  "unit": "%"
                }
              }
            }
          ]
        }
      ]
    }
  ],
  "reasonCode": [
    {
      "coding": [
        {
          "system": "CareGapReasonCodeSystem",
          "code": "ValueOutOfRange",
          "display": "Data element was found, but value was out of range"
        }
      ]
    }
  ],
  "status": "data-required",
  "moduleUri": "http://hl7.org/fhir/us/cqfmeasures/Measure/EXM130"
}

Reason Detail - Instead of classifying the kinds of gaps with more information than just “Not Found data” but that didn't fall into the care gap, we have added reason detail to the guidance response


CQL Example Using EXM 130 Measure

The CQL clauses that will cause a patient to fall into the numerator are listed below:

define "Colonoscopy Performed":
 [Procedure: "Colonoscopy"] Colonoscopy
   where Colonoscopy.status = 'completed'
     and Global."Normalize Interval"(Colonoscopy.performed) ends 10 years
or less on or before end of "Measurement Period"


define "Numerator":
	exists "Colonoscopy Performed"
		or exists "Fecal Occult Blood Test Performed"
		or exists "Flexible Sigmoidoscopy Performed"
		or exists "Fecal Immunochemical Test DNA"
		or exists "CT Colonography Performed"

A patient who does not have a colonoscopy within the set time period (a 10-year range of 2010-2019) but did have one, and meets none of the other criteria, would fall into the numerator, according to the CQL clause above.

For example:

 "resource": {
      "resourceType": "Procedure",
      "id": "denom-EXM130-2",
      "meta": {
        "profile": [ "http://hl7.org/fhir/us/core/StructureDefinition/us-core-procedure" ]
      },
      "status": "completed",
      "code": {
        "coding": [ {
          "system": "http://www.ama-assn.org/go/cpt",
          "code": "44393",
          "display": "Colonoscopy through stoma; with ablation of tumor(s), polyp(s), or other lesion(s) not amenable to removal by hot biopsy forceps, bipolar cautery or snare technique"
        } ]
      },
      "subject": {
        "reference": "Patient/denom-EXM130"
      },
      "performedPeriod": {
        "start": "2009-12-30T12:00:00",
        "end": "2009-12-30T13:00:00"
      }
    },
    "request": {
      "method": "PUT",
      "url": "Procedure/denom-EXM130-2"
    }

when run against this measure would generate this output that contains this snippet within the DetectedIssue resource for one of the tests conditions that was not met:

{
    "resourceType": "GuidanceResponse",
    "id": "d4f7cdec-5097-4169-94d7-70b00c9267f2",
    "dataRequirement": [
      {
        "type": "Procedure",
        "codeFilter": [
          {
            "path": "code",
            "valueSet": "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113883.3.464.1003.108.12.1020"
          }
        ]
      }
    ],
    "reasonCode": [
      {
        "coding": [
          {
            "system": "CareGapReasonCodeSystem",
            "code": "Not Found",
            "display": "No Data Element found from Value Set"
          }
        ]
      }
    ],
    "status": "data-required",
    "moduleUri": "http://hl7.org/fhir/us/cqfmeasures/Measure/EXM130"
  },
           

It flags that there is a CareGapReasonCodeSystem and the reason for that gap is that the patient was missing all of the procedures. It is important to note that the reasonCode is currently under active development and may change.