Medical Coding Codes Explained: ICD-10-CM, CPT, and HCPCS
Medical coding relies on three separate code sets that each cover a different piece of a patient encounter. ICD-10-CM codes the diagnosis, the reason the patient needed care. CPT codes the procedure or service a provider performed. HCPCS Level II codes supplies, equipment, and services that fall outside CPT’s scope. A single office visit typically generates codes from more than one of these sets at once, which is exactly why understanding the structure matters more than memorizing any individual code.
This article covers the organizational structure of each code set: how many codes exist, who maintains them, and how they relate to each other. It does not reproduce specific code numbers or their descriptions anywhere, since CPT in particular is copyrighted content owned by the American Medical Association.
(CPC Prep is not affiliated with or endorsed by AAPC, AHIMA, or the AMA. This article describes the public, factual structure of these code sets; it reproduces no copyrighted code content.)
What is ICD-10-CM, and who maintains it?
ICD-10-CM is the diagnosis code set used across the US healthcare system, containing more than 69,000 codes that describe conditions, injuries, and reasons for a visit at a level of specificity far beyond earlier coding systems. It’s maintained by the CDC’s National Center for Health Statistics, which updates the code set annually to reflect new conditions, refined classifications, and retired codes. Every medical coding certification exam, CPC included, tests some level of ICD-10-CM proficiency, since diagnosis coding underlies nearly every claim regardless of specialty.
What is CPT, and how is it organized?
CPT, Current Procedural Terminology, is the procedure and service code set, maintained and copyrighted by the American Medical Association. It’s organized into three categories. Category I covers standard, established procedures and services, the bulk of everyday coding work. Category II covers performance-measurement tracking codes, used to document clinical actions tied to quality metrics rather than to bill directly. Category III covers temporary alphanumeric codes for new and emerging technology or procedures that haven’t yet met the criteria for a permanent Category I code.
| Code set | Covers | Maintained by |
|---|---|---|
| ICD-10-CM | Diagnoses (69,000+ codes) | CDC / National Center for Health Statistics |
| CPT Category I | Standard procedures/services | American Medical Association |
| CPT Category II | Performance-measurement tracking | American Medical Association |
| CPT Category III | Emerging technology/procedures (temporary) | American Medical Association |
| HCPCS Level II | Supplies, equipment, non-CPT services (~8,000 codes) | CMS |
Sources: AMA: Category III Codes and CMS: Healthcare Common Procedure Coding System, both accessed 2026-07-18.
What is HCPCS Level II, and why does it exist separately from CPT?
HCPCS Level II covers items and services CPT doesn’t, primarily durable medical equipment, ambulance transport, certain drugs, and supplies. It spans roughly 8,000 codes and is maintained by CMS rather than the AMA. It exists as a separate system because CPT was originally built around physician procedures and services, leaving a gap for the physical items and non-physician services that also need to be billed. A single claim for, say, a home oxygen setup might use an ICD-10-CM diagnosis code, a CPT code for a related physician service, and an HCPCS code for the equipment itself.
Why does a coder need to know all three, rather than specializing in one?
Because real claims rarely stay inside one code set. A single office visit for a chronic condition might need an ICD-10-CM code for the diagnosis, a CPT code for the evaluation and management service, and possibly an HCPCS code if a supply or piece of equipment was dispensed during the visit. Certification exams reflect this reality: the CPC exam tests proficiency across all three code sets, not just one, because that’s how billing actually works in practice.
Does this structure ever change?
Yes, all three update on a regular cycle, most commonly annually, to add new codes, retire obsolete ones, and refine existing definitions as medical practice and technology evolve. That’s part of why certification exams require current-year manuals rather than allowing older editions. See CPC exam study materials for exactly which current editions are required at test time.
To see how well you already understand how these code sets interact, run a few questions on the free CPC practice exam, and start with what is medical coding if you want the plain-English version of how coding fits into the broader billing process.
FAQ
How many code sets does medical coding actually use? Three primary ones: ICD-10-CM for diagnoses, CPT for procedures and services, and HCPCS Level II for supplies, equipment, and non-CPT services.
Who owns CPT, and why does that matter? The American Medical Association maintains and copyrights CPT. That’s why educational content, including this site, describes CPT’s category structure without reproducing specific code numbers or descriptions.
What’s the difference between CPT Category I, II, and III codes? Category I covers standard established procedures. Category II covers performance-measurement tracking, not direct billing. Category III covers temporary codes for new or emerging technology and procedures.
Why isn’t HCPCS Level II just part of CPT? CPT was built around physician procedures and services. HCPCS Level II fills the gap for supplies, equipment, and services CPT doesn’t cover, and it’s maintained by CMS rather than the AMA.
Do these code sets change every year? Yes. ICD-10-CM, CPT, and HCPCS Level II all update on a regular cycle, generally annually, which is why coding certification exams require current-year manuals.
Bottom line: medical coding runs on three separate code sets, diagnosis, procedure, and supply/equipment, each maintained by a different organization, and understanding how they divide the work matters more for exam prep than memorizing any individual code.