Abnormal Lab Result Received

Fires when an abnormal lab result is received and abnormal-follow-up is enabled for the affiliate. targetEntity is the LabOrder. The eventType is lab_order_abnormal_result_received.

Field guarantees

FieldGuarantee
eventData.labOrderId, labName, interpretation, externalOrderId, providerEventType, providerOrderStatus, latestProviderEventStatus, reportedAt, webhookPayload (v1 eventData)✅ Always present when the event fires
Event firing⚠️ Conditional — only when the affiliate has abnormal-follow-up enabled
interpretation (critical vs abnormal) in v2⛔ Not delivered as a field — but the event type already identifies which result fired, so no signal is lost
v2 lab reference (lab_order_id, lab_order_status)✅ Always present
🚧

interpretation is v1-only. As with critical results, v2 cannot distinguish abnormal from critical. Keep this webhook on v1 if you need interpretation.

v1 payload (legacy)

Identical shape to Critical Lab Result Received, with interpretation: "abnormal". ownerEntity/targetEntity abbreviated.

{
  "ownerEntityModel": "Patient",
  "targetEntityModel": "LabOrder",
  "deleted": false,
  "ownerEntity": { "id": "pat::50c75435-xxxx-xxxx-xxxx-25220febd9cf", "firstName": "<PATIENT_FIRST_NAME>", "lastName": "<PATIENT_LAST_NAME>", "…": "full patient document" },
  "targetEntity": { "id": "lbo::3162cd49-xxxx-xxxx-xxxx-c8bb185b979a", "status": "completed", "labOrderId": "OIFUJO49W5", "…": "full lab order" },
  "eventTitle": "Abnormal Lab Result From Quest Diagnostics",
  "eventDescription": "An abnormal lab result was reported...",
  "eventType": "lab_order_abnormal_result_received",
  "eventData": {
    "labOrderId": "OIFUJO49W5",
    "labName": "Quest Diagnostics",
    "interpretation": "abnormal",
    "externalOrderId": "ext-order-88213",
    "providerEventType": "order.completed",
    "providerOrderStatus": "completed",
    "latestProviderEventStatus": "completed",
    "reportedAt": "2025-06-19T16:40:55.000Z",
    "webhookPayload": { "event_type": "order.completed", "data": { "…": "raw provider payload" } }
  },
  "_id": "event::5b2b525f-xxxx-xxxx-xxxx-e79814e61bb2",
  "createdAt": "2025-06-19T16:41:12.108Z",
  "updatedAt": "2025-06-19T16:41:12.108Z",
  "id": "event::5b2b525f-xxxx-xxxx-xxxx-e79814e61bb2"
}
eventData fieldTypeAlways?Notes
interpretationstringabnormal for this event
(all other fields)mixedSame as the critical-result event

v2 payload

Sanitized envelope. Note the two lab identifiers are different values: v1 eventData.labOrderId carries the lab's external order number (e.g. OIFUJO49W5), while v2 lab_order_id is TelegraMD's internal lab-order reference (lbo::…), resolved from the event's target entity — it is a resolution, not a rename. The rest of eventData isn't on the LAB allowlist.

{
  "event_type": "lab_order_abnormal_result_received",
  "event_id": "event::5b2b525f-xxxx-xxxx-xxxx-e79814e61bb2",
  "api_version": "2026-08-09",
  "timestamp": "2026-05-30T14:00:00.000Z",
  "affiliate_id": "aff::81253635-xxxx-xxxx-xxxx-c068ba573d7d",
  "patient_id": "pat::50c75435-xxxx-xxxx-xxxx-25220febd9cf",
  "patient_external_id": "ext-patient-123",
  "patient_marketing_consent": false,
  "is_returning_patient": true,
  "lab_order_id": "lbo::3162cd49-xxxx-xxxx-xxxx-c8bb185b979a",
  "lab_order_status": "completed"
}
FieldDelivered in v2Notes
Envelope + patient identity
lab_order_id, lab_order_statusResolved from the lab order
interpretation, labName, provider metadataNot on the allowlist
📘

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.