CMS-HCC V28 PY2027 · COMMUNITY_NA
Two ICD-10 codes change HCC on the patient's sex, and the swing is 10×
339 ICD-10 codes map to more than one CMS-HCC V28 category — 189 conditionally on age or sex, and 150 simultaneously. Hemophilia A and B swing 10.3× on sex alone.
Reproduce this
Every figure above comes from two public CMS files. Put them in an empty directory and run these — each command prints exactly the numbers published here. Outputs below are pasted verbatim from a real run.
0Confirm which ICD-10-CM edition you have. Run this first.
python3 -c " import xml.etree.ElementTree as ET r = ET.parse('icd10cm_index_2026.xml').getroot() for mt in r.iter('mainTerm'): if (mt.findtext('title','') or '').strip().lower() == 'tumor': for t in mt.iter('term'): if (t.findtext('title','') or '').strip().lower() == 'neuroendocrine': code = t.findtext('code') print('Tumor > neuroendocrine =', code) print('edition =', 'April 1 2026' if code.startswith('C7A') else 'October 1 2025' if code.startswith('D3A') else 'unrecognised') "Output
Tumor > neuroendocrine = C7A.- edition = April 1 20261The two sex-conditional codes
python3 -c " import csv for row in csv.DictReader(open('ICD10_CC_mappings_CMS_HCC_2027_v28_initial.csv')): if row['ICD10'] in ('D66','D67'): print(row['ICD10'], '-> HCC', row['CC'], '| age:', row['AGE_EDIT_CONDITION'] or '-', '| sex:', row['SEX_EDIT_CONDITION'] or '-') "Output
D66 -> HCC 111.0 | age: age < 65 | sex: 1.0 D66 -> HCC 111.0 | age: age >= 65 | sex: 1.0 D66 -> HCC 112.0 | age: - | sex: 2.0 D67 -> HCC 111.0 | age: age < 65 | sex: 1.0 D67 -> HCC 111.0 | age: age >= 65 | sex: 1.0 D67 -> HCC 112.0 | age: - | sex: 2.02The coefficients
python3 -c " import csv for row in csv.reader(open('V28_CE_Relative_Factors.csv', encoding='utf-8-sig')): if row and row[0].strip() in ('HCC111','HCC112','HCC22','HCC23'): print(f'{row[0].strip():8s} community_NA={row[2]:6s} {row[1].strip()[:52]}') "Output
HCC22 community_NA=0.363 Bladder, Colorectal, and Other Cancers HCC23 community_NA=0.186 Prostate, Breast, and Other Cancers and Tumors HCC111 community_NA=4.639 Hemophilia, Male HCC112 community_NA=0.45 Immune Thrombocytopenia and Specified Coagulation De3The 339, split into conditional and simultaneous
python3 -c " import csv, collections rows = list(csv.DictReader(open('ICD10_CC_mappings_CMS_HCC_2027_v28_initial.csv'))) by = collections.defaultdict(list) for r in rows: by[r['ICD10']].append(r) multi = {k: v for k, v in by.items() if len({r['CC'] for r in v}) > 1} sex = [k for k, v in multi.items() if any(r['SEX_EDIT_CONDITION'] for r in v)] cond = [k for k, v in multi.items() if any(r['SEX_EDIT_CONDITION'] or r['AGE_EDIT_CONDITION'] or r['MCE_AGE_CONDITION'] for r in v)] print('codes mapping to more than one HCC:', len(multi)) print(' ...conditional on age or sex:', len(cond)) print(' ...conditional on SEX:', len(sex), sorted(sex)) print(' ...unconditional (both HCCs apply at once):', len(multi) - len(cond)) "Output
codes mapping to more than one HCC: 339 ...conditional on age or sex: 189 ...conditional on SEX: 2 ['D66', 'D67'] ...unconditional (both HCCs apply at once): 150
If you write your own parser, traverse the whole tree. root.iter('term') misses the cells under <mainTerm>— the table's head row — and comes up exactly one cell short in every column. And normalise cells with .replace(".","").rstrip("-"): a lone -means “no code”, while a trailing hyphen on a real stem means “more characters required”. Those are different things.
Sources and method
- ICD-10-CM
- ICD-10-CM FY2026, April 1 2026 release. The Neoplasm Table is unchanged from the October 1 2025 release — both statements are true, and either download reproduces every figure. april-1-2026-code-tables-tabular-index.zip
- CMS-HCC model
- CMS-HCC V28, Payment Year 2027 initial model software (Python package). 2027-initial-model-software-python.zip
- Segment
- All coefficients are COMMUNITY_NA — community, non-dual, aged. Other segments carry different values and some invert; a coefficient without its segment is meaningless.
Published by Eviora Health Tech LLC on . These pages describe how the CMS-HCC payment model behaves. They are not coding advice — code selection follows the ICD-10-CM Official Guidelines and the provider's documentation.