v2

latestOpenAPI 3.1.12026-08-078549932.4 MB
VaccineAdministration

Administer a vaccine dose — wraps dispense + VaccinationRecord enrichment + optional temp-lot + WorkTask.

post/api/vaccine-administration

Request body

inventoryItemIdstring required
patientIdstring required
appointmentIdstring nullable
lotIdstring nullable

Existing lot id when the clinician picks from stock. Mutually exclusive with InlineLotPayload? AdministerVaccineRequest.InlineLot and bool AdministerVaccineRequest.UseTemporaryLot.

useTemporaryLotboolean

When true, creates a temporary placeholder lot and follow-up WorkTask.

locationIdstring required
routestring required

Route of administration: "SC" | "IM" | "IN" | "IV" | "Oral" | "Topical" | "Other".

sitestring required

Injection / administration site: "RF" | "LF" | "RR" | "LR" | "IN" | "SQ" | "Other".

administeredByIdstring nullable

Staff member who physically gave the injection (often a tech). Defaults to caller when omitted.

doctorOfRecordIdstring nullable

The DVM of record for this dose — who a certificate names by default. Null = accept the server default (the appointment's assigned provider, when provider-flagged). Set bool AdministerVaccineRequest.NoDoctorOfRecord to force "no doctor" despite an appointment default.

noDoctorOfRecordboolean

True = explicitly no doctor of record; suppresses the appointment default.

notesstring nullable
expirationDatestring date-time nullable

Explicit expiration / due date for the resulting vaccination record. For rabies this is the vet-certified effective due date — 1 year for a first/primary dose (even with a 3-year-labeled product), the product's labeled duration for a booster. When omitted, the dispense auto-create falls back to the vaccine type's labeled duration (unchanged behavior for non-rabies vaccines).

vaccineExpirationDatestring date-time nullable

The physical vaccine <b>vial/lot expiration</b> date (distinct from the next-due DateTime? AdministerVaccineRequest.ExpirationDate). Populated from the selected/inline inventory lot in the UI and editable as a manual override for clinics not using inventory. When omitted, the server pulls it from the linked inventory lot. Persisted on the vaccination record and frozen onto the rabies certificate at issuance.

invoiceIdstring nullable

Attaches the resulting InventoryTransaction to this estimate in the same request.

estimateLineItemIdstring nullable

When the administration is performing an existing estimate line (the in-visit Treatment Plan flow), the resulting transaction is linked to THIS line and the line is marked Performed — and the dispense skips the POS draft-estimate attach. This makes the vaccine dispense once: without it the line was performed (and dispensed) a second time afterwards, producing duplicate vaccination records + reminders.

Response

Created

transactionIdstring required
vaccinationRecordIdstring required
lotIdstring required
workTaskIdstring nullable
isTemporaryLotboolean
invoiceLineItemIdstring nullable

Present when the request included string? AdministerVaccineRequest.InvoiceId and the dispense auto-created a matching line item. Lets the payments UI skip the unbilled-items poll and add the line directly.

invoiceIdstring nullable

The estimate the dispense was attached to — caller-supplied or auto-resolved server-side. Lets a payments UI that had no estimate of its own adopt the server's estimate instead of failing to reconcile the line.