---
title: "Add a result to a lab order"
method: POST
path: "/Labs/{id}/results"
tags: ["Labs"]
---

# Add a result to a lab order

`POST /Labs/{id}/results`

## Request

- Base URL: `https://api.clinicos.vet/backend/business`
- URL: `https://api.clinicos.vet/backend/business/Labs/{id}/results`
- Auth: HTTP bearer
- TypeScript: <https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/docs/Labs/:id/results/post.ts> (a function with typed inputs; its response is checked against the schema)

## Path parameters

- `id` string, required

## Request body

- CreateLabResultDto
  - `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
  - `displayOrder` union
    - integer
    - string, int32
  - `comment` string, nullable

## Response `200`

OK

- 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

## Changes

- **2026-08-26** `a57456aa87b0`: 3 breaking, 12 info
  - the response property `flag` became nullable for the status `200` (media type: text/plain)
  - the response property `flag` became nullable for the status `200` (media type: application/json)
  - the response property `flag` became nullable for the status `200` (media type: text/json)
  - added the optional property `amendments` to the response with the `200` status (media type: text/plain)
  - …11 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Labs/:id/results/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.dev/clinicos/apis/pawthosx-business-api-v1/revisions/099cf36186e0?raw)
