# ICD-10, ICD-11 and what changes for people working with Brazilian health data
Sidney Bissoli
2026-08-31

- [The ICD-10 the Brazilian health system actually
  uses](#the-icd-10-the-brazilian-health-system-actually-uses)
- [What ICD-11 is, and why it has not replaced anything
  here](#what-icd-11-is-and-why-it-has-not-replaced-anything-here)
- [The transition tables: what they are, and what they are
  not](#the-transition-tables-what-they-are-and-what-they-are-not)
- [A note on translation](#a-note-on-translation)
- [Licences differ between sources](#licences-differ-between-sources)
- [Where an AI assistant fits](#where-an-ai-assistant-fits)

*Published 31 August 2026. The counts here were extracted from the
official datasets bundled with the server — the DataSUS CID-10 V2008
release and WHO’s transition tables, release 2025-01 — and can be
reproduced from the cited sources.*

Anyone working with Brazilian health data lives with two classifications
at once, and they are not versions of one another in the way people
assume.

## The ICD-10 the Brazilian health system actually uses

Brazil’s public health system (SUS) runs on **ICD-10, version V2008**,
translated into Portuguese by the Brazilian Centre for Disease
Classification (CBCD, University of São Paulo) and published
electronically by DataSUS. It is what fills the diagnosis field in
hospital admissions, outpatient records, death certificates and
notifiable-disease reports. It is not an informal translation: it is the
operational standard.

The structure has four levels, and the exact counts in the V2008 file
are:

| Level | Count | Example |
|----|----|----|
| Chapters | **22** | Chapter I — Certain infectious and parasitic diseases (A00–B99) |
| Blocks | **275** | A00–A09 — Intestinal infectious diseases |
| Categories (3 characters) | **2,045** | A00 — Cholera |
| Subcategories (4 characters) | **12,451** | A00.0 — Cholera due to *Vibrio cholerae* 01, biovar cholerae |

Three details in that file trip up anyone joining datasets:

**1. The code has two spellings.** A subcategory appears as `A000` in
the key and `A00.0` in the display. Different bases pick different ones,
and a naive join matches zero rows without complaining.

**2. Not every code is usable in every context.** The file carries
sex-restriction and cause-of-death markers. A sex-restricted code
appearing with the other sex is a data-entry error at source, not an
epidemiological finding — but it only shows if someone looks at the
marker.

**3. A category is not a subcategory.** `I21` (acute myocardial
infarction) and `I21.0` are not the same grain. Counting both in one
table double-counts. It is the most common error in morbidity counts
from raw data.

## What ICD-11 is, and why it has not replaced anything here

**ICD-11** is WHO’s current revision. It is not a renumbered ICD-10: the
number of chapters changed, new chapters appeared (traditional medicine,
sexual health), it introduced **post-coordination** — composing a main
code with additional axes such as severity, laterality and causal agent
— and its canonical identity is a **URI**, not the alphanumeric code.

Meanwhile Brazil’s health information systems remain on ICD-10 V2008. In
practice you need both: ICD-10 to operate, ICD-11 to compare
internationally and to follow recent literature.

## The transition tables: what they are, and what they are not

WHO publishes correspondence tables between the two revisions inside
each ICD-11 release. In release **2025-01** (published 24/01/2025):

- **11,243** ICD-10 entries mapped;
- **1,461** of them carry WHO-documented alternatives beyond the primary
  code;
- no entry is left without a primary code.

Type 2 diabetes, for example: ICD-10 `E11` → ICD-11 `5A11`, URI
`http://id.who.int/icd/entity/119724091`.

And here is the part usually ignored. WHO’s own guidance on these tables
is explicit: they show correspondence between revisions and **“are not
intended for directly converting data from one revision to the other.”**

That is not legal boilerplate. The 1,461 entries with alternatives are
precisely the cases where correspondence is not one-to-one: a category
that split, or was absorbed into a different grouping. Running the table
as a translation dictionary over millions of records produces a
historical series that looks continuous and is not. The legitimate use
is different: **consulting case by case, with the alternatives visible,
and deciding with clinical or epidemiological judgement.**

## A note on translation

None of the labels above is machine-translated, and that is deliberate.
The Portuguese ICD-10 is the CBCD’s **official** translation; ICD-11 has
an official Portuguese linearisation from WHO; MeSH has NLM’s own
translations where they exist. When a source has no official translation
for an entry, the honest answer is to return the source language. A
machine-translated clinical label looks like a service and is a
liability: a subtle difference in wording changes what the code means,
and the reader has no way to know the text is not official.

## Licences differ between sources

A detail that derails more projects than it should: **the
classifications do not share a licence**, and the software serving them
does not extend its own.

- **CID-10 V2008 (DataSUS/CBCD):** © WHO; Portuguese translation ©
  CBCD/USP; electronic files published by DataSUS. Developers may use
  them **with due credit and at no charge**.
- **ICD-11 (WHO):** CC BY-ND 3.0 IGO, with a required citation, and WHO
  may terminate the licence on notice.
- **Transition tables:** © WHO, under the ICD-11 Terms of Use.
- **LOINC:** © Regenstrief Institute, free under its own licence.
- **RxNorm and MeSH:** US government works, served by NLM.
- **SNOMED CT:** requires a SNOMED International licence. Brazil is
  **not** a member country — the route here is an Affiliate licence.

The rule that avoids trouble: the software’s licence does not cover the
content it serves. Each response should carry the licence of the source
of that number.

## Where an AI assistant fits

Asking a model *“what is the ICD-10 code for acute myocardial
infarction?”* returns a plausible code. It usually gets the famous ones
right and fails silently in the tail — which is exactly where lookup
matters, because nobody needs to ask about the famous ones.

The gain from wiring the assistant to the official sources is
**provenance**: the code comes with its source, the terminology version,
the canonical URL and the licence; the Portuguese label comes from CBCD
or WHO rather than an on-the-fly translation; and the mapping between
revisions comes from WHO’s table, with the alternatives visible, instead
of an implicit choice.

That is what
[`medical-terminologies-mcp`](https://github.com/SidneyBissoli/medical-terminologies-mcp)
does: 31 tools over ICD-11, LOINC, RxNorm, MeSH, ATC and CID-10, for
clients that speak [MCP](https://modelcontextprotocol.io). The CID-10
ships bundled — no network call, no rate limit — and there is batch
validation of up to 100 codes across six terminologies, for auditing a
whole dataset before analysing it.

One closing recommendation, tool or no tool: **before comparing two
morbidity series, check that both are on the same revision and the same
grain.** Most unexplained breaks in Brazilian health time series are one
of those two things.

------------------------------------------------------------------------

*Server:
[`medical-terminologies-mcp`](https://github.com/SidneyBissoli/medical-terminologies-mcp)
· hosted endpoint at `https://medical.sidneybissoli.com/mcp` · code
under MIT. The terminologies served carry their own licences.*
