Prepare 0.3.0: ICD-11 MMS integration
Some checks failed
FHIR IG CI/CD Pipeline with Version Persistence / build-ig (push) Failing after 33s
FHIR IG CI/CD Pipeline with Version Persistence / deploy (push) Has been skipped

This commit is contained in:
2026-03-08 14:40:19 +06:00
parent 4813f63da5
commit 49b3d72cb2
17 changed files with 662 additions and 132 deletions

View File

@@ -1,8 +0,0 @@
Profile: BDConditionProfile
Parent: Condition
Id: bd-condition
Title: "ICD 11"
Description: "Condition coded with ICD-11"
* code 1..1 MS
* code from BDConditionICD11VS (preferred)

View File

@@ -0,0 +1,68 @@
// ============================================================
// icd11ClusterExpression.fsh
// Extension for ICD-11 postcoordinated cluster expressions
// Context: Coding (broad — usable across all ICD-11 coded elements)
// ============================================================
Extension: ICD11ClusterExpression
Id: icd11-cluster-expression
Title: "ICD-11 Cluster Expression"
Description: """
Carries a postcoordinated ICD-11 cluster expression as a single string
on a Coding element where the stem code alone is insufficient to fully
represent the clinical concept.
A cluster expression combines a stem code with one or more satellite
codes using the & operator (combination) or / operator (specificity).
Example: NC72.Z&XK8G&XJ7ZH&XJ7YM
- NC72.Z — stem: Fracture of femur, unspecified
- XK8G — satellite: laterality
- XJ7ZH — satellite: fracture subtype
- XJ7YM — satellite: fracture open or closed
Usage rules:
- SHALL only be present when the expression contains at least one
satellite code joined by & or / operators.
- Single stem codes SHALL be represented in Coding.code only and
validated via OCL $validate-code. The cluster validator at
https://icd11.dghs.gov.bd/cluster/validate explicitly rejects
stem-only expressions.
- The stem code in Coding.code SHALL match the leading stem code
in this expression string.
- Satellite codes in the cluster expression are exempt from the
Diagnosis/Finding class restriction that applies to stem codes
in Condition.code.
- 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.
Cluster validator endpoint:
POST https://icd11.dghs.gov.bd/cluster/validate
Body: { "expression": "NC72.Z&XK8G&XJ7ZH&XJ7YM" }
This extension is not MustSupport and is not mandatory. It is present
only when postcoordination is clinically required. Cluster expressions
are typically sourced from the WHO Electronic Coding Tool (ECT) at the
point of care.
"""
* ^url = "https://fhir.dghs.gov.bd/core/StructureDefinition/icd11-cluster-expression"
* ^status = #active
* ^experimental = false
* ^publisher = "Directorate General of Health Services (DGHS), MoHFW, Bangladesh"
* ^contact.name = "DGHS Health Informatics Unit"
* ^contact.telecom.system = #url
* ^contact.telecom.value = "https://dghs.gov.bd"
* ^jurisdiction = urn:iso:std:iso:3166#BD "Bangladesh"
* ^context[+].type = #element
* ^context[=].expression = "Coding"
* value[x] only string
* valueString 1..1
* valueString ^short = "ICD-11 postcoordinated cluster expression string"
* valueString ^definition = """
The full postcoordinated cluster expression, including the stem code and
all satellite codes joined by & or / operators. Example:
NC72.Z&XK8G&XJ7ZH&XJ7YM. The stem code in this string SHALL match
Coding.code on the parent Coding element.
"""

View File

@@ -1,39 +0,0 @@
{
"resourceType": "StructureDefinition",
<<<<<<< HEAD
"id": "bd-Immunization",
"url": "http://example.org/StructureDefinition/bd-Immunization",
"version": "1.0.0",
"name": "BDImmunizationProfile",
"title": "Immunization Profile for Bangladesh",
"description": "Bangladesh Immunization Profile",
=======
"id": "bd-immunization",
"url": "https://fhir.dghs.gov.bd/core/identifier/bd-immunization",
"version": "1.0.0",
"name": "BDImmunizationProfile",
"title": "Patient Immunization Profile for Bangladesh",
"description": "Patients Immunization Bangladesh Standard",
>>>>>>> 1c45affa520e64b3b9efc307d9116ff138171fa5
"fhirVersion": "4.0.1",
"kind": "resource",
"abstract": false,
"type": "Immunization",
"baseDefinition": "http://hl7.org/fhir/StructureDefinition/Immunization",
"derivation": "constraint",
"differential": {
"element": [
{
"id": "Immunization.identifier",
"path": "Immunization.identifier",
<<<<<<< HEAD
"short": "Unique identifier",
=======
"short": "Identifier",
>>>>>>> 1c45affa520e64b3b9efc307d9116ff138171fa5
"definition": "Unique identifier for the vaccination event",
"min": 1
}
]
}
}

View File

@@ -0,0 +1,63 @@
// ============================================================
// ICD11MMSNamingSystem.fsh
// NamingSystem for ICD-11 MMS in the Bangladesh national context
// Canonical authority: WHO
// National resolver: OCL at https://tr.ocl.dghs.gov.bd
// ============================================================
Instance: icd11-mms-bd
InstanceOf: NamingSystem
Usage: #definition
Title: "ICD-11 MMS NamingSystem — Bangladesh"
Description: """
Declares the ICD-11 Mortality and Morbidity Statistics (MMS) coding system
as a known and supported terminology within the Bangladesh national health
information infrastructure.
Canonical system URI: http://id.who.int/icd/release/11/mms
Canonical authority: World Health Organization (WHO)
Preferred code form: short stem codes (e.g. 1A00, NC72.Z).
Linearization URIs are not used as code identifiers in this IG.
National terminology resolver (OCL):
https://tr.ocl.dghs.gov.bd
Supported OCL operations (use `system=` parameter, not `url=`):
- $validate-code: https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$validate-code
?system=http://id.who.int/icd/release/11/mms&code={code}
- $lookup: https://tr.ocl.dghs.gov.bd/api/fhir/CodeSystem/$lookup
?system=http://id.who.int/icd/release/11/mms&code={code}
$expand is not supported — known OCL limitation.
Version 2025-01 is active in the national OCL instance with 36,941
imported concepts. The OCL resolver is an internal national service;
vendors do not interact with it directly. All vendor submissions are
validated at the HIE boundary via the Bangladesh ICD-11 Cluster Validator
at https://icd11.dghs.gov.bd/cluster/validate.
"""
* name = "ICD11MMSBangladesh"
* status = #active
* kind = #codesystem
* date = "2025-01-01"
* publisher = "Directorate General of Health Services (DGHS), MoHFW, Bangladesh"
* contact.name = "DGHS Health Informatics Unit"
* contact.telecom.system = #url
* contact.telecom.value = "https://dghs.gov.bd"
* jurisdiction = urn:iso:std:iso:3166#BD "Bangladesh"
* responsible = "World Health Organization (WHO)"
// Primary identifier — canonical system URI (WHO authority)
* uniqueId[+].type = #uri
* uniqueId[=].value = "http://id.who.int/icd/release/11/mms"
* uniqueId[=].preferred = true
* uniqueId[=].comment = "Canonical ICD-11 MMS system URI. Canonical authority is WHO."
* uniqueId[=].period.start = "2025-01-01"
// Secondary identifier — national OCL source locator (machine-discoverable, not canonical)
* uniqueId[+].type = #uri
* uniqueId[=].value = "https://tr.ocl.dghs.gov.bd/orgs/MoHFW/sources/ICD-11-MMS/"
* uniqueId[=].preferred = false
* uniqueId[=].comment = "National terminology resolver — Bangladesh OCL instance. Not the canonical system URI."

View File

@@ -0,0 +1,65 @@
// ============================================================
// BDConditionProfile.fsh
// BD-Core Condition profile with mandatory ICD-11 MMS stem slice
// Binding: Diagnosis and Finding class concepts only
// Runtime enforcement via OCL ValueSet $validate-code
// ============================================================
Profile: BDConditionProfile
Parent: Condition
Id: bd-condition
Title: "BD Core Condition Profile (ICD-11)"
Description: """
Condition resource coded with ICD-11 MMS, restricted to Diagnosis and
Finding class concepts. Defined in the Bangladesh Core FHIR Implementation
Guide (BD-Core-FHIR-IG) published by DGHS/MoHFW.
"""
* code 1..1 MS
* code from bd-condition-icd11-diagnosis-valueset (preferred)
* code ^comment = """
Condition.code SHALL contain at least one coding conforming to the
coding[stem] slice with system = http://id.who.int/icd/release/11/mms.
Stem code rules:
- The stem code SHALL be a Diagnosis or Finding class ICD-11 MMS concept.
- This restriction is enforced at runtime via OCL ValueSet $validate-code
against the Bangladesh ICD-11 MMS Condition ValueSet.
- Stem-only codes SHALL be validated via OCL $validate-code.
- Substance, Organism, Device, Anatomy, and Misc class concepts SHALL NOT
appear as standalone stem codes in Condition.code.
Cluster expression rules:
- When a concept requires postcoordination, the full cluster expression
SHALL be carried in the icd11-cluster-expression extension on coding[stem].
- The icd11-cluster-expression extension SHALL only be present when the
expression contains at least one satellite code joined by & or / operators.
- Satellite codes in the cluster expression are exempt from the
Diagnosis/Finding class restriction.
- 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.
Additional local codings are permitted alongside the mandatory ICD-11 stem
(slicing is open). Cluster expressions are typically sourced from the WHO
Electronic Coding Tool (ECT) at the point of care.
"""
* code.coding ^slicing.discriminator.type = #value
* code.coding ^slicing.discriminator.path = "system"
* code.coding ^slicing.rules = #open
* code.coding ^slicing.description = "Slice requiring exactly one ICD-11 MMS stem code. Additional local codings permitted."
* code.coding contains stem 1..1
* code.coding[stem] ^short = "Mandatory ICD-11 MMS stem code"
* code.coding[stem] ^definition = """
Exactly one ICD-11 MMS stem code is required. The stem code SHALL be a
Diagnosis or Finding class concept. When the condition requires
postcoordination, the full cluster expression is carried in the
icd11-cluster-expression extension on this coding element.
"""
* code.coding[stem].system 1..1
* code.coding[stem].system = "http://id.who.int/icd/release/11/mms" (exactly)
* code.coding[stem].code 1..1
* code.coding[stem].extension contains
https://fhir.dghs.gov.bd/core/StructureDefinition/icd11-cluster-expression named clusterExpression 0..1

View File

@@ -0,0 +1,62 @@
// ============================================================
// BDConditionICD11DiagnosisVS.fsh
// ICD-11 MMS ValueSet restricted to Diagnosis and Finding classes
// Binding target for Condition.code in BDConditionProfile
// Empty stub — runtime enforcement via OCL $validate-code
// $expand not available — suppressed in sushi-config.yaml
// ============================================================
ValueSet: BDConditionICD11DiagnosisVS
Id: bd-condition-icd11-diagnosis-valueset
Title: "Bangladesh ICD-11 MMS Condition ValueSet (Diagnosis and Finding)"
Description: """
ICD-11 MMS concepts restricted to the Diagnosis (14,071) and Finding (5,590)
concept classes, totalling 19,661 concepts as of version 2025-01.
This ValueSet is the binding target for Condition.code in the BD-Core
Condition profile. Substance, Organism, Device, Anatomy, and Misc class
concepts are excluded and SHALL NOT appear as standalone stem codes in
Condition.code. This restriction applies to stem codes only — satellite
codes carried in the icd11-cluster-expression extension are exempt.
This ValueSet is an empty stub. No compose block is declared because
$expand is not supported by the national OCL terminology server and
no machine-executable filter for concept_class is available at the
IG layer. The compose would be nominal only and is omitted to avoid
misrepresenting machine-executable semantics.
The ValueSet is hosted in OCL as a collection with 19,661 explicit
concept references (Diagnosis and Finding classes only). Runtime
enforcement is via OCL 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}
Confirmed behaviour:
- Diagnosis class (e.g. 1A00): accepted
- Finding class: accepted
- Device class (e.g. XD7EB1): rejected
- Substance class (e.g. XM6RB2): rejected
At the HAPI FHIR layer, enforcement is via RemoteTerminologyServiceValidationSupport
configured to call OCL. HAPI FHIR deployment is a known gap to be closed
before vendor onboarding.
VERSION UPGRADES:
Upgrading to a new ICD-11 MMS release requires re-running
populate_condition_valueset.py. Automated via version_upgrade.py.
"""
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-condition-icd11-diagnosis-valueset"
* ^status = #active
* ^experimental = false
* ^version = "2025-01"
* ^publisher = "Directorate General of Health Services (DGHS), MoHFW, Bangladesh"
* ^contact.name = "DGHS Health Informatics Unit"
* ^contact.telecom.system = #url
* ^contact.telecom.value = "https://dghs.gov.bd"
* ^jurisdiction = urn:iso:std:iso:3166#BD "Bangladesh"
* ^copyright = "ICD-11 is copyright © World Health Organization. Used under licence."
* ^immutable = false

View File

@@ -1,6 +0,0 @@
ValueSet: BDConditionICD11VS
Id: bd-condition-icd11-valueset
Title: "Bangladesh ICD-11 MMS ValueSet"
Description: "ValueSet that includes the ICD-11 MMS CodeSystem for Condition.code"
* ^url = "https://fhir.dghs.gov.bd/core/ValueSet/bd-condition-icd11-valueset"
* include codes from system http://id.who.int/icd/release/11/mms