FY2026 ICD-10-CM · CMS-HCC V28 PY2027 · COMMUNITY_NA

Carcinoma in situ risk-adjusts at zero — all 59 codes, with one exception

The Ca in situ column of the ICD-10-CM Neoplasm Table resolves to 59 distinct codes. Not one maps to a CMS-HCC V28 category.

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.

  1. 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 2026
  2. 1Count the Ca in situ column — cells, dashes, and distinct codes

    python3 -c "
    import xml.etree.ElementTree as ET
    r = ET.parse('icd10cm_neoplasm_2026.xml').getroot()
    cells = [(c.text or '').strip() for c in r.iter('cell') if c.get('col') == '4']
    codes = {x.replace('.','').rstrip('-') for x in cells if x not in ('-','--','')}
    print('cells in Ca in situ column:', len(cells))
    print('cells with no code (dashes):', sum(1 for x in cells if x in ('-','--')))
    print('DISTINCT codes:', len(codes))
    "

    Output

    cells in Ca in situ column: 1819
    cells with no code (dashes): 901
    DISTINCT codes: 59
  3. 2How many of them map to a CMS-HCC V28 category

    python3 -c "
    import xml.etree.ElementTree as ET, csv
    r = ET.parse('icd10cm_neoplasm_2026.xml').getroot()
    codes = {(c.text or '').strip().replace('.','').rstrip('-')
             for c in r.iter('cell') if c.get('col') == '4'} - {'-','--',''}
    hcc = {row['ICD10'] for row in csv.DictReader(open('ICD10_CC_mappings_CMS_HCC_2027_v28_initial.csv'))}
    print('Ca in situ codes that map to a V28 HCC:', len(codes & hcc))
    "

    Output

    Ca in situ codes that map to a V28 HCC: 0
  4. 3D03 is absent from the column — and D03 is what maps

    python3 -c "
    import xml.etree.ElementTree as ET, csv
    r = ET.parse('icd10cm_neoplasm_2026.xml').getroot()
    codes = {(c.text or '').strip().replace('.','').rstrip('-')
             for c in r.iter('cell') if c.get('col') == '4'} - {'-','--',''}
    print('categories in the Ca in situ column:', sorted({c[:3] for c in codes}))
    hcc = {row['ICD10']: row['CC'] for row in csv.DictReader(open('ICD10_CC_mappings_CMS_HCC_2027_v28_initial.csv'))}
    d03 = {k: v for k, v in hcc.items() if k.startswith('D03')}
    print('D03 codes that DO map:', len(d03), '-> HCC', sorted(set(d03.values())))
    "

    Output

    categories in the Ca in situ column: ['D00', 'D01', 'D02', 'D04', 'D05', 'D06', 'D07', 'D09']
    D03 codes that DO map: 23 -> HCC ['23.0']

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.

Codes referenced here