Glossary
CS Logbook uses precise terminology that aligns with DEA recordkeeping rules and veterinary practice. Where the app's language differs from how clinics colloquially talk, this page is the canonical reference.
Core domain terms
Substance
A controlled substance in your formulary — the drug itself, not a specific bottle.
- Examples: "Ketamine HCl 100mg/mL injectable", "Buprenorphine 0.3mg/mL injectable", "Phenobarbital 32.4mg tablets"
- A substance has a DEA Schedule (II, III, IV, V), a form (injectable, tablet, etc.), a concentration, and a unit (mL, tablets, etc.)
- One substance can have many physical containers
- Regulatory basis: DEA recordkeeping for every controlled substance handled
→ See inventory/substances.md
Container
A specific physical bottle, vial, or package of a controlled substance.
- Each container has a unique container number (often auto-generated like
2026-KET-001) - Tracks: lot number, current balance, initial quantity, expiration date, status (unopened / active / depleted / disposed)
- Linked to: one substance, one supplier, one invoice
- The container is the unit of audit — DEA inspectors trace transactions back to specific containers
→ See inventory/containers.md
Transaction
An event that changes a container's balance — the entries that make up your audit log.
- Types:
received,administered,dispensed,waste,disposal,adjustment,transfer - Required fields per type vary:
administeredrequires a patient + prescriber;wasteanddisposalrequire a witness - Once recorded, a transaction is immutable — corrections are routed through a separate corrections RPC that creates an audit trail entry (the digital equivalent of "single-line correction with initials and date" in paper logs)
- Regulatory basis: DEA rules require accurate transaction records; a witness is required for waste
→ See inventory/transactions.md
Supplier
A DEA-registered wholesaler or distributor you receive controlled substances from.
- Has a DEA registration number, usually
AB1234567(2 letters, 7 digits), per DEA ordering rules - Examples: Patterson Veterinary, MWI Animal Health, Henry Schein
- Suppliers also include in-clinic transfers (e.g., satellite location → main clinic) — those use the supplier name plus a transfer document number rather than a DEA registration
→ See inventory/suppliers.md
Invoice
A receipt document from a supplier, attached to one or more containers when received.
- Has invoice number, invoice date, total cost, optional PDF attachment
- One invoice can correspond to receipt of multiple containers
- Required for the audit chain: container → invoice → supplier (so you can trace any container back to a verified source)
→ See inventory/invoices.md
Client
A pet owner — the person or entity that owns the patient (animal).
- Examples: an individual ("Jane Smith"), a farm ("Cedar Hill Dairy"), a rescue ("Furry Friends Rescue")
- Has name, address, phone, email
- Owns one or more patients
→ See people/clients.md
Patient
An animal under your care, linked to a client.
- Examples: a dog named Bella owned by Jane Smith, a horse named Diesel owned by Cedar Hill Dairy
- Has species, breed, weight, sex, microchip, allergies, medical alerts
- Referenced by
administeredanddispensedtransactions to satisfy DEA recordkeeping for which patient received which dose
→ See people/patients.md
Audit
A periodic verification that the substances and balances on the books match the physical inventory.
- Types: spot check (quick), internal audit (templated, scheduled), DEA prep (pre-inspection rehearsal), biennial inventory (mandatory every 2 years per DEA rules)
- Produces a discrepancy log when counts don't match
→ See audits/
DEA Schedule classifications
Defined in the DEA schedule regulations. CS Logbook tracks Schedules II-V (Schedule I substances are not legal for veterinary use).
| Schedule | Examples (vet practice) | Refills allowed? |
|---|---|---|
| II | Ketamine, fentanyl, methadone, oxycodone, pentobarbital | No — new prescription required each time |
| III | Buprenorphine, ketamine combinations, anabolic steroids | Up to 5 refills within 6 months |
| IV | Tramadol, diazepam, alprazolam, phenobarbital | Up to 5 refills within 6 months |
| V | Buprenorphine sublingual films (in some forms), pregabalin | Up to 5 refills within 6 months |
CS Logbook does not enforce schedule-based refill rules at the application layer — that is your prescriber's responsibility. The system tracks which schedule a substance has so reports can group correctly and DEA inspectors can verify each schedule's records separately.
Roles in CS Logbook
CS Logbook keeps two role concepts separate. A user has one of each.
Access role vs. clinic position
- Access role — what you can do in the app. Set by the inviter at invite time. Drives sidebar visibility, page access, and create/edit permissions.
- Clinic position — who you are in the clinic (your job title). Recorded by the person themselves during onboarding. Drives display labels, transaction attribution, and prescriber-of-record eligibility.
The two are orthogonal — every combination is valid. A veterinary technician can be the app admin; a prescribing veterinarian can be a read-only viewer. App permissions never depend on clinic position, with one exception: prescriber-of-record authority on a dispense/administer transaction requires clinic_position = prescribing_veterinarian plus a valid personal DEA license (per DEA rules) — a clinical authorization, not an app permission.
Access roles (app permissions)
- owner — created the clinic / billing-responsible party; full access. Assigned via the Transfer Ownership flow, not the invite form.
- admin — trusted app operator; manages substances, members, and settings
- manager — supervisory access; manages substances and day-to-day operations
- staff — day-to-day clinical operations (receive containers, log transactions); the default for invited staff
- viewer — read-only; cannot create or edit records
Roles are per clinic. If you belong to more than one clinic you have an independent access role in each — e.g.
ownerof your own practice andviewerat a clinic you consult for. Every permission check evaluates only the role you hold in the clinic you are acting in.
Clinic positions (job title / clinical identity)
- veterinarian — licensed veterinarian without a personal DEA registration for prescribing here
- prescribing_veterinarian — holds a personal DEA registration; eligible as prescriber-of-record for controlled-substance transactions
- veterinary_technician — licensed (or registered, depending on state) technician
- veterinary_assistant — unlicensed support staff
- practice_manager — operational management
- receptionist — front-desk / client-facing staff
- other — any position not in the list above
Behind the scenes the access role you assign on the invite form is stored as the membership's
account_role— one value per person per clinic (owner/admin/manager/staff/viewer), and it is the single field every permission check reads. (Earlier versions kept a separate framework-levelowner/memberrole; that parallel column was retired in ADR-023.)
Status terms
Substance status
- active — currently in use; appears in the formulary and in receive-container substance pickers
- inactive — soft-removed from active formulary; still queryable for historical transactions
- discontinued — permanently retired (e.g., pharmacy stopped carrying it); historical records preserved
Container status
- unopened — sealed, never used
- opened (sometimes called "active") — the seal has been broken; can be drawn from
- depleted — fully used up (current_balance = 0)
- expired — past expiration date; cannot be used clinically (soft warning)
- disposed — DEA Form 41 reverse-distribution submitted; container removed from active inventory
- destroyed — physically destroyed on-site (witnessed)
- transferred — moved to a different clinic / location
Once a container leaves unopened or opened, it cannot be drawn from. CS Logbook hard-blocks new transactions on a non-active container — that is one of the few hard blocks in the system, because adding transactions to a disposed container would corrupt the audit trail (per DEA record-retention rules).
Transaction type
- received — container received from supplier (positive balance change)
- administered — drug given to a patient (requires patient_id + prescriber)
- dispensed — drug given to a client to take home (requires patient_id + prescriber)
- waste — drug intentionally wasted (e.g., expired, contaminated) — requires witness
- disposal — entire container disposed via DEA Form 41 — requires witness
- adjustment — paper-trail correction (e.g., reconciling a count discrepancy)
- transfer — moved between containers within your clinic
CFR (Code of Federal Regulations) reference
Key DEA regulations CS Logbook supports compliance with:
| What it requires | CS Logbook feature |
|---|---|
| Theft / significant loss reporting (DEA Form 106) | Audits → Theft/Loss |
| Maintenance of records — accurate, immutable | All transactions; corrections RPC |
| Biennial inventory of all controlled substances | Audits → Biennial Inventory |
| Records of controlled substances received and dispensed | Substances + Containers + Transactions |
| Records of disposal — witness required | Transactions: waste/disposal types |
| Records for distributors | Suppliers / Invoices |
| Schedule II ordering — DEA Form 222 / CSOS | Suppliers (DEA registration capture) |
| Schedule classifications | Substance schedule field |
State-level rules layer on top of these federal rules, and they vary enormously, including whether veterinarians have any reporting duty at all. CS Logbook covers the federal DEA recordkeeping layer and exports your records in standard formats; it does not track or interpret state requirements. Confirm those with your state veterinary board, your reporting program, or your own counsel.