Downcoded

Somebody Already Sorted All 75,725 Diagnosis Codes for You

AHRQ's Clinical Classifications Software Refined maps every ICD-10-CM code into 553 clinical categories, picks which one to use as the principal diagnosis, and flags 10,843 codes that cannot be one. It is a free CSV with no login, and the release that covers October's new codes is the next one.


Every service-line report you have read this year had to decide which diagnosis codes belong in which bucket.

Somebody already made all of those decisions. They wrote them down, versioned them, and put the file on the internet with no login on it.

Seventy-Five Thousand Codes, 553 Buckets

The Clinical Classifications Software Refined is published by AHRQ through the Healthcare Cost and Utilization Project, and the current diagnosis release, v2026.1, went up on November 19, 2025.

We pulled it this morning. One curl, no account, no key, no terms click-through.

Inside the ZIP is a 22 MB CSV with one row per ICD-10-CM code and 75,725 rows. Each row carries the code, its description, and up to six CCSR categories drawn from a list of 553, organized across 22 body systems that track the ICD-10-CM chapters without being bound to them.

The categories read like the way people actually talk about care: CIR019 Heart failure, END002 Diabetes mellitus without complication, RSP006 Other specified upper respiratory infections. Six characters, a clean label.

AHRQ will tell you the mapping program only comes as SAS. That undersells the thing.

The CSV is the whole map, and it joins to anything.

Same shelf holds the procedure side, which folds 80,000-plus ICD-10-PCS codes into over 320 categories across 31 clinical domains, plus the Elixhauser comorbidity software, the Chronic Condition Indicator, and a CPT and HCPCS grouper with over 240 categories. All of it free, all of it versioned.

The Column That Says No

Here is the part that earns the download.

Grouping a diagnosis is the easy half. The CCSR also picks a default category for the principal diagnosis on an inpatient record and for the first-listed diagnosis on an outpatient one, because ranking encounters needs a mutually exclusive answer and the map itself does not give you one.

And for a large block of codes, the default is a refusal.

XXX000 reads "Code is unacceptable as a principal diagnosis PDX." XXX111 is the outpatient version for a first-listed diagnosis.

We counted how often each one fires (chart below).

10,843 codes, 14.3% of the file, cannot be an inpatient principal. 9,074 cannot be an outpatient first-listed. The outpatient flagged set sits entirely inside the inpatient one, so the gap is exact: 1,769 codes the inpatient side refuses and the outpatient side takes.

The refused block is mostly where you would guess. 4,359 of the 10,843 are V codes, 1,595 are Y codes, 1,296 are W codes, another 1,206 are Z codes.

External causes, activity codes, status codes.

That is a free, per-code table of what cannot lead a claim, published by a federal agency, sitting in a column you can join on.

One Code, Six Answers

The older CCS forced every code into exactly one category. The refined version stopped doing that, and the consequence is the reason the default column has to exist at all (chart below).

66,767 codes sit in exactly one category. 8,958, or 11.8%, sit in two or more.

Two codes land in six. B002, herpesviral gingivostomatitis and pharyngotonsillitis, is simultaneously three dental categories, a digestive one, a viral infection, and an upper respiratory infection.

T43642A, poisoning by ecstasy with intentional self-harm, is two external-cause categories, an injury category, and three mental and behavioral ones.

Both of those are correct. Neither is usable in a ranking table, which is exactly why the file hands you a default and tells you, in a rationale column, why it picked that one.

They Ship the Diff

Every release comes with a change log workbook, and this is the part your ingest job wants.

v2025.1 to v2026.1: 487 ICD-10-CM codes added. CMS put 487 new codes into FY2026.

Every one landed, none deferred.

Against that, the structure barely moved. One new category, SYM019 Flank pain and tenderness, which absorbed eight of the new codes. Zero categories redefined or discontinued. Twelve codes remapped, all of them in the septicemia family, where A393 and B007 lost their INF002 mapping and nine septic embolism and thrombophlebitis codes picked up INF003 as a cross-reference. Two inpatient defaults changed. Three outpatient.

Five sentences and your whole diff is done.

Final Thoughts

190 new ICD-10-CM codes take effect October 1, with 30 deleted. We checked all 190 against v2026.1 and none of them are in it, which is what a file stamped "valid through September 2026" is telling you. The release that carries them is v2027.1, and the archive carries a version for every fiscal year back to 2019.

What is in v2026.1 is more interesting than what is missing. The file holds 75,725 codes against the 74,719 that are actually billable this year.

Those extra 1,006 are retired codes AHRQ kept, so a 2017 claim still groups into the same bucket a 2026 claim does.

Nobody rebuilds a trend line because a code got deleted. That is a design decision somebody made on purpose, years ago, and then maintained.

Thanks for reading.