AcademyCoding21 Jul 2026 8 min read

ICD-10 vs ICD-9: How to Read a GEM Crosswalk

Why the US retired ICD-9 codes for ICD-10-CM and ICD-10-PCS in 2015, how the two current systems differ, and how to read a GEM crosswalk when old and new data need to meet.

By Patientary Team

Archived paper files, representing legacy ICD-9 records that need a GEM crosswalk
Photo: Zulfugar Karimov

If you work with US healthcare data for long enough, you'll eventually run into ICD-9 codes — the diagnosis and procedure codes American hospitals and payers used until 1 October 2015. They're not used for new claims any more, but they haven't disappeared. Older claims data, historical research datasets, and the odd legacy system still reference ICD-9 codes, and if you ever need to line that data up against anything coded after 2015, you need a way to translate between the two eras. That's what a GEM — General Equivalence Mapping — crosswalk is for.

TL;DR: The US used ICD-9-CM for diagnoses and inpatient procedures until 1 October 2015, when it switched to two separate systems — ICD-10-CM for diagnoses and ICD-10-PCS for inpatient procedures — because ICD-9-CM had run out of room to add new codes precisely. Since the two systems don't map one-to-one, CMS published GEM crosswalks to translate between them. Most people coding today never need a GEM; they only matter when you're working with data, research, or legacy systems that straddle the 2015 transition.

A Short History: From ICD-9-CM to ICD-10

For decades, the US ran on ICD-9-CM for essentially everything clinical. Volumes 1 and 2 covered diagnoses; Volume 3 covered inpatient procedures. One code set, three volumes, one structure.

That changed on 1 October 2015, when CMS and CDC/NCHS mandated a hard cutover to ICD-10. It wasn't a gradual rollout — every HIPAA-covered entity had to switch on the same date, which makes 2015 a clean dividing line in almost any long-running US healthcare dataset. For more on how the current system is structured day to day, see how ICD-10 codes work.

Why the US Retired ICD-9 Codes

The short version: ICD-9-CM had run out of room. Its codes used a rigid, mostly numeric structure with a limited number of digits, which capped how many distinct concepts it could represent. After decades of medicine getting more specific, the code set hadn't kept pace, and coders were increasingly stuck rounding down to something close enough rather than something accurate.

ICD-10-CM and ICD-10-PCS were built with far more room to grow. Codes can capture laterality (left versus right), encounter type (initial versus subsequent visit), and much finer anatomical and clinical detail than ICD-9-CM ever could. That extra structure is also why the current code set keeps expanding — see our rundown of the FY2027 ICD-10-CM code updates for a sense of how often it still changes.

Two Systems, One Confusing Name

What's the difference between ICD-10-CM and ICD-10-PCS?

This is where a lot of people trip up, because "ICD-10" sounds like one thing. It's actually two separate systems that happened to launch on the same date.

  • ICD-10-CM replaced ICD-9-CM Volumes 1–2 and covers diagnoses. It's used everywhere — GP visits, emergency departments, outpatient clinics, inpatient stays — and it's maintained jointly by CMS and CDC/NCHS.
  • ICD-10-PCS replaced ICD-9-CM Volume 3 and covers inpatient hospital procedures only. It's maintained by CMS specifically for that setting and doesn't apply anywhere else.

Outpatient and physician procedures are never coded in ICD-10-PCS — they use CPT and HCPCS instead, paired with ICD-10-CM diagnosis codes. If you want the fuller comparison of how those systems divide the work, read ICD-10 vs CPT vs HCPCS and HCPCS codes explained.

What Is a GEM Crosswalk, and Why Do You Need One?

ICD-9 codes and ICD-10 codes don't map one-to-one. ICD-10-CM/PCS has vastly more codes and far greater specificity, so a single ICD-9 code often fans out into several possible ICD-10 codes depending on detail that simply wasn't captured in the old system. Going the other direction, several ICD-10 codes might collapse back down to one broader ICD-9 code.

To bridge that gap, CMS published General Equivalence Mappings — GEMs — as part of the 2015 transition. A GEM is a reference file, not a piece of software: it lists, for each code in one system, the code or codes in the other system it's most closely related to. There's a forward mapping (ICD-9 to ICD-10) and a backward mapping (ICD-10 to ICD-9), because the two directions aren't symmetrical.

How to Read a GEM Entry

Conceptually, every GEM entry has three parts: a source code, one or more target codes, and a flag describing the quality of the match.

  1. Source code — the code you're starting from, in either ICD-9-CM or ICD-10-CM/PCS depending on which direction you're mapping.
  2. Target code(s) — the code or codes in the other system that most closely correspond to it. Some source codes map to a single target; others map to a list, because the old code was less specific than the new system allows.
  3. Match flag — an indicator of whether the mapping is an approximate 1:1 match, an exact match, or a case where the single old code splits across multiple new codes and needs a person to pick the right one using clinical judgement, since the GEM itself can't know which specific circumstance applied to a given patient.

That last category is the one to watch. Illustratively — not a real code pair — imagine an old ICD-9 code that just meant "fracture of the wrist." The ICD-10-CM equivalent might split that into a dozen more specific codes covering which bone, which side of the body, and whether it's an initial encounter or a follow-up visit. A GEM will list all the plausible targets, but only someone with access to the underlying clinical documentation can say which one is actually correct for a given record.

SystemEra / statusWhat it codesMaintained by
ICD-9-CMLegacy — historical and reference use onlyDiagnoses (Vols 1–2) and inpatient procedures (Vol 3)Retired; formerly CMS and CDC/NCHS
ICD-10-CMCurrentDiagnoses, all care settingsCMS and CDC/NCHS
ICD-10-PCSCurrentInpatient hospital procedures onlyCMS
ICD-9-CM, ICD-10-CM, and ICD-10-PCS at a glance.

When You Actually Need a Crosswalk Today

Picture a health-data analyst asked to build a ten-year trend line for a hospital system — readmission rates, say, from 2012 through 2022. Everything before October 2015 is coded in ICD-9; everything after is ICD-10-CM and ICD-10-PCS. Counting a condition by name across that boundary means running the pre-2015 records through a GEM crosswalk first, so the old codes are normalised to their nearest current equivalents before anything gets aggregated. Skip that step and the trend line quietly breaks at the seam, with a discontinuity that has nothing to do with actual patient outcomes and everything to do with a code set changing underneath the data.

That's the realistic use case for a GEM crosswalk: research spanning the transition, reconciling legacy claims warehouses, or migrating an old system that still stores ICD-9 codes into one that expects ICD-10-CM/PCS. Longitudinal studies and any dataset built from records older than 2015 fall into this category too.

When You Don't Need One

Routine, current-day coding doesn't touch GEMs at all. A biller or coder working today's claims just uses ICD-10-CM directly — there's no old code to translate from. If that's your day-to-day, the more useful background reading is on what medical coding actually involves and what makes an ICD-10-CM code billable, rather than the crosswalk mechanics covered here.

It's also worth remembering GEMs are a bridge, not a permanent fixture. CMS built them to smooth a one-off transition, and they reflect ICD-10-CM/PCS as it stood around 2015 — they don't automatically account for annual code updates since. For current lookups, work from the live code set rather than a decade-old mapping file.

Patientary keeps the current ICD-10-CM set searchable and up to date, built on the same official data CMS and CDC/NCHS publish — useful whether you're checking a code by hand or wiring it into an application. For programmatic access, including for AI agents that need structured healthcare reference data, see Patientary's MCP server.

Need to check a current diagnosis code rather than an old ICD-9 one? Search the live ICD-10-CM code set.

Browse ICD-10-CM codes

Frequently asked questions

Is ICD-9 still used today?

Not for new claims. The US mandated the switch to ICD-10-CM and ICD-10-PCS on 1 October 2015, and every claim submitted since then has used the new systems. ICD-9-CM still shows up in historical records, older research datasets, and legacy software that hasn't been fully migrated, which is why crosswalks still matter for people working with data that predates the transition.

What's the difference between ICD-10-CM and ICD-10-PCS?

ICD-10-CM codes diagnoses and is used across every care setting, from a GP visit to an inpatient stay. ICD-10-PCS codes inpatient procedures only and is used exclusively in the hospital inpatient setting. They're two separate code sets maintained under different processes, even though the shared "ICD-10" name makes them easy to mix up.

What is a GEM crosswalk used for?

A General Equivalence Mapping crosswalk translates codes between ICD-9-CM and ICD-10-CM/PCS. It's used when normalising longitudinal datasets that span the 2015 transition, migrating legacy systems that still store ICD-9 codes, or running research that needs to compare pre-2015 and post-2015 records on equal footing.

Do outpatient claims use ICD-10-PCS?

No. ICD-10-PCS is reserved for inpatient hospital procedures. Outpatient and physician-office procedures are reported using CPT and HCPCS codes instead, alongside ICD-10-CM diagnosis codes. If you're coding or researching outpatient encounters, ICD-10-PCS isn't the code set you're looking for.

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.

Get an API key