-
Notifications
You must be signed in to change notification settings - Fork 6
Gaps In Care
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.
-
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.
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:
{
"url": "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/cqfm-valueFilter",
"extension": [
{
"url": "path",
"valueString": "value"
}, {
"url": "comparator",
"valueCode": "eq"
},
{
"url": "value",
"valueRange": {
"high": {
"value": 9,
"unit": "%"
} }
} ]
} ]
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. (ie the following gap would be generated if the Patient had none of the data elements queried by the Numerator statement)
For example:
"id": "0106786e-5c24-4c8a-aa03-868e180d787a",
"status": "data-required",
"moduleUri": "http://hl7.org/fhir/us/cqfmeasures/Measure/EXM130",
"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"
}, {
"path": "status",
"code": [
{
"code": "completed",
"system": "http://hl7.org/fhir/event-status"
} ]
} ],
"dateFilter": [
{
"path": "performed.end",
"valuePeriod": {
"start": "2009-12-31T00:00:00.000Z",
"end": "2019-12-31T00:00:00.000Z"
}
} ]
} ],
"reasonCode": [
{
"coding": [ {
"system": "CareGapReasonCodeSystem",
"code": "NotFound",
"display": "Data Element Not Found"
} ]
} ]
}
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": "8268f280-26f6-487b-9042-4afd8105f909",
"status": "data-required",
"moduleUri": "http://hl7.org/fhir/us/cqfmeasures/Measure/EXM130",
"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"
}, {
"path": "status",
"code": [
{
"code": "completed",
"system": "http://hl7.org/fhir/event-status"
}
] }
],
"dateFilter": [
{
"path": "performed.end",
"valuePeriod": {
"start": "2009-12-31T00:00:00.000Z",
"end": "2019-12-31T00:00:00.000Z"
}
} ]
} ],
"reasonCode": [
{
"coding": [ {
"system": "CareGapReasonCodeSystem",
"code": "DateOutOfRange",
"display": "Value is out of specified range",
"extension": [
{
"url": "ReasonDetail",
"extension": [
{
"url": "reference",
"valueReference": {
"reference": "Procedure/denom-EXM130-2"
}
}, {
"url": "path",
"valueString": "performed.end"
}
] }
] }
] }
] }
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.
Reason Detail - Instead of classifying the kinds of gaps with more information than just NotFound with the display text:“Data Element Not Found” but that didn't fall into the care gap, we have added reason detail to the guidance response