ICD-10 Data Source¶
ICD-10-CM / PCS¶
- CM (Clinical Modification): used for diagnosis coding.
- Source: the annual release from the US CMS (Centers for Medicare & Medicaid Services) (https://www.cms.gov/medicare/coding-billing/icd-10-codes).
- Recommended file: the "Code Descriptions in Tabular Order" zip (containing
icd10cm_order_YYYY.txt) — the complete code set: header codes plus billable codes including 7th characters / placeholderX(98,186 codes in the 2026-04-01 release). Only with this file isicd.editions.completetrue, and only then does the FHIR validator treat unknown ICD-10-CM codes as errors. - Also accepted: the "Code Tables, Tabular and Index" zip (
icd10cm_tabular_YYYY.xml); 7th characters are expanded, but unknown codes stay warnings.
- PCS (Procedure Coding System): used for procedure and surgical coding.
- Source: as above (the flat codes TXT inside the ICD-10-PCS zip).
WHO ICD-10 (optional)¶
- Purpose: lets the FHIR validator check codes and displays of
http://hl7.org/fhir/sid/icd-10; the ICD lookup tools are unaffected. - File: a WHO ICD-10 FHIR CodeSystem or expanded ValueSet JSON, e.g.
2019-covid-expanded(13,831 codes) fetched from tx.fhir.org withnode-server/scripts/validator-audit/harness/fetch_tx_terms.py. Written toicd.icd10_who.
Taiwan Chinese names¶
- Source: the Ministry of Health and Welfare's bilingual "Chinese edition of ICD-10-CM/PCS" XLSX (source role
icd_zh_tw, optional). - Chinese names only fill
name_zh; the code set itself always follows the CMS release.
File format and import¶
Upload on the Terminology → ICD-10 page of the admin console, "Data lifecycle" tab; the icd_import stage processes every role in one job:
| Source role | File | Required |
|---|---|---|
icd10cm |
CMS ICD-10-CM zip (order file or tabular XML) | Yes |
icd10pcs |
CMS ICD-10-PCS zip | No (procedure features degrade without it) |
icd_zh_tw |
MOHW bilingual XLSX (sheets ICD-10-CM and ICD-10-PCS, code in column A, Chinese name in column D) |
No |
icd10_who |
WHO ICD-10 FHIR JSON | No |
The import writes staging tables first, then swaps icd.* and writes icd.editions in one promote transaction.