Eswatini HL7 FHIR Implementation Guide
1.0.0 - draft
Eswatini
Eswatini HL7 FHIR Implementation Guide - Local Development build (v1.0.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions
| Official URL: https://eswatinihie.com/fhir/StructureDefinition/SzMedication | Version: 1.0.0 | |||
| Active as of 2026-08-21 | Computable Name: SzMedication | |||
The Eswatini Medication Profile defines the constraints and usage of the HL7 FHIR Medication resource for representing medications used within the Eswatini National Digital Health Ecosystem. It provides a standardized and interoperable way to identify and describe medications that are prescribed, dispensed, administered, or otherwise referenced in patient care. This profile ensures that medication information is represented in a consistent, reusable, and nationally aligned manner, supporting safe medication management and interoperability across clinical and pharmaceutical systems.
This profile SHALL be used by systems that create, manage, or exchange medication reference information, including:
Electronic Medical Record (EMR) systems Pharmacy and dispensing systems Medication ordering and prescribing systems Programme‑specific treatment tracking platforms National health information exchange (HIE) services
The profile applies to medications used across healthcare services, including:
Prescription medicines Programme‑specific medicines (e.g. chronic and public health programmes) Medications referenced in orders, dispensing, or administration events
The Medication resource serves as a definitional reference, not a record of usage by itself.
The Eswatini Medication Profile represents a medication concept or product definition that can be consistently referenced across multiple clinical workflows. It provides the shared identity for a medication that is used in prescribing, dispensing, and administration records. A Medication:
Describes what the medication is, not when or to whom it was given May represent a branded product, generic product, or locally defined medication item Is referenced by other resources rather than standing alone as a clinical event
This enables consistent medication identification across systems and transactions.
Usages:
You can also check for usages in the FHIR IG Statistics
Description of Profiles, Differentials, Snapshots and how the different presentations work.
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Medication | Definition of a Medication | |
![]() ![]() |
Σ | 1..1 | id | Logical id of this artifact |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣ | 1..1 | CodeableConcept | ELMIS Product Code Binding: Value Set: Product Code Value Set (required) |
![]() ![]() |
?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Medication.code | Base | required | Value Set: Product Code Value Set | 📦1.0.0 | This IG |
| Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Medication | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from Medication
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Medication | Definition of a Medication | |
![]() ![]() |
1..1 | id | Logical id of this artifact | |
![]() ![]() |
S | 1..1 | CodeableConcept | ELMIS Product Code Binding: Value Set: Product Code Value Set (required) |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Medication.code | Base | required | Value Set: Product Code Value Set | 📦1.0.0 | This IG |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Medication | Definition of a Medication | |||||
![]() ![]() |
Σ | 1..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Business identifier for this medication | ||||
![]() ![]() |
SΣ | 1..1 | CodeableConcept | ELMIS Product Code Binding: Value Set: Product Code Value Set (required) | ||||
![]() ![]() |
?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use. | ||||
![]() ![]() |
Σ | 0..1 | Reference(Organization) | Manufacturer of the item | ||||
![]() ![]() |
0..1 | CodeableConcept | powder | tablets | capsule + Binding: SNOMEDCTFormCodes (example): A coded concept defining the form of a medication. | |||||
![]() ![]() |
Σ | 0..1 | Ratio | Amount of drug in package | ||||
![]() ![]() |
0..* | BackboneElement | Active or inactive ingredient | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
1..1 | The actual ingredient or content | ||||||
![]() ![]() ![]() ![]() |
CodeableConcept | |||||||
![]() ![]() ![]() ![]() |
Reference(Substance | Medication) | |||||||
![]() ![]() ![]() |
0..1 | boolean | Active ingredient indicator | |||||
![]() ![]() ![]() |
0..1 | Ratio | Quantity of ingredient present | |||||
![]() ![]() |
0..1 | BackboneElement | Details about packaged medications | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
0..1 | string | Identifier assigned to batch | |||||
![]() ![]() ![]() |
0..1 | dateTime | When batch will expire | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Medication.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Medication.code | Base | required | Value Set: Product Code Value Set | 📦1.0.0 | This IG |
| Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std. |
| Medication.form | Base | example | SNOMED CT Form Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Medication | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from Medication
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Medication | Definition of a Medication | |
![]() ![]() |
Σ | 1..1 | id | Logical id of this artifact |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
SΣ | 1..1 | CodeableConcept | ELMIS Product Code Binding: Value Set: Product Code Value Set (required) |
![]() ![]() |
?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use. |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Medication.code | Base | required | Value Set: Product Code Value Set | 📦1.0.0 | This IG |
| Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Medication | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
Differential View
This structure is derived from Medication
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
0..* | Medication | Definition of a Medication | |
![]() ![]() |
1..1 | id | Logical id of this artifact | |
![]() ![]() |
S | 1..1 | CodeableConcept | ELMIS Product Code Binding: Value Set: Product Code Value Set (required) |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Medication.code | Base | required | Value Set: Product Code Value Set | 📦1.0.0 | This IG |
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
0..* | Medication | Definition of a Medication | |||||
![]() ![]() |
Σ | 1..1 | id | Logical id of this artifact | ||||
![]() ![]() |
Σ | 0..1 | Meta | Metadata about the resource | ||||
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created | ||||
![]() ![]() |
0..1 | code | Language of the resource content Binding: CommonLanguages (preferred): A human language.
| |||||
![]() ![]() |
0..1 | Narrative | Text summary of the resource, for human interpretation This profile does not constrain the narrative in regard to content, language, or traceability to data elements | |||||
![]() ![]() |
0..* | Resource | Contained, inline Resources | |||||
![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Business identifier for this medication | ||||
![]() ![]() |
SΣ | 1..1 | CodeableConcept | ELMIS Product Code Binding: Value Set: Product Code Value Set (required) | ||||
![]() ![]() |
?!Σ | 0..1 | code | active | inactive | entered-in-error Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use. | ||||
![]() ![]() |
Σ | 0..1 | Reference(Organization) | Manufacturer of the item | ||||
![]() ![]() |
0..1 | CodeableConcept | powder | tablets | capsule + Binding: SNOMEDCTFormCodes (example): A coded concept defining the form of a medication. | |||||
![]() ![]() |
Σ | 0..1 | Ratio | Amount of drug in package | ||||
![]() ![]() |
0..* | BackboneElement | Active or inactive ingredient | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
1..1 | The actual ingredient or content | ||||||
![]() ![]() ![]() ![]() |
CodeableConcept | |||||||
![]() ![]() ![]() ![]() |
Reference(Substance | Medication) | |||||||
![]() ![]() ![]() |
0..1 | boolean | Active ingredient indicator | |||||
![]() ![]() ![]() |
0..1 | Ratio | Quantity of ingredient present | |||||
![]() ![]() |
0..1 | BackboneElement | Details about packaged medications | |||||
![]() ![]() ![]() |
0..1 | string | Unique id for inter-element referencing | |||||
![]() ![]() ![]() |
0..* | Extension | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?!Σ | 0..* | Extension | Extensions that cannot be ignored even if unrecognized | ||||
![]() ![]() ![]() |
0..1 | string | Identifier assigned to batch | |||||
![]() ![]() ![]() |
0..1 | dateTime | When batch will expire | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Medication.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Medication.code | Base | required | Value Set: Product Code Value Set | 📦1.0.0 | This IG |
| Medication.status | Base | required | Medication status codes | 📍4.0.1 | FHIR Std. |
| Medication.form | Base | example | SNOMED CT Form Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Medication | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Medication | If the resource is contained in another resource, it SHALL be referred to from elsewhere in the resource or SHALL refer to the containing resource |
contained.where((('#'+id in (%resource.descendants().reference | %resource.descendants().as(canonical) | %resource.descendants().as(uri) | %resource.descendants().as(url))) or descendants().where(reference = '#').exists() or descendants().where(as(canonical) = '#').exists() or descendants().where(as(canonical) = '#').exists()).not()).trace('unmatched', id).empty()
|
| dom-4 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a meta.versionId or a meta.lastUpdated |
contained.meta.versionId.empty() and contained.meta.lastUpdated.empty()
|
| dom-5 | error | Medication | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Medication | A resource should have narrative for robust management |
text.`div`.exists()
|
| ele-1 | error | **ALL** elements | All FHIR elements must have a @value or children |
hasValue() or (children().count() > id.count())
|
| ext-1 | error | **ALL** extensions | Must have either extensions or value[x], not both |
extension.exists() != value.exists()
|
This structure is derived from Medication
Other representations of profile: CSV, Excel, Schematron
The profile constrains the base Medication resource to ensure capture of essential medication identification information, including:
Medication identity, describing the medication being referenced Medication status, where applicable, to indicate availability or validity Form and descriptive attributes, where relevant, to support correct interpretation Standardized representation to enable reuse across medication workflows
These elements enable reliable and unambiguous identification of medications across systems.
This profile is designed to:
Conform to HL7 FHIR R4 Medication semantics Support interoperability within the Eswatini National HIE Enable consistent medication references across clinical, pharmacy, and reporting systems Support national pharmaceutical management, reporting, and analytics
Standardized medication definitions are essential for safe prescribing, accurate dispensing, and effective national reporting.
Systems claiming conformance to this profile SHALL:
Use this profile consistently when representing medication definitions Ensure medication references are accurate and stable over time Maintain alignment between medication definitions and their use in clinical workflows
Optional elements from the base Medication resource may be used where relevant, provided they do not conflict with the constraints defined in this profile.
The Eswatini Medication Profile supports extensibility through standard FHIR mechanisms. Additional medication attributes—such as programme classifications, formulary indicators, or national catalogue identifiers—may be introduced using FHIR extensions, subject to national governance and approval.
The Eswatini Medication Profile provides a standardized and interoperable representation of medication definitions, serving as a foundational component of medication management across the health system. Adoption of this profile improves consistency, strengthens patient safety, and enhances interoperability between clinical and pharmaceutical systems throughout the Kingdom of Eswatini.