Kenya ePrescription FHIR Implementation Guide
0.1.0 - ci-build Kenya flag

Kenya ePrescription FHIR Implementation Guide - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: Kenya eRx MedicationStatement

Official URL: https://nshr-uat.sha.go.ke/StructureDefinition/ke-medication-statement Version: 0.1.0
Draft as of 2026-04-24 Computable Name: KEMedicationStatement

Copyright/Legal: Copyright 2025+ Digital Health Agency, Kenya. This content is licensed under Creative Commons Attribution 4.0 International (CC-BY-4.0). Terminology content from the Kenya Pharmacy and Poisons Board (PPB) via Open Concept Lab (OCL) is subject to separate terms.

Profile on MedicationStatement for the Kenya eRx Implementation Guide. Records medication use history and current medications for a patient.

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
.. MedicationStatement 0..* MedicationStatement Record of medication being taken by a patient
... meta SΣ 1..1 Meta Metadata about the resource
.... profile SΣ 1..* canonical(StructureDefinition) Profiles this resource claims to conform to.
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... partOf SΣ 0..* Reference(MedicationAdministration) Link to prescribing or administration records
... status ?!SΣ 1..1 code Status of medication use (active, completed, stopped, entered-in-error)
Binding: Medication Status Codes (required)
... statusReason S 0..* CodeableConcept Reason for current status (e.g. therapy stopped, adverse reaction)
Binding: https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status (required)
... medication[x] SΣ 1..1 CodeableConcept Medication taken — Kenya MOH PPB Generic Products
Binding: https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs (required)
... subject SΣ 1..1 Reference(Patient) Who is/was taking the medication
... context SΣ 0..1 Reference(Encounter) Encounter during which medication use was recorded
... effective[x] SΣ 0..1 Period Period of medication use
... dateAsserted SΣ 0..1 dateTime Date when medication use was asserted or recorded
... informationSource S 0..1 Reference(Patient | Practitioner | RelatedPerson) Who reported the medication use
... reasonCode S 0..* CodeableConcept Clinical reason for medication use (ICD-11)
Binding: https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand (required)
... reasonReference S 0..* Reference(Condition) Condition or observation that supports why the medication is being/was taken
... note S 0..* Annotation Additional notes about medication use or adherence
... dosage S 0..* Dosage Dosage information as taken by the patient

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
MedicationStatement.​status Base required Medication status codes 📦4.0.1 FHIR Std.
MedicationStatement.​statusReason Base required https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status Not State Unknown
MedicationStatement.​medication[x] Base required https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs Not State Unknown
MedicationStatement.​reasonCode Base required https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error MedicationStatement If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error MedicationStatement 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 MedicationStatement 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 MedicationStatement If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice MedicationStatement 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 MedicationStatement

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. MedicationStatement 0..* MedicationStatement Record of medication being taken by a patient
... meta S 1..1 Meta Metadata about the resource
.... profile S 1..* canonical(StructureDefinition) Profiles this resource claims to conform to.
... identifier S 0..* Identifier External identifier
... partOf S 0..* Reference(MedicationAdministration) Link to prescribing or administration records
... statusReason S 0..* CodeableConcept Reason for current status (e.g. therapy stopped, adverse reaction)
Binding: https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status (required)
... medication[x] S 1..1 CodeableConcept Medication taken — Kenya MOH PPB Generic Products
Binding: https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs (required)
... subject S 1..1 Reference(Patient) Who is/was taking the medication
... context S 0..1 Reference(Encounter) Encounter during which medication use was recorded
... effective[x] S 0..1 Period Period of medication use
... dateAsserted S 0..1 dateTime Date when medication use was asserted or recorded
... informationSource S 0..1 Reference(Patient | Practitioner | RelatedPerson) Who reported the medication use
... reasonCode S 0..* CodeableConcept Clinical reason for medication use (ICD-11)
Binding: https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand (required)
... reasonReference S 0..* Reference(Condition) Condition or observation that supports why the medication is being/was taken
... note S 0..* Annotation Additional notes about medication use or adherence
... dosage S 0..* Dosage Dosage information as taken by the patient

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
MedicationStatement.​status Base required Medication status codes 📦4.0.1 FHIR Std.
MedicationStatement.​statusReason Base required https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status Not State Unknown
MedicationStatement.​medication[x] Base required https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs Not State Unknown
MedicationStatement.​reasonCode Base required https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand Not State Unknown
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. MedicationStatement 0..* MedicationStatement Record of medication being taken by a patient
... id Σ 0..1 id Logical id of this artifact
... meta SΣ 1..1 Meta Metadata about the resource
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... versionId Σ 0..1 id Version specific identifier
.... lastUpdated Σ 0..1 instant When the resource version last changed
.... source Σ 0..1 uri Identifies where the resource comes from
.... profile SΣ 1..* canonical(StructureDefinition) Profiles this resource claims to conform to.
.... security Σ 0..* Coding Security Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
.... tag Σ 0..* Coding Tags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
... 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 SΣ 0..* Identifier External identifier
... basedOn Σ 0..* Reference(MedicationRequest | CarePlan | ServiceRequest) Fulfils plan, proposal or order
... partOf SΣ 0..* Reference(MedicationAdministration) Link to prescribing or administration records
... status ?!SΣ 1..1 code Status of medication use (active, completed, stopped, entered-in-error)
Binding: Medication Status Codes (required)
... statusReason S 0..* CodeableConcept Reason for current status (e.g. therapy stopped, adverse reaction)
Binding: https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status (required)
... category Σ 0..1 CodeableConcept Type of medication usage
Binding: Medication usage category codes (preferred): A coded concept identifying where the medication included in the MedicationStatement is expected to be consumed or administered.
... medication[x] SΣ 1..1 CodeableConcept Medication taken — Kenya MOH PPB Generic Products
Binding: https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs (required)
... subject SΣ 1..1 Reference(Patient) Who is/was taking the medication
... context SΣ 0..1 Reference(Encounter) Encounter during which medication use was recorded
... effective[x] SΣ 0..1 Period Period of medication use
... dateAsserted SΣ 0..1 dateTime Date when medication use was asserted or recorded
... informationSource S 0..1 Reference(Patient | Practitioner | RelatedPerson) Who reported the medication use
... derivedFrom 0..* Reference(Resource) Additional supporting information
... reasonCode S 0..* CodeableConcept Clinical reason for medication use (ICD-11)
Binding: https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand (required)
... reasonReference S 0..* Reference(Condition) Condition or observation that supports why the medication is being/was taken
... note S 0..* Annotation Additional notes about medication use or adherence
... dosage S 0..* Dosage Dosage information as taken by the patient

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
MedicationStatement.​meta.security Base extensible SecurityLabels 📍4.0.1 FHIR Std.
MedicationStatement.​meta.tag Base example Common Tags 📍4.0.1 FHIR Std.
MedicationStatement.​language Base preferred Common Languages 📍4.0.1 FHIR Std.
MedicationStatement.​status Base required Medication status codes 📦4.0.1 FHIR Std.
MedicationStatement.​statusReason Base required https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status Not State Unknown
MedicationStatement.​category Base preferred Medication usage category codes 📍4.0.1 FHIR Std.
MedicationStatement.​medication[x] Base required https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs Not State Unknown
MedicationStatement.​reasonCode Base required https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error MedicationStatement If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error MedicationStatement 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 MedicationStatement 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 MedicationStatement If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice MedicationStatement 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 MedicationStatement

Summary

Mandatory: 2 elements
Must-Support: 16 elements

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. MedicationStatement 0..* MedicationStatement Record of medication being taken by a patient
... meta SΣ 1..1 Meta Metadata about the resource
.... profile SΣ 1..* canonical(StructureDefinition) Profiles this resource claims to conform to.
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... partOf SΣ 0..* Reference(MedicationAdministration) Link to prescribing or administration records
... status ?!SΣ 1..1 code Status of medication use (active, completed, stopped, entered-in-error)
Binding: Medication Status Codes (required)
... statusReason S 0..* CodeableConcept Reason for current status (e.g. therapy stopped, adverse reaction)
Binding: https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status (required)
... medication[x] SΣ 1..1 CodeableConcept Medication taken — Kenya MOH PPB Generic Products
Binding: https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs (required)
... subject SΣ 1..1 Reference(Patient) Who is/was taking the medication
... context SΣ 0..1 Reference(Encounter) Encounter during which medication use was recorded
... effective[x] SΣ 0..1 Period Period of medication use
... dateAsserted SΣ 0..1 dateTime Date when medication use was asserted or recorded
... informationSource S 0..1 Reference(Patient | Practitioner | RelatedPerson) Who reported the medication use
... reasonCode S 0..* CodeableConcept Clinical reason for medication use (ICD-11)
Binding: https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand (required)
... reasonReference S 0..* Reference(Condition) Condition or observation that supports why the medication is being/was taken
... note S 0..* Annotation Additional notes about medication use or adherence
... dosage S 0..* Dosage Dosage information as taken by the patient

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
MedicationStatement.​status Base required Medication status codes 📦4.0.1 FHIR Std.
MedicationStatement.​statusReason Base required https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status Not State Unknown
MedicationStatement.​medication[x] Base required https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs Not State Unknown
MedicationStatement.​reasonCode Base required https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error MedicationStatement If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error MedicationStatement 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 MedicationStatement 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 MedicationStatement If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice MedicationStatement 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 MedicationStatement

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. MedicationStatement 0..* MedicationStatement Record of medication being taken by a patient
... meta S 1..1 Meta Metadata about the resource
.... profile S 1..* canonical(StructureDefinition) Profiles this resource claims to conform to.
... identifier S 0..* Identifier External identifier
... partOf S 0..* Reference(MedicationAdministration) Link to prescribing or administration records
... statusReason S 0..* CodeableConcept Reason for current status (e.g. therapy stopped, adverse reaction)
Binding: https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status (required)
... medication[x] S 1..1 CodeableConcept Medication taken — Kenya MOH PPB Generic Products
Binding: https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs (required)
... subject S 1..1 Reference(Patient) Who is/was taking the medication
... context S 0..1 Reference(Encounter) Encounter during which medication use was recorded
... effective[x] S 0..1 Period Period of medication use
... dateAsserted S 0..1 dateTime Date when medication use was asserted or recorded
... informationSource S 0..1 Reference(Patient | Practitioner | RelatedPerson) Who reported the medication use
... reasonCode S 0..* CodeableConcept Clinical reason for medication use (ICD-11)
Binding: https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand (required)
... reasonReference S 0..* Reference(Condition) Condition or observation that supports why the medication is being/was taken
... note S 0..* Annotation Additional notes about medication use or adherence
... dosage S 0..* Dosage Dosage information as taken by the patient

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
MedicationStatement.​status Base required Medication status codes 📦4.0.1 FHIR Std.
MedicationStatement.​statusReason Base required https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status Not State Unknown
MedicationStatement.​medication[x] Base required https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs Not State Unknown
MedicationStatement.​reasonCode Base required https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand Not State Unknown

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. MedicationStatement 0..* MedicationStatement Record of medication being taken by a patient
... id Σ 0..1 id Logical id of this artifact
... meta SΣ 1..1 Meta Metadata about the resource
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... versionId Σ 0..1 id Version specific identifier
.... lastUpdated Σ 0..1 instant When the resource version last changed
.... source Σ 0..1 uri Identifies where the resource comes from
.... profile SΣ 1..* canonical(StructureDefinition) Profiles this resource claims to conform to.
.... security Σ 0..* Coding Security Labels applied to this resource
Binding: All Security Labels (extensible): Security Labels from the Healthcare Privacy and Security Classification System.
.... tag Σ 0..* Coding Tags applied to this resource
Binding: CommonTags (example): Codes that represent various types of tags, commonly workflow-related; e.g. "Needs review by Dr. Jones".
... 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 SΣ 0..* Identifier External identifier
... basedOn Σ 0..* Reference(MedicationRequest | CarePlan | ServiceRequest) Fulfils plan, proposal or order
... partOf SΣ 0..* Reference(MedicationAdministration) Link to prescribing or administration records
... status ?!SΣ 1..1 code Status of medication use (active, completed, stopped, entered-in-error)
Binding: Medication Status Codes (required)
... statusReason S 0..* CodeableConcept Reason for current status (e.g. therapy stopped, adverse reaction)
Binding: https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status (required)
... category Σ 0..1 CodeableConcept Type of medication usage
Binding: Medication usage category codes (preferred): A coded concept identifying where the medication included in the MedicationStatement is expected to be consumed or administered.
... medication[x] SΣ 1..1 CodeableConcept Medication taken — Kenya MOH PPB Generic Products
Binding: https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs (required)
... subject SΣ 1..1 Reference(Patient) Who is/was taking the medication
... context SΣ 0..1 Reference(Encounter) Encounter during which medication use was recorded
... effective[x] SΣ 0..1 Period Period of medication use
... dateAsserted SΣ 0..1 dateTime Date when medication use was asserted or recorded
... informationSource S 0..1 Reference(Patient | Practitioner | RelatedPerson) Who reported the medication use
... derivedFrom 0..* Reference(Resource) Additional supporting information
... reasonCode S 0..* CodeableConcept Clinical reason for medication use (ICD-11)
Binding: https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand (required)
... reasonReference S 0..* Reference(Condition) Condition or observation that supports why the medication is being/was taken
... note S 0..* Annotation Additional notes about medication use or adherence
... dosage S 0..* Dosage Dosage information as taken by the patient

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
MedicationStatement.​meta.security Base extensible SecurityLabels 📍4.0.1 FHIR Std.
MedicationStatement.​meta.tag Base example Common Tags 📍4.0.1 FHIR Std.
MedicationStatement.​language Base preferred Common Languages 📍4.0.1 FHIR Std.
MedicationStatement.​status Base required Medication status codes 📦4.0.1 FHIR Std.
MedicationStatement.​statusReason Base required https://nshr-uat.sha.go.ke/ValueSet/reason-medication-status Not State Unknown
MedicationStatement.​category Base preferred Medication usage category codes 📍4.0.1 FHIR Std.
MedicationStatement.​medication[x] Base required https://nshr-uat.sha.go.ke/ValueSet/generic-products-vs Not State Unknown
MedicationStatement.​reasonCode Base required https://ilm-hie.dha.go.ke/ocl/orgs/WHO/ValueSet/icd-11/$expand Not State Unknown

Constraints

Id Grade Path(s) Description Expression
dom-2 error MedicationStatement If the resource is contained in another resource, it SHALL NOT contain nested Resources contained.contained.empty()
dom-3 error MedicationStatement 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 MedicationStatement 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 MedicationStatement If a resource is contained in another resource, it SHALL NOT have a security label contained.meta.security.empty()
dom-6 best practice MedicationStatement 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 MedicationStatement

Summary

Mandatory: 2 elements
Must-Support: 16 elements

 

Other representations of profile: CSV, Excel, Schematron