PractitionerRole
— maps to 1 OMOP table| OMOP Table | Status | Mapped | |
|---|---|---|---|
|
provider
primary
PractitionerRole enrichment of existing provider row. PractitionerRole does NOT create a new provider row; it adds specialty_concept_id, specialty_source_value, and care_site_id to the row created from the underlying Practitioner resource. One provider row per Practitioner; if multiple PractitionerRoles exist, choose the most recent or most specific.
|
documented | 4 fields | detail → |
PractitionerRole → OMOP Mapping
FHIR PractitionerRole describes a Practitioner in a specific role -- specialty, organization affiliation, location, and period of practice. It does NOT carry identity (name, NPI, gender, birth date); those live on the referenced Practitioner.
In OMOP CDM v5.4, PractitionerRole does NOT produce a new provider row. Instead, it enriches an existing provider row that was created from the underlying Practitioner resource. PractitionerRole supplies the specialty and care_site columns of that row.
Target OMOP Tables
| OMOP Table | Purpose | Required? |
|---|---|---|
provider (enrichment) | Adds specialty_concept_id, specialty_source_value, and care_site_id to the Practitioner's existing provider row | No |
Mapping Strategy
PractitionerRole.practitioner→ resolve to find the existingprovider_id(created from the linked Practitioner).PractitionerRole.specialty[0]→specialty_concept_id(via NUCC, SNOMED, or HL7 v2 Provider Role vocabulary). Code text →specialty_source_value.PractitionerRole.organization→care_site_id(FK tocare_sitepopulated fromOrganization).- One
providerrow per Practitioner. If multiple PractitionerRoles exist for the same Practitioner, choose the most recent (byperiod.end) or most specific specialty. - This is enrichment, not row creation. The base provider row must already exist (or be created on demand) from the Practitioner mapping.
- Processing order: Location → Organization (care_site) → Practitioner (base provider row) → PractitionerRole (specialty + care_site enrichment) → clinical resources.
Reference Implementations
-
fhir-to-omop-demo (jq) -- FHIR → OMOP one-way.
refs/refs/fhir-to-omop-demo/demo/translate/map/PractitionerRole.jq(80 lines): specialty extraction, merge-based approach where PractitionerRole enriches the provider row.care_site_idfromlocation_ids[0].- Status: maintained, good reference for Synthea bundles.
-
omoponfhir-v54 (Georgia Tech, Java) -- Does NOT process PractitionerRole as a separate resource; only the Practitioner resource is mapped. As a result, specialty is not populated by omoponfhir, and
care_site_idis derived fromPractitioner.addressinstead. -
fhir-x-omop (Python) -- No dedicated PractitionerRole mapper. Falls back to
Practitioner.qualification[0].codeforspecialty_source_value.
Status in This Project
Not yet implemented. No provider mapper exists in src/mapper/. PractitionerRole enrichment depends on the Practitioner mapper being implemented first.