FHIR Terminology Ecosystem IG, published by HL7 FHIR Product Director. This guide is not an authorized publication; it is the continuous build for version 1.9.6 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/HL7/fhir-tx-ecosystem-ig/ and changes regularly. See the Directory of published versions
Note: This page is temporarily here until it migrates to terminology.hl7.org
ICD-11 is published by the World Health Organization as three code systems that share one underlying content model:
| MMS | ICF | Foundation | |
|---|---|---|---|
| Source | WHO | WHO | WHO |
| System | http://id.who.int/icd/release/11/mms |
http://id.who.int/icd/release/11/icf |
http://id.who.int/icd/entity |
| OID | none assigned | none assigned | none assigned |
| Version | The release, YYYY-MM (e.g. 2026-01) |
The release, YYYY-MM |
The release, YYYY-MM |
| Code | The entity id, e.g. 257068234, or a postcoordinated expression of entity ids. See ICD-11 Codes |
The entity id, or an expression (with ICF's . qualifier) |
The entity uri, e.g. http://id.who.int/icd/entity/257068234 (not yet settled - see ICD-11 Codes) |
| Display | The entity's title, in the requested language where WHO publishes one | As MMS | As MMS |
| Inactive | ICD-11 releases do not carry inactive codes | As MMS | As MMS |
| Hierarchy | A strict tree (chapters, blocks, windows, categories); subsumption follows it | A strict tree | A poly-hierarchy: an entity may have several parents |
| Postcoordination | Yes - see Post Coordination Expressions | Yes | No |
| Filter Properties | concept is-a / descendent-of - see Filter Properties |
As MMS | As MMS |
| Implicit Value Sets | None defined yet - see Implicit Value Sets |
ICD-11 is licensed by WHO under the Creative Commons Attribution-NoDerivs 3.0 IGO license (CC BY-ND 3.0 IGO); see the ICD-11 license and the full ICD-11 Terms of Use and License Agreement.
Note: the ICD-11 license is subject to further revision at this time. Implementers should check the WHO license page for the current terms.
Every ICD-11 MMS or ICF entity has two identifiers:
1A00 (Cholera) or XN8P1.
Groupers such as blocks have none, and a short code can change between releases.http://id.who.int/icd/release/11/mms/257068234. Every entity has
one, and it does not change between releases. A residual category ("other" or "unspecified")
has a derived uri such as http://id.who.int/icd/release/11/mms/1363559646/other.FHIR uses the entity uri, in its short form: the uri is always the code system url + / + the
entity id, so it is split between Coding.system and Coding.code:
{
"system" : "http://id.who.int/icd/release/11/mms",
"version" : "2026-01",
"code" : "257068234",
"display" : "Cholera"
}
The entity id is the code, and the normal form. The classification code is accepted on input as
an alternative spelling - $validate-code reports it as valid but not in normal form, and
returns the entity id as normalized-code - and is returned as the classificationCode property.
$validate-code also returns a classificationCode output parameter when the code was given with
entity ids, whether or not in normal form: it is the classification code of the normal form, so
for an expression written out of order it matches normalized-code. A code given with
classification codes gets none. The full entity uri is not a code in MMS or ICF.
The Foundation was not part of this decision: its codes are, for now, the full entity uri.
{
"resourceType": "Condition",
"code": {
"coding": [
{
"extension": [{
"url": "http://id.who.int/icd/schema/extension/classificationCode",
"valueCode": "1A00"
}],
"system": "http://id.who.int/icd/release/11/mms",
"version": "2026-01",
"code": "257068234",
"display": "Cholera"
}
]
}
}
The classificationCode extension. Because the code is the entity id, a Coding by itself does
not carry the classification code users know. The extension
http://id.who.int/icd/schema/extension/classificationCode (provisional url) carries it beside
the id, as a valueCode: the short code for a simple code, or the short-code form of the
expression - the same expression with each part's classification code - for an expression. It
saves receiving software from looking up the code to show it. The extension is optional, and is
only defined for a Coding whose system is the MMS or ICF and whose code is an entity id or an
expression in id form. When it is present it is validated: a value that is not the code's
classification code, the extension on a code that has no classification code, on a code that is
already given as its classification code, or on a Coding in any other system - the Foundation
included, which has no classification codes - is an error, and the Coding is not valid.
MMS and ICF codes may be postcoordinated: a stem code is refined by further codes. The syntax has two separators and no spaces:
& - a qualifier of the code before it, which must be a value on one of that code's
postcoordination axes: 257068234&194483911 (1A00 Cholera, Vibrio cholerae O1, biovar cholerae)/ - a cluster member: another code that qualifies the first (root) code of the expression,
and may carry its own & qualifiers:
2110065613&271422288&2040998541/1847586521&1021954298&1670965842
(NA00.2 Superficial injury of ear, left, contusion / PG50 Fall … on the same level, stairs, home)ICF also writes a qualifier with a .: 1860600370/unspecified.992904195 (d5409.qp3). The .
is an ICF-only rule, and is kept as written.
Everything after a / qualifies the root; there is no deeper nesting. The order of the codes
within a group, and the order of the / members, carries no meaning, but the grouping does: &
qualifiers belong to the code they follow. A / within a residual's id
(1363559646/other) is part of the id, not a separator.
The normal form fixes an order anyway: the root first; each group of qualifiers in the order the
qualified code defines its axes, and by entity id (string order) within an axis; the / members
the same way against the root's axes, with any member on no axis of the root last; duplicate
codes deleted. The normal form never changes & to / or the reverse.
See the ICD-11 Reference Guide, Extension codes and postcoordination and Adding detail - postcoordination and cluster coding, for WHO's account of postcoordination and cluster coding.
WHO publishes a new release of ICD-11 each year, and each release covers all three code systems.
The version is the release identifier, in the form YYYY-MM - for example 2026-01 - and is
the same for MMS, ICF and the Foundation in a given release. Entity ids are stable across
releases; classification codes may change.
The display for an entity is its title. Where WHO publishes a translation of the classification,
the title is available in that language, and displayLanguage (or the HTTP Accept-Language)
selects it. The other text WHO publishes for an entity - index terms, inclusions, coding notes,
definitions, fully specified names - is returned as designations, their use coded in
http://id.who.int/icd/schema (indexTerm, inclusion, codingNote, and so on).
Translations are WHO's: only the languages WHO publishes are available. A request for a language
WHO does not publish gets the English display, and $lookup returns a warning saying so.
The display of a postcoordinated expression is built from its parts: cluster members separated by
` / , each qualifier in brackets after the code it qualifies -
Cholera [Vibrio cholerae O1, biovar cholerae]`.
Only WHO can define a global language pack for ICD-11: a translation of the classification belongs to WHO's release, not to a code system supplement. Supplements defined by anyone else must not present themselves as global language packs - they are local additions, and should say so, so that local usage is clear to whoever receives the data.
These are the properties a $lookup may return:
| Property | Type | Applies to | Description |
|---|---|---|---|
code |
code | all | The code: the entity id (MMS, ICF) or uri (Foundation); for an expression, its normal form |
classificationCode |
code | MMS, ICF | The short classification code, or the short-code form of an expression, where there is one |
classKind |
code | MMS, ICF | chapter, block, window or category |
notSelectable |
boolean | MMS, ICF | The entity is a grouper and cannot be used to code with |
parent |
code | all | A parent of the entity |
child |
code | all | A child of the entity |
browserUrl |
string | all | The entity's page in the ICD-11 browser |
source |
Coding | MMS, ICF | The Foundation entity this entity was derived from (returned by default) - see below |
blockId |
string | MMS, ICF | The block identifier, for a block |
codeRange |
string | MMS, ICF | The range of codes a block covers, e.g. 1A00-1A0Z |
stem |
Coding | expressions | The root of a postcoordinated expression |
postcoordination |
(subproperties) | MMS, ICF | One per postcoordination axis - see below |
The Foundation link. source is a Coding in the Foundation (http://id.who.int/icd/entity),
whose code is the Foundation entity uri, with the entity's title as its display. A request for
the property source.details returns source with what a $lookup of that Foundation entity
would return, as subproperties: definition (string), where it has one, and parent (code, a
Foundation entity uri; repeats, since the Foundation is not a tree); and the entity's designations,
as designation parts with the same language, use and value parts as a $lookup's own
designations. The operation does not define designations inside a property, but a subproperty
(a code and a value) cannot carry a designation's language and use. source.details is not a
property of its own, and * does not imply it.
Postcoordination axes. Each postcoordination property describes one axis, and carries its
content as subproperties:
| Subproperty | Type | Description |
|---|---|---|
axis |
Coding | The axis, in http://id.who.int/icd/schema (e.g. laterality, specificAnatomy) |
value |
Coding | A code on the axis (repeats); for a / member, it carries the member's own postcoordination subproperties, one level down |
required |
boolean | The axis must be given a value |
allowMultipleValues |
Coding | AllowAlways, NotAllowed or AllowedExceptFromSameBlock, in http://id.who.int/icd/schema/allowMultipleValues |
valueSet |
string | The canonical of the ValueSet of the values permitted on the axis |
For a postcoordinated expression, there is one postcoordination property for each axis that
has a value, and one more, with only values, for / members that are on no axis of the root.
By default only axis and value are returned. With the $lookup parameter
post-coordination-metadata=true, every axis the code declares is listed - valued or not - and
each carries required, allowMultipleValues and valueSet as well. A plain (not
postcoordinated) concept therefore lists its axes only when post-coordination-metadata=true.
| Property | Operators | Values | Description |
|---|---|---|---|
concept |
is-a, descendent-of |
an entity id (MMS, ICF) or uri (Foundation), or a classification code | The entity and all its descendants (is-a), or the descendants only (descendent-of), following the code system's hierarchy |
$expand also supports a text filter, which matches the titles, index terms, inclusions and
fully specified names in the display language (and English), and the start of the classification
code - so XN8 finds XN8P1 and XN8KD.
For example, the extension codes for substances:
"compose" : {
"include" : [{
"system" : "http://id.who.int/icd/release/11/mms",
"version" : "2026-01",
"filter" : [{ "property" : "concept", "op" : "descendent-of", "value" : "1321407960" }]
}]
}
No implicit value sets have been defined for ICD-11 yet.
ICD-11 itself defines a value set for every postcoordination axis of every stem code - the values
WHO permits on that axis - at
http://id.who.int/icd/release/11/mms/{entity id}/postcoordinationScale/{axis}
(e.g. http://id.who.int/icd/release/11/mms/257068234/postcoordinationScale/infectiousAgent).
These are WHO's value sets, not FHIR implicit value sets; their canonicals are the valueSet
subproperty of a postcoordination property.