HL70912 is the HL7 v2 code table for participation — the role a person, organization, or device plays in relation to whatever the parent segment is describing (an encounter, an order, an observation, a procedure). It is carried in PRT-4 Participation on the PRT (Participation Information) segment that was added in HL7 v2.7. HL70912 is the newer of two overlapping provider-role tables in v2: HL70912 lives on PRT, and the older HL70443 lives on ROL. Sites that have migrated from ROL to PRT use HL70912; sites that still emit ROL stay on HL70443. Many sites emit both.
Purpose
HL70912 lets sending systems express who participated and how on any segment that supports PRT — encounters, orders, results, procedures, specimens. Unlike the older ROL/HL70443 pair, which was tied to encounter-style messages, PRT/HL70912 is reusable across the standard, so the same code (AT = Attending Provider) can describe the attending on an encounter, the attending on a procedure, and the attending on a discharge summary in a consistent way. Receivers use the code to drive care-team displays, route work to the right inbox, and populate FHIR Encounter.participant.type or PractitionerRole.code.
Where it's used
- PRT-4 Participation — the canonical home of HL70912, added in v2.7 and present on most v2.7+ event messages.
- PRT segments may appear under PID, PV1, ORC, OBR, OBX, and others — PRT-4 carries HL70912 in every case.
- Note: ROL-3 on the older ROL segment uses HL70443, not HL70912. The two tables overlap but are not identical (HL70912 adds
OPOperating Practitioner; HL70443 hasFHCPFamily Health Care Professional which HL70912 does not).
Code list
| Code | Display | Comment/Description |
|---|---|---|
| AP | Admitting Provider | Provider who admitted the patient. Equivalent to HL70443 AD. |
| AT | Attending Provider | Provider with primary clinical responsibility. Shares the AT code with HL70443 — same meaning. |
| CP | Consulting Provider | Provider consulted for a specific question or service. Shares the CP code with HL70443. |
| OP | Operating Practitioner | Provider performing a procedure or operation. New in HL70912; no HL70443 equivalent. |
| PP | Primary Care Provider | Patient's primary care provider, typically external. Shares the PP code with HL70443. |
| RP | Referring Provider | Provider who referred the patient. Shares the RP code with HL70443. |
| RT | Referred to Provider | Provider the patient was referred to. Shares the RT code with HL70443. |
Code system OID
- OID:
2.16.840.1.113883.18.404 - Canonical URI:
http://terminology.hl7.org/CodeSystem/v2-0912
The OID resolves on the HL7 Terminology server. PRT-4 is CWE from inception, so Vorro emits this OID in CWE.14 by default on outbound PRT segments.
HL7-defined vs user-defined
HL70912 is user-defined. The seven published codes above are the suggested set; sites are permitted to add local roles (assistant surgeon, anesthesiologist, scrub nurse, case manager) and many do. Receivers must accept site-local codes and surface unknowns for curation rather than NAK the PRT segment.
Version differences
- Pre-v2.7 — HL70912 does not exist. Provider role lives on ROL-3 bound to HL70443.
- v2.7 — PRT segment introduced; HL70912 published with seven codes (AP, AT, CP, OP, PP, RP, RT).
- v2.7.1 – v2.8 — Set unchanged; usage spread across non-encounter segments (orders, observations).
- v2.8.1 — Set frozen at seven codes; HL7 guidance recommends new implementations use PRT/HL70912 rather than ROL/HL70443, though both remain valid.
Common mistakes
- Looking up
AP(Admitting Provider) in HL70443 and rejecting the message when it is not found.APis HL70912 only; the HL70443 equivalent isAD. Receivers must bind PRT-4 to HL70912 and ROL-3 to HL70443 separately. - Treating HL70912 as a strict superset of HL70443. It is not —
FHCP(Family Health Care Professional) exists in HL70443 but not in HL70912. - Sending HL70443 codes on PRT-4.
ADwill not validate on PRT-4 because the field binds HL70912; the correct code isAP. - Mapping
OP(Operating Practitioner) to FHIREncounter.participant.type=ATND.OPbelongs on the procedure performer (Procedure.performer.function), not on the encounter attender. - Failing to keep ROL and PRT aligned when both are emitted for the same encounter. A site that says
ATon ROL andAPon PRT for the same provider has a data-quality problem; integration engines should reconcile rather than silently pick one.
Examples
A PRT segment listing the attending provider on a result:
PRT|1|AD||AT^Attending Provider^HL70912|1234^SMITH^JOHN^A^^^MD^^NPI^L^^^NPI||20260612083000
PRT listing the operating practitioner on a procedure:
PRT|2|AD||OP^Operating Practitioner^HL70912|5678^GREEN^ALICE^B^^^MD^^NPI^L^^^NPI||20260612090000
Same AT value translated to a FHIR Encounter.participant snippet:
{
"resourceType": "Encounter",
"id": "enc-10456",
"participant": [{
"type": [{
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v2-0912",
"code": "AT",
"display": "Attending Provider"
}]
}],
"individual": { "reference": "Practitioner/1234" }
}]
}
OP (Operating Practitioner) on a procedure performer:
{
"resourceType": "Procedure",
"id": "proc-77",
"performer": [{
"function": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/v2-0912",
"code": "OP",
"display": "Operating Practitioner"
}]
},
"actor": { "reference": "Practitioner/5678" }
}]
}
Mapping failure example — wrong table:
PRT|3|AD||AD^Admitting Provider^HL70912|1234^SMITH^JOHN^A^^^MD^^NPI^L^^^NPI||20260612083000
AD is the HL70443 code for Admitting. On PRT-4 the receiver should look up AD in HL70912, not find it (HL70912 uses AP), and surface the mismatch — either by curating an inbound mapping that rewrites AD → AP for this source, or by NAK-with-warning depending on conformance posture.
FHIR mapping
The HL7 v2-to-FHIR Implementation Guide publishes ConceptMap-table-hl70912-to-practitioner-role. Most codes preserve their HL70912 value as a Coding on Encounter.participant.type or PractitionerRole.code; OP routes to Procedure.performer.function instead.
| HL7 v2 (HL70912) | FHIR target |
|---|---|
| AP | Encounter.participant.type — ADM (admitter) |
| AT | Encounter.participant.type — ATND (attender) |
| CP | Encounter.participant.type — CON (consultant) |
| OP | Procedure.performer.function — PRF (performer) |
| PP | Patient.generalPractitioner (out-of-encounter) |
| RP | Encounter.participant.type — REF (referrer) |
| RT | (typically Patient.generalPractitioner — outbound referral) |
Engine considerations
- Bind by field, not by code shape — ROL-3 binds HL70443; PRT-4 binds HL70912. Do not collapse the two tables into a single lookup.
- Cross-table reconciliation — When both ROL and PRT are present for the same encounter, reconcile HL70443 and HL70912 against each other and flag disagreements.
- OP routing —
OPbelongs on the procedure performer, not the encounter attender. A naive engine that always maps PRT-4 toEncounter.participant.typewill mis-place operating practitioners. - User-defined — never NAK — Preserve unknown codes and surface for curation.
How Vorro handles HL70912
Vorro accepts any value in PRT-4, normalizes case, and binds the lookup against HL70912 specifically (not HL70443). Codes that match the published set flow to FHIR per the IG ConceptMap, with OP routed to Procedure.performer.function and PP/RT routed to Patient.generalPractitioner rather than Encounter.participant. Unknown codes are preserved verbatim and surfaced for curation.
When the same source emits both ROL and PRT, Vorro reconciles HL70443 (ROL-3) and HL70912 (PRT-4) per provider and flags any mismatch — for example, ROL says AD but PRT says AP for the same provider on the same encounter is correct (both encode admitting), but ROL says AT and PRT says RP is a contradiction that surfaces for operator review.
Related pages
- PRT segment — Participation Information
- HL70443 code table — Provider Role (ROL-3)
- HL70360 code table — Degree / Licence / Certificate
