HCC Coding Explained: How Hierarchical Condition Categories Work
What HCC coding is, how RAF scores get calculated, and what changed under CMS-HCC V28. Look up any ICD-10-CM code free.
By Patientary Team
Ask a health plan's revenue team what HCC coding is and you'll get a fast, confident answer. Ask the GP writing the visit note and you're more likely to get a shrug — even though the diagnosis codes on that note are exactly what feeds the model. Hierarchical Condition Category coding is the mechanism CMS uses to translate a patient's documented diagnosis history into a risk score, and that score decides how much a Medicare Advantage plan gets paid to cover that patient for the year. Miss a chronic condition, code it too vaguely, or forget to re-document it in January, and the payment model quietly assumes the patient is healthier than they actually are. This guide walks through what HCC coding does, how a RAF score gets built from it, what changed when CMS finished rolling out the V28 model for payment year 2026, and where the accuracy problems tend to creep in.
TL;DR — HCC coding groups ICD-10-CM diagnosis codes into Hierarchical Condition Categories that feed the CMS-HCC risk adjustment model. Each HCC on a patient's file adds weight to their Risk Adjustment Factor (RAF) score, which sets how much a Medicare Advantage plan is paid to care for them that year. CMS finished phasing in the V28 model for payment year 2026: 115 HCC categories (up from 86), about 7,770 valid diagnosis codes mapping to one (down from 9,797), and an average risk score drop of roughly 3.12% because the model now rewards documented clinical severity over sheer diagnosis volume. Every HCC has to be re-documented at a qualifying encounter each calendar year — nothing carries forward automatically.
What Is HCC Coding, Exactly?
Hierarchical Condition Category coding isn't a separate code set sitting next to ICD-10-CM — it's a filter applied on top of it. Every ICD-10-CM diagnosis code a provider submits gets checked against a CMS-maintained crosswalk, and a subset of those codes — the ones tied to conditions with a measurable, ongoing cost of care, such as diabetes with complications, congestive heart failure or major depressive disorder — map to one of the model's Hierarchical Condition Categories. Most ICD-10-CM codes don't map to anything at all. A sprained ankle, a routine check-up, most acute and self-limiting conditions: none of these carry HCC weight, because the model isn't trying to price a single visit. It's trying to predict what a patient will cost a health plan across the whole year, and that prediction only cares about the conditions still costing money after the visit ends.
"Hierarchical" does real work in the name. Conditions inside the same disease group are ranked by severity, and when a patient has more than one diagnosis in that group, only the most severe one on the ladder counts toward their score — the model assumes the costlier condition already accounts for the milder one underneath it. A patient coded with both diabetes with chronic kidney complications and plain, uncomplicated diabetes gets scored on the complicated version only; the simpler code doesn't stack on top of it.
How a RAF Score Gets Built
Every Medicare Advantage enrollee carries a Risk Adjustment Factor (RAF) score, and it's built additively. Demographic factors — age band, sex, whether the enrollee qualifies for Medicaid, whether they're in a long-term institutional setting — set a baseline. Each confirmed HCC then adds its own weighted value on top, and some pairings of HCCs (interaction terms) add a further bump, because two specific chronic conditions together tend to cost more than the sum of treating each one alone.
Reading a RAF score
A RAF score of 1.0 represents the cost of an average fee-for-service Medicare beneficiary — that's the baseline the whole model is calibrated against. Most community-dwelling Medicare Advantage members land somewhere between roughly 0.7 and 2.0; a healthy 68-year-old with nothing chronic on file might sit under 1.0, while a member with heart failure, diabetic complications and chronic kidney disease stacked together could easily clear 2.0. CMS multiplies that RAF score against a county-level base rate to work out the plan's monthly payment for that member, so a coding gap that drops someone's score from 1.4 to 1.1 isn't a rounding error. It's real capitation revenue the plan never gets paid, for a patient who still costs just as much to treat.
What Changed Under CMS-HCC V28
For payment year 2026, CMS finished phasing in the V28 risk adjustment model, replacing V24 outright after a three-year transition — 33% weighted in 2024, 67% in 2025, 100% from 2026 onward. V28 recalibrates the model against more recent claims data, 2018 diagnoses and 2019 costs rather than the 2014-and-2015 pair V24 was still running on, and it changes the shape of the model itself, not just the numbers underneath it.
| V24 (retired) | V28 (2026, full weight) | |
|---|---|---|
| HCC categories | 86 | 115 |
| Valid ICD-10-CM codes mapping to an HCC | 9,797 | 7,770 |
| Reference claims data | 2014 diagnoses / 2015 costs | 2018 diagnoses / 2019 costs |
| Average MA risk score impact | baseline | ≈ −3.12% projected |
That drop in valid codes is the headline change for coders day to day: roughly 2,000 diagnosis codes that carried HCC weight under V24 either got reassigned to a different, often less valuable category or dropped from the risk-bearing set entirely, while 268 additional codes gained a mapping they didn't previously have. The HHS Office of Inspector General has been tracking the transition as part of its ongoing oversight, and the pattern that keeps surfacing is a model that rewards documented clinical severity over sheer diagnosis count — what risk-adjustment teams have started calling the end of the "add-only" era, where stacking as many chronic diagnoses as possible onto a chart reliably pushed a RAF score up, regardless of how well any single one of them was actually documented.
HCC Coding vs Everyday ICD-10-CM Coding
Coding for reimbursement and coding for risk adjustment aren't the same job, even though they draw on the same underlying code set. A claims coder mostly cares whether a diagnosis code is billable and specific enough to justify the service rendered that day. An HCC coder cares whether that same diagnosis is, first, mapped to a Hierarchical Condition Category at all and, second, documented with enough specificity to survive an audit — because "diabetes, unspecified" and "type 2 diabetes with diabetic chronic kidney disease" can describe the same patient but land in two completely different HCCs, one worth meaningfully more than the other. ICD-10-CM sits alongside CPT and HCPCS as one of three code sets on a typical claim, but HCC coding only ever looks at the diagnosis side — CPT and HCPCS procedure codes play no part in the risk score at all.
The MEAT Standard: What Makes a Diagnosis Capture-Ready
The American Academy of Family Physicians puts the underlying rule as plainly as it can be put for its members:
A diagnosis should be Monitored, Evaluated, Assessed, or Treated.
MEAT isn't really a coding rule so much as a documentation checklist a chart has to clear before a code is safe to submit for risk adjustment. A condition sitting on a patient's problem list but never mentioned again in the visit note doesn't satisfy it — CMS and its RADV auditors expect to see the condition monitored (referenced in vitals or a review of systems), evaluated (test results or exam findings tied to it), assessed (the provider's stated judgement on its current status), or treated (medication, referral or a specific plan) at that particular encounter. AHIMA's own guidance on risk-adjustment documentation is blunt about the consequence: documentation that's incomplete, or tied to a non-specific diagnosis code, doesn't just risk a coding query — it directly reduces what that diagnosis is worth for reimbursement.
Why Every Chronic Condition Has to Be Recaptured Each Year
HCCs reset every calendar year. Nothing about a patient's risk score carries forward automatically, no matter how well it was documented twelve months ago. A patient managed for congestive heart failure throughout 2025 has to have that condition monitored, evaluated, assessed or treated again at a face-to-face encounter in 2026, with a fresh, specific diagnosis code on that year's claim, or their RAF score reverts to treating them as though they never had heart failure at all. This is the single most common reason risk scores drift downward year over year even when a patient's actual health hasn't changed: the condition is still there, still being managed, but nobody re-coded it at an annual wellness visit or a routine follow-up, so it simply falls off the model.
It's also why plenty of value-based care organisations now run prospective, point-of-care coding programmes rather than relying purely on retrospective chart review after the fact. Catching a documentation gap while the patient is still in the room is both cheaper and far more defensible under audit than reconstructing it from a chart six months later.
Where HCC Coding Accuracy Actually Breaks Down
- Unspecified diagnoses. Coding "chronic kidney disease, unspecified" instead of staging it — CKD stage 3, 4 or 5 — either drops the HCC weight or loses it altogether, since specificity is what the model is built around.
- Carrying a diagnosis forward without re-documenting it. Copy-forwarding last year's problem list into this year's note doesn't satisfy MEAT on its own; the condition needs its own current-year clinical thread.
- Missing the interaction terms. Two conditions that individually map cleanly, such as diabetes and congestive heart failure, can trigger an additional interaction HCC when documented together — coders scanning for individual conditions in isolation miss this uplift routinely.
- Coding conditions that aren't actually being managed. The reverse problem: a resolved or inactive condition still sitting on the problem list and billed as though current is exactly the pattern CMS's RADV audits are built to catch.
How Patientary Fits Into an HCC Coding Workflow
None of this works without a reliable, current reference for what an ICD-10-CM code actually is and whether it's billable in the first place — HCC coding is entirely downstream of getting the diagnosis code itself right. Patientary's ICD-10-CM lookup indexes the full current code set with chapter, billable status and code hierarchy for exactly that reason, and it's kept current against CMS's annual code updates rather than a static list that goes stale between releases. Teams building coding-review or risk-adjustment tooling of their own can query the same data through the API instead of maintaining a local copy, and pair it with NPI and taxonomy lookups when a workflow needs to tie a diagnosis back to the specific provider or specialty who documented it.
Check whether an ICD-10-CM code is billable, and see its full chapter and hierarchy, in seconds.
Search ICD-10-CM codesRelated reading
Frequently asked questions
What does HCC stand for in medical coding?
Hierarchical Condition Category. It's the grouping system inside the CMS-HCC risk adjustment model that maps a subset of ICD-10-CM diagnosis codes — the ones tied to costly, ongoing chronic conditions — into weighted categories used to calculate a Medicare Advantage enrollee's RAF score.
How is a RAF score calculated?
It's additive. Demographic factors (age band, sex, Medicaid status, institutional setting) set a baseline, and each confirmed HCC a patient has on file for the current calendar year adds its own weighted value on top, with certain combinations of conditions adding a further interaction bump. CMS multiplies the resulting score against a county-level base rate to set the plan's monthly payment for that member.
Do all ICD-10-CM codes map to an HCC?
No — most don't. Under the CMS-HCC V28 model fully in effect from payment year 2026, roughly 7,770 of the tens of thousands of ICD-10-CM codes map to one of the model's 115 Hierarchical Condition Categories. Acute, self-limiting or one-off conditions generally carry no HCC weight at all; the model is built around ongoing chronic disease burden, not every diagnosis on a chart.
What is the MEAT documentation rule?
MEAT stands for Monitored, Evaluated, Assessed or Treated. A diagnosis is only considered supportable for risk adjustment if the visit note shows the provider did at least one of those four things for that specific condition at that specific encounter — simply carrying a diagnosis forward on a problem list without addressing it in the note doesn't satisfy MEAT.
Why does a chronic condition need to be coded again every year?
Because HCCs don't roll over. CMS recalculates a member's risk score fresh each calendar year based only on conditions documented, at a qualifying encounter, during that year — so a condition left unmentioned in a visit note for twelve months effectively disappears from the model, even if the patient is still being treated for it.
Anything cited above is general reference, not medical, coding or billing advice. To look something up against live data, run a free NPI lookup, or search the ICD-10-CM code set.
More guides
Look it up, then build on it
Search providers and codes free, then get an API key for your software or your AI agent — no card to start.