Medications & Rx
Prescribe, dispense, and track medications with a full audit trail.
On this page
-
Prescribe from the SOAP
In the Plan section of a SOAP note, click Add medication. Search for the drug by name or NDC. Enter the dose (mg/kg is calculated automatically from the patient's weight), route, frequency, and duration. Save the prescription. It appears as a line item on the pending invoice.
-
Review the proposed prescription
Medications you add show up alongside the SOAP as a proposed item you confirm, the same review-before-commit pattern as the rest of the visit. There's no separate pharmacy tab or per-item "Dispense" click mid-visit: nothing is written to the medication record or inventory until you sign and finalize.
-
Sign & finalize the visit
Finalizing dispenses every confirmed medication in one step. It decrements inventory, creates the dispense record, and adds the charge to the invoice (on plans where invoicing is enabled) automatically. See Visits & SOAP and Invoicing & payments.
-
Dispensing outside a visit
For a refill or an over-the-counter sale with no SOAP attached, dispense directly from the patient's Meds tab or from an invoice. This records the lot number and expiry and decrements inventory the same way. Refill requests approved from the Task queue can print (or reprint) a prescription label.
Controlled substances
Controlled substance workflows require two separate users and are logged to a DEA-compliant audit trail (21 CFR Part 1304). Finalizing a visit with a controlled substance on the plan writes the dispense as pending witness. The actual second-person confirmation happens afterward on the Controlled log.
The dispenser and the witness must be different staff members. Chartling enforces this server-side. You cannot witness your own dispense, and the witness records a name, credentials, and signature before the entry counts as witnessed.
| Action | Permission required | Who can hold it |
|---|---|---|
| Dispense a controlled substance | rx.controlled.dispense |
Vet, Associate Vet, Locum, Owner / Admin (included in those packs by default) |
| Witness a dispense | rx.controlled.witness |
Vet, Associate Vet, Locum, Vet Tech, Senior Tech, Owner / Admin. Must be a different person from the dispenser |
| Run the reconciliation report | rx.controlled.reconcile |
Senior Tech, Owner / Admin (included in those packs by default) |
These permissions are included in the relevant default packs (see above). Other staff must be granted access by an Admin. Assign them a pack that includes the permission, or create a custom pack for them under Settings → Team & permissions → Permissions.
DEA audit log
Every controlled substance dispense creates a tamper-evident log entry: drug, quantity, lot, patient, prescriber, dispenser, witness, and timestamp. Confirming a pending dispense checks rx.controlled.witness, but today Inventory → Controlled log is the only screen that exposes that confirm step, and opening that screen at all requires rx.controlled.reconcile. See the note below.
The full ledger (Inventory → Controlled log) and the Inventory → Biennial Inventory physical-count wizard both require rx.controlled.reconcile, which by default only Senior Tech and Owner/Admin packs hold.
The Vet Tech pack holds rx.controlled.witness by default, but the only place in the app to act on it (the Controlled log page) is itself gated on rx.controlled.reconcile, which the Vet Tech pack does not include. In practice, only Senior Tech, Owner/Admin, or a custom pack holding both permissions can complete a witness today. If you need a Vet Tech to witness independently, grant them rx.controlled.reconcile as well (or build a custom pack) until this gap is closed.
Medication history
All medications dispensed to a patient are visible on the patient record under Medications. The history shows the drug, dose, prescribing vet, dispense date, and visit. Owners can see a summary of current medications in the owner portal.
FAQ
Only licensed veterinarians. The prescription is linked to the prescribing vet's license. Vet techs can add medications to the plan as suggestions, but a vet must confirm and sign before dispensing.
For non-controlled medications, yes. Go to the patient record → Medications → find the prescription → Refill. The refill creates a new dispense record and invoice line item. A SOAP note is not required for a refill, but the prescribing vet must authorize it. Controlled substances can't be refilled this way. They must go through the two-person dispense/witness flow every time, with the rx.controlled.dispense permission.
The dose is calculated from the weight recorded at the visit. If the patient's weight has changed significantly, the vet should update the prescription dose before dispensing. Chartling shows the weight used in the dose calculation on the prescription record.
Yes, for anyone holding rx.controlled.reconcile. Under Inventory → Controlled log, filter by date range and/or schedule, then export to CSV or use the print view for a paper/PDF copy for an inspector.