fix(qpp): payment-year keyed thresholds — correct 2023/2024/2026; CAA 2026 supersession (refs #620 #613)

This commit is contained in:
kert
2026-08-13 22:14:35 -04:00
parent 1c688befad
commit 5063a77587
2 changed files with 303 additions and 123 deletions

View File

@@ -39,16 +39,28 @@ the first split-CF year) and ``False`` for earlier performance
years. See :class:`pfs.rules.RuleYear` (``cf_qp`` /
``conversion_factor`` on ``RULES[2026]``) for the actual dollar CFs.
APM Incentive Payment sunset
------------------------------
APM Incentive Payment sunset — and CAA 2026 revival for 2028
----------------------------------------------------------------
The lump-sum APM Incentive Payment (a fixed percentage of a QP's
prior-year Part B paid claims) is statutorily phased out: 5% for
payment years 2019-2024, 3.5% for payment year 2025 (QP Performance
Period 2023), 1.88% for payment year 2026 (QP Performance Period
2024) — and payment year 2026 is, under current law, the *last* year
these payments are made. ``QppYear.apm_incentive_pct`` is ``None``
for QP Performance Periods 2025 and later.
prior-year Part B paid claims) is statutorily set at: 5% for payment
years 2019-2024, 3.5% for payment year 2025 (QP Performance Period
2023), 1.88% for payment year 2026 (QP Performance Period 2024).
Payment year 2026 was, under prior law, believed the *last* year
these payments would be made — ``QppYear.apm_incentive_pct`` is
accordingly ``None`` for payment year 2027 (QP Performance Period
2025). The Consolidated Appropriations Act, 2026 (CAA 2026) (Pub. L.
119-75, February 3, 2026) revived a **3.1%** APM Incentive Payment,
but only for payment year 2028 (QP Performance Period 2026) — 42 CFR
414.1450(b)(1)(iv), as amended by CMS-1848-P (91 FR 44286, transcribed
``data/fr_downloads/2026-14327.txt:42632``, "(iv) 2028: 3.1
percent."); narrative at 91 FR 44218-44219
(``2026-14327.txt:37389-37391``, and the proposed-regulatory-text
preview at ``:37436``). There is no revival for payment year 2029 (QP
Performance Period 2027) — ``QppYear.apm_incentive_pct`` is ``None``
there too. So the payment years with a nonzero incentive are 2025,
2026, and (revived) 2028 only — not a clean sunset after 2026. See
``QPP[2026].apm_incentive_pct`` and task #620.
CMS-1832-P (CY2026 PFS proposed rule, 90 FR 32352, transcribed from
``data/fr_downloads/2025-13271.txt``) proposed several QPP
@@ -157,30 +169,84 @@ statutory threshold levels (not a new CMS-set threshold change); and
payment year 2028 and restructuring 414.1450(b)(1) into a per-year
list.
**Concern — PY2026 (QPP[2026], payment year 2028) restatement
discrepancy, NOT corrected here:** this NPRM's own amendatory text for
42 CFR 414.1430(a)/(b) (91 FR 44285-44286) states, for payment year
2028: QP payment amount threshold 50% (a)(1)(iv), QP patient count
threshold 35% (a)(3)(iv), Partial QP payment amount threshold 40%
(a)(2)(iv), Partial QP patient count threshold 25% (a)(4)(iv) — and
for payment years 2021 through 2026 (covering QPP[2023]'s payment
year 2025 and QPP[2024]'s payment year 2026): QP payment amount
threshold 50% (a)(1)(ii), QP patient count threshold 35% (a)(3)(ii).
These figures directly **contradict** the values currently coded on
``QPP[2023]``, ``QPP[2024]``, and ``QPP[2026]`` (75%/50% QP,
50%/35% Partial QP, uniformly), which were sourced from the CY2026
Final Rule quote in this module's docstring ("The thresholds to
achieve QP status in the 2026 QP Performance Period (2028 payment
year) are set to 75 percent for the payment amount, and 50 percent
for the patient count.", 90 FR 49980). This NPRM's amendatory text
also directly states, for payment year 2028, an APM Incentive Payment
of 3.1% (42 CFR 414.1450(b)(1)(iv), 91 FR 44286) — contradicting
``QPP[2026].apm_incentive_pct = None``. Per task scope, these PY2023/
PY2024/PY2026 values are **not modified** by this transcription; see
task-7-report.md for the full cross-check and a recommendation that a
follow-up task re-verify ``QPP[2023]``, ``QPP[2024]``, and
``QPP[2026]`` directly against 42 CFR 414.1430/414.1450 (eCFR) rather
than the FR-corpus narrative quotes.
**Payment-year keying correction — QPP[2023], QPP[2024] (task #620,
refs #613):** An earlier transcription (P36) misread 42 CFR
414.1430(a)'s payment-year-keyed threshold schedule as keyed to *QP
Performance Period*, carrying the 75%/50% QP (50%/35% Partial QP)
step-up back two years too early onto ``QPP[2023]``/``QPP[2024]``.
The statute (section 1833(z)(2) of the Act) and its implementing
regulation key strictly to **payment year**:
- 42 CFR 414.1430(a)(1)(ii)/(a)(3)(ii): "2021 through 2026: 50
percent" / "35 percent" (QP payment-amount / patient-count) —
CMS-1848-P amendatory text, 91 FR 44285
(``data/fr_downloads/2026-14327.txt:42548,42566``).
- 42 CFR 414.1430(a)(2)(ii)/(a)(4)(ii): "2021 through 2026: 40
percent" / "25 percent" (Partial QP) — 91 FR 44285-44286
(``2026-14327.txt:42556,42573``).
Original source: 42 CFR 414.1430(a), 89 FR 98564 (CY2024 PFS Final
Rule); restated in CMS-1848-P's amendatory text at 91 FR 44285-44286;
the CAA 2024 Sec. 304 narrative extending payment-year-2025
thresholds through payment year 2026 is at 91 FR 44219
(``2026-14327.txt:37498-37509``: "section 304(a)(2) of the CAA, 2024
... extend[ed] for payment years 2025 and 2026 (performance periods
2023 and 2024) the applicable payment amount and patient count
thresholds"). Accordingly, ``QPP[2023]`` (payment year 2025) and
``QPP[2024]`` (payment year 2026) are corrected from 75%/50% QP,
50%/35% Partial QP to **50%/35% QP, 40%/25% Partial QP**.
``QPP[2025]`` (payment year 2027) and ``QPP[2027]`` (payment year
2029) were already correct at 75%/50% QP, 50%/35% Partial QP and are
**unchanged** by this correction.
**CAA 2026 supersession — QPP[2026] (task #620):** ``QPP[2026]``
(payment year 2028) was previously coded 75%/50% QP, 50%/35% Partial
QP, ``apm_incentive_pct=None`` — accurate when transcribed from the
CY2026 PFS Final Rule narrative ("The thresholds to achieve QP status
in the 2026 QP Performance Period (2028 payment year) are set to 75
percent for the payment amount, and 50 percent for the patient
count.", 90 FR 49980), which was itself correct *at the time of that
rule's publication*. The Consolidated Appropriations Act, 2026 (CAA
2026) (Pub. L. 119-75, February 3, 2026) subsequently, legislatively
restored payment year 2028 to the lower 50%/35% QP, 40%/25% Partial QP
levels and revived a 3.1% APM Incentive Payment for that year — see
CMS-1848-P's own narrative, 91 FR 44219-44220
(``2026-14327.txt:37536-37541``: "these thresholds all increased for
payment year 2027 ... and were legislatively restored to lower levels
for payment year 2028") and the amendatory text at 91 FR 44286 (QP/
Partial QP thresholds: ``2026-14327.txt:42550,42558,42568,42575``;
APM incentive: ``:42632``, "(iv) 2028: 3.1 percent."). **This
statutory change is self-executing and controls regardless of
regulatory-text conformance status** — CMS-1848-P's own amendment of
42 CFR 414.1430/414.1450 to match is only *proposed* as of this
transcription (not yet a Final Rule), and eCFR's currently-displayed
text for these sections does not yet reflect CAA 2026 and does **not**
control. ``QPP[2026]`` is therefore corrected to ``qp_thresholds``
50%/35%, ``partial_qp_thresholds`` 40%/25%, and
``apm_incentive_pct=3.1``, superseding the CY2026 Final Rule narrative
(90 FR 49980) this module originally transcribed. See
``QPP[2026].proposed.changes`` for how this interacts with CMS-1832-P's
(correct, at the time) "no numeric change" disposition, and
task-620-report.md for the full correction table.
**CMS drafting-error note (not a data error in this module):**
CMS-1848-P's own amendatory text contains an internal inconsistency at
42 CFR 414.1430(b)(2)(i)(D) — the All-Payer Combination Option Partial
QP payment-amount threshold for "2029 and thereafter" is printed as
"75 percent" (91 FR 44286, ``2026-14327.txt:42589``), matching the
*QP* (non-Partial) threshold at the parallel (b)(1)(i)(D)
(``:42583``) rather than being lower than it, and conflicting with the
Medicare Option Partial QP payment-amount threshold for the same
period at 414.1430(a)(2)(v), correctly printed as "50 percent"
(``:42559``). Partial QP is by design the *lower* bar, so a Partial QP
figure equal to the QP figure is incoherent; this reads as a
copy-paste error in the NPRM text, not a substantive Medicare-Option-
vs-All-Payer-Option policy difference. This module does not encode the
All-Payer Combination Option thresholds (only the generally-applicable
Medicare Option ones), so this drafting error does not propagate into
any field here — noted so a future grepper who spots "75 percent" at
(b)(2)(i)(D) does not mistake it for evidence that this module's 2029
Partial QP figure (50%, sourced from (a)(2)(v)) is wrong.
"""
from __future__ import annotations
@@ -295,9 +361,14 @@ class QppYear(BaseModel):
apm_incentive_pct: float | None
"""Lump-sum APM Incentive Payment, as a % of the QP's base-year
(payment_year - 1) paid claims for covered professional services —
``None`` once the statutory sunset takes effect (payment years
2027+, i.e. performance years 2025+)."""
(payment_year - 1) paid claims for covered professional services.
``None`` for payment years without a payment under current law:
originally believed to sunset after payment year 2026 (performance
year 2024), but the Consolidated Appropriations Act, 2026 (CAA
2026) revived a 3.1% payment for payment year 2028 (performance
year 2026) only — payment years 2027 and 2029 remain ``None``. See
module docstring "APM Incentive Payment sunset — and CAA 2026
revival for 2028"."""
qp_cf_applies: bool
"""``True`` once the payment year for this performance period uses
@@ -320,60 +391,62 @@ class QppYear(BaseModel):
# ── Annual QPP registry ──────────────────────────────────────────
#
# QP / Partial QP thresholds: the statutory schedule (section
# 1833(z)(2) of the Act) raised the Medicare-option thresholds to 75%
# (payment amount) / 50% (patient count) effective QP Performance
# Period 2023, with Partial QP thresholds set at the prior period's
# QP levels — 50% / 35%. Transcribed from data/fr_downloads/
# 2025-13271.txt (NPRM) and cross-checked against data/fr_downloads/
# 2025-19787.txt (Final Rule):
# QP / Partial QP thresholds are keyed to PAYMENT YEAR by both the
# statute (section 1833(z)(2) of the Act) and 42 CFR 414.1430(a) — NOT
# to QP Performance Period. (An earlier version of this module read
# the statutory 75%/50% step-up as keyed to performance period,
# shifting it two years too early onto QPP[2023]/QPP[2024]; corrected
# under task #620 / issue #613 — see module docstring "Payment-year
# keying correction".) The current-law payment-year schedule per 42
# CFR 414.1430(a), as amended through CMS-1848-P's amendatory text (91
# FR 44285-44286, data/fr_downloads/2026-14327.txt:42546-42576) and
# the CAA 2026 supersession of payment year 2028 (module docstring
# "CAA 2026 supersession"), is:
#
# - NPRM 90 FR 32772 (line 36531-36537): "...the QP thresholds have
# increased relative to previous years and, effective with the
# 2025 QP Performance Period are now at 75 percent for the
# payment amount and 50 percent for the patient count."
# - NPRM 90 FR 32819 (line 40647-40656, Regulatory Impact Analysis):
# "the thresholds to achieve QP status beginning in the 2026 QP
# Performance Period ... will increase from 50 percent to 75
# percent for the payment amount, and from 35 percent to 50
# percent for the patient count." This RIA sentence is internally
# inconsistent with the 90 FR 32772 recital above (both appear in
# the same NPRM) — it reads as stale boilerplate describing the
# pre-2023 -> 2023 statutory step-up, not a change CMS-1832-P
# itself proposes.
# - Final Rule 90 FR 49980 (line 69796-69798; corrected from a
# mistranscribed "90 FR 49928" — that page marker is at line 64990,
# these lines fall between the [[Page 49980]] marker at line 69792
# and the [[Page 49981]] marker at line 69913) drops the "increase
# from" framing entirely: "The thresholds to achieve QP status in
# the 2026 QP Performance Period (2028 payment year) are set to
# 75 percent for the payment amount, and 50 percent for the
# patient count" — consistent with 75/50 being the unchanged,
# already-current value, not a new increase.
# - Final Rule 90 FR 49928 (line 65021-65026): "...if the proposed
# policy would result in an ACO's payment amount score increasing
# from 48 percent to 51 percent, that would cross the 50 percent
# Partial QP threshold" — confirms Partial QP payment-amount
# threshold = 50%. The Partial QP patient-count threshold (35%) is
# not independently restated as a bare number in either document;
# it is inferred from the same NPRM RIA sentence's "35 percent"
# figure (the pre-2023 QP patient-count digit, which by the
# statute's step-down design becomes the post-2023 Partial QP
# digit) — see module docstring caveat.
# payment year QP (amt / cnt) Partial QP (amt / cnt)
# 2021-2026 50% / 35% 40% / 25%
# 2027 75% / 50% 50% / 35%
# 2028 50% / 35% 40% / 25% (CAA 2026 revival)
# 2029+ 75% / 50% 50% / 35%
#
# Mapped onto this registry's performance-year keys (payment_year =
# performance_year + 2):
#
# - QPP[2023] (pay 2025), QPP[2024] (pay 2026): 50%/35% QP, 40%/25%
# Partial QP — 42 CFR 414.1430(a)(1)(ii)/(a)(2)(ii)/(a)(3)(ii)/
# (a)(4)(ii), 91 FR 44285-44286; original source 89 FR 98564
# (CY2024 PFS Final Rule); CAA 2024 Sec. 304 narrative, 91 FR
# 44219.
# - QPP[2025] (pay 2027), QPP[2027] (pay 2029): 75%/50% QP, 50%/35%
# Partial QP — unchanged; see each entry's own citation below.
# - QPP[2026] (pay 2028): 50%/35% QP, 40%/25% Partial QP, plus a
# revived 3.1% APM Incentive Payment — CAA 2026, superseding the
# CY2026 Final Rule narrative (90 FR 49980) this module originally
# transcribed; see module docstring "CAA 2026 supersession".
#
# ``_qp_thresholds_75_50``/``_qp_thresholds_50_35`` and
# ``_partial_qp_thresholds_50_35``/``_partial_qp_thresholds_40_25``
# below supply the two distinct threshold-sets in play across
# 2023-2027; they are no longer a single constant-returning helper
# because the values now differ by payment year.
#
# Risk standards: see module docstring "Nominal amount standard
# sourcing caveat" — 8% revenue-based (42 CFR 414.1415(c)(3)(i)(A)),
# unchanged across 2023-2026 (no proposed or finalized change found in
# either CY2026 document). Benchmark-based standard (42 CFR
# unchanged across 2023-2027 (no proposed or finalized change found in
# any FR document reviewed). Benchmark-based standard (42 CFR
# 414.1415(c)(3)(i)(B)) left None — not stated as a bare number
# anywhere in this repository's FR corpus.
#
# APM incentive %% and qp_cf_applies: transcribed from NPRM 90 FR
# APM incentive % and qp_cf_applies: transcribed from NPRM 90 FR
# 32818 / Final Rule 90 FR 49979-49980 ("b. APM Incentive Payments to
# QPs in Advanced APMs and Other Payer Advanced APMs"), and the
# sunset statement at NPRM 90 FR 32696 / Final Rule 90 FR 49838
# ("Under current law, payment year 2026 is the last year for these
# payments.").
# payments.") — since revised for payment year 2028 by CAA 2026, per
# CMS-1848-P, 91 FR 44218-44219, 44286
# (data/fr_downloads/2026-14327.txt:37389-37391, 37436, 42632); see
# module docstring "APM Incentive Payment sunset — and CAA 2026
# revival for 2028".
_RISK_NOTES = (
"Revenue-based 8% per CY2019 PFS Final Rule (83 FR 59923, "
@@ -404,67 +477,129 @@ def _risk_standards() -> RiskStandards:
)
def _qp_thresholds() -> QpThresholds:
def _qp_thresholds_75_50() -> QpThresholds:
"""QP thresholds for payment years 2027 and 2029+ (42 CFR
414.1430(a)(1)(iii)/(v), (a)(3)(iii)/(v))."""
return QpThresholds(payment_amount_pct=75.0, patient_count_pct=50.0)
def _partial_qp_thresholds() -> QpThresholds:
def _qp_thresholds_50_35() -> QpThresholds:
"""QP thresholds for payment years 2021-2026 and 2028 (CAA 2026
revival) — 42 CFR 414.1430(a)(1)(ii)/(iv), (a)(3)(ii)/(iv), 91 FR
44285-44286."""
return QpThresholds(payment_amount_pct=50.0, patient_count_pct=35.0)
def _partial_qp_thresholds_50_35() -> QpThresholds:
"""Partial QP thresholds for payment years 2027 and 2029+ (42 CFR
414.1430(a)(2)(iii)/(v), (a)(4)(iii)/(v))."""
return QpThresholds(payment_amount_pct=50.0, patient_count_pct=35.0)
def _partial_qp_thresholds_40_25() -> QpThresholds:
"""Partial QP thresholds for payment years 2021-2026 and 2028 (CAA
2026 revival) — 42 CFR 414.1430(a)(2)(ii)/(iv), (a)(4)(ii)/(iv), 91
FR 44285-44286."""
return QpThresholds(payment_amount_pct=40.0, patient_count_pct=25.0)
QPP: dict[int, QppYear] = {
2023: QppYear(
# Payment year 2025: 42 CFR 414.1430(a)(1)(ii)/(a)(3)(ii)
# "2021 through 2026: 50 percent" / "35 percent" (QP), 91 FR
# 44285; (a)(2)(ii)/(a)(4)(ii) "40 percent" / "25 percent"
# (Partial QP), 91 FR 44285-44286 — CMS-1848-P amendatory text
# (data/fr_downloads/2026-14327.txt:42548,42556,42566,42573),
# restating 89 FR 98564 (CY2024 PFS Final Rule) as extended by
# CAA 2024 Sec. 304 (91 FR 44219). Corrected from an earlier
# payment-year-keying error (task #620) — see module docstring
# "Payment-year keying correction".
performance_year=2023,
payment_year=2025,
qp_thresholds=_qp_thresholds(),
partial_qp_thresholds=_partial_qp_thresholds(),
qp_thresholds=_qp_thresholds_50_35(),
partial_qp_thresholds=_partial_qp_thresholds_40_25(),
risk_standards=_risk_standards(),
apm_incentive_pct=3.5,
qp_cf_applies=False,
citation="90 FR 49979-49980",
citation=(
"90 FR 49979-49980 (APM incentive); thresholds: 89 FR 98564 "
"(CY2024 PFS Final Rule), restated 91 FR 44285-44286 "
"(CMS-1848-P); CAA 2024 Sec. 304, 91 FR 44219 (task #620)"
),
),
2024: QppYear(
# Payment year 2026 is the first year with a differential
# QP/non-QP conversion factor (section 1848(d)(20) of the
# Act) AND still receives the (final year of) lump-sum APM
# Incentive Payment — see NPRM 90 FR 32818, Final Rule 90 FR
# Act) AND is the last year of the original uninterrupted
# lump-sum APM Incentive Payment run (2019-2026) before the
# 2027 gap and the CAA-2026-only revival for 2028 (see
# QPP[2026]) — see NPRM 90 FR 32818, Final Rule 90 FR
# 49979-49980.
# Thresholds: 42 CFR 414.1430(a)(1)(ii)/(a)(3)(ii) "2021
# through 2026: 50 percent" / "35 percent" (QP), 91 FR 44285;
# (a)(2)(ii)/(a)(4)(ii) "40 percent" / "25 percent" (Partial
# QP), 91 FR 44285-44286 — same citations as QPP[2023].
# Corrected from an earlier payment-year-keying error (task
# #620) — see module docstring "Payment-year keying
# correction".
performance_year=2024,
payment_year=2026,
qp_thresholds=_qp_thresholds(),
partial_qp_thresholds=_partial_qp_thresholds(),
qp_thresholds=_qp_thresholds_50_35(),
partial_qp_thresholds=_partial_qp_thresholds_40_25(),
risk_standards=_risk_standards(),
apm_incentive_pct=1.88,
qp_cf_applies=True,
citation="90 FR 49979-49980",
citation=(
"90 FR 49979-49980 (APM incentive, qp_cf_applies); "
"thresholds: 89 FR 98564 (CY2024 PFS Final Rule), restated "
"91 FR 44285-44286 (CMS-1848-P); CAA 2024 Sec. 304, 91 FR "
"44219 (task #620)"
),
),
2025: QppYear(
# Under current law, payment year 2026 (performance year
# 2024) was the last year with a lump-sum APM Incentive
# Payment — NPRM 90 FR 32696, Final Rule 90 FR 49838.
# Under prior law, payment year 2026 (performance year 2024)
# was believed the last year with a lump-sum APM Incentive
# Payment — NPRM 90 FR 32696, Final Rule 90 FR 49838. CAA 2026
# subsequently revived a 3.1% incentive for payment year 2028
# only (see QPP[2026]); payment year 2027 (this entry) still
# has no incentive under any law reviewed.
performance_year=2025,
payment_year=2027,
qp_thresholds=_qp_thresholds(),
partial_qp_thresholds=_partial_qp_thresholds(),
qp_thresholds=_qp_thresholds_75_50(),
partial_qp_thresholds=_partial_qp_thresholds_50_35(),
risk_standards=_risk_standards(),
apm_incentive_pct=None,
qp_cf_applies=True,
citation="90 FR 49838",
),
2026: QppYear(
# Payment year 2028: thresholds and apm_incentive_pct are
# corrected (task #620) to reflect the Consolidated
# Appropriations Act, 2026 (CAA 2026), which superseded the
# CY2026 Final Rule's (accurate-at-the-time) 75%/50% QP,
# 50%/35% Partial QP, no-incentive narrative. See module
# docstring "CAA 2026 supersession" for the full citation
# chain: 42 CFR 414.1430(a)(1)(iv)/(a)(3)(iv) "2028: 50
# percent" / "35 percent" (QP), (a)(2)(iv)/(a)(4)(iv) "40
# percent" / "25 percent" (Partial QP), and 414.1450(b)(1)(iv)
# "2028: 3.1 percent" (APM incentive) — all 91 FR 44286,
# CMS-1848-P amendatory text
# (data/fr_downloads/2026-14327.txt:42550,42558,42568,42575,
# 42632). This is a statutory, self-executing supersession;
# eCFR's unconformed text does not control.
performance_year=2026,
payment_year=2028,
qp_thresholds=_qp_thresholds(),
partial_qp_thresholds=_partial_qp_thresholds(),
qp_thresholds=_qp_thresholds_50_35(),
partial_qp_thresholds=_partial_qp_thresholds_40_25(),
risk_standards=_risk_standards(),
apm_incentive_pct=None,
apm_incentive_pct=3.1,
qp_cf_applies=True,
# Corrected from "90 FR 49928" alone: the QP threshold statement
# itself is at 90 FR 49980 (see docstring pincite above); 49928
# is retained alongside it since it's independently the source
# for the Partial QP payment-amount confirmation (docstring
# pincite, line 65021-65026).
citation="90 FR 49928, 49980",
citation=(
"90 FR 49928, 49980 (CY2026 Final Rule narrative — "
"accurate when published, since SUPERSEDED); corrected "
"per CAA 2026 (Pub. L. 119-75), restated 91 FR 44218-44220, "
"44285-44286 (CMS-1848-P) (task #620)"
),
# NPRM proposals per :pincite:`2KVJ2HKX` — CMS-1832-P, 90 FR
# 32352, transcribed from data/fr_downloads/2025-13271.txt;
# disposition from data/fr_downloads/2025-19787.txt.
@@ -499,13 +634,24 @@ QPP: dict[int, QppYear] = {
"beginning with the 2026 QP Performance Period (NPRM "
"90 FR 32773). Finalized as proposed (Final Rule 90 FR "
"49929: 'finalizing this policy as proposed'). "
"QP/Partial QP thresholds: proposed no numeric change "
"— thresholds remain 75%/50% (QP) and 50%/35% "
"(Partial QP); see QPP[2026].qp_thresholds and the "
"module docstring re: the NPRM's internally "
"inconsistent RIA framing, corrected in the Final "
"Rule (NPRM 90 FR 32772 vs 90 FR 32819; Final Rule 90 "
"FR 49928). "
"QP/Partial QP thresholds: CMS-1832-P proposed, and "
"the Final Rule finalized, no numeric change from the "
"then-current-law payment-year-2028 thresholds "
"(75%/50% QP, 50%/35% Partial QP; see module "
"docstring re: the NPRM's internally inconsistent RIA "
"framing, corrected in the Final Rule — NPRM 90 FR "
"32772 vs 90 FR 32819; Final Rule 90 FR 49928). That "
"disposition was correct as of this rule's "
"publication. It was SUBSEQUENTLY SUPERSEDED for "
"payment year 2028 by the Consolidated Appropriations "
"Act, 2026 (CAA 2026), which legislatively restored "
"50%/35% QP, 40%/25% Partial QP and revived a 3.1% "
"APM Incentive Payment for that year — see "
"QPP[2026].qp_thresholds / partial_qp_thresholds / "
"apm_incentive_pct (current law, task #620) and the "
'module docstring "CAA 2026 supersession" section; '
"do not read this CMS-1832-P disposition as a "
"statement of current law. "
"Nominal amount standards (42 CFR "
"414.1415(c)(3)(i)(A)/(B)) and the CEHRT requirement "
"(Sec. 414.1415(a)(i)): proposed no change — neither "
@@ -546,8 +692,8 @@ QPP: dict[int, QppYear] = {
# 30603-30606) -- split CF persists through payment year 2029.
performance_year=2027,
payment_year=2029,
qp_thresholds=_qp_thresholds(),
partial_qp_thresholds=_partial_qp_thresholds(),
qp_thresholds=_qp_thresholds_75_50(),
partial_qp_thresholds=_partial_qp_thresholds_50_35(),
risk_standards=_risk_standards(),
apm_incentive_pct=None,
qp_cf_applies=True,

View File

@@ -156,7 +156,12 @@ class TestQpCfApplies:
class TestApmIncentivePct:
"""Lump-sum APM Incentive Payment sunsets after payment year 2026."""
"""Lump-sum APM Incentive Payment: 5% (2019-2024), 3.5% (2025),
1.88% (2026), then a gap for 2027 — but NOT a clean sunset: the
Consolidated Appropriations Act, 2026 (CAA 2026) revived a 3.1%
payment for payment year 2028 only (42 CFR 414.1450(b)(1)(iv), as
amended by CMS-1848-P, 91 FR 44286), before the gap resumes for
2029."""
def test_2023_incentive(self):
assert QPP[2023].apm_incentive_pct == 3.5
@@ -167,8 +172,15 @@ class TestApmIncentivePct:
def test_2025_no_incentive(self):
assert QPP[2025].apm_incentive_pct is None
def test_2026_no_incentive(self):
assert QPP[2026].apm_incentive_pct is None
def test_2026_incentive_revived_by_caa_2026(self):
# Payment year 2028: CAA 2026 revived a 3.1% APM Incentive
# Payment — 42 CFR 414.1450(b)(1)(iv), as amended by
# CMS-1848-P, 91 FR 44286 (data/fr_downloads/
# 2026-14327.txt:42632, "(iv) 2028: 3.1 percent."); narrative
# at 91 FR 44218-44219 (2026-14327.txt:37389-37391, 37436).
# This supersedes the CY2026 Final Rule's apm_incentive_pct
# = None (90 FR 49838/49980).
assert QPP[2026].apm_incentive_pct == 3.1
def test_2027_no_incentive(self):
# Payment year 2029: 42 CFR 414.1450(b)(1) (as amended by
@@ -227,22 +239,44 @@ class TestProposed2027:
class TestSpecificValues:
"""Verify transcribed QP/Partial QP thresholds and risk standards.
See task-6-report.md / task-7-report.md transcription tables for
sourcing per value. QPP[2027] (payment year 2029) values are
sourced from CMS-1848-P (91 FR 44260, 44285-44286) rather than the
CY2026-cycle documents underlying 2023-2026 — see module
docstring "CMS-1848-P (CY2027 PFS proposed rule) — QPP[2027]"."""
Thresholds are keyed to PAYMENT YEAR by 42 CFR 414.1430(a), not QP
Performance Period — see module docstring "Payment-year keying
correction" (task #620). Payment years 2021-2026 (QPP[2023] pay
2025, QPP[2024] pay 2026) and 2028 (QPP[2026], restored by CAA
2026) sit at 50%/35% QP, 40%/25% Partial QP; payment years 2027
and 2029+ (QPP[2025], QPP[2027]) sit at 75%/50% QP, 50%/35%
Partial QP. See task-6-report.md / task-7-report.md for the
original transcription tables and task-620-report.md for the
correction."""
@pytest.mark.parametrize("year", [2023, 2024, 2025, 2026, 2027])
def test_qp_thresholds(self, year):
@pytest.mark.parametrize("year", [2025, 2027])
def test_qp_thresholds_75_50(self, year):
assert QPP[year].qp_thresholds.payment_amount_pct == 75.0
assert QPP[year].qp_thresholds.patient_count_pct == 50.0
@pytest.mark.parametrize("year", [2023, 2024, 2025, 2026, 2027])
def test_partial_qp_thresholds(self, year):
@pytest.mark.parametrize("year", [2023, 2024, 2026])
def test_qp_thresholds_50_35(self, year):
# 42 CFR 414.1430(a)(1)(ii)/(a)(3)(ii) "2021 through 2026: 50
# percent" / "35 percent" (91 FR 44285); (a)(1)(iv)/(a)(3)(iv)
# "2028: 50 percent" / "35 percent" (91 FR 44286) — CAA 2026
# for QPP[2026]/payment year 2028.
assert QPP[year].qp_thresholds.payment_amount_pct == 50.0
assert QPP[year].qp_thresholds.patient_count_pct == 35.0
@pytest.mark.parametrize("year", [2025, 2027])
def test_partial_qp_thresholds_50_35(self, year):
assert QPP[year].partial_qp_thresholds.payment_amount_pct == 50.0
assert QPP[year].partial_qp_thresholds.patient_count_pct == 35.0
@pytest.mark.parametrize("year", [2023, 2024, 2026])
def test_partial_qp_thresholds_40_25(self, year):
# 42 CFR 414.1430(a)(2)(ii)/(a)(4)(ii) "2021 through 2026: 40
# percent" / "25 percent" (91 FR 44285-44286); (a)(2)(iv)/
# (a)(4)(iv) "2028: 40 percent" / "25 percent" (91 FR 44286) —
# CAA 2026 for QPP[2026]/payment year 2028.
assert QPP[year].partial_qp_thresholds.payment_amount_pct == 40.0
assert QPP[year].partial_qp_thresholds.patient_count_pct == 25.0
@pytest.mark.parametrize("year", [2023, 2024, 2025, 2026, 2027])
def test_risk_standards(self, year):
# Revenue-based standard (42 CFR 414.1415(c)(3)(i)(A)) is