diff --git a/src/app/components/app.test.tsx b/src/app/components/app.test.tsx
index bd3c072e..cad41134 100644
--- a/src/app/components/app.test.tsx
+++ b/src/app/components/app.test.tsx
@@ -5,7 +5,10 @@ import '@testing-library/jest-dom';
import App from './app';
import LeftNav from './left-nav';
import { combinedRoutes } from '../routes';
-import { ExternalLink } from '../../shared';
+import { ExternalLink, LinkToId } from '../../shared';
+import { ApiExample, IApiExample } from '../../shared/api-example';
+import { CodeTab, ICodeTab } from '../../shared/code-tab';
+import NotFound from './notFound/not-found';
describe('App tests', () => {
afterAll(() => {
@@ -145,4 +148,585 @@ describe('App tests', () => {
);
});
});
+
+ describe('LinkToId Component', () => {
+
+ beforeEach(() => {
+ // Mock window.scrollBy since it's not implemented in jsdom
+ window.scrollBy = jest.fn();
+ // Mock scrollIntoView
+ Element.prototype.scrollIntoView = jest.fn();
+ });
+
+ afterEach(() => {
+ jest.clearAllMocks();
+ });
+
+ it('should render a link with correct href when to prop does not include hash', () => {
+ const { getByRole } = render(
+
Last Updated: 08/28/2024
{/* IMPORTANT: update this Last-Updated value if you have made any changes to this page's content. */} +Last Updated: 08/28/2025
{/* IMPORTANT: update this Last-Updated value if you have made any changes to this page's content. */}
In the
- Here's a
+ To see an example request and response, please see the
diff --git a/src/app/components/guides/basic-tutorial.tsx b/src/app/components/guides/basic-tutorial.tsx
index 8a5d1c24..3ef2c079 100644
--- a/src/app/components/guides/basic-tutorial.tsx
+++ b/src/app/components/guides/basic-tutorial.tsx
@@ -1,12 +1,11 @@
-import { ExternalLink, CodeTab, ApiExample, LinkToId } from '../../../shared';
+import { ExternalLink, LinkToId } from '../../../shared';
import envConfig from '../../../envConfig';
-import { steps, apiExamples } from './data';
import { DocPageProps } from '../../../shared/types';
const BasicTutorial: React.FC Last Updated: 08/28/2024 Last Updated: 08/28/2025
The Submissions API is an easy way to manage your performance data with CMS. Performance data is organized into submissions, which can have many measurements. Measurements within a submission are also grouped by category (e.g. quality) and submission method (e.g. registry) and program name (e.g. mips) into measurement sets.
@@ -26,26 +25,22 @@ const BasicTutorial: React.FC
- We'll also need to supply some information to tell CMS how to identify this particular submission, which you can see below. Every submission is unique to the combination of the fields provided. Note that we enforce fake TINs (starting with
- Take a look at the request below, and then click the 'Response' tab to see what the API returns when we submit this request!
+ To see an example request and response, please see the
With the submission
- In general, we can think about the Submissions API as a way to have a live conversation with CMS about performance measurements. Rather than waiting months to hear back about missing information or a score, the API gives us feedback that is immediate, specific, and actionable - we can easily make another API request if necessary.
+ To see an example request and response, please see the
- What we've shown is an example of working directly with the API - typically these requests are made through a web interface or script, but the requests & responses above illustrate the kind of power and speed the Submissions API and applications built against it can provide.
+ In general, we can think about the Submissions API as a way to have a live conversation with CMS about performance measurements. Rather than waiting months to hear back about missing information or a score, the API gives us feedback that is immediate, specific, and actionable - we can easily make another API request if necessary.
Disclaimer: Scoring is subject to change, based on periodic policy updates, eligibility reviews, and technical integration developments.
diff --git a/src/app/components/references/benchmarks.tsx b/src/app/components/references/benchmarks.tsx
index 371e804b..d1695908 100644
--- a/src/app/components/references/benchmarks.tsx
+++ b/src/app/components/references/benchmarks.tsx
@@ -7,17 +7,17 @@ import { DocPageProps } from '../../../shared/types';
const Benchmarks: React.FC Last Updated: 08/28/2024 Last Updated: 08/28/2025
- Benchmarks serve as the reference points for measurements and are used to score submissions. Each benchmark is unique based upon its combination of measureId, submissionMethod, and performanceYear, and each has a list of 9 data points.
+ Benchmarks serve as the reference points for measurements and are used to score submissions. Each benchmark is unique based upon its combination of measureId, submissionMethod, and performanceYear, and each has a list of 11 data points.
- Please see the
- You can view the benchmarks for a Performance Year using the publicly accessible Last Updated: 08/31/2022 Last Updated: 08/28/2025 Last Updated: 07/06/2023 Last Updated: 08/28/2025
The MeasurementSets resource represents performance data for a specified category. Each Submission can have multiple MeasurementSets. Each MeasurementSet in a given Submission is uniquely identified by category, submission method, and programName. MeasurementSets contain Measurements, which can be accessed both via MeasurementSets methods and Measurements methods.
@@ -17,17 +17,6 @@ const MeasurementSets: React.FC
- The MeasurementSet property practiceDetails is an optional property only available when programName is set to "pcf".
- Last Updated: 05/12/2021 Last Updated: 08/28/2025 Last Updated: 08/28/2024 Last Updated: 08/28/2025
The scoring engine is responsible for interpreting submissions and outputting a score. Each category score is utilized to create the QPP score object.
@@ -50,7 +49,7 @@ const Scoring: React.FC
In the Developer Preview Testing Environment you can use the
Note: You can use the
Once submitting quality data during the Submission window you can use the
The only available option for reporting Improvement Activities is boolean, and only Activities completed need to be reported.
@@ -72,37 +70,23 @@ const Scoring: React.FC
- The example submission below contains 4 activities. The reported activities contain both High and Medium weighted activities.
-
- Use the
- The Promoting Interoperability Category requires all measures associated with the category to either be reported or their corresponding exclusion to be claimed. Additionally, to receive credit for the category, all the criteria below must be fulfilled:
+ For additional information on reporting Promoting Interoperability, visit the Resource Library for your specific program needs.
The measure types available for submission are outlined below. Each measure in the repo will dictate which type is to be utilized.
- Use the
- The Quality category requires 6 measures to receive full credit, one of which must be either an Outcome measure or High Priority. If no Outcome or High Priority measure is submitted, you will only be scored on the top 5 measures and receive a score of 0 for the sixth measure.
+ For additional information on reporting Quality, visit the
Submission structure in the Quality category are contingent on the measure being submitted. If there are questions around the data to be submitted in the fields, please refer to the measure specification. The available types related to the measures are outlined below:
- In the sample below, measure 305 is a multi-strata performance measure, 102 is a single performance measure, ACRAD15 is a non-proportion measure.
-
- Use the
+ eCQMs require the utilization of CEHRT and the reporting of the corresponding CMS CEHRT ID in the submission.
Last Updated: 08/28/2024 Last Updated: 08/28/2025 Last Updated: 08/28/2024 Last Updated: 08/28/2025 Last Updated: 08/28/2024 Last Updated: 08/28/2025
The Change log is updated with each significant change to the API with the details that you need to be aware of.
Add more measures to an existing measurement set
PATCH request to add more measures to an existing measurement set. You can pass an Accept header to specify the API version and the desired response format by using our custom mime type, application/vnd.qpp.cms.gov.v1+json. We support JSON by using +json. You can also continue to use a standard application/json header, which will point to the latest version. Check out the response and request below!
+ You can use a PATCH request to add more measures to an existing measurement set. You can pass an Accept header to specify the API version and the desired response format by using our custom mime type, application/vnd.qpp.cms.gov.v1+json. We support JSON by using +json. You can also continue to use a standard application/json header, which will point to the latest version.
+ PATCH /measurement-sets/:id section within the Next steps
Tutorial: Create and Score Data via API
Accept header to specify the API version and type of response back by using our custom mime type, application/vnd.qpp.cms.gov.v1+json. We support JSON by using +json. Right now, only version v1 is supported. You can also continue to use a standard application/json header, which will point to the latest version.
000) in the Developer Preview Testing Environment to avoid accidentally collecting personally identifiable information.
+ We'll also need to supply some information to tell CMS how to identify this particular submission. Every submission is unique to the combination of the fields provided. Note that we enforce fake TINs (starting with 000) in the Developer Preview Testing Environment to avoid accidentally collecting personally identifiable information.
POST /measurement-sets section within the Scoring a submission
id we were given, we can ask the API to calculate the submission score with a GET request. We don't need to include a request body this time since we're only interested in retrieving the score, and CMS doesn't need any information other than the submission id.
GET /submissions/:id/score section within the Benchmarks
', notes: 'writable, required' },
- { name: 'programName', value: 'string', description: 'The quality payment program under which the measurementSet should be scored. Acceptable values are: Error Codes
- The Submissions API Error Codes summary can be found in the
+ To review a list of response codes provided by the API, please visit the
Measurement Sets
- Practice Details
-
- References
General References
@@ -50,13 +50,6 @@ const References: React.FCCMS Web Interface API
-
-
Scoring
Developer Preview Testing Environment
POST .../score-preview endpoint to view the scoring object returned for the data you are proposing to submit.
- The data is not saved. Try the POST .../submissions/score-preview endpoint POST .../submissions/score-preview endpoint GET .../submissions/{id}/score to view the score for the data after it is submitted.
This submission data is saved under the submissionId and retrieved to view the score.
- Try the GET .../submissions/{id}/score endpoint GET .../submissions/{id}/score endpoint
Improvement Activities (IA) Scoring
Example IA Submission
+ Promoting Interoperability (PI) Scoring
Example Scoring
- .../submisisons/score-preview endpoint (above) to see the scoring response.
+ The Promoting Interoperability Category requires all measures associated with the category to either be reported or their corresponding exclusion to be claimed. Additionally, to receive credit for the category, all the criteria below must be fulfilled:
+
-
-
- Promoting Interoperability (PI) Scoring
-
-
-
- Example PI Submission
Example Scoring
- .../submisisons/score-preview endpoint (above) to see the scoring response.
-
Quality
+
- Example Quality Submission
Example Scoring
- .../submisisons/score-preview endpoint (above) to see the scoring response.
+ Frequently Asked Questions
General and Developer Preview
@@ -60,7 +56,7 @@ const FrequentlyAskedQuestions: React.FCPY24 Questions and Known Issues
+ PY25 Questions and Known Issues
diff --git a/src/app/components/topics/announcements.tsx b/src/app/components/topics/announcements.tsx
index f280af79..46c22298 100644
--- a/src/app/components/topics/announcements.tsx
+++ b/src/app/components/topics/announcements.tsx
@@ -5,7 +5,7 @@ import { DocPageProps } from '../../../shared/types';
const Announcements: React.FC Announcements
General
@@ -16,10 +16,10 @@ const Announcements: React.FCSubmission API
Measures Repository
+
+ `],
['08/28/2024', `Updates to Developer Documentation for Performance Year 2024`, `
+
+ measureSet property from /measurement-sets endpoints.
`],
];
const measuresChangeTable = [
+ ['3/18/25', `allowedRegistrationTypes has been added to all measures.`, `For all measures, allowedRegistrationTypes has been added to indicate which entity types can submit the measure. Note, as this is intended for use with MVP registration workflows, virtual groups are not listed. Virtual Groups can still report to measures outside of MVPs.`],
+ ['11/8/24', `isSevenPointCapRemoved and sevenPointCapRemoved have been added to all quality measures.`, `For category: "quality", isSevenPointCapRemoved and sevenPointCapRemoved is added. These fields will indicate when a measure will no longer have the 7-point cap applied but rather scored according to the new topped out measure benchmarks.`],
['08/01/24', `companionMeasureId is added to all quality Measures.`, `For category: "quality", companionMeasureId is added to list the corresponding CQM or Medicare CQM measure id.`],
['8/15/21', `allowedPrograms is added to all quality Measures.`, `For category: "quality", allowedPrograms is added to list the programs to which the measure can be submitted.`],
['8/15/21', `requiredForPrograms is added to all quality Measures.`, `For category: "quality", requiredForPrograms is added to list the programs to which the measure must be submitted.`],
@@ -223,7 +242,7 @@ const buildTableBody = (data: string[][]) =>
const ChangeLog: React.FCChange Log