MedCodeSearch

Methodology

This page explains, in specific technical detail, how an official code-set file becomes a page on MedCodeSearch — so you can judge for yourself how much to trust what you're reading.

1. Import and normalisation

Each release begins as the official file published by the responsible organization: fixed- width and XML files for ICD-10-CM (Tabular List and Addendum), the official order file and definitions/tables files for ICD-10-PCS, and the ANWEB record layout for HCPCS Level II. These files are downloaded directly from the source listed on Data Sources, not from a third-party mirror.

Import parses each record into a structured row: code, short and long description, status flags, and any set-specific fields (for example HCPCS pricing and coverage indicators, or the seven ICD-10-PCS character values). Codes are normalised to a canonical form for lookup — punctuation and case are stripped so e11.9, E119, and E11.9 all resolve to the same code — while the officially formatted form (with ICD-10-CM's decimal point after the third character) is what's displayed on the page and used in the canonical URL. Descriptions, note text, and code values themselves are copied verbatim from the source file; MedCodeSearch does not rewrite, summarise, or otherwise alter official wording.

Every release is validated against expected row counts and structural checks before it is published; a release that fails validation is not shown as current. The date each release was imported is recorded and shown on the code pages that belong to it.

2. How hierarchy is built

Hierarchy (which code is a parent, child, or sibling of which) is derived from the structure the official source itself encodes, not guessed from string similarity:

  • ICD-10-CM hierarchy comes from the nesting of the official Tabular List XML, walked chapter → section → category → subcategory → code. A code is not simply "its string with the last character removed" — the tabular file is authoritative. This matters for codes that use a placeholder character: ICD-10-CM pads some codes with a literal X to hold a character position open for a future 7th-character extension. A code like E08.37X1 is attached to E08.37 as its true parent in the tabular list, not to a five-character stem that doesn't otherwise exist as a code.
  • ICD-10-PCS hierarchy follows the official order file and the PCS Tables: a 7-character code's parent is the 3-character table header (Section, Body System, Root Operation) it is listed under, and its Body Part, Approach, Device, and Qualifier values come from the axis definitions attached to that specific table.
  • HCPCS Level II codes are grouped by their official letter-prefixed range (for example the A-codes for medical and surgical supplies), which is how CMS organizes the ANWEB file itself.

These relationships are pre-computed at import time into a hierarchy table, so a code page can show its ancestors, parent, children, and siblings without recomputing string logic on every request.

3. Billable / specific status

The "billable/specific" flag shown on ICD-10-CM code pages is the validity flag published directly in the CMS/CDC official order file for that release — it is not inferred, scored, or estimated by MedCodeSearch. A code marked valid for reporting in the order file is shown as billable/specific; a header or category-level code that requires further specification is not.

This flag says only that a code is (or is not) valid for reporting per the official file for that release. It is not a statement that a payer will accept a claim with that code, that a code is medically appropriate for a given patient, or that coverage or payment follows automatically from a code's existence — see the Disclaimer page. ICD-10-PCS codes are always exactly seven characters and fully specified once complete, so this flag does not apply to that code set and is shown as not applicable rather than forced to true or false.

4. How release comparison works

When a new release is imported, it is compared against the immediately prior release for the same code set to classify each code as:

  • New — present in the new release, absent from the prior one.
  • Revised — present in both, with a changed description or a changed billable/specific status.
  • Deleted — present in the prior release, absent from the new one.
  • Reactivated — previously deleted, then present again in a later release.

A code's history on its page lists one entry per release it has ever appeared in. The absence of a change record for a release the code is present in means the code was unchanged in that release — the description, status, and every other field carried over identically from the prior release. MedCodeSearch does not synthesize a "revised" entry to fill a gap; no record is the record.

Search evaluates a query against several match types and ranks results by how directly they answer it, roughly in this order:

  1. Exact code — the query, once normalised, matches a code exactly.
  2. Normalised code — the query matches a code once punctuation and case are stripped (so "e11 9" still finds E11.9).
  3. Code prefix — the query matches the start of one or more codes.
  4. Exact phrase — the query matches an exact phrase within an official description.
  5. Full-text description — the query matches words in an official description, ranked by relevance.
  6. Official index terms — the query matches an entry from the official Alphabetic Index (ICD-10-CM) or similar official cross-reference terms, which catches clinical synonyms the tabular description doesn't spell out.

A query that could plausibly be a code (for example, starts with a letter and is a plausible length) is checked against the code-shaped rules first; a purely numeric query is never treated as a code lookup, since it's more likely a year or a quantity than a code.

6. ICD-10-PCS character definitions

Every ICD-10-PCS code page shows the meaning of each of its seven character positions (Section, Body System, Root Operation, Body Part, Approach, Device, Qualifier). Those labels and definitions come directly from the official ICD-10-PCS Definitions file and the Tables file published alongside the order file for that release — the same source CMS publishes for coders. MedCodeSearch does not write or infer character definitions; where the official file provides a longer definition for a given value in addition to its short label, that definition is shown as published.