Skip to content

Gaps In Care

Sarah McDougall edited this page Jan 24, 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. There is no value filter option currently part of the data requirement type (please note that this portion of the code is under active development and is very much a WIP) 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"
}

Near Misses - A “near miss” is defined as a gap where the Retrieve statement for a data element has a value, but a subsequent query filter on that data element made the clause false


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": "Missing",
            "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.