---
title: "Get all lab orders with optional filtering"
method: GET
path: "/Labs"
tags: ["Labs"]
---

# Get all lab orders with optional filtering

`GET /Labs`

## Request

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

## Query parameters

- `patientId` string
- `status` string
- `resultStatus` string
- `testType` string
- `source` string
- `search` string
- `skip` union
  - integer
  - string, int32
- `take` union
  - integer
  - string, int32
- `orderedById` string

## Response `200`

Paginated list of lab orders

- LabOrderListResponseDto
  - `data` 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
    - `reportFileId` string, nullable: PatientFile id of the stored report PDF, presigned on demand via `GET labs/{id}/report-url` (Business API). Wins over string? LabOrderDto.ReportUrl when both are set — older orders still carry an expired presigned URL there.
    - `priority` string
    - `labPanelId` string, nullable
    - `submissionGroupId` string, nullable: Groups sibling orders created by one external submission (ITE-493). Null for manual orders.
    - `externalClinicId` string, nullable: The lab clinic ID the order was submitted under, which identifies the laboratory. Add-on tests must come from that lab's catalog. Null for manual orders and older Greywind 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
  - `totalCount` union
    - integer
    - string, int32

## Changes

- **2026-10-11** `f7ab358172d0`: 3 info
  - added the optional property `data/items/externalClinicId` to the response with the `200` status (media type: text/plain)
  - added the optional property `data/items/externalClinicId` to the response with the `200` status (media type: application/json)
  - added the optional property `data/items/externalClinicId` to the response with the `200` status (media type: text/json)
- **2026-09-30** `d58b40cfca93`: 3 info
  - added the optional property `data/items/reportFileId` to the response with the `200` status (media type: text/plain)
  - added the optional property `data/items/reportFileId` to the response with the `200` status (media type: application/json)
  - added the optional property `data/items/reportFileId` to the response with the `200` status (media type: text/json)
- **2026-08-26** `a57456aa87b0`: 6 breaking, 36 info
  - the response property `data/items/notes/items/authorId` became nullable for the status `200` (media type: text/plain)
  - the response property `data/items/notes/items/authorId` became nullable for the status `200` (media type: application/json)
  - the response property `data/items/notes/items/authorId` became nullable for the status `200` (media type: text/json)
  - the response property `data/items/results/items/flag` became nullable for the status `200` (media type: text/plain)
  - …38 more

[Operation history](https://skmtc.dev/clinicos/apis/pawthosx-business-api-v1/changes/Labs/get.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)
