PractitionerRole — Practitioner's role in an organisation
The central join of health directories. A Practitioner (the personal identity) can hold several roles in several organisations at several addresses with several specialties. PractitionerRole captures every combination.
Purpose of the resource
A single practitioner — for instance a Parisian cardiologist — can be employed by APHP
for consultations at Cochin Hospital three days a week, work in private practice on
Tuesdays in Saint-Cloud and supervise a telemedicine platform on Saturday mornings. Three
roles, one Practitioner identity. Each role is modelled by a distinct
PractitionerRole.
PractitionerRole carries the practice context: employing organisation, physical location(s), specialty(ies), availabilities, role-specific identifiers (employer-side badge number, service code), technical endpoint for communication.
Key fields
| Field | Type | Cardinality | Role |
|---|---|---|---|
identifier | Identifier[] | 0..* | Role-specific identifiers. |
active | boolean | 0..1 | Active role. |
period | Period | 0..1 | Practice period. |
practitioner | Reference(Practitioner) | 0..1 | Practitioner. |
organization | Reference(Organization) | 0..1 | Employer organisation. |
code | CodeableConcept[] | 0..* | Role (doctor, nurse, midwife, dentist…). |
specialty | CodeableConcept[] | 0..* | Specialties. |
location | Reference(Location)[] | 0..* | Practice locations. |
healthcareService | Reference(HealthcareService)[] | 0..* | Attached services. |
telecom | ContactPoint[] | 0..* | Role-specific work contact info. |
availableTime | BackboneElement[] | 0..* | Opening hours. |
notAvailable | BackboneElement[] | 0..* | Absences (leave, training…). |
availabilityExceptions | string | 0..1 | Narrative exceptions. |
endpoint | Reference(Endpoint)[] | 0..* | Technical endpoints. |
JSON example
Dr Jones, cardiologist at Cochin Hospital, consultation Mon-Wed-Fri 9-13:
{
"resourceType": "PractitionerRole",
"id": "dr-jones-cardio-cochin",
"identifier": [{
"system": "http://annuaire.sante.fr/role",
"value": "PR-RPPS10003629305-CARDIO-COCHIN"
}],
"active": true,
"period": { "start": "2020-09-01" },
"practitioner": { "reference": "Practitioner/dr-jones" },
"organization": { "reference": "Organization/hop-cochin" },
"code": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/practitioner-role",
"code": "doctor",
"display": "Doctor"
}]
}],
"specialty": [{
"coding": [{
"system": "http://snomed.info/sct",
"code": "394579002",
"display": "Cardiology"
}]
}],
"location": [{ "reference": "Location/cochin-cardio-floor" }],
"healthcareService": [{ "reference": "HealthcareService/cardio-consult" }],
"telecom": [{
"system": "phone",
"value": "+33 1 58 41 22 35",
"use": "work"
}, {
"system": "email",
"value": "dr.jones@aphp.fr",
"use": "work"
}],
"availableTime": [{
"daysOfWeek": ["mon", "wed", "fri"],
"availableStartTime": "09:00:00",
"availableEndTime": "13:00:00"
}],
"notAvailable": [{
"description": "Annual leave",
"during": { "start": "2026-07-15", "end": "2026-08-15" }
}],
"endpoint": [{ "reference": "Endpoint/aphp-fhir-prod" }]
} Typical use cases
- Health directories: ANS Annuaire Santé (RPPS+, ADELI), NPPES (US), NHS Spine, NL.
- Appointment booking: filter practitioners by specialty + location + time slot.
- Multi-employer referencing: a practitioner working in academic + private + telemedicine settings.
- Inter-system communication: message routing via
endpoint. - Strong prescriber identity: every prescription references the precise PractitionerRole (not just the Practitioner).
Common pitfalls
- No
practitioner:practitioneris 0..1 but in practice always required for business use. - Practitioner / PractitionerRole confusion: Practitioner = identity, PractitionerRole = practice. Any contextual data (organisation, location, specialty, availability) goes into PractitionerRole.
- Duplicate specialty: listing the same specialty in
codeANDspecialtyblurs semantics.code= role type,specialty= medical specialty. - No
period: an expired role left open pollutes directory search. Always closeperiod.endwhen employment ends. - Role phone mixed with personal phone: personal telecoms belong on Practitioner, professional telecoms belong on PractitionerRole.
Related resources
- Practitioner — practitioner identity.
- Organization — employer.
- Location — practice location.
- HealthcareService — attached service.
- Schedule — technical calendar.
- Endpoint — technical endpoint.
See also: Practitioner — identity and HealthcareService — the service.