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/SzLabResult | Version: 1.0.0 | |||
| Active as of 2026-08-21 | Computable Name: SzLabResult | |||
The Eswatini Laboratory Result Profile defines the constraints and usage of the HL7 FHIR Observation resource for representing laboratory test results within the Eswatini National Digital Health Ecosystem. It provides a standardized and interoperable method for capturing, exchanging, and interpreting results produced by laboratory investigations performed as part of patient care. This profile ensures that laboratory results are recorded in a consistent, structured, and nationally aligned manner, supporting clinical decision-making, continuity of care, and health system reporting.
This profile SHALL be used by systems that generate, manage, or exchange laboratory test results, including:
Laboratory Information Systems (LIS) Electronic Medical Record (EMR) systems Diagnostic and referral systems Facility-based and programmatic reporting platforms National health information exchange (HIE) services
The profile applies to results from a wide range of laboratory investigations, including:
Routine diagnostic tests Monitoring and follow-up tests Screening and preventive tests Programme-specific laboratory testing (e.g. HIV, TB, NCDs)
Each laboratory result represents the outcome of a performed laboratory test, whether quantitative, qualitative, or coded.
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: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7 |
![]() ![]() |
Σ | 1..1 | id | Logical id of this artifact |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | Reference(Eswatini Practitioner Profile) | Lab results authorizer URL: https://eswatinihie.com/fhir/StructureDefinition/SzAuthorizerExtension | |
![]() ![]() ![]() |
0..1 | Reference(Eswatini Location Profile) | Testing laboratory URL: https://eswatinihie.com/fhir/StructureDefinition/SzTestingLabExtension | |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
Σ | 0..* | Reference(Eswatini Lab Request Profile) | Reference to the lab request that resulted in this lab result |
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. |
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |
![]() ![]() |
SΣ | 1..1 | CodeableConcept | Local test parameter code Binding: Value Set: Eswatini Local Test Parameter Codes (required) |
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Patient Profile) | Patient profile |
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Encounter Profile) | Encounter |
![]() ![]() |
Σ | 0..1 | dateTime | Clinically relevant time/time-period for observation |
![]() ![]() |
Σ | 0..* | Reference(Eswatini Practitioner Profile) | Who is responsible for the observation |
![]() ![]() |
SΣC | 1..1 | Actual result | |
![]() ![]() ![]() |
Quantity | |||
![]() ![]() ![]() |
string | |||
![]() ![]() ![]() |
integer | |||
![]() ![]() |
0..1 | Reference(Eswatini Lab Test Specimen Profile) | Specimen used for this observation | |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.code | Base | required | Value Set: Eswatini Local Test Parameter Codes | 📦1.0.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
This structure is derived from Observation
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.code | Base | required | Value Set: Eswatini Local Test Parameter Codes | 📦1.0.0 | This IG |
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7 | ||||
![]() ![]() |
Σ | 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 | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
0..1 | Reference(Eswatini Practitioner Profile) | Lab results authorizer URL: https://eswatinihie.com/fhir/StructureDefinition/SzAuthorizerExtension | |||||
![]() ![]() ![]() |
0..1 | Reference(Eswatini Location Profile) | Testing laboratory URL: https://eswatinihie.com/fhir/StructureDefinition/SzTestingLabExtension | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Business Identifier for observation | ||||
![]() ![]() |
Σ | 0..* | Reference(Eswatini Lab Request Profile) | Reference to the lab request that resulted in this lab result | ||||
![]() ![]() |
Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event | ||||
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. | ||||
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |||||
![]() ![]() |
SΣ | 1..1 | CodeableConcept | Local test parameter code Binding: Value Set: Eswatini Local Test Parameter Codes (required) | ||||
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Patient Profile) | Patient profile | ||||
![]() ![]() |
Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record | ||||
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Encounter Profile) | Encounter | ||||
![]() ![]() |
Σ | 0..1 | dateTime | Clinically relevant time/time-period for observation | ||||
![]() ![]() |
Σ | 0..1 | instant | Date/Time this version was made available | ||||
![]() ![]() |
Σ | 0..* | Reference(Eswatini Practitioner Profile) | Who is responsible for the observation | ||||
![]() ![]() |
SΣC | 1..1 | Actual result | |||||
![]() ![]() ![]() |
Quantity | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
integer | |||||||
![]() ![]() |
C | 0..1 | CodeableConcept | Why the result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() |
0..* | Annotation | Comments about the observation | |||||
![]() ![]() |
0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality. | |||||
![]() ![]() |
0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations. | |||||
![]() ![]() |
0..1 | Reference(Eswatini Lab Test Specimen Profile) | Specimen used for this observation | |||||
![]() ![]() |
0..1 | Reference(Device | DeviceMetric) | (Measurement) Device | |||||
![]() ![]() |
C | 0..* | BackboneElement | Provides guide for interpretation Constraints: obs-3 | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Low Range, if relevant | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | High Range, if relevant | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | Reference range qualifier Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range. | |||||
![]() ![]() ![]() |
0..* | CodeableConcept | Reference range population Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to. | |||||
![]() ![]() ![]() |
0..1 | Range | Applicable age range, if relevant | |||||
![]() ![]() ![]() |
0..1 | string | Text based reference range in an observation | |||||
![]() ![]() |
Σ | 0..* | Reference(Observation | QuestionnaireResponse | MolecularSequence) | Related resource that belongs to the Observation group | ||||
![]() ![]() |
Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from | ||||
![]() ![]() |
Σ | 0..* | BackboneElement | Component results | ||||
![]() ![]() ![]() |
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 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
![]() ![]() ![]() |
Σ | 0..1 | Actual component result | |||||
![]() ![]() ![]() ![]() |
Quantity | |||||||
![]() ![]() ![]() ![]() |
CodeableConcept | |||||||
![]() ![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() ![]() |
boolean | |||||||
![]() ![]() ![]() ![]() |
integer | |||||||
![]() ![]() ![]() ![]() |
Range | |||||||
![]() ![]() ![]() ![]() |
Ratio | |||||||
![]() ![]() ![]() ![]() |
SampledData | |||||||
![]() ![]() ![]() ![]() |
time | |||||||
![]() ![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() ![]() |
Period | |||||||
![]() ![]() ![]() |
C | 0..1 | CodeableConcept | Why the component result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() ![]() |
0..* | See referenceRange (Observation) | Provides guide for interpretation of component result | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.code | Base | required | Value Set: Eswatini Local Test Parameter Codes | 📦1.0.0 | This IG |
| Observation.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Observation.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std. |
| Observation.method | Base | example | Observation Methods | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.type | Base | preferred | Observation Reference Range Meaning Codes | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.appliesTo | Base | example | Observation Reference Range Applies To Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.component.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| obs-3 | error | Observation.referenceRange | Must have at least a low or a high or text |
low.exists() or high.exists() or text.exists()
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
This structure is derived from Observation
Summary
Mandatory: 5 elements
Must-Support: 2 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Key Elements View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7 |
![]() ![]() |
Σ | 1..1 | id | Logical id of this artifact |
![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() |
0..* | Extension | Extension Slice: Unordered, Open by value:url | |
![]() ![]() ![]() |
0..1 | Reference(Eswatini Practitioner Profile) | Lab results authorizer URL: https://eswatinihie.com/fhir/StructureDefinition/SzAuthorizerExtension | |
![]() ![]() ![]() |
0..1 | Reference(Eswatini Location Profile) | Testing laboratory URL: https://eswatinihie.com/fhir/StructureDefinition/SzTestingLabExtension | |
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() |
Σ | 0..* | Reference(Eswatini Lab Request Profile) | Reference to the lab request that resulted in this lab result |
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. |
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |
![]() ![]() |
SΣ | 1..1 | CodeableConcept | Local test parameter code Binding: Value Set: Eswatini Local Test Parameter Codes (required) |
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Patient Profile) | Patient profile |
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Encounter Profile) | Encounter |
![]() ![]() |
Σ | 0..1 | dateTime | Clinically relevant time/time-period for observation |
![]() ![]() |
Σ | 0..* | Reference(Eswatini Practitioner Profile) | Who is responsible for the observation |
![]() ![]() |
SΣC | 1..1 | Actual result | |
![]() ![]() ![]() |
Quantity | |||
![]() ![]() ![]() |
string | |||
![]() ![]() ![]() |
integer | |||
![]() ![]() |
0..1 | Reference(Eswatini Lab Test Specimen Profile) | Specimen used for this observation | |
Documentation for this format | ||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.code | Base | required | Value Set: Eswatini Local Test Parameter Codes | 📦1.0.0 | This IG |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
Differential View
This structure is derived from Observation
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.code | Base | required | Value Set: Eswatini Local Test Parameter Codes | 📦1.0.0 | This IG |
Snapshot View
| Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
|---|---|---|---|---|---|---|---|---|
![]() |
C | 0..* | Observation | Measurements and simple assertions Constraints: obs-6, obs-7 | ||||
![]() ![]() |
Σ | 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 | Extension Slice: Unordered, Open by value:url | |||||
![]() ![]() ![]() |
0..1 | Reference(Eswatini Practitioner Profile) | Lab results authorizer URL: https://eswatinihie.com/fhir/StructureDefinition/SzAuthorizerExtension | |||||
![]() ![]() ![]() |
0..1 | Reference(Eswatini Location Profile) | Testing laboratory URL: https://eswatinihie.com/fhir/StructureDefinition/SzTestingLabExtension | |||||
![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() |
Σ | 0..* | Identifier | Business Identifier for observation | ||||
![]() ![]() |
Σ | 0..* | Reference(Eswatini Lab Request Profile) | Reference to the lab request that resulted in this lab result | ||||
![]() ![]() |
Σ | 0..* | Reference(MedicationAdministration | MedicationDispense | MedicationStatement | Procedure | Immunization | ImagingStudy) | Part of referenced event | ||||
![]() ![]() |
?!Σ | 1..1 | code | registered | preliminary | final | amended + Binding: ObservationStatus (required): Codes providing the status of an observation. | ||||
![]() ![]() |
1..1 | CodeableConcept | Classification of type of observation Binding: ObservationCategoryCodes (preferred): Codes for high level observation categories. | |||||
![]() ![]() |
SΣ | 1..1 | CodeableConcept | Local test parameter code Binding: Value Set: Eswatini Local Test Parameter Codes (required) | ||||
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Patient Profile) | Patient profile | ||||
![]() ![]() |
Σ | 0..* | Reference(Resource) | What the observation is about, when it is not about the subject of record | ||||
![]() ![]() |
Σ | 1..1 | Reference(Eswatini Encounter Profile) | Encounter | ||||
![]() ![]() |
Σ | 0..1 | dateTime | Clinically relevant time/time-period for observation | ||||
![]() ![]() |
Σ | 0..1 | instant | Date/Time this version was made available | ||||
![]() ![]() |
Σ | 0..* | Reference(Eswatini Practitioner Profile) | Who is responsible for the observation | ||||
![]() ![]() |
SΣC | 1..1 | Actual result | |||||
![]() ![]() ![]() |
Quantity | |||||||
![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() |
integer | |||||||
![]() ![]() |
C | 0..1 | CodeableConcept | Why the result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() |
0..* | Annotation | Comments about the observation | |||||
![]() ![]() |
0..1 | CodeableConcept | Observed body part Binding: SNOMEDCTBodyStructures (example): Codes describing anatomical locations. May include laterality. | |||||
![]() ![]() |
0..1 | CodeableConcept | How it was done Binding: ObservationMethods (example): Methods for simple observations. | |||||
![]() ![]() |
0..1 | Reference(Eswatini Lab Test Specimen Profile) | Specimen used for this observation | |||||
![]() ![]() |
0..1 | Reference(Device | DeviceMetric) | (Measurement) Device | |||||
![]() ![]() |
C | 0..* | BackboneElement | Provides guide for interpretation Constraints: obs-3 | ||||
![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | Low Range, if relevant | ||||
![]() ![]() ![]() |
C | 0..1 | SimpleQuantity(4.0.1) | High Range, if relevant | ||||
![]() ![]() ![]() |
0..1 | CodeableConcept | Reference range qualifier Binding: ObservationReferenceRangeMeaningCodes (preferred): Code for the meaning of a reference range. | |||||
![]() ![]() ![]() |
0..* | CodeableConcept | Reference range population Binding: ObservationReferenceRangeAppliesToCodes (example): Codes identifying the population the reference range applies to. | |||||
![]() ![]() ![]() |
0..1 | Range | Applicable age range, if relevant | |||||
![]() ![]() ![]() |
0..1 | string | Text based reference range in an observation | |||||
![]() ![]() |
Σ | 0..* | Reference(Observation | QuestionnaireResponse | MolecularSequence) | Related resource that belongs to the Observation group | ||||
![]() ![]() |
Σ | 0..* | Reference(DocumentReference | ImagingStudy | Media | QuestionnaireResponse | Observation | MolecularSequence) | Related measurements the observation is made from | ||||
![]() ![]() |
Σ | 0..* | BackboneElement | Component results | ||||
![]() ![]() ![]() |
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 | CodeableConcept | Type of component observation (code / type) Binding: LOINCCodes (example): Codes identifying names of simple observations. | ||||
![]() ![]() ![]() |
Σ | 0..1 | Actual component result | |||||
![]() ![]() ![]() ![]() |
Quantity | |||||||
![]() ![]() ![]() ![]() |
CodeableConcept | |||||||
![]() ![]() ![]() ![]() |
string | |||||||
![]() ![]() ![]() ![]() |
boolean | |||||||
![]() ![]() ![]() ![]() |
integer | |||||||
![]() ![]() ![]() ![]() |
Range | |||||||
![]() ![]() ![]() ![]() |
Ratio | |||||||
![]() ![]() ![]() ![]() |
SampledData | |||||||
![]() ![]() ![]() ![]() |
time | |||||||
![]() ![]() ![]() ![]() |
dateTime | |||||||
![]() ![]() ![]() ![]() |
Period | |||||||
![]() ![]() ![]() |
C | 0..1 | CodeableConcept | Why the component result is missing Binding: DataAbsentReason (extensible): Codes specifying why the result (Observation.value[x]) is missing. | ||||
![]() ![]() ![]() |
0..* | CodeableConcept | High, low, normal, etc. Binding: ObservationInterpretationCodes (extensible): Codes identifying interpretations of observations. | |||||
![]() ![]() ![]() |
0..* | See referenceRange (Observation) | Provides guide for interpretation of component result | |||||
Documentation for this format | ||||||||
| Path | Status | Usage | ValueSet | Version | Source |
| Observation.language | Base | preferred | Common Languages | 📍4.0.1 | FHIR Std. |
| Observation.status | Base | required | ObservationStatus | 📍4.0.1 | FHIR Std. |
| Observation.category | Base | preferred | Observation Category Codes | 📍4.0.1 | FHIR Std. |
| Observation.code | Base | required | Value Set: Eswatini Local Test Parameter Codes | 📦1.0.0 | This IG |
| Observation.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Observation.bodySite | Base | example | SNOMED CT Body Structures | 📍4.0.1 | FHIR Std. |
| Observation.method | Base | example | Observation Methods | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.type | Base | preferred | Observation Reference Range Meaning Codes | 📍4.0.1 | FHIR Std. |
| Observation.referenceRange.appliesTo | Base | example | Observation Reference Range Applies To Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.code | Base | example | LOINC Codes | 📍4.0.1 | FHIR Std. |
| Observation.component.dataAbsentReason | Base | extensible | DataAbsentReason | 📍4.0.1 | FHIR Std. |
| Observation.component.interpretation | Base | extensible | Observation Interpretation Codes | 📍4.0.1 | FHIR Std. |
| Id | Grade | Path(s) | Description | Expression |
| dom-2 | error | Observation | If the resource is contained in another resource, it SHALL NOT contain nested Resources |
contained.contained.empty()
|
| dom-3 | error | Observation | 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 | Observation | 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 | Observation | If a resource is contained in another resource, it SHALL NOT have a security label |
contained.meta.security.empty()
|
| dom-6 | best practice | Observation | 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()
|
| obs-3 | error | Observation.referenceRange | Must have at least a low or a high or text |
low.exists() or high.exists() or text.exists()
|
| obs-6 | error | Observation | dataAbsentReason SHALL only be present if Observation.value[x] is not present |
dataAbsentReason.empty() or value.empty()
|
| obs-7 | error | Observation | If Observation.code is the same as an Observation.component.code then the value element associated with the code SHALL NOT be present |
value.empty() or component.code.where(coding.intersect(%resource.code.coding).exists()).empty()
|
This structure is derived from Observation
Summary
Mandatory: 5 elements
Must-Support: 2 elements
Structures
This structure refers to these other structures:
Extensions
This structure refers to these extensions:
Other representations of profile: CSV, Excel, Schematron
The profile constrains the base Observation resource to ensure capture of essential laboratory result information, including:
Observation status indicating the state of the result (e.g. preliminary, final, amended) Test code identifying the laboratory investigation performed Subject (Patient) for whom the test was performed Effective date/time indicating when the specimen was collected or the test was performed Result value, including numeric, coded, or textual representations as appropriate
These elements ensure that results are clinically meaningful, comparable, and suitable for use in both patient care and reporting.
This profile is designed to:
Conform to HL7 FHIR R4 Observation semantics Support interoperability within the Eswatini National HIE Enable seamless exchange of laboratory results between laboratories and clinical systems Support national diagnostic reporting, monitoring, and evaluation
By standardizing laboratory result data, the profile enables accurate interpretation and reliable reuse across systems and care settings.
Systems claiming conformance to this profile SHALL:
Populate all required and Must Support elements defined by the profile Maintain correct observation status values reflecting the result lifecycle Ensure laboratory results are accurate, validated, and traceable to the performing laboratory
Optional elements from the base Observation resource may be used where relevant, provided they do not conflict with the constraints defined in this profile.
The Eswatini Laboratory Result Profile supports extensibility through standard FHIR mechanisms. Additional laboratory-specific attributes—such as reference ranges, interpretation flags, or programme-related indicators—may be added using FHIR extensions, subject to national governance and approval.
The Eswatini Laboratory Result Profile provides a standardized and interoperable representation of laboratory test results, supporting clinical decision-making, diagnostic workflows, and national health reporting. Adoption of this profile improves result consistency, strengthens interoperability between laboratories and care providers, and enhances the overall quality of diagnostic services across the Kingdom of Eswatini.