Skip to content

Risk Adjustment Mapping · Hub

ICD-10 to HCC Mapping: How the CMS-HCC V28 Crosswalk Works

Every Medicare Advantage dollar moves through the ICD-10 → HCC map. About 7,800 of the ~74,000 active ICD-10-CM codes carry RAF weight in 2026; the rest do not. This hub explains how the crosswalk works under CMS-HCC V28, which codes map, which do not, and how to look up the right mapping for any single code in seconds.

The mapping, in one paragraph

CMS publishes a crosswalk each year that assigns every ICD-10-CM diagnosis code to an HCC category or to nothing. For 2026, the crosswalk is based on the CMS risk adjustment program V28 model and applies at 100% weight (V24 is retired). When a coded diagnosis from a face-to-face encounter is submitted to CMS with MEAT documentation supporting it, the HCC it maps to contributes its RAF weight to the patient's risk score — and the plan receives a payment premium for that weight. Unmapped codes are clinically valid but financially silent for Medicare Advantage.

How the ICD-10 → HCC map actually works

The crosswalk is a lookup table, not an algorithm. For every ICD-10-CM code in the annual code set, CMS assigns either one HCC category or none. Mapping is one-way: ICD-10 codes map to HCCs, but HCCs do not map back to a single ICD-10 — each HCC is a cluster of dozens to hundreds of related diagnosis codes. HCC 37 (Diabetes with Chronic Complications), for example, includes most of the E11.2x – E11.6x ranges plus selected codes from E10, E13, and others.

The mapping itself is binary: a code either carries the full RAF weight of its HCC or it carries zero. There are no partial maps, no sub-weights, no prorating. This is why specificity matters so much under V28 — a chart that supports E11.22 (diabetes with CKD) pays the full HCC 37 weight, while the same patient coded as E11.9 (diabetes without complication) contributes nothing to the score.

The model applies two additional rules on top of the raw map. First, HCC hierarchies: when a patient has codes that map to two related HCCs (HCC 35 Diabetes with Complications and HCC 37 Diabetes with Chronic Complications), only the higher category pays — the lower is suppressed. Second, demographic adjustments: age, sex, and original-reason-for-Medicare factors are added to the HCC contributions to produce the final RAF. The crosswalk itself only covers the diagnosis-to- HCC step; the rest happens at the payment layer.

A useful mental model: treat the map as an index, and treat the hierarchy rules as tiebreakers. Coders never need to compute hierarchies at the chart level — the point-of-care job is to land the most specific diagnosis the documentation supports, and let the payment system resolve hierarchies at submission. The RAF calculator models the full stack end-to-end so you can see how a single code change ripples through the final premium.

~7,800 codes map. ~66,000 do not.

Exactly how many ICD-10 codes map under V28 depends on the revision level (the count shifts slightly each October as CMS adds and retires codes), but the ratio holds: roughly one in nine ICD-10 codes carries HCC weight. The other eight in nine describe acute self-limiting illness, symptoms, injuries, or conditions CMS has determined do not predict future Medicare spend. See ICD-10 codes that do not map to HCC for a structured view of the unmapped majority.

This ratio is the single biggest source of coder frustration. A new risk-adjustment coder often expects that a charted diagnosis should produce RAF weight, and is surprised when it does not. The rule is not "sick patients score higher" — it is "charted-and-mapped-and-MEAT-supported chronic conditions score higher." Acute pneumonia, a broken wrist, and a UTI are all real clinical diagnoses that produce zero RAF because CMS does not use them to predict next year's spend.

The codes coders hit most

By encounter volume, roughly a dozen ICD-10 codes drive the majority of risk-adjustment work. Learn these and their HCC mappings cold — the rest you can look up. Each row links to the full code page with V28 HCC, RAF weight, MEAT checklist, and commonly-confused siblings.

ICD-10DescriptionV28 HCCFamily
E11.9Type 2 diabetes, no complicationsNoneDiabetes
E11.22Type 2 diabetes with diabetic CKDHCC 37Diabetes
E11.65Type 2 diabetes with hyperglycemiaHCC 36Diabetes
I50.9Heart failure, unspecifiedHCC 226Cardiovascular
I50.22Chronic systolic heart failureHCC 226Cardiovascular
J44.1COPD with acute exacerbationHCC 279Respiratory
J44.0COPD with acute lower respiratory infectionHCC 279Respiratory
N18.3CKD stage 3 (unspecified)None (V28)Renal
N18.4CKD stage 4HCC 327Renal
N18.6End-stage renal diseaseHCC 326Renal
F33.1Major depressive disorder, recurrent, moderateHCC 155Behavioral health
G30.9Alzheimer's disease, unspecifiedHCC 125Neurological

Note: a few historically-mapped codes lost HCC status under V28 — most visibly N18.3 (CKD stage 3), which no longer maps but was a major revenue category under V24. Always verify against the current V28 list, not a legacy cheat sheet.

Five mapping pitfalls that burn RAF

Coding to the unspecified parent

E11.9 (diabetes without complications) is the most-coded diabetes diagnosis in every EHR. Under V28 it maps to nothing. If the chart actually supports E11.22, E11.65, or any specified complication, the unspecified parent is a pure revenue leak. The fix lives in provider education and chart-review QA, not in the map.

Assuming V24-era categories still pay

Atherosclerosis without complications, peripheral vascular disease without rest pain, CKD stage 3, and mild depression all paid under V24. Under V28 they do not — or they pay significantly less. The mapping change is not visible in the chart; it is visible in the crosswalk file. Coders using legacy tip sheets keep miscoding to categories the model has retired.

Skipping the laterality digit

Cancer codes and several neurological codes require laterality (right/left/bilateral) at the fifth or sixth character. The unspecified-laterality version often does not map; the specified version does. A note that says "CA breast" without laterality produces an unmapped code; the same note with "left breast" lands on a mapped C50.9x1 family code.

Forgetting the hierarchy collapse

A patient with both HCC 35 and HCC 37 does not pay twice — the hierarchy suppresses HCC 35. Compliance teams that report "total HCCs captured" without accounting for hierarchy inflate their numbers and miss the real revenue picture. The RAF calculator applies the hierarchy correctly so the final score matches what CMS pays.

No MEAT evidence for a mapped code

A correctly-mapped ICD-10 code that is not supported by MEAT documentation in a face-to-face encounter will not survive a RADV audit. Unsupported codes are recovered from the plan, and under the 2023 final rule the recovery can be extrapolated across the contract. Mapping is necessary but not sufficient — MEAT is the other half.

Worked example: a single chart, three coding paths

A 72-year-old Medicare Advantage patient sees her primary care physician. Chart documents: Type 2 diabetes on metformin, stage 3b CKD attributed to diabetes, mild non-proliferative retinopathy, and chronic systolic heart failure, compensated, on furosemide and lisinopril. Here is what happens depending on how the encounter is coded.

Path 1 — unspecified-first coding

E11.9 · I50.9

E11.9 maps to nothing under V28. I50.9 maps to HCC 226. Revenue captured: one HCC. The chart supported three mapped HCCs; two walked out the door.

Path 2 — partial specificity

E11.22 · I50.9

E11.22 now maps to HCC 37. I50.9 still maps to HCC 226. Two HCCs captured. Retinopathy was documented but never coded, so HCC 37A (or the proliferative variant) is lost. Better than Path 1; still leaving weight on the table.

Path 3 — full specificity

E11.22 · E11.319 · I50.22

E11.22 maps to HCC 37. E11.319 (background retinopathy without macular edema) adds to the diabetes-with- complications picture. I50.22 (chronic systolic HF) lands on HCC 226 with better audit durability than the unspecified I50.9. All three mapped conditions captured; hierarchy suppresses any overlap at the payment layer.

Same chart, same patient, three different payment outcomes. The map does not reward the coder who tries harder — it rewards the coder who codes to the specificity the documentation supports. This is what ICD-10 → HCC mapping really means at the claim level.

How to look up any ICD-10 → HCC mapping

  1. Open the HCC Buddy ICD-10 encoder. Type or paste the code (or search by description). The result page loads the full mapping for 2026 V28.
  2. Scan the HCC field. If it shows a category, note the RAF weight and family (the sidebar groups sibling codes that map to the same HCC). If it shows "no HCC," the code is clinically valid but produces no risk-adjustment revenue.
  3. Check the MEAT checklist scoped to the code. Each condition family has a different evidentiary bar; MEAT for diabetes is not the same as MEAT for heart failure.
  4. Review the commonly-confused-codes block. These are the nearby ICD-10 codes that pay differently or have different audit risk — the most common coder error is picking a sibling code that looks right but maps to nothing.
  5. If you work inside an EHR, install the HCC Buddy Chrome extension and get the same lookup inline — no tab-switching, no copy-paste.

V24 vs V28: mapping changes coders keep tripping on

The map shifted between V24 and V28, and 2026 is the first year the V28-only map applies at full weight. Three category families saw the biggest changes: vascular disease, behavioral health, and CKD.

  • Vascular without complications lost weight. I25.10 (atherosclerotic heart disease without angina) and I70.9 (unspecified atherosclerosis) dropped substantially; look up I25.10 for current mapping.
  • Mild depression was removed. F32.0 and F32.1 no longer map. F33.1+ still maps. F32.9 ("major depressive disorder, unspecified") moves depending on revision; look it up rather than relying on an old tip sheet.
  • CKD stage 3 stopped paying at the unspecified level. Under V28, stage 4, stage 5, and ESRD still map. Stage 3 (N18.30 / N18.31 / N18.32 hierarchy) is category-dependent — verify each subtype.
  • Cancer mapping tightened around staging. Active cancer codes and metastatic codes still drive significant RAF; "history of" Z85 codes continue to carry no weight, and the 2023 RADV final rule pays closer attention to whether active-cancer documentation actually supports an active-treatment encounter.

See the V24 vs V28 model comparison for a longer walk through the category-family changes, and the 2026 HCC V28 hub for the full current list with RAF weights.

Free tools for ICD-10 to HCC mapping

  • ICD-10-CM encoder with HCC mapping — Type a code or description, get the V28 HCC, RAF weight, MEAT checklist, and commonly-confused codes. Every code page is its own URL so you can bookmark or deep-link the ones you look up daily.
  • RAF score calculator — Add codes one at a time and watch the RAF score build. Hierarchies apply automatically. Useful for prospective chart-review, provider coaching, and modeling specificity improvements.
  • HCC coding cheat sheet (2026) — One-page PDF with the top-volume mapped codes and the most-common V28 mapping changes, updated for the 100% V28 year.
  • Chrome extension — Inline mapping lookup inside your EHR. Zero PHI stored or transmitted; every lookup hits the same crosswalk as the web encoder.

Frequently asked questions