HL70287 directs how the receiver should process the problem or goal row attached to it. The seven codes — AD, CO, DE, LI, UC, UN, UP — let a sender say "add this new problem," "correct an earlier one," "delete this row entirely," or "leave it alone" without inventing parallel control segments. HL70287 sits in both PRB-1 and GOL-1, making it one of the few HL7 v2 tables shared across two segments by design.
Purpose
HL70287 expresses the intent of a problem or goal transmission: is this row a new record, a correction to an existing one, a deletion, or a link to another entity. Without an explicit action code, receivers cannot tell whether a PRB segment is the first transmission of a problem or the fifth retransmission of the same problem with a corrected onset date — and getting that wrong silently duplicates problems on the patient chart.
The field is non-repeating and required on every PRB and GOL segment. A blank or missing value is a conformance error, not an implicit "Add."
Where it's used
- PRB-1 Action Code — the canonical home of HL70287 for problem-list updates carried on PPR (Patient Problem) message types.
- GOL-1 Action Code — same code set applied to care-plan goal updates carried on PPG (Patient Goal) message types.
Code list
| Code | Display | Comment/Description |
|---|---|---|
| AD | Add | Create a new problem or goal row on the receiver. |
| CO | Correct | Replace an existing row whose previous transmission contained an error. |
| DE | Delete | Remove a previously transmitted row entirely (entered-in-error, not resolved). |
| LI | Link | Associate this row with another problem, goal, or order entity. |
| UC | Unchanged | Row included for context only; receiver must not modify state. |
| UN | Unlink | Break a previously asserted link between this row and another entity. |
| UP | Update | Modify an existing row's content while preserving its identity. |
Code system OID
- OID:
2.16.840.1.113883.18.131 - Canonical URI:
http://terminology.hl7.org/CodeSystem/v2-0287
The OID is published on the HL7 Terminology server and is the value Vorro emits in CWE.14 when a downstream profile demands OID-bound coded values for action codes.
HL7-defined vs user-defined
HL70287 is HL7-defined. The table number falls inside the HL7-reserved range (HL70001–HL70999), the code set is normative, and receivers must accept all seven values without local extension. Sites that need richer lifecycle semantics (suspend, reactivate, archive) cannot extend HL70287 — they carry the additional state on a separate observation, on PRB-14 Problem Life Cycle Status, or on a workflow note.
Version differences
- v2.3.1 — HL70287 introduced alongside the new PPR and PPG message types with the original code set: AD, CO, DE, LI, UC, UN, UP.
- v2.4 – v2.8.1 — Set frozen at seven codes; no further additions, no deprecations.
- v2.9 — HL70287 unchanged. FHIR cross-mapping is left to the implementation guide because the action verbs collapse into FHIR's resource-lifecycle and PUT/POST semantics rather than a parallel code set.
Common mistakes
- Sending the display word in PRB-1 —
Addinstead ofAD. The field carries the two-character code, not the label. - Treating a blank PRB-1 as an implicit
AD. The field is required; blank is a conformance error and well-behaved engines reject the segment. - Confusing
DE(Delete) with a resolution status.DEmeans "this row was sent in error and should be removed from the chart"; a resolved problem stays on the chart with a resolution date, not a delete. - Using
CO(Correct) for routine edits.COis for fixing a previously transmitted error; a normal clinical update isUP(Update). The distinction matters for audit trails. - Forgetting that
UC(Unchanged) is non-destructive context. Receivers that treatUCasUPwill overwrite the row with the inbound copy and may lose locally edited fields.
Examples
A new problem being added to the patient's problem list:
PRB|AD|20260610120000|781.99^Symptoms involving nervous and musculoskeletal systems^I9C|10456-1|||20260601||||||||N
Correcting a previously transmitted problem whose onset date was wrong:
PRB|CO|20260610130000|250.00^Diabetes mellitus^I9C|10456-2|||20240315||||||||N
A new goal being added on a PPG message:
GOL|AD|20260610120000|GOAL-887^HbA1c below 7.0^L|10456-G1|||20260601|20261201
Same AD for a problem rendered as a FHIR Condition POST snippet:
{
"resourceType": "Condition",
"clinicalStatus": {
"coding": [{
"system": "http://terminology.hl7.org/CodeSystem/condition-clinical",
"code": "active"
}]
},
"code": {
"coding": [{
"system": "http://hl7.org/fhir/sid/icd-9-cm",
"code": "781.99"
}]
},
"subject": { "reference": "Patient/10456" },
"onsetDateTime": "2026-06-01"
}
Mapping failure example — unknown action code:
PRB|RESOLVE|20260610130000|250.00^Diabetes mellitus^I9C|10456-2
RESOLVE is not in HL70287. A conformant engine should NACK the message with AE (Application Error), preserve the original RESOLVE in the audit log, and route it to operations for review rather than guessing whether the sender meant UP or DE.
FHIR mapping
The v2-to-FHIR Implementation Guide does not publish a single normative ConceptMap for HL70287 because the action verbs collapse into FHIR resource-lifecycle and HTTP-verb semantics rather than a parallel code set. The conventional mapping is:
| HL7 v2 (HL70287) | FHIR realization |
|---|---|
| AD | POST Condition or POST Goal (create) |
| UP | PUT Condition/{id} (update preserving id) |
| CO | PUT Condition/{id} plus meta.tag of correction |
| DE | PUT with clinicalStatus = entered-in-error, or HTTP DELETE per IG profile |
| LI | Update of the related resource's reference (e.g. Goal.addresses) |
| UN | Remove the reference from the related resource |
| UC | No FHIR transaction emitted; row sent for context only |
Because there is no single FHIR ValueSet, integrators that need round-trip fidelity preserve the original HL70287 code as a Provenance or extension on the target resource.
Engine considerations
- Required field — PRB-1 and GOL-1 are required. Engines must reject segments with a blank action code rather than defaulting to
AD. - Idempotency on
AD— A retransmittedADagainst a problem that already exists by entity identifier must be treated as a duplicate, not a second add. Engines need a deduplication key (typically PRB-4 Problem Instance ID). - Case sensitivity — HL70287 codes are case-sensitive uppercase.
adis not valid. - Round-trip preservation — When mapping to FHIR resource lifecycle, store the original HL70287 code as a Provenance or extension so the outbound v2 channel can distinguish
UPfromCO.
How Vorro handles HL70287
Vorro validates PRB-1 and GOL-1 against the seven HL70287 codes on ingest and rejects segments with blank or unknown action codes with an AE NACK that names the offending field. Valid codes are forwarded to all downstream channels untouched, and Vorro maintains an internal problem-instance index keyed on PRB-4 so that a retransmitted AD against an existing instance is downgraded to UP with a warning rather than silently creating a duplicate problem on the patient chart.
On outbound, Vorro emits HL70287 as ID for v2.5 and earlier profiles and as CWE with CWE.14 populated for v2.7+ destinations that advertise OID-bound coded values. The original action code is always preserved when round-tripping through FHIR Condition and Goal lifecycle transitions.
