Lab Order Status Update

Fires when a lab order's status changes. targetEntity is the LabOrder. The eventType is lab_order_status_update.

Field guarantees

FieldGuarantee
eventData.newStatus (v1)⚠️ Conditional — present on most paths; the lab-integration (Junction) paths emit a different shape entirely
eventData.performedBy (v1)⚠️ Conditional — only on some paths
v2 lab reference (lab_order_id, lab_order_status)✅ Always present
🚧

eventData shape varies by path. Some firings send {newStatus, performedBy}, others {newStatus}, and the Junction integration emits labOrderId/vitalOrderId-style fields instead. Rely on the lab-order reference; in v2, lab_order_status reflects the current status.

v1 payload (legacy)

Common shape. ownerEntity/targetEntity abbreviated.

{
  "ownerEntityModel": "Patient",
  "targetEntityModel": "LabOrder",
  "deleted": false,
  "ownerEntity": { "id": "pat::40c75435-xxxx-xxxx-xxxx-25220febd9cf", "firstName": "<PATIENT_FIRST_NAME>", "lastName": "<PATIENT_LAST_NAME>", "…": "full patient document" },
  "targetEntity": { "id": "lbo::3293cd49-xxxx-xxxx-xxxx-c8bb185b979a", "status": "received", "…": "full lab order" },
  "eventTitle": "Lab order status updated to received.",
  "eventType": "lab_order_status_update",
  "eventData": {
    "newStatus": "received",
    "performedBy": { "id": "usr::a53e1c4b-xxxx-xxxx-xxxx-a6595eb8c3f4", "role": "admin", "name": "<ADMIN_NAME>" }
  },
  "createdAt": "2025-06-19T16:30:00.000Z",
  "updatedAt": "2025-06-19T16:30:00.000Z",
  "id": "event::7c9338c2-xxxx-xxxx-xxxx-2d10c34b8289"
}
eventData fieldTypeAlways?Notes
newStatusstring⚠️Present on most paths; Junction paths use a different shape
performedByobject⚠️Only on some paths

v2 payload

Sanitized envelope. newStatus aliases to order_status, which is not on the LAB allowlist and is dropped — but lab_order_status (from the lab order) reflects the current status. performedBy is stripped.

{
  "event_type": "lab_order_status_update",
  "event_id": "event::7c9338c2-xxxx-xxxx-xxxx-2d10c34b8289",
  "api_version": "2026-08-09",
  "timestamp": "2026-05-30T14:00:00.000Z",
  "affiliate_id": "aff::81fdb635-xxxx-xxxx-xxxx-3568ba573d7d",
  "patient_id": "pat::40c75435-xxxx-xxxx-xxxx-25220febd9cf",
  "patient_external_id": "ext-patient-123",
  "patient_marketing_consent": false,
  "is_returning_patient": false,
  "lab_order_id": "lbo::3293cd49-xxxx-xxxx-xxxx-c8bb185b979a",
  "lab_order_status": "received"
}
FieldDelivered in v2Notes
Envelope + patient identity
lab_order_id, lab_order_statuslab_order_status carries the current status
newStatus, performedByAlias target order_status not on LAB allowlist; performedBy stripped
📘

Completing the loop on v2. Full lab-order detail — the external requisition id (labOrderId), lab name, results, and a status history with dates — is retrievable via GET /labOrders/:id using the delivered lab_order_id. The endpoint is scoped to your affiliate.