Kenya Patient Summary FHIR Implementation Guide
0.1.0 - ci-build KE

Kenya Patient Summary FHIR Implementation Guide, published by Digital Health Agency of Kenya. This guide is not an authorized publication; it is the continuous build for version 0.1.0 built by the FHIR (HL7® FHIR® Standard) CI Build. This version is based on the current content of https://github.com/IntelliSOFT-Consulting/Kenya-Patient-Summary-FHIR-IG/ and changes regularly. See the Directory of published versions

Resource Profile: Diagnostic Report Profile - KPS

Official URL: https://fhir.dha.go.ke/kps/StructureDefinition/ke-kps-diagnostic-report Version: 0.1.0
Draft as of 2026-05-11 Computable Name: KpsDiagnosticReport

Copyright/Legal: Copyright © 2024+ Digital Health Agency of Kenya. This content is licensed under Creative Commons Zero v1.0 Universal (CC0 1.0). No rights reserved.

This profile defines constraints on the DiagnosticReport resource for use within the Kenya Patient Summary. It captures the results of diagnostic investigations (laboratory, radiology, and other diagnostic services), supporting continuity of care and data exchange within the national Health Information Exchange (HIE).

Usages:

  • This Profile is not used by any profiles in this Implementation Guide

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
.. DiagnosticReport 0..* DiagnosticReport A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!SΣ 1..1 code Diagnostic report status (KPS.C.DE.5)
Binding: DiagnosticReportStatus (required): The status of the diagnostic report.
... code SΣ 1..1 CodeableConcept Diagnostic test or report name (KPS.C.DE.2)
Binding: KPS Investigations (required)
... subject SΣ 1..1 Reference(Patient Profile - KPS) Patient this diagnostic report is about
... encounter SΣ 0..1 Reference(Encounter Profile - KPS) Encounter during which this diagnostic report was requested
... effective[x] SΣ 1..1 dateTime Date of diagnostic request or observation (KPS.C.DE.3)
... issued SΣ 0..1 instant Date results were issued (KPS.C.DE.22)
... performer SΣ 0..* Reference(Practitioner Profile - KPS | Organization Profile - KPS) Person or organization performing the diagnostic (KPS.C.DE.23)
... resultsInterpreter SΣ 0..* Reference(Practitioner Profile - KPS) Person responsible for interpreting results (KPS.C.DE.24)
... specimen S 0..* Reference(Specimen Profile - KPS) Specimen used for this diagnostic report (KPS.C.DE.13)
... result S 0..* Reference(Observation Profile - KPS) Observations that are part of this diagnostic report (KPS.C.DE.25)
... conclusion S 0..1 string Reason for request and clinical impression (KPS.C.DE.4, KPS.C.DE.27)
... conclusionCode S 0..* CodeableConcept Coded clinical impression from diagnostic findings (KPS.C.DE.26)
Binding: KPS Condition Codes (required)

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DiagnosticReport.status Base required DiagnosticReportStatus 📍4.0.1 FHIR Std.
DiagnosticReport.category Base required Diagnostic Service Categories 📦0.1.0 This IG
DiagnosticReport.code Base required KPS Investigations 📦0.1.0 This IG
DiagnosticReport.conclusionCode Base required KPS Condition Codes 📦0.1.0 This IG

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DiagnosticReport 0..* DiagnosticReport A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
... status S 1..1 code Diagnostic report status (KPS.C.DE.5)
... category S 1..* CodeableConcept Diagnostic service category (KPS.C.DE.1)
Binding: Diagnostic Service Categories (required)
... code S 1..1 CodeableConcept Diagnostic test or report name (KPS.C.DE.2)
Binding: KPS Investigations (required)
... encounter S 0..1 Reference(Encounter Profile - KPS) Encounter during which this diagnostic report was requested
... effective[x] S 1..1 dateTime Date of diagnostic request or observation (KPS.C.DE.3)
... issued S 0..1 instant Date results were issued (KPS.C.DE.22)
... performer S 0..* Reference(Practitioner Profile - KPS | Organization Profile - KPS) Person or organization performing the diagnostic (KPS.C.DE.23)
... resultsInterpreter S 0..* Reference(Practitioner Profile - KPS) Person responsible for interpreting results (KPS.C.DE.24)
... specimen S 0..* Reference(Specimen Profile - KPS) Specimen used for this diagnostic report (KPS.C.DE.13)
... result S 0..* Reference(Observation Profile - KPS) Observations that are part of this diagnostic report (KPS.C.DE.25)
... conclusion S 0..1 string Reason for request and clinical impression (KPS.C.DE.4, KPS.C.DE.27)
... conclusionCode S 0..* CodeableConcept Coded clinical impression from diagnostic findings (KPS.C.DE.26)
Binding: KPS Condition Codes (required)

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
DiagnosticReport.category Base required Diagnostic Service Categories 📦0.1.0 This IG
DiagnosticReport.code Base required KPS Investigations 📦0.1.0 This IG
DiagnosticReport.conclusionCode Base required KPS Condition Codes 📦0.1.0 This IG
NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DiagnosticReport 0..* DiagnosticReport A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
... id Σ 0..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 report
... basedOn 0..* Reference(CarePlan | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) What was requested
... status ?!SΣ 1..1 code Diagnostic report status (KPS.C.DE.5)
Binding: DiagnosticReportStatus (required): The status of the diagnostic report.
... category SΣ 1..* CodeableConcept Diagnostic service category (KPS.C.DE.1)
Binding: Diagnostic Service Categories (required)
... code SΣ 1..1 CodeableConcept Diagnostic test or report name (KPS.C.DE.2)
Binding: KPS Investigations (required)
... subject SΣ 1..1 Reference(Patient Profile - KPS) Patient this diagnostic report is about
... encounter SΣ 0..1 Reference(Encounter Profile - KPS) Encounter during which this diagnostic report was requested
... effective[x] SΣ 1..1 dateTime Date of diagnostic request or observation (KPS.C.DE.3)
... issued SΣ 0..1 instant Date results were issued (KPS.C.DE.22)
... performer SΣ 0..* Reference(Practitioner Profile - KPS | Organization Profile - KPS) Person or organization performing the diagnostic (KPS.C.DE.23)
... resultsInterpreter SΣ 0..* Reference(Practitioner Profile - KPS) Person responsible for interpreting results (KPS.C.DE.24)
... specimen S 0..* Reference(Specimen Profile - KPS) Specimen used for this diagnostic report (KPS.C.DE.13)
... result S 0..* Reference(Observation Profile - KPS) Observations that are part of this diagnostic report (KPS.C.DE.25)
... imagingStudy 0..* Reference(ImagingStudy) Reference to full details of imaging associated with the diagnostic report
... media Σ 0..* BackboneElement Key images associated with this report
.... 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
.... comment 0..1 string Comment about the image (e.g. explanation)
.... link Σ 1..1 Reference(Media) Reference to the image source
... conclusion S 0..1 string Reason for request and clinical impression (KPS.C.DE.4, KPS.C.DE.27)
... conclusionCode S 0..* CodeableConcept Coded clinical impression from diagnostic findings (KPS.C.DE.26)
Binding: KPS Condition Codes (required)
... presentedForm 0..* Attachment Entire report as issued

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DiagnosticReport.language Base preferred Common Languages 📍4.0.1 FHIR Std.
DiagnosticReport.status Base required DiagnosticReportStatus 📍4.0.1 FHIR Std.
DiagnosticReport.category Base required Diagnostic Service Categories 📦0.1.0 This IG
DiagnosticReport.code Base required KPS Investigations 📦0.1.0 This IG
DiagnosticReport.conclusionCode Base required KPS Condition Codes 📦0.1.0 This IG

Constraints

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

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DiagnosticReport 0..* DiagnosticReport A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
... implicitRules ?!Σ 0..1 uri A set of rules under which this content was created
... modifierExtension ?! 0..* Extension Extensions that cannot be ignored
... status ?!SΣ 1..1 code Diagnostic report status (KPS.C.DE.5)
Binding: DiagnosticReportStatus (required): The status of the diagnostic report.
... code SΣ 1..1 CodeableConcept Diagnostic test or report name (KPS.C.DE.2)
Binding: KPS Investigations (required)
... subject SΣ 1..1 Reference(Patient Profile - KPS) Patient this diagnostic report is about
... encounter SΣ 0..1 Reference(Encounter Profile - KPS) Encounter during which this diagnostic report was requested
... effective[x] SΣ 1..1 dateTime Date of diagnostic request or observation (KPS.C.DE.3)
... issued SΣ 0..1 instant Date results were issued (KPS.C.DE.22)
... performer SΣ 0..* Reference(Practitioner Profile - KPS | Organization Profile - KPS) Person or organization performing the diagnostic (KPS.C.DE.23)
... resultsInterpreter SΣ 0..* Reference(Practitioner Profile - KPS) Person responsible for interpreting results (KPS.C.DE.24)
... specimen S 0..* Reference(Specimen Profile - KPS) Specimen used for this diagnostic report (KPS.C.DE.13)
... result S 0..* Reference(Observation Profile - KPS) Observations that are part of this diagnostic report (KPS.C.DE.25)
... conclusion S 0..1 string Reason for request and clinical impression (KPS.C.DE.4, KPS.C.DE.27)
... conclusionCode S 0..* CodeableConcept Coded clinical impression from diagnostic findings (KPS.C.DE.26)
Binding: KPS Condition Codes (required)

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DiagnosticReport.status Base required DiagnosticReportStatus 📍4.0.1 FHIR Std.
DiagnosticReport.category Base required Diagnostic Service Categories 📦0.1.0 This IG
DiagnosticReport.code Base required KPS Investigations 📦0.1.0 This IG
DiagnosticReport.conclusionCode Base required KPS Condition Codes 📦0.1.0 This IG

Constraints

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

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DiagnosticReport 0..* DiagnosticReport A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
... status S 1..1 code Diagnostic report status (KPS.C.DE.5)
... category S 1..* CodeableConcept Diagnostic service category (KPS.C.DE.1)
Binding: Diagnostic Service Categories (required)
... code S 1..1 CodeableConcept Diagnostic test or report name (KPS.C.DE.2)
Binding: KPS Investigations (required)
... encounter S 0..1 Reference(Encounter Profile - KPS) Encounter during which this diagnostic report was requested
... effective[x] S 1..1 dateTime Date of diagnostic request or observation (KPS.C.DE.3)
... issued S 0..1 instant Date results were issued (KPS.C.DE.22)
... performer S 0..* Reference(Practitioner Profile - KPS | Organization Profile - KPS) Person or organization performing the diagnostic (KPS.C.DE.23)
... resultsInterpreter S 0..* Reference(Practitioner Profile - KPS) Person responsible for interpreting results (KPS.C.DE.24)
... specimen S 0..* Reference(Specimen Profile - KPS) Specimen used for this diagnostic report (KPS.C.DE.13)
... result S 0..* Reference(Observation Profile - KPS) Observations that are part of this diagnostic report (KPS.C.DE.25)
... conclusion S 0..1 string Reason for request and clinical impression (KPS.C.DE.4, KPS.C.DE.27)
... conclusionCode S 0..* CodeableConcept Coded clinical impression from diagnostic findings (KPS.C.DE.26)
Binding: KPS Condition Codes (required)

doco Documentation for this format

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
DiagnosticReport.category Base required Diagnostic Service Categories 📦0.1.0 This IG
DiagnosticReport.code Base required KPS Investigations 📦0.1.0 This IG
DiagnosticReport.conclusionCode Base required KPS Condition Codes 📦0.1.0 This IG

Snapshot View

NameFlagsCard.TypeDescription & Constraints    Filter: Filtersdoco
.. DiagnosticReport 0..* DiagnosticReport A Diagnostic report - a combination of request information, atomic results, images, interpretation, as well as formatted reports
... id Σ 0..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 report
... basedOn 0..* Reference(CarePlan | ImmunizationRecommendation | MedicationRequest | NutritionOrder | ServiceRequest) What was requested
... status ?!SΣ 1..1 code Diagnostic report status (KPS.C.DE.5)
Binding: DiagnosticReportStatus (required): The status of the diagnostic report.
... category SΣ 1..* CodeableConcept Diagnostic service category (KPS.C.DE.1)
Binding: Diagnostic Service Categories (required)
... code SΣ 1..1 CodeableConcept Diagnostic test or report name (KPS.C.DE.2)
Binding: KPS Investigations (required)
... subject SΣ 1..1 Reference(Patient Profile - KPS) Patient this diagnostic report is about
... encounter SΣ 0..1 Reference(Encounter Profile - KPS) Encounter during which this diagnostic report was requested
... effective[x] SΣ 1..1 dateTime Date of diagnostic request or observation (KPS.C.DE.3)
... issued SΣ 0..1 instant Date results were issued (KPS.C.DE.22)
... performer SΣ 0..* Reference(Practitioner Profile - KPS | Organization Profile - KPS) Person or organization performing the diagnostic (KPS.C.DE.23)
... resultsInterpreter SΣ 0..* Reference(Practitioner Profile - KPS) Person responsible for interpreting results (KPS.C.DE.24)
... specimen S 0..* Reference(Specimen Profile - KPS) Specimen used for this diagnostic report (KPS.C.DE.13)
... result S 0..* Reference(Observation Profile - KPS) Observations that are part of this diagnostic report (KPS.C.DE.25)
... imagingStudy 0..* Reference(ImagingStudy) Reference to full details of imaging associated with the diagnostic report
... media Σ 0..* BackboneElement Key images associated with this report
.... 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
.... comment 0..1 string Comment about the image (e.g. explanation)
.... link Σ 1..1 Reference(Media) Reference to the image source
... conclusion S 0..1 string Reason for request and clinical impression (KPS.C.DE.4, KPS.C.DE.27)
... conclusionCode S 0..* CodeableConcept Coded clinical impression from diagnostic findings (KPS.C.DE.26)
Binding: KPS Condition Codes (required)
... presentedForm 0..* Attachment Entire report as issued

doco Documentation for this format

Terminology Bindings

Path Status Usage ValueSet Version Source
DiagnosticReport.language Base preferred Common Languages 📍4.0.1 FHIR Std.
DiagnosticReport.status Base required DiagnosticReportStatus 📍4.0.1 FHIR Std.
DiagnosticReport.category Base required Diagnostic Service Categories 📦0.1.0 This IG
DiagnosticReport.code Base required KPS Investigations 📦0.1.0 This IG
DiagnosticReport.conclusionCode Base required KPS Condition Codes 📦0.1.0 This IG

Constraints

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

 

Other representations of profile: CSV, Excel, Schematron