Care Coordination and 360 Referrals (Proof of Concept)
0.1.0 - proof-of-concept United Kingdom flag

Care Coordination and 360 Referrals (Proof of Concept) - Local Development build (v0.1.0) built by the FHIR (HL7® FHIR® Standard) Build Tools. See the Directory of published versions

Resource Profile: Practitioner

Official URL: https://fhir.acmeexample.org.uk/PatientCareCoordination/StructureDefinition/Practitioner Version: 0.1.0
Draft as of 2026-11-03 Computable Name: Practitioner

Care Directory HL7 Europe Core - Practitioner, identified by professional registration number or GP code. Copied from the NW GMSA FHIR IG.

Master Record

There is no single national FHIR directory of practitioners.

Element Master record NHS England API
Professional registration (GMC, NMC, HCPC) The professional regulator None national in FHIR (the Healthcare Worker API cannot search by GMC)
NHS user (Care ID / smartcard), SDS user ID Spine Directory Service (SDS) Healthcare Worker FHIR API GET /Practitioner?identifier=https://fhir.nhs.uk/Id/sds-user-id|... (beta)
GP practitioner code (GMP) NHS England (ODS / prescriber data) To confirm

See Care Services Directory (mCSD).

FDP Canonical Data Model

Equivalent FDP Canonical Data Model (CDM) v1.0.0 objects: Care Professional.

Differences:

  • Good fit: professional registration body and entry ID (e.g. GMC) match the practitioner identifier.

The CDM is a downstream persistence model, used here as evidence of what NHS operations record, not as a design source. Mapping by property name - To confirm. See FDP Canonical Data Model Mapping for the full mapping.

Usages:

You can also check for usages in the FHIR IG Statistics

Formal Views of Profile Content

Description Differentials, Snapshots, and other representations.

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Practitioner C 0..* PractitionerEuCore A person with a formal responsibility in the provisioning of healthcare or related services
Constraints: name-or-identifier
Practitioner.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Practitioner.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Practitioner.identifier This element must be supported. This element is included in summaries. 1..* PractitionerIdentifier Practitioner identifier
Practitioner.name This element must be supported. This element is included in summaries. 1..* HumanName Practitioner Name

doco Documentation for this format

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()
name-or-identifier error Practitioner identifier or name SHALL be present identifier.exists() or name.exists()

This structure is derived from PractitionerEuCore

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Practitioner 0..* PractitionerEuCore A person with a formal responsibility in the provisioning of healthcare or related services
Practitioner.identifier This element must be supported. 1..* PractitionerIdentifier Practitioner identifier
Practitioner.name This element must be supported. 1..* HumanName Practitioner Name

doco Documentation for this format
NameFlagsCard.TypeDescription & Constraints    Filter: doco
Practitioner C 0..* PractitionerEuCore A person with a formal responsibility in the provisioning of healthcare or related services
Constraints: name-or-identifier
Practitioner.id This element is included in summaries. 0..1 id Logical id of this artifact
Practitioner.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Practitioner.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Practitioner.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Practitioner.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
Practitioner.contained 0..* Resource Contained, inline Resources
Practitioner.extension 0..* Extension Additional content defined by implementations
Practitioner.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Practitioner.identifier This element must be supported. This element is included in summaries. 1..* PractitionerIdentifier Practitioner identifier
Practitioner.active This element is included in summaries. 0..1 boolean Whether this practitioner's record is in active use
Practitioner.name This element must be supported. This element is included in summaries. 1..* HumanName Practitioner Name
Practitioner.telecom This element is included in summaries. 0..* ContactPoint Contact details for the practitioner
Practitioner.address This element is included in summaries. 0..* AddressEu The snapshot does not say whether the constraints on the root of this type profile have been applied to this element, so assume they have not. Check the type profile directly as well Address(es) of the practitioner that are not role specific (typically home address)
Practitioner.gender This element is included in summaries. 0..1 code male | female | other | unknown
Binding: AdministrativeGender (required): The gender of a person used for administrative purposes.
Practitioner.birthDate This element is included in summaries. 0..1 date The date on which the practitioner was born
Practitioner.photo 0..* Attachment Image of the person
Practitioner.qualification 0..* BackboneElement Certification, licenses, or training pertaining to the provision of care
Practitioner.qualification.id 0..1 string Unique id for inter-element referencing
Practitioner.qualification.extension 0..* Extension Additional content defined by implementations
Practitioner.qualification.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Practitioner.qualification.identifier 0..* Identifier An identifier for this qualification for the practitioner
Practitioner.qualification.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.
Practitioner.qualification.period 0..1 Period Period during which the qualification is valid
Practitioner.qualification.issuer 0..1 Reference(Organization) Organization that regulates and issues the qualification
Practitioner.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.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()
name-or-identifier error Practitioner identifier or name SHALL be present identifier.exists() or name.exists()

This structure is derived from PractitionerEuCore

Summary

Mandatory: 1 element
Must-Support: 2 elements

Structures

This structure refers to these other structures:

Key Elements View

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Practitioner C 0..* PractitionerEuCore A person with a formal responsibility in the provisioning of healthcare or related services
Constraints: name-or-identifier
Practitioner.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Practitioner.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Practitioner.identifier This element must be supported. This element is included in summaries. 1..* PractitionerIdentifier Practitioner identifier
Practitioner.name This element must be supported. This element is included in summaries. 1..* HumanName Practitioner Name

doco Documentation for this format

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()
name-or-identifier error Practitioner identifier or name SHALL be present identifier.exists() or name.exists()

Differential View

This structure is derived from PractitionerEuCore

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Practitioner 0..* PractitionerEuCore A person with a formal responsibility in the provisioning of healthcare or related services
Practitioner.identifier This element must be supported. 1..* PractitionerIdentifier Practitioner identifier
Practitioner.name This element must be supported. 1..* HumanName Practitioner Name

doco Documentation for this format

Snapshot ViewView

NameFlagsCard.TypeDescription & Constraints    Filter: doco
Practitioner C 0..* PractitionerEuCore A person with a formal responsibility in the provisioning of healthcare or related services
Constraints: name-or-identifier
Practitioner.id This element is included in summaries. 0..1 id Logical id of this artifact
Practitioner.meta This element is included in summaries. 0..1 Meta Metadata about the resource
Practitioner.implicitRules This element is a modifier element. This element is included in summaries. 0..1 uri A set of rules under which this content was created
Practitioner.language 0..1 code Language of the resource content
Binding: CommonLanguages (preferred): A human language.
Additional BindingsPurpose
AllLanguages Max Binding
Practitioner.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
Practitioner.contained 0..* Resource Contained, inline Resources
Practitioner.extension 0..* Extension Additional content defined by implementations
Practitioner.modifierExtension This element is a modifier element. 0..* Extension Extensions that cannot be ignored
Practitioner.identifier This element must be supported. This element is included in summaries. 1..* PractitionerIdentifier Practitioner identifier
Practitioner.active This element is included in summaries. 0..1 boolean Whether this practitioner's record is in active use
Practitioner.name This element must be supported. This element is included in summaries. 1..* HumanName Practitioner Name
Practitioner.telecom This element is included in summaries. 0..* ContactPoint Contact details for the practitioner
Practitioner.address This element is included in summaries. 0..* AddressEu The snapshot does not say whether the constraints on the root of this type profile have been applied to this element, so assume they have not. Check the type profile directly as well Address(es) of the practitioner that are not role specific (typically home address)
Practitioner.gender This element is included in summaries. 0..1 code male | female | other | unknown
Binding: AdministrativeGender (required): The gender of a person used for administrative purposes.
Practitioner.birthDate This element is included in summaries. 0..1 date The date on which the practitioner was born
Practitioner.photo 0..* Attachment Image of the person
Practitioner.qualification 0..* BackboneElement Certification, licenses, or training pertaining to the provision of care
Practitioner.qualification.id 0..1 string Unique id for inter-element referencing
Practitioner.qualification.extension 0..* Extension Additional content defined by implementations
Practitioner.qualification.modifierExtension This element is a modifier element. This element is included in summaries. 0..* Extension Extensions that cannot be ignored even if unrecognized
Practitioner.qualification.identifier 0..* Identifier An identifier for this qualification for the practitioner
Practitioner.qualification.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.
Practitioner.qualification.period 0..1 Period Period during which the qualification is valid
Practitioner.qualification.issuer 0..1 Reference(Organization) Organization that regulates and issues the qualification
Practitioner.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.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()
name-or-identifier error Practitioner identifier or name SHALL be present identifier.exists() or name.exists()

This structure is derived from PractitionerEuCore

Summary

Mandatory: 1 element
Must-Support: 2 elements

Structures

This structure refers to these other structures:

 

Other representations of profile: CSV, Excel, Schematron