PH Core Implementation Guide
0.1.0 - ci-build
PH Core Implementation Guide, published by UP Manila SILab. 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/UP-Manila-SILab/ph-core/ and changes regularly. See the Directory of published versions
Official URL: urn://example.com/ph-core/fhir/StructureDefinition/ph-core-practitioner | Version: 0.1.0 | |||
Draft as of 2025-06-19 | Computable Name: PHCorePractitioner |
The PH Core Practitioner Profile inherits from the FHIR R4 Practitioner resource; refer to it for scope and usage definitions. This profile sets minimum expectations for the Practitioner resource to record, search, and fetch basic demographics and administrative information about an individual practitioner in a Philippine context. It specifies which core elements, extensions, vocabularies, and value sets SHALL be present and constrains how the elements are used. It provides the floor for standards development for Philippine use cases.
Usages:
Description of Profiles, Differentials, Snapshots and how the different presentations work.
Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
---|---|---|---|---|
![]() ![]() |
0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |
![]() ![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() ![]() |
Σ | 0..* | PHCoreAddress | Address(es) of the practitioner that are not role specific (typically home address) |
![]() |
Id | Grade | Path(s) | Details | Requirements |
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
Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
---|---|---|---|---|
![]() ![]() |
Practitioner | |||
![]() ![]() ![]() |
0..* | PHCoreAddress | Address(es) of the practitioner that are not role specific (typically home address) | |
![]() |
Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
---|---|---|---|---|---|---|---|---|
![]() ![]() |
0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |||||
![]() ![]() ![]() |
Σ | 0..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 | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() ![]() |
Σ | 0..* | Identifier | An identifier for the person as this agent | ||||
![]() ![]() ![]() |
Σ | 0..1 | boolean | Whether this practitioner's record is in active use | ||||
![]() ![]() ![]() |
Σ | 0..* | HumanName | The name(s) associated with the practitioner | ||||
![]() ![]() ![]() |
Σ | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) | ||||
![]() ![]() ![]() |
Σ | 0..* | PHCoreAddress | Address(es) of the practitioner that are not role specific (typically home address) | ||||
![]() ![]() ![]() |
Σ | 0..1 | code | male | female | other | unknown Binding: AdministrativeGender (required): The gender of a person used for administrative purposes. | ||||
![]() ![]() ![]() |
Σ | 0..1 | date | The date on which the practitioner was born | ||||
![]() ![]() ![]() |
0..* | Attachment | Image of the person | |||||
![]() ![]() ![]() |
0..* | BackboneElement | Certification, licenses, or training pertaining to the provision of care | |||||
![]() ![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() ![]() |
0..* | Identifier | An identifier for this qualification for the practitioner | |||||
![]() ![]() ![]() ![]() |
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. | |||||
![]() ![]() ![]() ![]() |
0..1 | Period | Period during which the qualification is valid | |||||
![]() ![]() ![]() ![]() |
0..1 | Reference(Organization) | Organization that regulates and issues the qualification | |||||
![]() ![]() ![]() |
0..* | CodeableConcept | A language the practitioner can use in patient communication Binding: CommonLanguages (preferred): A human language.
| |||||
![]() |
Path | Conformance | ValueSet | URI | |||
Practitioner.language | preferred | CommonLanguageshttp://hl7.org/fhir/ValueSet/languages From the FHIR Standard
| ||||
Practitioner.gender | required | AdministrativeGenderhttp://hl7.org/fhir/ValueSet/administrative-gender|4.0.1 From the FHIR Standard | ||||
Practitioner.qualification.code | example | v2.0360.2.7(a valid code from http://terminology.hl7.org/CodeSystem/v2-0360|2.7 )http://terminology.hl7.org/ValueSet/v2-2.7-0360 From the FHIR Standard | ||||
Practitioner.communication | preferred | CommonLanguageshttp://hl7.org/fhir/ValueSet/languages From the FHIR Standard
|
Id | Grade | Path(s) | Details | Requirements |
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
Key Elements View
Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
---|---|---|---|---|
![]() ![]() |
0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |
![]() ![]() ![]() |
?!Σ | 0..1 | uri | A set of rules under which this content was created |
![]() ![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored |
![]() ![]() ![]() |
Σ | 0..* | PHCoreAddress | Address(es) of the practitioner that are not role specific (typically home address) |
![]() |
Id | Grade | Path(s) | Details | Requirements |
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
Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() |
---|---|---|---|---|
![]() ![]() |
Practitioner | |||
![]() ![]() ![]() |
0..* | PHCoreAddress | Address(es) of the practitioner that are not role specific (typically home address) | |
![]() |
Snapshot View
Name | Flags | Card. | Type | Description & Constraints Filter: ![]() ![]() | ||||
---|---|---|---|---|---|---|---|---|
![]() ![]() |
0..* | Practitioner | A person with a formal responsibility in the provisioning of healthcare or related services | |||||
![]() ![]() ![]() |
Σ | 0..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 | Additional content defined by implementations | |||||
![]() ![]() ![]() |
?! | 0..* | Extension | Extensions that cannot be ignored | ||||
![]() ![]() ![]() |
Σ | 0..* | Identifier | An identifier for the person as this agent | ||||
![]() ![]() ![]() |
Σ | 0..1 | boolean | Whether this practitioner's record is in active use | ||||
![]() ![]() ![]() |
Σ | 0..* | HumanName | The name(s) associated with the practitioner | ||||
![]() ![]() ![]() |
Σ | 0..* | ContactPoint | A contact detail for the practitioner (that apply to all roles) | ||||
![]() ![]() ![]() |
Σ | 0..* | PHCoreAddress | Address(es) of the practitioner that are not role specific (typically home address) | ||||
![]() ![]() ![]() |
Σ | 0..1 | code | male | female | other | unknown Binding: AdministrativeGender (required): The gender of a person used for administrative purposes. | ||||
![]() ![]() ![]() |
Σ | 0..1 | date | The date on which the practitioner was born | ||||
![]() ![]() ![]() |
0..* | Attachment | Image of the person | |||||
![]() ![]() ![]() |
0..* | BackboneElement | Certification, licenses, or training pertaining to the provision of care | |||||
![]() ![]() ![]() ![]() |
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 | ||||
![]() ![]() ![]() ![]() |
0..* | Identifier | An identifier for this qualification for the practitioner | |||||
![]() ![]() ![]() ![]() |
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. | |||||
![]() ![]() ![]() ![]() |
0..1 | Period | Period during which the qualification is valid | |||||
![]() ![]() ![]() ![]() |
0..1 | Reference(Organization) | Organization that regulates and issues the qualification | |||||
![]() ![]() ![]() |
0..* | CodeableConcept | A language the practitioner can use in patient communication Binding: CommonLanguages (preferred): A human language.
| |||||
![]() |
Path | Conformance | ValueSet | URI | |||
Practitioner.language | preferred | CommonLanguageshttp://hl7.org/fhir/ValueSet/languages From the FHIR Standard
| ||||
Practitioner.gender | required | AdministrativeGenderhttp://hl7.org/fhir/ValueSet/administrative-gender|4.0.1 From the FHIR Standard | ||||
Practitioner.qualification.code | example | v2.0360.2.7(a valid code from http://terminology.hl7.org/CodeSystem/v2-0360|2.7 )http://terminology.hl7.org/ValueSet/v2-2.7-0360 From the FHIR Standard | ||||
Practitioner.communication | preferred | CommonLanguageshttp://hl7.org/fhir/ValueSet/languages From the FHIR Standard
|
Id | Grade | Path(s) | Details | Requirements |
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
Other representations of profile: CSV, Excel, Schematron