Bangladesh Core FHIR Implementation Guide
0.5.0 - Published by DGHS, MoHFW
Bangladesh Core FHIR Implementation Guide - Published by Ministry of Health and Family Welfare. See the Directory of published versions
| Page standards status: Trial-use |
The Bangladesh Core FHIR Implementation Guide uses ICD-11 Mortality and Morbidity Statistics (MMS) as the mandatory coding system for clinical conditions. This page documents the system URI, terminology infrastructure, conformance requirements, and postcoordination conventions for implementers.
All ICD-11 MMS codes SHALL use the WHO canonical system URI:
http://id.who.int/icd/release/11/mms
The preferred code form is the short stem code (e.g. 1A00, NC72.Z).
Linearization URIs are not used as code identifiers in this IG.
Runtime code validation and lookup are delegated to the national OpenConceptLab (OCL) terminology server operated by DGHS/MoHFW:
Public FHIR R4 endpoint: https://tr.ocl.dghs.gov.bd/api/fhir
OCL hosts ICD-11 MMS version 2025-01 with 26,284 concepts in the following concept classes: Diagnosis (13,389), Finding (5,119) and Substance (7,776).
Vendors do not interact with OCL directly. All vendor submissions are validated at the HIE boundary via the Bangladesh ICD-11 Cluster Validator (see Cluster Expressions below).
The following FHIR terminology operations are supported. CodeSystem
$validate-code takes the code system as url=; CodeSystem $lookup takes
it as system=. Using system= with $validate-code returns false.
CodeSystem $validate-code
GET https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$validate-code
?url=http://id.who.int/icd/release/11/mms&code={code}
CodeSystem $lookup
GET https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$lookup
?system=http://id.who.int/icd/release/11/mms&code={code}
ValueSet $validate-code
GET https://tr.ocl.dghs.gov.bd/api/fhir/ValueSet/$validate-code
?url=https://fhir.dghs.gov.bd/core/ValueSet/bd-condition-icd11-diagnosis-valueset
&system=http://id.who.int/icd/release/11/mms&code={code}
$expand is not supported — this is a known limitation of the national
OCL instance. The ICD-11 ValueSets in this IG are therefore declared as stubs
over a CodeSystem with content not-present, so the IG contains no expansion.
Implementers SHALL NOT depend on $expand for ICD-11 ValueSets in this IG.
A WHO ICD-11 Docker instance is maintained by DGHS at
https://icd11.dghs.gov.bd running release 2025-01, and is publicly
available. It serves as the import source for OCL and as the backend for
the cluster validator.
Condition.code is bound to the
Bangladesh ICD-11 MMS Condition ValueSet
at required strength. This ValueSet includes only Diagnosis (13,389)
and Finding (5,119) class concepts — 18,508 concepts total as of
version 2025-01.
Condition.code SHALL contain at least one coding conforming to the
coding[stem] slice with system = http://id.who.int/icd/release/11/mms.
Vendors cannot omit ICD-11 by substituting a local code.
The following concept classes SHALL NOT appear as standalone stem codes
in Condition.code: Substance, Organism, Device, Anatomy, Misc.
This restriction exists because these classes represent entities that are not themselves diagnoses or clinical findings — they are axes used in postcoordination (e.g. a causative substance, an affected anatomy site). Their correct use is as satellite codes within a cluster expression, not as standalone condition codes.
Class restriction is enforced at runtime via OCL ValueSet $validate-code
against the Bangladesh ICD-11 MMS Condition ValueSet. At the HAPI FHIR
layer, enforcement is via RemoteTerminologyServiceValidationSupport
configured to call OCL, which is deployed.
The coding[stem] slice is open (#open) — additional local codings
are permitted alongside the mandatory ICD-11 stem.
ICD-11 supports postcoordination — the combination of a stem code with one or more satellite codes to precisely represent a clinical concept that cannot be expressed by a stem code alone. A postcoordinated expression is called a cluster expression.
Cluster expressions are typically sourced from the WHO Electronic Coding Tool (ECT) at the point of care.
A cluster expression combines a stem code with satellite codes using
the & operator (combination) or / operator (specificity):
NC72.Z&XK8G&XJ7ZH&XJ7YM
Where:
NC72.Z — stem code: Fracture of femur, unspecifiedXK8G — satellite: lateralityXJ7ZH — satellite: fracture subtypeXJ7YM — satellite: fracture open or closedThe stem code is carried in Coding.code. The full cluster expression
is carried in the
ICD-11 Cluster Expression extension
on the same Coding element:
"code": {
"coding": [
{
"system": "http://id.who.int/icd/release/11/mms",
"code": "NC72.Z",
"display": "Fracture of femur, unspecified",
"extension": [
{
"url": "https://fhir.dghs.gov.bd/core/StructureDefinition/icd11-cluster-expression",
"valueString": "NC72.Z&XK8G&XJ7ZH&XJ7YM"
}
]
}
],
"text": "Fracture of femur, unspecified — left, transverse, closed"
}
The stem code in Coding.code SHALL match the leading stem code in the
cluster expression string.
| Scenario | Representation | Validation |
|---|---|---|
| Single stem code | Coding.code only |
OCL $validate-code |
| Postcoordinated expression | Coding.code + cluster extension |
Cluster Validator |
The cluster validator explicitly rejects stem-only expressions. Single
stem codes SHALL be represented in Coding.code only and validated via
OCL $validate-code.
Satellite codes in a cluster expression are exempt from the
Diagnosis/Finding class restriction that applies to stem codes in
Condition.code. Substance, Anatomy, Organism, and other axis codes
are valid and expected as satellites.
All postcoordinated cluster expressions SHALL be validated against the Bangladesh ICD-11 Cluster Validator prior to submission to the HIE:
POST https://icd11.dghs.gov.bd/cluster/validate
Content-Type: application/json
{"expression": "NC72.Z&XK8G&XJ7ZH&XJ7YM"}
Example response:
{
"valid": true,
"stem": {
"code": "NC72.Z",
"display": "Fracture of femur, unspecified",
"ocl_validated": true
},
"satellites": [
{"code": "XK8G", "axis": "laterality", "valid": true},
{"code": "XJ7ZH", "axis": "fractureSubtype", "valid": true},
{"code": "XJ7YM", "axis": "fractureOpenOrClosed", "valid": true}
],
"errors": []
}
The cluster validator is a mandatory HIE boundary gate. All vendor submissions containing postcoordinated ICD-11 expressions pass through it.
ICD-11-CONF-01: ICD-11 MMS codes SHALL use system URI
http://id.who.int/icd/release/11/mms. Stem code validation is available
via OCL at:
https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$validate-code?url=http://id.who.int/icd/release/11/mms&code={code}
ICD-11-CONF-02: The icd11-cluster-expression extension SHALL only
be present when the expression contains at least one postcoordination
satellite code using & or / operators. Single stem codes SHALL be
represented in Coding.code only and validated via OCL $validate-code.
ICD-11-CONF-03: Postcoordinated cluster expressions SHALL be validated
against the Bangladesh ICD-11 Cluster Validator at
https://icd11.dghs.gov.bd/cluster/validate prior to submission to the HIE.
ICD-11-CONF-04: Condition.code SHALL contain at least one coding
conforming to the coding[stem] slice with
system = http://id.who.int/icd/release/11/mms. The stem code SHALL be
a member of the Bangladesh ICD-11 MMS Condition ValueSet, which includes
only Diagnosis and Finding class concepts. This restriction is enforced
at runtime via OCL ValueSet $validate-code.
ICD-11-CONF-05: Substance, Organism, Device, Anatomy, and Misc class
ICD-11 concepts SHALL NOT appear as standalone stem codes in
Condition.code. This restriction does not apply to satellite codes
carried in the icd11-cluster-expression extension.