fix(qpp): correct risk-standard sourcing + FR citations (refs #593)
This commit is contained in:
@@ -69,21 +69,35 @@ Nominal amount standard sourcing caveat
|
||||
Neither the CY2026 NPRM nor the CY2026 Final Rule (``2025-19787.txt``)
|
||||
restates the *numeric* generally applicable nominal amount standard
|
||||
(42 CFR 414.1415(c)(3)(i)(A)/(B)) — both only cross-reference the
|
||||
regulation by section number, which is itself evidence CMS proposed
|
||||
no change to it. The revenue-based standard (8%) is transcribed from
|
||||
the CY2019 PFS Final Rule (``data/fr_downloads/2018-24170.txt``, 83 FR
|
||||
59939) via the CY2020 PFS Proposed Rule's restatement
|
||||
(``data/fr_downloads/2019-16041.txt``, 84 FR 40825), both already
|
||||
present in this repository's ``fr_downloads`` corpus, which state it
|
||||
applies "for QP Performance Periods 2021 through 2024" — commenters
|
||||
asked CMS to raise it for 2025+ and CMS did not finalize an increase.
|
||||
The benchmark-based standard (3%) could **not** be found stated as a
|
||||
bare number tied to section 414.1415(c)(3)(i)(B) anywhere in this
|
||||
repository's FR corpus; the value used here is carried over from the
|
||||
structurally parallel Other Payer Advanced APM standard at 42 CFR
|
||||
414.1420(d)(3)(i) (same 2018-24170.txt document, 83 FR 59939), which
|
||||
CMS designed to align with the Medicare-option standard. See
|
||||
``RiskStandards.notes`` on each entry.
|
||||
regulation by section number (e.g. NPRM line 26819-26821, Final Rule
|
||||
line 50693-50696), which is itself evidence CMS proposed no change to
|
||||
it. The revenue-based standard, 42 CFR 414.1415(c)(3)(i)(A) (8%), is
|
||||
transcribed from the CY2019 PFS Final Rule
|
||||
(``data/fr_downloads/2018-24170.txt:47248-47252``, 83 FR 59923 —
|
||||
"we are finalizing our proposal to revise Sec. 414.1415(c)(3)(i)(A) to
|
||||
maintain the generally applicable revenue-based nominal amount
|
||||
standard at 8 percent ... for QP Performance Periods 2021 through
|
||||
2024"), already present in this repository's ``fr_downloads`` corpus —
|
||||
commenters asked CMS to raise it for 2025+ and CMS did not finalize an
|
||||
increase, so it is carried forward unchanged. This document also
|
||||
separately restates an **8 percent** standard for the *Other Payer*
|
||||
Advanced APM criterion (42 CFR 414.1420(d)(3)(i), same file, line
|
||||
48189-48192) — a different provision that happens to share the same
|
||||
number; do not conflate the two when re-verifying this citation.
|
||||
|
||||
The benchmark-based standard, 42 CFR 414.1415(c)(3)(i)(B), could
|
||||
**not** be found stated as a bare percentage anywhere in this
|
||||
repository's FR corpus (``2025-13271.txt``, ``2025-19787.txt``,
|
||||
``2018-24170.txt``, and ``2019-16041.txt`` were all searched). The
|
||||
only nearby quoted figure — "at least 3 percent of the expected
|
||||
expenditures" — belongs to the textually distinct Other Payer Advanced
|
||||
APM standard at 42 CFR 414.1420(d)(3)(i)
|
||||
(``2018-24170.txt:48825-48827``, 83 FR 59939), which CMS designed to
|
||||
*align with* the Medicare-option standard but which is not itself a
|
||||
statement of the Medicare-option figure. Rather than reuse that
|
||||
number under a different provision's field, ``benchmark_nominal_pct``
|
||||
is left ``None`` on every entry, with the gap documented in
|
||||
``RiskStandards.notes``.
|
||||
"""
|
||||
|
||||
from __future__ import annotations
|
||||
@@ -116,15 +130,21 @@ class RiskStandards(BaseModel):
|
||||
and suppliers in participating APM Entities that must be at risk.
|
||||
42 CFR 414.1415(c)(3)(i)(A)."""
|
||||
|
||||
benchmark_nominal_pct: float
|
||||
benchmark_nominal_pct: float | None = None
|
||||
"""Expenditure/benchmark-based nominal amount standard — minimum %
|
||||
of expected expenditures the APM Entity must be liable for.
|
||||
42 CFR 414.1415(c)(3)(i)(B)."""
|
||||
42 CFR 414.1415(c)(3)(i)(B). ``None`` when this repository's FR
|
||||
corpus does not state the figure for this specific provision — see
|
||||
module docstring "Nominal amount standard sourcing caveat" and
|
||||
``notes``; do **not** assume it equals the numerically similar but
|
||||
textually distinct Other Payer Advanced APM standard at 42 CFR
|
||||
414.1420(d)(3)(i)."""
|
||||
|
||||
notes: str = ""
|
||||
"""Sourcing caveats — see module docstring "Nominal amount
|
||||
standard sourcing caveat" for why these values are not directly
|
||||
restated as bare numbers in the CY2026 NPRM/Final Rule."""
|
||||
standard sourcing caveat" for why ``revenue_nominal_pct`` is not
|
||||
directly restated as a bare number in the CY2026 NPRM/Final Rule,
|
||||
and why ``benchmark_nominal_pct`` is ``None``."""
|
||||
|
||||
|
||||
class QppProposed(BaseModel):
|
||||
@@ -256,33 +276,44 @@ class QppYear(BaseModel):
|
||||
# digit) — see module docstring caveat.
|
||||
#
|
||||
# Risk standards: see module docstring "Nominal amount standard
|
||||
# sourcing caveat" — 8% revenue-based / 3% benchmark-based, unchanged
|
||||
# across 2023-2026 (no proposed or finalized change found in either
|
||||
# CY2026 document).
|
||||
# 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
|
||||
# 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
|
||||
# 32818 / Final Rule 90 FR 49926-49927 ("b. APM Incentive Payments to
|
||||
# 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.").
|
||||
|
||||
_RISK_NOTES = (
|
||||
"Revenue-based 8% per CY2019 PFS Final Rule (83 FR 59939, "
|
||||
"data/fr_downloads/2018-24170.txt) 'for QP Performance Periods "
|
||||
"2021 through 2024'; not extended or amended in either CY2026 "
|
||||
"Revenue-based 8% per CY2019 PFS Final Rule (83 FR 59923, "
|
||||
"data/fr_downloads/2018-24170.txt:47248-47252) 'to maintain the "
|
||||
"generally applicable revenue-based nominal amount standard at 8 "
|
||||
"percent ... for QP Performance Periods 2021 through 2024' (Sec. "
|
||||
"414.1415(c)(3)(i)(A)); not extended or amended in either CY2026 "
|
||||
"document (no proposed/final change found) — carried forward. "
|
||||
"Benchmark-based 3% not stated as a bare number for 42 CFR "
|
||||
"414.1415(c)(3)(i)(B) in this repository's FR corpus; carried "
|
||||
"over from the parallel Other Payer Advanced APM standard at 42 "
|
||||
"CFR 414.1420(d)(3)(i) (same 83 FR 59939 document)."
|
||||
"(This document separately restates 8% for the *different* Other "
|
||||
"Payer Advanced APM standard, Sec. 414.1420(d)(3)(i), at line "
|
||||
"48189-48192 — do not conflate the two.) "
|
||||
"Benchmark-based standard (Sec. 414.1415(c)(3)(i)(B)) is left "
|
||||
"None: not stated as a bare percentage anywhere in this "
|
||||
"repository's FR corpus (2025-13271.txt, 2025-19787.txt, "
|
||||
"2018-24170.txt, 2019-16041.txt all searched). The only nearby "
|
||||
"quoted figure, 'at least 3 percent of the expected expenditures' "
|
||||
"(2018-24170.txt:48825-48827, 83 FR 59939), is for the textually "
|
||||
"distinct Other Payer Advanced APM standard at Sec. "
|
||||
"414.1420(d)(3)(i), not this provision."
|
||||
)
|
||||
|
||||
|
||||
def _risk_standards() -> RiskStandards:
|
||||
return RiskStandards(
|
||||
revenue_nominal_pct=8.0,
|
||||
benchmark_nominal_pct=3.0,
|
||||
benchmark_nominal_pct=None,
|
||||
notes=_RISK_NOTES,
|
||||
)
|
||||
|
||||
@@ -304,14 +335,14 @@ QPP: dict[int, QppYear] = {
|
||||
risk_standards=_risk_standards(),
|
||||
apm_incentive_pct=3.5,
|
||||
qp_cf_applies=False,
|
||||
citation="90 FR 49926-49927",
|
||||
citation="90 FR 49979-49980",
|
||||
),
|
||||
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
|
||||
# 49926-49927.
|
||||
# 49979-49980.
|
||||
performance_year=2024,
|
||||
payment_year=2026,
|
||||
qp_thresholds=_qp_thresholds(),
|
||||
@@ -319,7 +350,7 @@ QPP: dict[int, QppYear] = {
|
||||
risk_standards=_risk_standards(),
|
||||
apm_incentive_pct=1.88,
|
||||
qp_cf_applies=True,
|
||||
citation="90 FR 49926-49927",
|
||||
citation="90 FR 49979-49980",
|
||||
),
|
||||
2025: QppYear(
|
||||
# Under current law, payment year 2026 (performance year
|
||||
|
||||
@@ -40,6 +40,10 @@ class TestRiskStandards:
|
||||
r = RiskStandards(revenue_nominal_pct=8.0, benchmark_nominal_pct=3.0)
|
||||
assert r.notes == ""
|
||||
|
||||
def test_default_benchmark_nominal_pct(self):
|
||||
r = RiskStandards(revenue_nominal_pct=8.0)
|
||||
assert r.benchmark_nominal_pct is None
|
||||
|
||||
|
||||
# ── QppProposed model ────────────────────────────────────────────
|
||||
|
||||
@@ -202,8 +206,13 @@ class TestSpecificValues:
|
||||
|
||||
@pytest.mark.parametrize("year", [2023, 2024, 2025, 2026])
|
||||
def test_risk_standards(self, year):
|
||||
# Revenue-based standard (42 CFR 414.1415(c)(3)(i)(A)) is
|
||||
# transcribed (8%); the benchmark-based standard (42 CFR
|
||||
# 414.1415(c)(3)(i)(B)) is not stated as a bare number in this
|
||||
# repository's FR corpus and is left None — see
|
||||
# RiskStandards.notes / module docstring.
|
||||
assert QPP[year].risk_standards.revenue_nominal_pct == 8.0
|
||||
assert QPP[year].risk_standards.benchmark_nominal_pct == 3.0
|
||||
assert QPP[year].risk_standards.benchmark_nominal_pct is None
|
||||
|
||||
@pytest.mark.parametrize("year", [2023, 2024, 2025, 2026])
|
||||
def test_cehrt_required(self, year):
|
||||
|
||||
Reference in New Issue
Block a user