People → Patients (animals)
Purpose
Manage the animals under your clinic's care — dogs, cats, horses, exotic species, livestock, and anything else your practice treats. Patients are linked to a client (owner) and referenced by administered and dispensed transactions.
See Clients vs. patients first if you're new to the model.
Regulatory basis: DEA rules require dispensing and administration records to identify the recipient. CS Logbook treats the patient (the animal) as the formal recipient.
When to use it
- First visit for a new pet: create the patient record (after creating or selecting the owner client)
- Multi-pet household: add additional patients under the same client
- Updating weight or medical alerts: keep the record current for dosing and clinical safety
- Marking deceased: set the deceased flag and date
- Soft-delete inactive patients: hide pets that have left your care (history preserved)
- Transferring between clients: an animal is rehomed; reassign to the new owner
Walkthrough
Step 1 — Open the patients list
Navigate to /home/<your-clinic>/patients.
The list shows every active patient with name, species, breed, owner (client), and status. Filter by client via the search input or owner filter.

Step 2 — Click "Add patient"
You're taken to the New Patient page (/patients/new) with the Owner combobox at the top. A ‹ Back to patients link returns you to the list without saving.

Step 3 — Select or quick-add the owner
The Owner (Client) combobox is required on create. Type to search by name, email, or phone. If the owner isn't yet in your system, click the + Add new client button — a mini-form opens. Save the new client and you'll return to the patient form with the owner auto-selected.
Step 4 — Fill in patient details
Required:
- Patient name — the animal's name (1-255 chars)
- Species — pick from the list: dog, cat, horse, cattle, pig, sheep, goat, chicken, rabbit, guinea pig, hamster, bird, reptile, other
Recommended (clinically and legally important):
- Breed — the breed (max 100 chars)
- Weight (lbs) — for dosing calculations; supports decimals (e.g.,
12.4) - Date of birth — for age-based dosing and clinical context
- Sex — Male / Female / Unknown
- Color — for identification (max 100 chars)
- Microchip number — for identification (max 100 chars)
- Allergies — medications, foods, environmental
- Medical alerts — seizure history, heart condition, etc. (shown prominently when the patient is selected on a transaction form)
- General notes — anything else clinically relevant
Status:
- Active (default) — appears in active patient lists and transaction forms
- Inactive — hidden from new-transaction forms but transaction history preserved

Click Save. The patient appears in the list.

Step 5 — Edit a patient
Use the row's Actions → Edit to open the Edit Patient page (/patients/<id>/edit). (Clicking the patient name instead opens the read-only detail page.) Every field is editable. The owner (client_id) on an existing patient is read-only on the edit page — to transfer a patient to a different client, use Actions → Transfer (see Step 7).
Step 6 — Mark deceased
Patients have a is_deceased boolean and an optional deceased_date. When set:
- The patient is automatically marked inactive
- New transactions cannot be filed against the patient
- Historical transactions remain queryable
This is preferable to soft-deleting — the medical record is preserved exactly as it was, with a flag indicating outcome.
Step 7 — Transfer to a different client
Click Actions → Transfer. A dialog asks for the new owner (client). Confirm — the patient's client_id is updated and a transfer note is added to the patient's history.
Use this when an animal is rehomed (the original owner sells / gives away), when a co-owner takes primary responsibility, or when correcting a data-entry mistake.
Step 8 — Soft-delete or restore
Click Actions → Delete to soft-delete. The patient disappears from active lists; transaction history is preserved. Click Restore to bring back.
Hard-delete is unavailable through the UI for patients with linked transactions.

Field reference
Patient form
| Field | Label | Type | Required | Validation |
|---|---|---|---|---|
client_id |
Owner (Client) | combobox | ✓ on create | uuid; searchable; supports inline create |
name |
Patient name | text | ✓ | 1-255 chars |
species |
Species | select | ✓ | enum: dog, cat, horse, cattle, pig, sheep, goat, chicken, rabbit, guinea pig, hamster, bird, reptile, other |
breed |
Breed | text | optional | max 100 chars |
weight_lbs |
Weight (lbs) | number | optional | positive decimal; step 0.1 |
date_of_birth |
Date of birth | date | optional | format YYYY-MM-DD |
sex |
Sex | select | optional | Male / Female / Unknown |
color |
Color | text | optional | max 100 chars |
microchip_number |
Microchip number | text | optional | max 100 chars |
allergies |
Allergies | textarea | optional | medications, foods, environmental |
medical_alerts |
Medical alerts | textarea | optional | seizure history, heart condition, etc. |
notes |
General notes | textarea | optional | no length limit |
is_active |
Status | select | optional | Active / Inactive; default Active |
is_deceased |
Deceased | boolean | optional | default false; auto-inactivates on true |
deceased_date |
Deceased date | date | conditional | required if is_deceased = true |
Hidden / system fields: accountId, id, created_by, created_at, updated_at, deleted_at, deleted_by, weight_last_updated (auto-set when weight changes).
Edge cases
Patient hard-delete behavior
If a patient is hard-deleted (only possible via admin tooling, not the UI), transactions referencing that patient have their patient_id set to NULL — preserving the transaction itself but losing the patient link. This is preferable to cascade-deleting transactions (which would destroy DEA audit records).
For everyday use, soft-delete is the right path. Hard-delete is reserved for consumer-privacy erasure requests (CCPA/CPRA and state equivalents) where complete deletion is legally required — see Settings → Privacy requests.
Soft-delete preserves transaction visibility
A soft-deleted patient still appears in transaction reports as Bella (deleted). You can navigate from the transaction detail to the (deleted) patient's record. This is required for DEA records — the audit trail must remain intact.
Restoring a patient
Actions → Restore clears the deleted_at timestamp. The patient reappears in active lists. Their existing transactions are unchanged.
Deceased vs. soft-deleted
- Deceased — clinical outcome; the animal has died. Set
is_deceased = trueanddeceased_date. Medical record preserved exactly. - Soft-deleted — administrative cleanup; the patient is no longer relevant to your active caseload (e.g., owner moved away, patient transferred to another clinic). Use only when the medical reason for inactivation isn't death.
Use the right one. The reports treat them differently.
Weight is critical for dosing
Many controlled-substance doses are weight-based (mg/kg or mg/lb). An out-of-date weight can lead to under- or over-dosing. CS Logbook stamps weight_last_updated whenever you change weight_lbs so you can spot stale data in reports — refresh the weight at every visit.
Species-specific dosing
The species field is informational only — CS Logbook doesn't enforce species-specific dose limits. That's the prescriber's responsibility. The species is captured for audit (DEA inspectors verify the recipient's species classification) and report grouping.
Common mistakes
- Creating a patient without a client. The form requires a client. Quick-add inline if needed; don't skip.
- Letting weight go stale. Update weight at every visit. Stale weight = unsafe dosing on weight-based meds.
- Soft-deleting deceased patients. Use the deceased flag instead — it's a clinical fact, not an administrative action.
- Mixing up patient and client search. The patient combobox on transaction forms searches patient names; the client combobox on patient creation searches owner names. They're different lists.
- Creating duplicate patients for the same animal. "Bella" might appear twice in your system if the front desk creates a new patient at every visit instead of searching for the existing one. Educate staff to always search first.
Related
- Clients vs. patients — domain model
- Clients — owners that patients belong to
- Inventory → Transactions —
administered/dispensedreference patients - Glossary § Patient