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
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.
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'.
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.
There are some required objects that need to be generated before being able to execute this operation.
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
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"
}
]
}
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"
}
]
}
}
]
}
url http://ecqi.healthit.gov/ecqms/Measure/ColorectalCancerScreeningsFHIR
(must match the url of the Measure resource uploaded into CDR)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"
}
]
}
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.
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).
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
}
}
]
}
If executing $qpp-build
operation from the backend, ensure the user has the correct
CDR settings for how Organization profiles can be persisted to MeasureReport resources for tracing reporter to qpp report generation
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.
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.
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.
Parameter | Example Value | Description |
---|---|---|
theOrganizationId | org-acme-payer-1 | the id of the Organization resource for this QPP report |
theProgramId | qpp-quality-program | the id of the Library-Program resource that specifies the measure program requirements |
theMeasureReportIds | measurereport-QPP-157, measurereport-QPP-130, measurereport-QPP-124 | the list of the MeasureReport id's that fullfill Program measure requirements |
thePerformanceYear | 2023 | The QPP year you are submitting for, format of YYYY |
theEntityType | group | the 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" | |
theQPPPartialType | submission | the type of QPP report being built, options are submission, measurementset, measurement |
theMeasurementSetId | 123456 | the unique id given to a measurementSet after it has been submitted, this is required for QPPPartialType = MeasurementSet and Measurement |
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
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.
{
"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"
}
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"
}
{
"measurementSetId": "123456789",
"measureId": "113",
"value": {
"eligiblePopulation": 2,
"eligiblePopulationExclusion": 0,
"performanceMet": 1,
"performanceNotMet": 1,
"isEndToEndReported": true,
"eligiblePopulationException": 0
}
}