Written and maintained by CASRAI Editorial Board
Last updated
The FHIR Practitioner (Practitioner) and FHIR PractitionerRole (PractitionerRole) resources are the two foundational administrative registries in HL7 FHIR R4 used to represent healthcare professionals, their individual credentials and National Provider Identifiers (NPIs), and the specific clinical specialties, locations, schedules, and electronic endpoints they hold across different healthcare organizations.
In health information exchange, EHR scheduling, and public payer provider directories governed by the CMS Interoperability and Patient Access Final Rule, understanding the normalization boundary between Practitioner, PractitionerRole, and FHIR Organization prevents duplicate provider records and misrouted clinical messages.
What Is the Difference Between FHIR Practitioner and PractitionerRole?
When healthcare software engineers ask what is the difference between FHIR Practitioner and PractitionerRole, the answer lies in relational database normalization: separating the person (whose identity, birth date, medical school degree, and individual NPI remain constant) from the organizational context in which that person practices:
Practitioner (1) <======== practitioner ======== (0..*) PractitionerRole (N)
[The Individual Person] [The Contextual Role]
- identifier (Type 1 NPI, DEA, State License) - organization: Reference(Organization)
- name, birthDate, gender - location[]: Reference(Location)
- qualification[] (MD, DO, NP, Board Certs) - code[] (Provider Role) & specialty[] (NUCC)
- communication[] (Languages spoken) - availableTime[] & telecom[] (Clinic Phone)
- endpoint[]: Reference(Endpoint)
- `Practitioner` (The Individual Person): Represents any person directly or indirectly involved in provisioning healthcare or clinical research—including physicians, nurse practitioners, physician assistants, pharmacists, nurses, physical therapists, medical scribes, and clinical trial investigators. Regardless of how many hospitals or clinics a physician works at, there should be only one
Practitionerresource for that individual. - `PractitionerRole` (The Contextual Assignment): Represents the join table linking one
Practitionerto oneOrganization, one or more physical or virtualLocationinstances, specificHealthcareServiceofferings, clinical specialties, office hours (availableTime), clinic-specific phone/fax numbers (telecom), and electronic health exchange addresses (endpoint). For example, a cardiologist who sees outpatients at a university clinic on Mondays and reads echocardiograms at a community hospital on Thursdays is modeled as onePractitionerlinked to twoPractitionerRoleresources.
Side-by-Side Comparison: `Practitioner` vs `PractitionerRole`
| Attribute Category | Practitioner Resource |
PractitionerRole Resource |
|---|---|---|
| Core Entity | The individual human clinician or staff member | The clinician’s specific position/contract at an organization & location |
| Primary Identifier | Individual Type 1 NPI (http://hl7.org/fhir/sid/us-npi), state license, DEA |
Organizational staff/employee role ID or payer network participation ID |
| Credentials vs Specialties | qualification[]: degrees (MD, PharmD), state licenses, board certifications |
code[] (role type) and specialty[] (NUCC taxonomy practiced in this role) |
| Contact Details (`telecom`) | Personal/direct clinician contact (rarely exposed publicly) | Clinic appointment desk phone, departmental fax, and practice email |
| Scheduling & Availability | Not stored on Practitioner |
availableTime[] (daysOfWeek, opening/closing times) & notAvailable[] |
| Electronic Routing | Not stored on Practitioner |
endpoint[] (Reference(Endpoint) for Direct Secure Messaging / FHIR APIs) |
How Are NPI and Taxonomy Codes Represented in FHIR Practitioner?
Architects implementing US Core FHIR (STU 6.1.0) and CMS directory APIs must follow strict URI and OID bindings when encoding how are NPI and taxonomy codes represented in FHIR Practitioner and PractitionerRole:
1. Individual (Type 1) NPI on `Practitioner.identifier`
In the United States, clinicians are issued a 10-digit Entity Type 1 National Provider Identifier by CMS NPPES (see how to apply for an NPI number). Under the US Core Practitioner Profile, Practitioner.identifier slices the NPI using the canonical system URI http://hl7.org/fhir/sid/us-npi and validates the 10-digit string against the ISO/IEC 7812 Luhn check-digit algorithm (with the US healthcare prefix 80840):
{
"resourceType": "Practitioner",
"id": "practitioner-cardiology-01",
"identifier": [
{
"system": "http://hl7.org/fhir/sid/us-npi",
"value": "1234567893"
}
],
"active": true,
"name": [
{
"family": "chen",
"given": ["Elena"],
"suffix": ["MD", "FACC"]
}
],
"qualification": [
{
"code": {
"coding": [
{
"system": "http://terminology.hl7.org/CodeSystem/v2-0360",
"code": "MD",
"display": "Doctor of Medicine"
}
]
}
}
]
}
2. NUCC Healthcare Provider Taxonomy Codes on `PractitionerRole.specialty`
While Practitioner.qualification records a clinician’s degrees and licenses, the specific clinical specialty practiced at a given facility is encoded on PractitionerRole.specialty and PractitionerRole.code using the National Uniform Claim Committee (NUCC) Health Care Provider Taxonomy Code Set (10-character alphanumeric codes ending in X; see NPI taxonomy codes):
- Canonical FHIR System URI:
http://nucc.org/provider-taxonomy(HL7 OID2.16.840.1.113883.6.101). - Example NUCC Bindings: Internal Medicine (
207R00000X), Cardiovascular Disease (207RC0000X), Family Medicine (207Q00000X), Nurse Practitioner — Family (363LF0000X), and Physician Assistant (363A00000X).
How Do Plan-Net Provider Directories Use PractitionerRole?
To understand how do Plan-Net provider directories use PractitionerRole, examine the HL7 Da Vinci PDEX Plan-Net Implementation Guide, which is cited by CMS to enforce the Public Provider Directory API mandate (`42 CFR § 438.242`, `42 CFR § 422.111`) for Medicare Advantage, Medicaid, CHIP, and Qualified Health Plan (QHP) issuers:
- Payer Network Participation (`network` Extension): Because a physician may participate in a health plan’s PPO network at Clinic A (`PractitionerRole/A`) but be out-of-network at Hospital B (`PractitionerRole/B`), Plan-Net attaches the
http://hl7.org/fhir/us/davinci-pdex-plan-net/StructureDefinition/network-referenceextension toPractitionerRole(pointing to a Plan-NetOrganizationof typentwk), never to the basePractitioner. - Accepting New Patients (`newpatients` Extension): Plan-Net adds the complex
newpatientsextension toPractitionerRole, specifying a booleanacceptingPatientsflag (`true`/`false` or existing patients only) per insurance network. - Interoperable Endpoint Discovery (`PractitionerRole.endpoint`): Both US Core PractitionerRole and Da Vinci Plan-Net require MustSupport on
PractitionerRole.endpoint(Reference(Endpoint)), enabling referring EHRs and FHIR Patient apps to discover the provider’s Direct Secure Messaging address or SMART on FHIR R4 server URL for automated closed-loop referrals and medical record exchange.
Frequently Asked Questions
What is the difference between FHIR Practitioner and PractitionerRole?
Practitioner represents the individual person (their legal name, demographics, Type 1 NPI, state licenses, and degrees), whereas PractitionerRole represents the contextual assignment linking that Practitioner to a specific Organization, practice Location, clinical specialty, schedule of available hours, and electronic Endpoint. One Practitioner can have multiple PractitionerRole resources across different hospitals or clinics.
How are NPI and taxonomy codes represented in FHIR Practitioner?
An individual clinician’s 10-digit Type 1 National Provider Identifier (NPI) is encoded in Practitioner.identifier using the canonical system URI http://hl7.org/fhir/sid/us-npi. Their 10-character alphanumeric National Uniform Claim Committee (NUCC) Healthcare Provider Taxonomy code (such as 207RC0000X for Cardiovascular Disease) is encoded in PractitionerRole.specialty (and/or PractitionerRole.code) using the system URI http://nucc.org/provider-taxonomy.
How do Plan-Net provider directories use PractitionerRole?
The HL7 Da Vinci PDEX Plan-Net Implementation Guide uses PractitionerRole as the core query target for CMS-mandated payer provider directory APIs. Plan-Net profiles PractitionerRole with extensions for insurance network participation (network-reference), whether the clinician is accepting new patients at that location (newpatients), NUCC specialty taxonomy codes, and electronic Endpoint references.







