Smile CDR v2024.02.PRE
On this page:

23.4.1QPP Report Builder

 

23.4.1.1Introduction

Smile has added capabilities to the Clinical-Reasoning module of CDR in order to enable management and submission of CMS QPP quality reporting for a performance year. This feature will enable users to build dynamic quality program specifications, leverage FHIR/CQL based operations/expressions to produce required data format for realtime analysis and submission to CMS API.

QPP feature is split into two core components that allows for End-to-End quality report management

  • QPP Report Builder
  • QPP Report Submission

23.4.1.2CMS Program Background and Information

In the US, 'Centers for Medicare & Medicaid Services' (CMS) acts as a federal agency within the US department of Health and Human Services that administers the Medicaid and Medicare programs.

The QPP program establishes a model of funding that rewards clinicians who provide high-quality patient-centered care. This is with the aim to improve the quality and safety of care for all individuals and to reduce the administrative burden to clinicians, allowing more time to focus on person-centered care and improving health outcomes.

23.4.1.2.1CMS QPP Important References

23.4.1.3QPP Submission via Smart-On-FHIR UI (Outside CDR)

An accompanying user-interface (UI) as a sidecar application that authenticates users to CMS servers via OAuth and authenticates users to Smile CDR to drive back-end operations from a user friendly UI.

This application allows users to drive MeasureReport generation via $evaluate-measure operations in DQM as well as leverage $qpp-build operation to build a QPP report submission.

Once Submission is built, the user (given acceptance timeframe of reporting from CMS) would be able to authenticate to CMS servers and submit QPP performance year reporting via 'Direct API'.

23.4.1.4QPP Report Builder

This feature is the implementation of a new operation $qpp-build that allows a user to leverage a fhir-endpoint on CDR to generate QPP formatted json report from FHIR based resources stored in Smile CDR.

23.4.1.4.1Pre-requisites

There are some required objects that need to be generated before being able to execute this operation.

23.4.1.4.1.1Organization

Organization is leveraged to store information about the entity that is generating the QPP report, the key critical pieces used by QPP are the following

  • NPI
  • TaxID (TIN)
  • EntityId

This Organization resource would be referenced by $qpp-build by referencing its 'id', which in this example below would be "org-acme-payer-1".

Here is an example Organization resource

{
  "resourceType": "Organization",
  "id": "org-acme-payer-1",
  "meta": {
    "extension": [
      {
        "url": "http://hl7.org/fhir/StructureDefinition/instance-name",
        "valueString": "Organization Acme Payer Example"
      },
      {
        "url": "http://hl7.org/fhir/StructureDefinition/instance-description",
        "valueMarkdown": "This is an example payer using the *US Core Organization Profile*."
      }
    ],
    "profile": [
      "http://hl7.org/fhir/us/core/StructureDefinition/us-core-organization"
    ]
  },
  "identifier": [
	  {
		  "use": "official",
		  "type": {
			  "coding": [
				  {
					  "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
					  "code": "XX",
					  "display": "CMS QPP EntityId"
				  }
			  ]
		  },
		  "value": "abc123456"
	  },
	  {
		  "use": "official",
		  "type": {
			  "coding": [
				  {
					  "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
					  "code": "TAX",
					  "display": "Tax ID Number"
				  }
			  ]
		  },
		  "value": "000000001"
	  },
	  {
		  "use": "official",
		  "type": {
			  "coding": [
				  {
					  "system": "http://terminology.hl7.org/CodeSystem/v2-0203",
					  "code": "NPI",
					  "display": "National Provider Identifier"
				  }
			  ]
		  },
		  "value": "1234567893"
	  }
  ],
  "active": true,
  "type": [
    {
      "coding": [
        {
          "system": "http://terminology.hl7.org/CodeSystem/organization-type",
          "code": "pay"
        }
      ],
      "text": "Payer"
    }
  ],
  "name": "Acme Health Plan",
  "telecom": [
    {
      "system": "phone",
      "value": "(+1) 555-555-5555"
    },
    {
      "system": "email",
      "value": "hq@acme.org"
    }
  ],
  "address": [
    {
      "line": [
        "100 Insurance Avenue"
      ],
      "city": "Amherst",
      "state": "MA",
      "postalCode": "01002",
      "country": "USA"
    }
  ]
}

23.4.1.4.1.2Quality Program Profile (Library Resource)

The 'Quality Program Profile', which is stored in a FHIR Library resource acts as a set of business rules that need to be met in order to submit a QPP submission.

The user would create a FHIR Library resource with the intent that any $qpp-build operation referencing it, would be required to add a MeasureReport resource for every mentioned 'Measure' resource in the program profile.

The program profile required data points

{"useContext": [
    {
      "code": {
        "system": "http://terminology.hl7.org/CodeSystem/usage-context-type",
        "code": "program"
      },
      "valueCodeableConcept": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/cqfmeasures/CodeSystem/quality-programs",
            "code": "mips",
            "display": "MIPS"
          }
        ]
      }
    }
  ]
}
  • RelatedArtifacts This must contain a complete list of the measures that you will be submitting
    • "type" equals "composed-of" (required type, does not change)
    • "id" equals "113" (must be the "MeasureId specification id from QPP specification, for CMS130, the MeasureID that is needed to be referenced is 113)
      • this is used in order to match the Measure to the specification details on CMS, and is a required mapping for the submission
    • "resource" url http://ecqi.healthit.gov/ecqms/Measure/ColorectalCancerScreeningsFHIR (must match the url of the Measure resource uploaded into CDR)
      • this is used to map MeasureReport measure URL to the Program profile, this is how the profile identifies which MeasureReport(s) provided are acceptable.
    • The measures added to the program must have a few items in common in order to build a valid report
      • Program- all measures must be compatible with the program intended to submit on, either "mips" or "app1"
      • Submission Method- all measures must be able to submit via "registry" or "electronicHealthRecord", this will also match the cdr configuration for "Qpp Submission Method"

The $qpp-build operation references this resource via a parameter by using the "id" field, which in this example below is "QPP-quality-program".

Example Quality Program Profile

{
  "resourceType": "Library",
  "id": "QPP-quality-program",
  "meta": {
    "profile": [
      "http://hl7.org/fhir/us/cqfmeasures/StructureDefinition/quality-program-cqfm"
    ]
  },
  "url": "http://hl7.org/fhir/us/cqfmeasures/Library/ep-ec-quality-program",
  "identifier": [
    {
      "use": "official",
      "system": "http://example.org/fhir/cqi/ecqm/Library/Identifier",
      "value": "Mips Test Quality Program"
    }
  ],
  "version": "0.1.0",
  "name": "QPP mips test program",
  "title": "QPP-mips-program",
  "status": "active",
  "experimental": true,
  "type": {
    "coding": [
      {
        "system": "http://terminology.hl7.org/CodeSystem/library-type",
        "code": "asset-collection"
      }
    ]
  },
  "date": "2019-09-03",
  "publisher": "Smile Digital Health",
  "description": "This library is an example of a quality program specification",
  "useContext": [
    {
      "code": {
        "system": "http://terminology.hl7.org/CodeSystem/usage-context-type",
        "code": "program"
      },
      "valueCodeableConcept": {
        "coding": [
          {
            "system": "http://hl7.org/fhir/us/cqfmeasures/CodeSystem/quality-programs",
            "code": "mips",
            "display": "MIPS"
          }
        ]
      }
    }
  ],
  "approvalDate": "2019-08-03",
  "lastReviewDate": "2019-08-03",
  "relatedArtifact": [
    {
      "type": "composed-of",
      "id": "113",
      "display": "CMS130",
      "resource": "http://ecqi.healthit.gov/ecqms/Measure/ColorectalCancerScreeningsFHIR"
    },
    {
      "type": "composed-of",
      "id": "309",
      "display": "CMS124",
      "resource": "http://ecqi.healthit.gov/ecqms/Measure/CervicalCancerScreeningFHIR"
    },
    {
      "type": "composed-of",
      "id": "143",
      "display": "CMS157",
      "resource": "http://content.alphora.com/fhir/dqm/Measure/CMS157"
    },
    {
      "type": "composed-of",
      "id": "226",
      "display": "CMS138",
      "resource": "http://content.alphora.com/fhir/dqm/Measure/CMS138"
    }
  ]
}

23.4.1.4.1.3MeasureReports

23.4.1.4.1.3.1Overview

The core data component of the QPP report is driven from data within FHIR MeasureReports. These would be generated via the $evaluate-measure operation, which would reference the Measure that you are wanting to produce reporting for, and would be specified for the performanceYear you are submitting for.

23.4.1.4.1.3.2How to get MeasureReport to persist

When running the $evaluate-measure operation for QPP reporting, you would only want to use measures outlined in your 'Program Profile'. This would require the HTTP header prefer: respond-ASYNC version of $evaluate-measure, so the resulting FHIR resource will be saved in the Smile CDR FHIR repository (database).

23.4.1.4.1.3.3Using Persisted MeasureReports in Operation Parameter

Once reporting is generated from the $evaluate-measure operation, and an output MeasureReport exists in the system, you would reference the "id" of the MeasureReport and add to the $qpp-build operation parameter as a comma separated list.

For the example below, the "id" that would be used for $qpp-build would be "measurereport-QPP-130"

Example MeasureReport resource

{
	"resourceType": "MeasureReport",
	"id": "measurereport-QPP-130",
	"language": "en",
	"status": "complete",
	"type": "summary",
	"measure": "http://ecqi.healthit.gov/ecqms/Measure/ColorectalCancerScreeningsFHIR",
	"date": "2023-03-20T19:53:06+00:00",
	"period": {
		"start": "2023-01-01T00:00:00+00:00",
		"end": "2023-12-31T23:59:59+00:00"
	},
	"improvementNotation": {
		"coding": [
			{
				"system": "http://terminology.hl7.org/CodeSystem/measure-improvement-notation",
				"code": "increase"
			}
		]
	},
	"group": [
		{
			"population": [
				{
					"id": "178DA8D8-0694-4B88-8FFE-42CE671EEE35",
					"code": {
						"coding": [
							{
								"system": "http://terminology.hl7.org/CodeSystem/measure-population",
								"code": "initial-population",
								"display": "Initial Population"
							}
						]
					},
					"count": 2
				},
				{
					"id": "0AC3911A-2ADC-4DA4-BEBF-545FF8D6D819",
					"code": {
						"coding": [
							{
								"system": "http://terminology.hl7.org/CodeSystem/measure-population",
								"code": "denominator",
								"display": "Denominator"
							}
						]
					},
					"count": 2
				},
				{
					"id": "67EABB9C-ADCF-4593-A8DA-35FF25DA594C",
					"code": {
						"coding": [
							{
								"system": "http://terminology.hl7.org/CodeSystem/measure-population",
								"code": "denominator-exclusion",
								"display": "Denominator Exclusion"
							}
						]
					},
					"count": 0
				},
				{
					"id": "14B66980-07F4-4872-83AF-C425C379B971",
					"code": {
						"coding": [
							{
								"system": "http://terminology.hl7.org/CodeSystem/measure-population",
								"code": "numerator",
								"display": "Numerator"
							}
						]
					},
					"count": 1
				}
			],
			"measureScore": {
				"value": 0.5
			}
		}
	]
}

23.4.1.4.1.4User Rights

If executing $qpp-build operation from the backend, ensure the user has the correct

  • License dqm -- license is required to use operation
  • UserRole Fhir -- superuser and above will grant access
  • Operation -- toggle Activate QPP_build toggle inside user management if user is below FHIR_SuperUser role

23.4.1.4.2CDR DQM Module Configuration

CDR settings for how Organization profiles can be persisted to MeasureReport resources for tracing reporter to qpp report generation

23.4.1.4.2.1Default Evaluate Measure Reporter

When running $evaluate-measure in prefer: respond-ASYNC header mode, you have the option to populate a MeasureReport.reporter value by setting this configuration to point at an Organization FHIR resource reference. If left blank it will not populate MeasureReport.reporter.

23.4.1.4.2.2Use Group Resource Managing Entity for Reporter

When this config is enabled, the user will be able to populate MeasureReport.reporter when running $evaluate-measure in prefer: respond-ASYNC from the Group.ManagingEntity reference as a way to group populations and practitioner groups to specific Organizations for qpp reporting. This will override default MeasureReport.reporter value if found, if not found on group or if no group parameter was specified for subject or practitioner, it will default to default evaluate measure reporter config value.

23.4.1.4.2.3QPP Submission Method

When this config is enabled, the user will be able to change the type of qpp-build output required for performing CMS qpp submissions. This accepts only values of electronicHealthRecord or registry.

This means only Measures that are compliant with the chosen submission method are able to be added to the $qpp-build operation for submission.

23.4.1.4.3Operation

23.4.1.4.3.1Parameters

ParameterExample ValueDescription
theOrganizationIdorg-acme-payer-1the id of the Organization resource for this QPP report
theProgramIdqpp-quality-programthe id of the Library-Program resource that specifies the measure program requirements
theMeasureReportIdsmeasurereport-QPP-157, measurereport-QPP-130, measurereport-QPP-124the list of the MeasureReport id's that fullfill Program measure requirements
thePerformanceYear2023The QPP year you are submitting for, format of YYYY
theEntityTypegroupthe QPP entity designation. Acceptable values are apm/virtualgroup/group/individual
theEntityId The unique identifier for the virtual group or APM associated with the submission. Required if entityType is "apm" or "virtualGroup"
theQPPPartialTypesubmissionthe type of QPP report being built, options are submission, measurementset, measurement
theMeasurementSetId123456the unique id given to a measurementSet after it has been submitted, this is required for QPPPartialType = MeasurementSet and Measurement

23.4.1.4.3.2Example Request

GET http://localhost:8000/MeasureReport/$qpp-build?organizationId=org-acme-payer-1&programId=QPP-quality-program&measureReportIds=measurereport-QPP-157, measurereport-QPP-130, measurereport-QPP-124&performanceYear=2023&entityType=group&QPPPartialType=measurementSet&measurementsetid=1234567

23.4.1.4.3.3Example Responses

theQPPPartialType will generate different data based on the accepted parameters values that are passed.

The response is not saved in database, and is not saved in a FHIR resource.

  • PartialType-Submission-- this will force the user to generate reports for each Measure specified in the "Quality Program Profile", and will assume no submission was created before it.
  • PartialType-MeasurementSet-- this will force the user to generate a MeasurementSet that matches the measures in "Quality Program Profile", this will require a single MeasurementSet, so any profile with multiple measurementsets will not work. This will overwrite existing measurementset, and is used to edit existing submissions.
  • PartialType-Measurement-- this will force the user to generate a single Measurement that is inside the "Quality Program Profile", this will only create one measurement resource. This will overwrite existing measurement with the same id. Main use case is to edit existing submissions.
23.4.1.4.3.3.1Submission PartialType (Default Behavior)
{
  "measurementSets": [
    {
      "performanceEnd": "2023-12-31",
      "performanceStart": "2023-01-01",
      "programName": "mips",
      "category": "quality",
      "submissionMethod": "electronicHealthRecord",
      "measurements": [
        {
          "measureId": "113",
          "value": {
            "eligiblePopulation": 2,
            "eligiblePopulationExclusion": 0,
            "performanceMet": 1,
            "performanceNotMet": 1,
            "isEndToEndReported": true,
            "eligiblePopulationException": 0
          }
        },
        {
          "measureId": "309",
          "value": {
            "eligiblePopulation": 2,
            "eligiblePopulationExclusion": 0,
            "performanceMet": 1,
            "performanceNotMet": 1,
            "isEndToEndReported": true,
            "eligiblePopulationException": 0
          }
        },
        {
          "measureId": "143",
          "value": {
            "eligiblePopulation": 27,
            "eligiblePopulationExclusion": 0,
            "performanceMet": 13,
            "performanceNotMet": 14,
            "isEndToEndReported": true,
            "eligiblePopulationException": 0
          }
        },
        {
          "measureId": "226",
          "value": {
            "strata": [
              {
                "eligiblePopulation": 12,
                "eligiblePopulationExclusion": 0,
                "performanceMet": 10,
                "performanceNotMet": 0,
                "eligiblePopulationException": 2,
                "stratum": "screened"
              },
              {
                "eligiblePopulation": 12,
                "eligiblePopulationExclusion": 0,
                "performanceMet": 5,
                "performanceNotMet": 1,
                "eligiblePopulationException": 2,
                "stratum": "overall"
              },
              {
                "eligiblePopulation": 12,
                "eligiblePopulationExclusion": 0,
                "performanceMet": 7,
                "performanceNotMet": 1,
                "eligiblePopulationException": 4,
                "stratum": "combinedPopulations"
              }
            ],
            "isEndToEndReported": true
          }
        }
      ]
    }
  ],
  "performanceYear": 2023,
  "entityType": "group",
  "taxpayerIdentificationNumber": "000000001"
}

23.4.1.4.3.4MeasurementSet PartialType

Requires only one measurementSet be provided

{
  "measurementSets": [
    {
      "performanceEnd": "2023-12-31",
      "performanceStart": "2023-01-01",
      "programName": "mips",
      "category": "quality",
      "submissionMethod": "electronicHealthRecord",
      "measurements": [
        {
          "measureId": "113",
          "value": {
            "eligiblePopulation": 2,
            "eligiblePopulationExclusion": 0,
            "performanceMet": 1,
            "performanceNotMet": 1,
            "isEndToEndReported": true,
            "eligiblePopulationException": 0
          }
        },
        {
          "measureId": "309",
          "value": {
            "eligiblePopulation": 2,
            "eligiblePopulationExclusion": 0,
            "performanceMet": 1,
            "performanceNotMet": 1,
            "isEndToEndReported": true,
            "eligiblePopulationException": 0
          }
        },
        {
          "measureId": "143",
          "value": {
            "eligiblePopulation": 27,
            "eligiblePopulationExclusion": 0,
            "performanceMet": 13,
            "performanceNotMet": 14,
            "isEndToEndReported": true,
            "eligiblePopulationException": 0
          }
        },
        {
          "measureId": "226",
          "value": {
            "strata": [
              {
                "eligiblePopulation": 12,
                "eligiblePopulationExclusion": 0,
                "performanceMet": 10,
                "performanceNotMet": 0,
                "eligiblePopulationException": 2,
                "stratum": "screened"
              },
              {
                "eligiblePopulation": 12,
                "eligiblePopulationExclusion": 0,
                "performanceMet": 5,
                "performanceNotMet": 1,
                "eligiblePopulationException": 2,
                "stratum": "overall"
              },
              {
                "eligiblePopulation": 12,
                "eligiblePopulationExclusion": 0,
                "performanceMet": 7,
                "performanceNotMet": 1,
                "eligiblePopulationException": 4,
                "stratum": "combinedPopulations"
              }
            ],
            "isEndToEndReported": true
          }
        }
      ]
    }
  ],
  "performanceYear": 2023,
  "entityType": "group",
  "taxpayerIdentificationNumber": "000000001"
}

23.4.1.4.3.5Measurement PartialType

{
  "measurementSetId": "123456789",
  "measureId": "113",
  "value": {
    "eligiblePopulation": 2,
    "eligiblePopulationExclusion": 0,
    "performanceMet": 1,
    "performanceNotMet": 1,
    "isEndToEndReported": true,
    "eligiblePopulationException": 0
  }
}