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

Resource Profile: Eswatini Medication Profile

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.

Scope and Usage

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.

Conceptual Overview

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

Formal Views of Profile Content

Description of Profiles, Differentials, Snapshots and how the different presentations work.

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Medication 0..* Medication Definition of a Medication
... id Σ 1..1 id Logical id of this artifact
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!Σ 0..1 code active | inactive | entered-in-error
Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Medication 0..* Medication Definition of a Medication
... id 1..1 id Logical id of this artifact
... code S 1..1 CodeableConcept ELMIS Product Code
Binding: Value Set: Product Code Value Set (required)

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Medication.code Base required Value Set: Product Code Value Set 📦1.0.0 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Medication 0..* Medication Definition of a Medication
... id Σ 1..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Business identifier for this medication
... code SΣ 1..1 CodeableConcept ELMIS Product Code
Binding: Value Set: Product Code Value Set (required)
... status ?!Σ 0..1 code active | inactive | entered-in-error
Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
... manufacturer Σ 0..1 Reference(Organization) Manufacturer of the item
... form 0..1 CodeableConcept powder | tablets | capsule +
Binding: SNOMEDCTFormCodes (example): A coded concept defining the form of a medication.
... amount Σ 0..1 Ratio Amount of drug in package
... ingredient 0..* BackboneElement Active or inactive ingredient
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... item[x] 1..1 The actual ingredient or content
..... itemCodeableConcept CodeableConcept
..... itemReference Reference(Substance | Medication)
.... isActive 0..1 boolean Active ingredient indicator
.... strength 0..1 Ratio Quantity of ingredient present
... batch 0..1 BackboneElement Details about packaged medications
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... lotNumber 0..1 string Identifier assigned to batch
.... expirationDate 0..1 dateTime When batch will expire

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

Summary

Mandatory: 2 elements
Must-Support: 1 element

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Medication 0..* Medication Definition of a Medication
... id Σ 1..1 id Logical id of this artifact
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!Σ 0..1 code active | inactive | entered-in-error
Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Medication 0..* Medication Definition of a Medication
... id 1..1 id Logical id of this artifact
... code S 1..1 CodeableConcept ELMIS Product Code
Binding: Value Set: Product Code Value Set (required)

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
Medication.code Base required Value Set: Product Code Value Set 📦1.0.0 This IG

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Medication 0..* Medication Definition of a Medication
... id Σ 1..1 id Logical id of this artifact
... meta Σ 0..1 Meta Metadata about the resource
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... text 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
... contained 0..* Resource Contained, inline Resources
... extension 0..* Extension Additional content defined by implementations
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... identifier Σ 0..* Identifier Business identifier for this medication
... code SΣ 1..1 CodeableConcept ELMIS Product Code
Binding: Value Set: Product Code Value Set (required)
... status ?!Σ 0..1 code active | inactive | entered-in-error
Binding: Medication Status Codes (required): A coded concept defining if the medication is in active use.
... manufacturer Σ 0..1 Reference(Organization) Manufacturer of the item
... form 0..1 CodeableConcept powder | tablets | capsule +
Binding: SNOMEDCTFormCodes (example): A coded concept defining the form of a medication.
... amount Σ 0..1 Ratio Amount of drug in package
... ingredient 0..* BackboneElement Active or inactive ingredient
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... item[x] 1..1 The actual ingredient or content
..... itemCodeableConcept CodeableConcept
..... itemReference Reference(Substance | Medication)
.... isActive 0..1 boolean Active ingredient indicator
.... strength 0..1 Ratio Quantity of ingredient present
... batch 0..1 BackboneElement Details about packaged medications
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
.... modifierExtension ?!Σ 0..* Extension Extensions that cannot be ignored even if unrecognized
.... lotNumber 0..1 string Identifier assigned to batch
.... expirationDate 0..1 dateTime When batch will expire

doco Documentation for this format

Terminology Bindings

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.

Constraints

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

Summary

Mandatory: 2 elements
Must-Support: 1 element

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Core Data Requirements

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.

Interoperability and National Alignment

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.

Data Quality and Conformance

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.

Extensibility

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.

Summary

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.