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 Practitioner Profile

Official URL: https://eswatinihie.com/fhir/StructureDefinition/SzPractitioner Version: 1.0.0
Active as of 2026-08-21 Computable Name: SzPractitioner

The Eswatini Practitioner Profile defines the constraints and usage of the HL7 FHIR Practitioner resource for representing individual healthcare professionals involved in the delivery of healthcare services within the Eswatini National Digital Health Ecosystem. It provides a standardized and interoperable way to identify and describe healthcare practitioners, supporting consistent referencing across clinical, administrative, and reporting workflows. This profile ensures that practitioner information is captured in a consistent, authoritative, and nationally aligned manner, supporting care delivery, accountability, and interoperability.

Scope and Usage

This profile SHALL be used by systems that create, manage, or exchange information about healthcare practitioners, including:

Electronic Medical Record (EMR) systems Facility and workforce management systems Laboratory and pharmacy systems Referral and care coordination platforms National health information exchange (HIE) services

The profile applies to practitioners such as:

Medical doctors and clinicians Nurses and midwives Pharmacists and laboratory personnel Allied health professionals Community and outreach health workers

Each Practitioner resource represents a single individual professional involved in healthcare service delivery or related activities.

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
.. Practitioner 0..* Practitioner A person with a formal responsibility in the provisioning of healthcare or related services
... 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
.... use ?!Σ 0..1 code usual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required): The use of a human name.
.... family Σ 1..1 string Family name (often called 'Surname')
.... given Σ 1..* string Practitioner's given name
This repeating element order: Given Names appear in the correct order for presenting the name
... gender Σ 1..1 code Sex at birth: male | female | other | unknown
Binding: AdministrativeGender (required): The gender of a person used for administrative purposes.

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Practitioner.name.use Base required NameUse 📍4.0.1 FHIR Std.
Practitioner.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Practitioner 0..* Practitioner A person with a formal responsibility in the provisioning of healthcare or related services
... id 1..1 id Logical id of this artifact
... name S 1..1 HumanName Practitioner's name
.... family 1..1 string Family name (often called 'Surname')
.... given 1..* string Practitioner's given name
... gender 1..1 code Sex at birth: male | female | other | unknown

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Practitioner 0..* Practitioner A person with a formal responsibility in the provisioning of healthcare or related services
... 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 An identifier for the person as this agent
... active Σ 0..1 boolean Whether this practitioner's record is in active use
... name SΣ 1..1 HumanName Practitioner's name
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ 0..1 code usual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required): The use of a human name.
.... text Σ 0..1 string Text representation of the full name
.... family Σ 1..1 string Family name (often called 'Surname')
.... given Σ 1..* string Practitioner's given name
This repeating element order: Given Names appear in the correct order for presenting the name
.... prefix Σ 0..* string Parts that come before the name
This repeating element order: Prefixes appear in the correct order for presenting the name
.... suffix Σ 0..* string Parts that come after the name
This repeating element order: Suffixes appear in the correct order for presenting the name
.... period Σ 0..1 Period Time period when name was/is in use
... telecom Σ 0..* ContactPoint A contact detail for the practitioner (that apply to all roles)
... address Σ 0..* Address Address(es) of the practitioner that are not role specific (typically home address)
... gender Σ 1..1 code Sex at birth: male | female | other | unknown
Binding: AdministrativeGender (required): The gender of a person used for administrative purposes.
... birthDate Σ 0..1 date The date on which the practitioner was born
... photo 0..* Attachment Image of the person
... qualification 0..* BackboneElement Certification, licenses, or training pertaining to the provision of care
.... 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
.... identifier 0..* Identifier An identifier for this qualification for the practitioner
.... code 1..1 CodeableConcept Coded representation of the qualification
Binding: v2 table 0360, Version 2.7 (example): Specific qualification the practitioner has to provide a service.
.... period 0..1 Period Period during which the qualification is valid
.... issuer 0..1 Reference(Organization) Organization that regulates and issues the qualification
... communication 0..* CodeableConcept A language the practitioner can use in patient communication
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding


doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Practitioner.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Practitioner.name.use Base required NameUse 📍4.0.1 FHIR Std.
Practitioner.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.
Practitioner.qualification.​code Base example v2 table 0360, Version 2.7 📦0360 FHIR Std.
Practitioner.communication Base preferred Common Languages 📍4.0.1 FHIR Std.

Constraints

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

Summary

Mandatory: 5 elements
Must-Support: 1 element

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Practitioner 0..* Practitioner A person with a formal responsibility in the provisioning of healthcare or related services
... 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
.... use ?!Σ 0..1 code usual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required): The use of a human name.
.... family Σ 1..1 string Family name (often called 'Surname')
.... given Σ 1..* string Practitioner's given name
This repeating element order: Given Names appear in the correct order for presenting the name
... gender Σ 1..1 code Sex at birth: male | female | other | unknown
Binding: AdministrativeGender (required): The gender of a person used for administrative purposes.

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Practitioner.name.use Base required NameUse 📍4.0.1 FHIR Std.
Practitioner.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Practitioner 0..* Practitioner A person with a formal responsibility in the provisioning of healthcare or related services
... id 1..1 id Logical id of this artifact
... name S 1..1 HumanName Practitioner's name
.... family 1..1 string Family name (often called 'Surname')
.... given 1..* string Practitioner's given name
... gender 1..1 code Sex at birth: male | female | other | unknown

doco Documentation for this format

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. Practitioner 0..* Practitioner A person with a formal responsibility in the provisioning of healthcare or related services
... 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 An identifier for the person as this agent
... active Σ 0..1 boolean Whether this practitioner's record is in active use
... name SΣ 1..1 HumanName Practitioner's name
.... id 0..1 string Unique id for inter-element referencing
.... extension 0..* Extension Additional content defined by implementations
Slice: Unordered, Open by value:url
.... use ?!Σ 0..1 code usual | official | temp | nickname | anonymous | old | maiden
Binding: NameUse (required): The use of a human name.
.... text Σ 0..1 string Text representation of the full name
.... family Σ 1..1 string Family name (often called 'Surname')
.... given Σ 1..* string Practitioner's given name
This repeating element order: Given Names appear in the correct order for presenting the name
.... prefix Σ 0..* string Parts that come before the name
This repeating element order: Prefixes appear in the correct order for presenting the name
.... suffix Σ 0..* string Parts that come after the name
This repeating element order: Suffixes appear in the correct order for presenting the name
.... period Σ 0..1 Period Time period when name was/is in use
... telecom Σ 0..* ContactPoint A contact detail for the practitioner (that apply to all roles)
... address Σ 0..* Address Address(es) of the practitioner that are not role specific (typically home address)
... gender Σ 1..1 code Sex at birth: male | female | other | unknown
Binding: AdministrativeGender (required): The gender of a person used for administrative purposes.
... birthDate Σ 0..1 date The date on which the practitioner was born
... photo 0..* Attachment Image of the person
... qualification 0..* BackboneElement Certification, licenses, or training pertaining to the provision of care
.... 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
.... identifier 0..* Identifier An identifier for this qualification for the practitioner
.... code 1..1 CodeableConcept Coded representation of the qualification
Binding: v2 table 0360, Version 2.7 (example): Specific qualification the practitioner has to provide a service.
.... period 0..1 Period Period during which the qualification is valid
.... issuer 0..1 Reference(Organization) Organization that regulates and issues the qualification
... communication 0..* CodeableConcept A language the practitioner can use in patient communication
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding


doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
Practitioner.language Base preferred Common Languages 📍4.0.1 FHIR Std.
Practitioner.name.use Base required NameUse 📍4.0.1 FHIR Std.
Practitioner.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.
Practitioner.qualification.​code Base example v2 table 0360, Version 2.7 📦0360 FHIR Std.
Practitioner.communication Base preferred Common Languages 📍4.0.1 FHIR Std.

Constraints

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

Summary

Mandatory: 5 elements
Must-Support: 1 element

 

Other representations of profile: CSV, Excel, Schematron

Notes:

Core Data Requirements

The profile constrains the base Practitioner resource to ensure capture of essential practitioner information, including:

Practitioner identifier(s) to uniquely identify the individual Practitioner name, for display and identification Practitioner status, where applicable, to indicate whether the individual is active Professional details, where supported, to contextualize the practitioner’s role

These elements enable reliable identification and consistent referencing of practitioners across systems.

Interoperability and National Alignment

This profile is designed to:

Conform to HL7 FHIR R4 Practitioner semantics Support interoperability within the Eswatini National HIE Enable consistent identification of healthcare professionals across systems Support national workforce reporting, planning, and governance activities

Standardized practitioner data strengthens coordination of care and improves visibility of service delivery capacity across the health system.

Data Quality and Conformance

Systems claiming conformance to this profile SHALL:

Populate all required and Must Support elements defined by the profile Ensure practitioner identifiers and names are accurate and maintained over time Use practitioner references consistently across related resources

Optional elements from the base Practitioner resource may be used where relevant, provided they do not conflict with the constraints defined in this profile.

Extensibility

The Eswatini Practitioner Profile supports extensibility through standard FHIR mechanisms. Additional practitioner‑related attributes—such as professional registration details, specialties, or programme roles—may be introduced using FHIR extensions, subject to national governance and approval.

Summary

The Eswatini Practitioner Profile provides a standardized and interoperable representation of healthcare professionals, enabling consistent identification and attribution of healthcare services across the national health system. Adoption of this profile improves accountability, supports workforce management, and enhances interoperability across healthcare systems throughout the Kingdom of Eswatini.