# ICD-10 to ICD-11 conversion API (WHO mapping tables)

> Translate ICD-10 codes to ICD-11 with the official WHO mapping tables: REST and FHIR ConceptMap/$translate, ICD-11 titles in the WHO translations, one-to-many maps marked for clinical choice, CSV and Excel conversion in a free account.

Source: https://developers.anpheros.com/guides/icd-10-to-icd-11-api

**Translate ICD-10 codes to ICD-11 with the official WHO mapping tables, through a REST call or a standard FHIR `ConceptMap/$translate`.** ICD-11 titles come in the languages WHO has translated (English, Spanish, French, Portuguese, Russian, Arabic, Chinese, Czech, Turkish); where WHO has no translation, the official WHO title in English is shown. It is included in the free sandbox.

**Code translation, not a diagnosis.** When one ICD-10 code maps to several ICD-11 codes, the API returns all of them and marks the result `needs_clinical_choice`; it never picks one for you. ICD-10 titles are not returned, only ICD-10 codes.

## What you get

| Item | Value |
|---|---|
| Source | WHO ICD-11 MMS 2025-01 and the ICD-10 to ICD-11 mapping tables (10To11MapToMultipleCategories, 10To11MapToOneCategory) |
| Coverage | 12,289 ICD-10 codes, 1,454 of them with more than one ICD-11 target |
| Licence | CC BY-ND 3.0 IGO; codes and titles reproduced without change, with attribution |
| Access | any API key (`sk_test_` sandbox keys included); a no-account converter on anpheros.com for one code at a time |

## One code

```bash
curl -H "Authorization: Bearer $ANPHEROS_KEY" \
  "https://platform.anpheros.com/v1/icd/10-to-11/E11.6?lang=es"
```

```json
{
  "icd10": "E11.6",
  "found": true,
  "relationship": "one-to-many",
  "needs_clinical_choice": true,
  "icd11": [
    {"code": "5A11", "title": "Diabetes mellitus tipo 2", "title_lang": "es", "primary": true},
    {"code": "5A24", "title": "…", "title_lang": "es", "primary": false},
    {"code": "EB90.0", "title": "…", "title_lang": "es", "primary": false}
  ],
  "release": "2025-01"
}
```

`primary` marks the target of WHO's single-category table. It is a reference point, not a clinical recommendation.

## The same in JavaScript

```js
const res = await fetch(`https://platform.anpheros.com/v1/icd/10-to-11/${encodeURIComponent("I10")}?lang=fr`, {
  headers: { Authorization: `Bearer ${process.env.ANPHEROS_KEY}` },
});
const { icd11, needs_clinical_choice } = await res.json();
console.log(icd11.map((t) => `${t.code} ${t.title}`), needs_clinical_choice);
```

## FHIR terminology operations

```bash
# ConceptMap/$translate: ICD-10 → ICD-11
curl -H "Authorization: Bearer $ANPHEROS_KEY" \
  "https://platform.anpheros.com/fhir/R4/ConceptMap/\$translate?system=http://hl7.org/fhir/sid/icd-10&code=E11.6&targetsystem=http://id.who.int/icd/release/11/mms"

# CodeSystem/$lookup: one ICD-11 code, with every WHO translation as a designation
curl -H "Authorization: Bearer $ANPHEROS_KEY" \
  "https://platform.anpheros.com/fhir/R4/CodeSystem/\$lookup?system=http://id.who.int/icd/release/11/mms&code=5A11&displayLanguage=zh"
```

`$translate` returns every match. With one target the equivalence is `relatedto`; with several, each is `inexact` and the message says a clinical choice is needed.

## Search ICD-11

```bash
curl -H "Authorization: Bearer $ANPHEROS_KEY" \
  "https://platform.anpheros.com/v1/icd/11/search?q=diabetes%20tipo%202&lang=es"
```

## Whole lists: CSV or Excel

Sign in to the [dashboard](https://platform.anpheros.com/dashboard/?src=tool-icd) and open **ICD-10 → ICD-11**. Upload a CSV or Excel file with ICD-10 codes in the first column (up to 5,000 per file) and download the converted table. Every row keeps the ICD-10 code; codes with several ICD-11 targets get one row per target, marked "needs clinical choice". Your past conversions stay in the history so you can download them again. The files contain codes only, never patient data.

## Frequently asked questions

### Is this an official WHO tool?
No. It serves the official WHO mapping tables and ICD-11 titles unchanged, with attribution. Anpheros is not affiliated with or endorsed by WHO.

### Why are there several ICD-11 codes for one ICD-10 code?
ICD-11 is more detailed and reorganised. WHO lists every ICD-11 category an ICD-10 code can correspond to. Which one applies depends on the patient, so the choice stays with the clinician.

### Why is the title in English when I asked for Ukrainian?
WHO has not published that translation in this release. We show the WHO English title rather than an unofficial translation.

### Is it free?
Yes. One code at a time on anpheros.com without an account; the API with any free sandbox key; file conversion in a free account.

ICD-11 for Mortality and Morbidity Statistics (2025-01) and the ICD-10 to ICD-11 mapping tables, © World Health Organization, licensed under CC BY-ND 3.0 IGO.
