US Quality Core Implementation Guide
0.1.0 - cibuild United States of America flag

US Quality Core Implementation Guide, published by ONC. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/FHIR/us-quality-core/ and changes regularly. See the Directory of published versions

US Quality Core Negation

US Quality Core Negation Profile Index

US Quality Core includes ten specific negation profiles, parallel to the existing action-related profile:

US Quality Core Positive Profile US Quality Core Negation Profile Base Resource
USQualityCore Communication USQualityCore Communication Not Done Communication
USQualityCore DeviceRequest USQualityCore Device Not Requested DeviceRequest
USQualityCore Immunization USQualityCore Immunization Not Done Immunization
USQualityCore MedicationAdministration USQualityCore MedicationAdministration Not Done MedicationAdministration
USQualityCore MedicationDispense USQualityCore MedicationDispense Declined MedicationDispense
USQualityCore MedicationRequest USQualityCore Medication Not Requested MedicationRequest
USQualityCore Simple Observation USQualityCore Observation Cancelled Observation
USQualityCore Procedure USQualityCore Procedure Not Done Procedure
USQualityCore ServiceRequest USQualityCore Service Not Requested ServiceRequest
USQualityCore Task USQualityCore Task Rejected Task

The USQualityCore ObservationCancelled profile SHOULD be used to represent negation statements for all specific observation profiles including:

Each of the US Quality Core negation rationale profiles define at least the following information:

  • What activity/event did not occur (typically in terms of a value set or list of codes)
  • Explicit indication that the action/event did not occur (such as doNotPerform or a status of notDone)
  • Date, and optionally, a time a clinician indicated a reason for avoiding the activity/event
  • The reason the activity/event did not occur (Preferably represented using one of an established set of Negation Reason Codes)

NOTE: Although these aspects are all present within each negation profile defined by US Quality Core, they are represented differently in the various FHIR resources. As a result, each negation profile uses a combination of constraints and extensions to ensure complete representation of negated actions or events within US Quality Core.

Using US Quality Core Negation Profiles

Extent of Negation

The negation profiles in US Quality Core can be used to make two different types of negative statements:

  1. Documentation that a specific activity was not performed for a given reason
  2. Documentation that none of the activities in a given value set were performed for a given reason

Documenting one member of a value set was not performed for a given reason.

In the following example the measure numerator criterion allows for documentation that specifies a single antithrombotic medication using a CodeableConcept drawn from the list of possible expected medications (in the values set) was not administered. In the example the Profiled MedicationAdministration resource documents that the clinician specifically did not administer ticagrelor 90 MG Oral Tablet because drug treatment is not indicated. The evidence of a reason for not administering this single member of the value set “Antithrombotic Therapy for Ischemic Stroke” fulfills criteria for the numerator.

See the MedicationAdministration example using a specific code) for a complete example.

{
    "resourceType" : "MedicationAdministration",
    "id" : "negation-with-code-example",
    "meta" : {
        "profile" : ["http://fhir.org/guides/onc/us-quality-core/StructureDefinition/us-quality-core-medicationadministrationnotdone"]
    },
    "extension" : [{
        "url" : "http://fhir.org/guides/onc/us-quality-core/StructureDefinition/us-quality-core-recorded",
        "valueDateTime" : "2015-01-15"
    }],
    "status" : "not-done",
    "statusReason" : [{
        "coding" : [{
            "system" : "http://snomed.info/sct",
            "code" : "183966005",
            "display" : "Drug treatment not indicated (situation)"
        }]
    }],
    "medicationCodeableConcept" : {
        "coding" : [{
            "system" : "http://www.nlm.nih.gov/research/umls/rxnorm",
            "code" : "1116635",
            "display" : "ticagrelor 90 MG Oral Tablet"
        }]
    },
    "subject" : ...,
    "effectivePeriod" : ...
}

Documenting no members of an entire value set were performed for a given reason.

This is applicable when a measure criterion can be satisfied when none of the medications in a value set is administered for a specified reason. This can occur when the no treatment of the type included in the value set is appropriate. The approach provided allows systems to document using one profiled data instance that none of the activities in a particular value set were performed, rather than requiring documentation of multiple individual activities from the value set.

The following example documents that providers did not prescribe any of the medications in the “Antithrombotic Therapy for Ischemic Stroke” value set using the notDoneValueSet extension fulfills criteria for the numerator:

NOTE: Implementing systems must ensure that this approach does not result in conflicting data. For example, the above example indicating no administration of a medication in the Antithrombotic Therapy value set should not be used if there are administrations of individual medications in the same value set. In other words, it is a contradiction to say “a provider administered a specific medication” at the same time as “a provider did not administer any of the medications in this value set” if that value set includes the medication that was administered in the specific case.

See the MedicationAdministration example using a value set for a complete example.

{
    "resourceType" : "MedicationAdministration",
    "id" : "negation-example",
    "meta" : {
        "profile" : ["http://fhir.org/guides/onc/us-quality-core/StructureDefinition/us-quality-core-medicationadministrationnotdone"]
    },
    "extension" : [{
        "url" : "http://fhir.org/guides/onc/us-quality-core/StructureDefinition/us-quality-core-recorded",
        "valueDateTime" : "2015-01-15"
    }],
    "status" : "not-done",
    "statusReason" : [{
        "coding" : [{
            "system" : "http://snomed.info/sct",
            "code" : "183966005",
            "display" : "Drug treatment not indicated (situation)"
        }]
    }],
    "medicationCodeableConcept" : {
        "extension" : [{
            "url" : "http://fhir.org/guides/onc/us-quality-core/StructureDefinition/us-quality-core-notDoneValueSet",
            "valueCanonical" : "http://cts.nlm.nih.gov/fhir/ValueSet/2.16.840.1.113762.1.4.1110.62"
        }],
        "text" : "Not Done Value Set: Antithrombotic Therapy for Ischemic Stroke"
    },
    "subject" : ...,
    "effectivePeriod" : ...
}

When using a retrieve to access negated information, whether the activity extent is recorded as a CodeableConcept or a ValueSet is handled by the CQL. In most cases, the terminology can be provided as part of the retrieve directly. However, there are situations where authors may want to perform the terminology filtering for a negation activity outside of a retrieve. In these cases, authors can use the appropriate extension to access the negated element. For example, for MedicationAdministrationNotDone, the medication element has the notDoneValueSet extension defined, so the negation can be accessed using the medication() fluent function.

The first case is when the negation is for a specific activity, so the terminology is provided as a direct-reference code. This case cannot be handled in the retrieve directly due to a known issue. CQL R2 introduces a terminology contains operator to support this, and until that operator is available, the filtering needs to be handled outside the retrieve, as illustrated by the following example.

Indication that a specific medication was not administered (using a direct-reference code):

define TestSpecificMedicationAdministrationNotDoneExplicit:
  ["MedicationAdministrationNotDone"] I
    where I.medication() ~ MedicationCode
      or MedicationCode in I.medication()

The second case is when an alternative filter is being used in the retrieve, so the negated value set is provided in an addition filtering clause.

Indication that a class of medications were not administered (using a value set):

define TestGeneralMedicationAdministrationNotDoneExplicit:
  ["MedicationAdministrationNotDone": status in "MedicationAdministrationCompletedCodes"] I
    where I.medication() in MedicationCodes
      or I.medication() ~ MedicationCodes

Negation in CQL

For quality measurement and reporting, measure expression may only need to determine the existence or absence of an activity or event to determine if criteria have been met. If the reason for absence is not relevant to the measure evaluation, the absence of evidence pattern should be used as described in the Negation section of the Using CQL IG.