PractitionerRole Profile¶
| Canonical | ../StructureDefinition/nexus-emr-core-practitionerrole |
|---|---|
| Status | draft · 1.26.0 |
| Base | PractitionerRole (constraint) |
| Source | FSH · JSON |
Represents a practitioner's role at an organization/location -- the tenant-scoped access/role binding (the "actor"). Links a Practitioner to an Organization and Location(s) and carries the clinical role code(s). A practitioner may have one or more PractitionerRoles, including more than one active at the same organization. This is NOT the EMR user: the user's stable identity is the Practitioner (which carries the user-account identifier). Use PractitionerRole to differentiate providers by role (e.g. list only doctors, route a task to a nurse), not to represent the login.
TypedFhir API / Pydantic schema
The typed accessor surface PractitionerRole exposes for PractitionerRole — generated from this IG's compiled profile; each typed accessor has a validating raw-FHIR twin (xRaw) where marked. The three ports are parity-enforced.
The AI-facing shape: from typed_fhir.facade.generated.schemas import PractitionerRoleSchema — model_json_schema() is a structured-output / tool definition; instantiating validates an extraction. Generated source.
class PractitionerRoleSchema(BaseModel):
"""AI-facing shape of the PractitionerRole profile: the facade's typed accessor
surface (curated + salient fields) as a pydantic model. `model_json_schema()` is a
structured-output / tool schema; instantiating validates an extraction."""
model_config = ConfigDict(extra="forbid")
active: bool | None = Field(
None,
description=(
"Whether this role assignment is currently in active use. Whether this "
"PractitionerRole (role/assignment binding) is currently in active use. When absent, "
"assume active. Note: If this value is false, you may refer to the period to see when "
"the role was in active use. If there is no period specified, no inference can be "
"made about when it was active. PractitionerRole.active — 0..1"
),
)
period: dict | None = Field(
None,
description=(
"Period during which the practitioner is authorized to act in this role. The period "
"during which the person is authorized to act in this role at this "
"organization/location. PractitionerRole.period — 0..1"
),
)
practitioner: Reference | None = Field(
None,
description=(
"Reference to the practitioner. Reference to the Practitioner resource representing "
"the person in this role. Note: Must reference a valid NexusEmrCorePractitioner "
"resource. PractitionerRole.practitioner — 1..1"
),
)
organization: Reference | None = Field(
None,
description=(
"Organization where the role is performed. The organization where the practitioner "
"performs this role. Note: Should reference a valid NexusEmrCoreOrganization resource "
"when known. PractitionerRole.organization — 0..1"
),
)
code: Concept | None = Field(
None,
description=(
"Clinical role(s) (doctor, nurse, MOA, ...) -- binds the Clinical Roles dropdown. The "
"clinical role(s) this practitioner performs in this binding (e.g., doctor, nurse, "
"MOA, receptionist, echo tech). Used throughout the EMR to differentiate providers "
"(list only doctors, route a task to a nurse, workflow routing echo-tech -> doctor -> "
"nuclear-doctor). Distinct from access permissions, which are managed in the auth "
"layer (Auth0), not here. RECOMMENDED: the Nexus clinical-roles ValueSet (extensible "
"-- add local roles as needed) OPTIONAL: additional standard terminology (SNOMED CT) "
"or raw EMR codes for source preservation Where this code was mapped from a source "
"system's own vocabulary, carry the raw coding alongside the mapped one, flagged "
"`userSelected = true`. See [Carrying the raw "
"code](../guide/patterns/raw-codes.md). Note: A person may "
"have more than one role. PractitionerRole.code — 0..*. codes (extensible): admin | "
"allied-health | biller | doctor | documentator | echo-tech | moa | nuclear-doctor | "
"…"
),
)
specialty: Concept | None = Field(
None,
description=(
"Practitioner specialty with raw code support. Specific specialty of the practitioner "
"(e.g., cardiology, orthopedics, family medicine). RECOMMENDED: SNOMED CT or other "
"standard terminology when available OPTIONAL: Raw EMR codes for source system "
"preservation. Note: Where this code was mapped from a source system's own "
"vocabulary, carry the raw coding alongside the mapped one, flagged `userSelected = "
"true`. See [Carrying the raw "
"code](../guide/patterns/raw-codes.md). "
"PractitionerRole.specialty — 0..*. codes (preferred): 394539006 | 394576009 | "
"394577000 | 394578005 | 394579002 | 394580004 | 394581000 | 394582007 | …"
),
)
location: Reference | None = Field(
None,
description=(
"Location(s) where the practitioner provides care. The location(s) at which this "
"practitioner provides care in this role. Note: Can reference multiple "
"NexusEmrCoreLocation resources for practitioners working at multiple sites. "
"PractitionerRole.location — 0..*"
),
)