---
title: "Correct the reference intervals on results of an unfinalized lab order, and re-derive the abnormality flags that depended on them (ITE-499). A batch even for a single row: the case this exists for is a whole panel run against the wrong species profile, and correcting 25 analytes one call at a time is 25 chances to half-finish and leave a CBC interpreted against two species at once."
method: POST
path: "/Labs/{id}/reference-intervals"
tags: ["Labs"]
---

# Correct the reference intervals on results of an unfinalized lab order, and re-derive the abnormality flags that depended on them (ITE-499). A batch even for a single row: the case this exists for is a whole panel run against the wrong species profile, and correcting 25 analytes one call at a time is 25 chances to half-finish and leave a CBC interpreted against two species at once.

`POST /Labs/{id}/reference-intervals`

## Path parameters

- `id` string, required

## Request body

- AmendReferenceIntervalsDto — Corrects the reference interval on one or more results of a single unfinalized order, and re-derives their flags (ITE-499). Deliberately a batch even when the caller is fixing one row. The reported case is a whole CBC run against the wrong species profile, where every analyte on the panel needs the same treatment; forcing 25 sequential calls would mean 25 chances to half-finish and leave a panel interpreted against two different species at once. One call, one transaction, one recomputed order status.
  - `reason` string, nullable — Optional shared justification recorded against every correction in this batch. Optional on purpose (see `LabResultAmendment.Reason`) — demanding prose for routine corrections only trains staff to type a placeholder.
  - `amendments` ReferenceIntervalAmendmentDto[]
    - `resultId` string
    - `referenceLow` union — The corrected lower bound. Null clears it, which is a legitimate correction — an interval that never applied to this patient is better absent than wrong. A cleared bound makes the flag underivable, so the result becomes "not reported" rather than being asserted normal.
      - number, double
      - string, double
    - `referenceHigh` union
      - number, double
      - string, double
    - `referenceRange` string, nullable — Optional display override. Left null the server renders the bounds itself, which is what the caller wants unless it is reproducing a laboratory's own wording.

## Response `200`

OK

- LabOrderDto
  - `id` string
  - `patientId` string
  - `patient` LabPatientSummaryDto
    - `id` string
    - `name` string
    - `species` string, nullable
    - `ownerName` string, nullable
  - `orderedById` string, nullable
  - `orderedBy` LabUserSummaryDto
    - `id` string
    - `name` string
    - `role` string, nullable
  - `appointmentId` string, nullable
  - `title` string
  - `testType` string
  - `status` string
  - `resultStatus` string
  - `source` string
  - `externalId` string, nullable
  - `performingLabName` string, nullable — The laboratory behind the Greywind hub that actually ran this, and its id (ITE-552). Null when the order did not come through Greywind, or when the partner directory had not been mirrored when the result landed — the sync backfills the name in that case.
  - `externalPartnerId` string, nullable
  - `submissionUnconfirmedAt` string, date-time, nullable — Set when the submission's outcome was never confirmed with the laboratory (ITE-494) — the order may or may not be live there, and it must never be resubmitted on a guess.
  - `submissionIssue` string, nullable
  - `sampleArrivedAt` string, date-time, nullable — When the laboratory confirmed the sample arrived (ITE-494). Null if they have not.
  - `accessionNumber` string, nullable
  - `collectedAt` string, date-time, nullable
  - `resultsReceivedAt` string, date-time, nullable
  - `reviewedById` string, nullable
  - `reviewedBy` LabUserSummaryDto
    - `id` string
    - `name` string
    - `role` string, nullable
  - `reviewedAt` string, date-time, nullable
  - `summary` string, nullable
  - `reportUrl` string, nullable
  - `priority` string
  - `labPanelId` string, nullable
  - `submissionGroupId` string, nullable — Groups sibling orders created by one external submission (ITE-493). Null for manual orders.
  - `manifestFileId` string, nullable — PatientFile id of the stored requisition manifest, when the order went to an external lab.
  - `requiresPartnerAction` boolean — True while the order still needs partner-hosted pages completed before it is really placed.
  - `results` LabResultDto[]
    - `id` string
    - `labOrderId` string
    - `testName` string
    - `testCode` string, nullable
    - `value` string
    - `numericValue` union
      - number, double
      - string, double
    - `unit` string, nullable
    - `referenceRange` string, nullable
    - `referenceLow` union
      - number, double
      - string, double
    - `referenceHigh` union
      - number, double
      - string, double
    - `flag` string, nullable — The flag name, or null when none was reported and none could be derived (ITE-548). Clients must render null as its own state — not as a badge in either direction.
    - `displayOrder` union
      - integer
      - string, int32
    - `comment` string, nullable
    - `createdAt` string, date-time
    - `supersededAt` string, date-time, nullable — Set when a later report replaced this value (ITE-492). Null means this is the value that currently stands. Superseded rows are returned rather than filtered out on purpose: a clinician who acted on the original needs to see that it changed, not just the new number appearing as if it had always been there.
    - `supersededByResultId` string, nullable — The result that replaced this one, when superseded.
    - `referenceIntervalAmendedAt` string, date-time, nullable — Set when a clinician corrected this result's reference interval (ITE-499). Null means the interval is still exactly what the laboratory or analyzer sent. Clients must surface this. A value flagged against a corrected interval is a different clinical claim from one flagged against the lab's own, and a reader who cannot tell the two apart cannot judge how much to trust the flag.
    - `amendments` LabResultAmendmentDto[] — The correction trail, oldest first. Empty for the overwhelming majority of results.
      - `id` string
      - `originalReferenceLow` union
        - number, double
        - string, double
      - `originalReferenceHigh` union
        - number, double
        - string, double
      - `originalReferenceRange` string, nullable
      - `amendedReferenceLow` union
        - number, double
        - string, double
      - `amendedReferenceHigh` union
        - number, double
        - string, double
      - `amendedReferenceRange` string, nullable
      - `originalFlag` string, nullable — Flag name before the correction, or null when none was ever asserted.
      - `amendedFlag` string, nullable — Flag name after re-derivation, or null when the corrected interval implies none.
      - `reason` string, nullable
      - `amendedById` string, nullable
      - `amendedByName` string, nullable — Always populated — "System" when there is no human author, so the trail cannot render as a blank that reads like a missing record.
      - `createdAt` string, date-time
  - `notes` LabNoteDto[]
    - `id` string
    - `labOrderId` string
    - `authorId` string, nullable — Null for a system-generated note, which has no human author (ITE-550).
    - `authorName` string, nullable — Always populated — "System" when there is no author. Never blank.
    - `content` string
    - `isSystemGenerated` boolean
    - `createdAt` string, date-time
  - `createdAt` string, date-time
  - `updatedAt` string, date-time

## Other responses

- `400` — Bad Request
- `409` — Conflict

## Changes

- **2026-08-26** `a57456aa87b0` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Labs/:id/reference-intervals/post.md)

---

[API](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1.md) · [All operations](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/clinicos/pawthosx-business-api-v1/revisions/061f8d95e1d1/schema)
