The V24 to V28 transition, end to end.
CMS retired the CMS-HCC V24 risk model and replaced it with V28 over a three-year phase-in that completed in payment year 2026. This report covers both sides of the shift: what it means for revenue, and what changed inside the model itself.
The business picture
The phase-in smoothed the money over three years. It did not soften the structural change underneath — and that change decides which diagnoses still count.
What actually happened.
V28 is not a routine annual update — it is a structural rebuild of how Medicare Advantage risk scores are calculated. CMS expanded the model from 86 to 115 payment HCC categories, renumbered every category onto a new, non-interchangeable scheme, and removed a large share of diagnosis codes from risk adjustment entirely.
To avoid a payment shock, CMS blended the two models across three payment years. In PY2024 two-thirds of the score still came from V24; by PY2026 the blend reached 100% V28. That gradual schedule is why the change felt manageable in 2024 and decisive in 2026 — but the coding rules changed immediately. A plan still coding to V24 habits collects less each year.
The practical takeaway: documentation depth within a single disease family matters less than breadth across families. Conditions that anchored RAF under V24 may carry no weight under V28, while newly weighted conditions have become essential to capture.
How the blend moved, by payment year.
Each payment year, CMS calculated risk scores as a fixed weighted blend of both models.
V24 still carries the majority. Legacy-style coding still collects most of the expected score.
The tipping point. V28 dominates, and un-adapted coding shows material RAF impact.
V24 is out of the calculation entirely. Every HCC scores on V28 mappings and coefficients.
Same conditions, different numbers — and different weights.
Because V28 renumbered categories onto a new scheme, a V24 HCC number rarely points to the same thing in V28. The coefficients behind them were rebuilt too.
V28 adds nearly 30 categories and renumbers almost all of them. A crosswalk between versions has to be built on clinical concept, not category number.
Every community, institutional, and new-enrollee model carries its own rebuilt weights. The demographic and scoring logic is unchanged; the values are not.
Severity within a family stopped paying more.
V28's most consequential mechanic is constraining: related HCCs in the same disease family are assigned the same coefficient, regardless of severity. Diabetes is the textbook case.
V24 diabetes
Severity was rewarded- HCC17 — with acute complications · 0.302
- HCC18 — with chronic complications · 0.302
- HCC19 — without complication · 0.105
V28 diabetes
Constrained to one weight- HCC36 — severe acute complications · 0.166
- HCC37 — chronic complications · 0.166
- HCC38 — glycemic / unspecified / none · 0.166
Under V28, every diabetes category carries the same 0.166 coefficient (community, non-dual aged) — slightly above V24's uncomplicated weight, well below its complicated one. Documenting more severe diabetes no longer raises the score. The same pattern repeats across constrained families, shifting value from depth of severity toward breadth of documented conditions.
V24 and V28 at a glance.
CMS-HCC V24
Legacy · retired PY2026- 86 payment HCCs on compact legacy numbering
- Broader categories, fewer severity tiers
- ICD-9-crosswalk calibration foundation
- Rewarded depth — severity within a disease family
CMS-HCC V28
Current · 100% from PY2026- 115 payment HCCs on new, non-interchangeable numbering
- Finer severity tiers across many families
- Natively calibrated on recent ICD-10-CM data
- Rewards breadth — documented conditions across families
Inside the model
Everything above is driven by concrete changes in the CMS grouper software: the HCC set, the hierarchies, and the ICD edits that decide whether a code even becomes a condition category.
Four structural changes drive everything.
The demographic and scoring macros are unchanged between versions. The differences live entirely in the HCC set, numbering, hierarchies, and ICD edits.
86 → 115 payment HCCs
The list of payment categories grew and was renumbered onto a sparse scheme (HCC1–HCC463). The same condition almost always carries a different number across versions.
/* V28 */ HCCV28_list115 = 115 HCCs
Broad categories split into tiers
V28 subdivides several V24 groups. Diabetes goes from 3 levels to 4; heart failure becomes a six-tier severity ladder; substance use separates drug from alcohol with psychotic-complication tiers.
V28 ladder: HCC222 2.505 → HCC227 0.189
Longer, cross-domain chains
The hierarchy macro was rewritten from fixed calls to a variable-length loop. V28 chains are longer, and some cross clinical domains — e.g. liver and injury categories both suppress the Coma category (CC202).
V28 Heart 1: zero 222–227
Same code, different result
The ICD age/sex edit macro differs between versions. A given diagnosis plus demographics can produce a different condition category — or none — depending on the model.
C50* breast, age<50 → V28-only: CC22
Where the two graders diverge on the same code.
These edits are easy to overlook because they aren't in the code lists — they live in the grouper logic. The same ICD-10 code can land in a different HCC, or drop out entirely.
| ICD-10 & condition | V24 result | V28 result | Effect |
|---|---|---|---|
D66 / D67 — hereditary factor deficiency, female |
CC48 Coagulation defects | CC112 Coagulation / hemorrhagic | Remapped to renumbered category |
Pediatric COPD/asthma J-codes, age < 18 |
CC112 Lung disorder | −1.0 Invalid (dropped) | No longer risk-adjusted in children |
Breast cancer C50*, age < 50 |
— no age edit | CC22 forced | V28-only age-based reassignment |
Perinatal P-codes, age ≥ 2 |
— no edit | −1.0 Invalid | V28 invalidates in older patients |
Coefficient values were rebuilt wholesale between versions. In the community non-dual aged model, HCC weights range from 0.069 to 2.659 under V24 and from 0.127 to 9.256 under V28 — a wider spread driven by high-cost categories like lysosomal storage disorders and hemophilia. Constraining pulls severity tiers together within families, so the score now rewards breadth of documented conditions over depth.
Coding entirely on V28 now? Prove your capture reflects it.
The blend is over. Every dropped code and remapped HCC is now a direct line to revenue — or a silent gap. Health Data Max validates against current V28 logic end to end.
Re-map against V28
Every submitted diagnosis checked against current V28 mappings, hierarchies, and edits — not V24 habits.
Catch the dropped codes
Flag conditions that risk-adjusted under V24 but no longer count, so capture strategy shifts to what pays.
Model the RAF impact
Quantify the score change across your population before it shows up as a payment surprise.
See your V24 → V28 exposure.
We'll run your population against V28 logic and show exactly where the transition helps, hurts, and leaves risk-eligible diagnoses on the table.
Request a Consultation