Skip to main content
POST
Record that a blood draw has been completed and trigger the lab order pipeline. Submit the lab codes (tube barcodes) from the blood draw kit to link the physical samples to the appointment. A draw carries its codes in one of two ways:
  • One code for the whole draw — a venous draw, where the same barcode is printed on every tube. Send it as lab_code.
  • One code per microtainer — a pharmacy draw, where each microtainer has its own barcode. Send them as lab_codes, one entry per code with the panel_ids its microtainer holds. Each code becomes its own laboratory requisition — the barcode on the tube is the lab’s order number. An entry without panel_ids is a catch-all for every panel not named elsewhere. A venous draw has at most one.
Send exactly one of the two. Every attached panel must end up under exactly one code (its own entry or the catch-all). On a venous draw, à-la-carte biomarkers need the catch-all. At a pharmacy, name every panel on the code of its microtainer. À-la-carte biomarkers fill the free space of the panel microtainers and open new microtainers only when needed. We spread them evenly. Each microtainer holds at most 150 µl of them. Send one entry without panel_ids for each microtainer they need on their own, and no more. A code that ends up with no panel and no biomarker is refused with 409 and reason: "panel_coverage". Every code is validated before anything is written; if any code cannot be used or a panel is left uncovered, nothing is recorded and the response names the problem. Requires the test_sessions_schedule scope.
This action is irreversible. Once you confirm the blood draw, the appointment is locked — no further modifications, including adding panels, are possible.

Request

Path parameters

string
required
Unique identifier (UUID) of the appointment to confirm.

Body parameters

string
Numeric lab code printed on the blood draw kit, when one code covers every tube. Mutually exclusive with lab_codes.
object[]
Every lab code of the draw, in scan order (at least one entry). Mutually exclusive with lab_code. A code may appear only once; a panel may be named on one entry only.

Response

On success, the API returns 200 OK confirming the lab order pipeline has been triggered.
boolean
true when the blood draw has been recorded and the lab order pipeline triggered.
string
Present only when the draw was recorded on a day other than the appointment day. Ordinary keys cannot do this — they get a 409 with reason: "appointment_not_today". Reschedule the appointment to the day of the draw, then confirm.
The recorded codes are returned as lab_codes on Get Appointment, and every result and document on Get Results carries the lab_code it was filed under.

Error responses