PH eReferral Implementation Guide
0.1.0 - ci-build PH

PH eReferral Implementation Guide, published by SILab CoP IG Accelerator (eReferral). 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/niccoreyes/ph-ereferral/ and changes regularly. See the Directory of published versions

Resource Profile: EReferral RelatedPerson ( Experimental )

Official URL: urn://example.com/ph-ereferral/fhir/StructureDefinition/ereferral-related-person Version: 0.1.0
Draft as of 2026-05-26 Computable Name: ERefRelatedPerson

RelatedPerson profile for the Philippine eReferral system. This profile represents optional patient contacts used in referral workflows, including next of kin, emergency contacts, accompanying persons, and guardians. It extends PHCoreRelatedPerson and maps to TDG element REF-29.

EReferral RelatedPerson Profile

The EReferral RelatedPerson profile represents an optional patient contact exchanged as a separate resource in the Philippine eReferral workflow.

Use this profile when next-of-kin, emergency contact, guardian, or accompanying-person details need to be represented independently from Patient.contact. The profile maps to TDG element REF-29: Accompanied By / Next of Kin.

Scope

This profile supports:

  • next of kin and emergency contacts
  • guardians for pediatric or dependent patients
  • accompanying persons during referral
  • persons to contact regarding referral coordination

PH Core Alignment

This profile extends PHCoreRelatedPerson. PH Core already provides the Philippine localization for RelatedPerson, including PH Core address support. EReferral adds referral-specific must-support expectations and an extensible binding for common relationship roles.

Optionality

The RelatedPerson resource is optional in an eReferral exchange. Systems may use Patient.contact for simple contact details. When a separate RelatedPerson resource is exchanged, patient remains required because FHIR R4 requires every RelatedPerson to identify the patient it is related to.

Must Support Elements

Element Cardinality Description
patient 1..1 Patient associated with this contact
relationship 0..* Relationship to the patient
name 0..* Name of the related person
telecom 0..* Contact details
address 0..* Address
gender 0..1 Administrative gender
birthDate 0..1 Date of birth
period 0..1 Relationship validity period

Examples

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description Differentials, Snapshots, and other representations.

Terminology Bindings

Path Status Usage ValueSet Version Source
RelatedPerson.identifier.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilHealthID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilSysID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.relationship Base extensible

urn://example.com/ph-ereferral/fhir/ValueSet/ereferral-relationship-type

Not State Unknown
RelatedPerson.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.
RelatedPerson.communication.​language Base preferred Common Languages 📍4.0.1 FHIR Std.

Constraints

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

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
RelatedPerson.relationship Base extensible

urn://example.com/ph-ereferral/fhir/ValueSet/ereferral-relationship-type

Not State Unknown

Terminology Bindings

Path Status Usage ValueSet Version Source
RelatedPerson.language Base preferred Common Languages 📍4.0.1 FHIR Std.
RelatedPerson.identifier.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier.​type Base extensible IdentifierType 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilHealthID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilHealthID.​type Base extensible IdentifierType 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilSysID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilSysID.​type Base extensible IdentifierType 📍4.0.1 FHIR Std.
RelatedPerson.relationship Base extensible

urn://example.com/ph-ereferral/fhir/ValueSet/ereferral-relationship-type

Not State Unknown
RelatedPerson.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.
RelatedPerson.communication.​language Base preferred Common Languages 📍4.0.1 FHIR Std.

Constraints

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

Summary

Must-Support: 4 elements

Key Elements View

Terminology Bindings

Path Status Usage ValueSet Version Source
RelatedPerson.identifier.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilHealthID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilSysID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.relationship Base extensible

urn://example.com/ph-ereferral/fhir/ValueSet/ereferral-relationship-type

Not State Unknown
RelatedPerson.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.
RelatedPerson.communication.​language Base preferred Common Languages 📍4.0.1 FHIR Std.

Constraints

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

Terminology Bindings (Differential)

Path Status Usage ValueSet Version Source
RelatedPerson.relationship Base extensible

urn://example.com/ph-ereferral/fhir/ValueSet/ereferral-relationship-type

Not State Unknown

Snapshot ViewView

Terminology Bindings

Path Status Usage ValueSet Version Source
RelatedPerson.language Base preferred Common Languages 📍4.0.1 FHIR Std.
RelatedPerson.identifier.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier.​type Base extensible IdentifierType 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilHealthID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilHealthID.​type Base extensible IdentifierType 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilSysID.​use Base required IdentifierUse 📍4.0.1 FHIR Std.
RelatedPerson.identifier:PHCorePhilSysID.​type Base extensible IdentifierType 📍4.0.1 FHIR Std.
RelatedPerson.relationship Base extensible

urn://example.com/ph-ereferral/fhir/ValueSet/ereferral-relationship-type

Not State Unknown
RelatedPerson.gender Base required AdministrativeGender 📍4.0.1 FHIR Std.
RelatedPerson.communication.​language Base preferred Common Languages 📍4.0.1 FHIR Std.

Constraints

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

Summary

Must-Support: 4 elements

 

Other representations of profile: CSV, Excel, Schematron