Compliance → Disposals
Purpose
A read-only rollup of every controlled-substance disposal recorded in the system, presented in a single chronological view for compliance review. Each row summarizes a DEA Form 41 disposal event with the disposal date, method, item count, witness (if applicable), status, and Form 41 submission state.
This is general product information about CS Logbook, not legal advice. CS Logbook does not approve disposal methods, file Form 41, or define retention periods. Verify current requirements with the DEA Diversion Control Division and your state veterinary/pharmacy board.
Where the requirement lives: the DEA's disposal rules are in the DEA disposal rules (methods + documentation) and records of disposal in the DEA record-retention rule; see also the DEA Form 41 page and Disposal Q&A. Treat those, not this guide, as authoritative.
When to use it
- Daily compliance review: confirm yesterday's disposals were captured correctly
- Audit prep: an inspector will ask to see your disposals for the applicable retention period — this page is the answer
- Form 41 status tracking: filter on which disposals still need Form 41 submission (the
Pendingstate in the rightmost column) - Witness verification: confirm every disposal that expects a witness has one recorded, and complete the ones that do not
The disposal CREATION flow lives in inventory transactions, NOT here. To record a new disposal, navigate to the container detail view and use the disposal-transaction sheet — see Inventory → Transactions.
Walkthrough
Step 1 — Open the disposals rollup
Navigate to /home/<your-clinic>/compliance/disposals. The page renders a single table with one row per disposal event.

Step 2 — Read the rollup
| Column | Source | Notes |
|---|---|---|
| Date | disposals.disposal_date |
When the disposal was performed |
| Method | disposals.disposal_method |
Controlled-substance disposal method |
| Items | count of disposal_items rows |
Number of substance line-items in the disposal |
| Witnessed By | accounts.name for disposals.witnessed_by, or disposals.witness_names text |
Empty when witnessed=false |
| Status | disposals.status |
pending, completed, or reported |
| Form 41 | disposals.form_41_submitted |
Submitted if true, Pending if false |
There are no row-level actions on this page — it's read-only. To edit or correct a disposal record, navigate to the source disposal in inventory transactions.
Step 3 — Empty state
When the clinic has no disposals recorded, the table renders an empty state with a one-line message: "No disposals recorded — controlled substance disposals will appear here once recorded."
Field reference
public.disposals table (read-only via this page)
| Column | Type | Notes |
|---|---|---|
id |
uuid | Primary key |
account_id |
uuid | Tenant isolation; references accounts.id |
disposal_date |
date | Required; when the disposal occurred |
disposal_method |
enum | Controlled-substance disposal method; required |
disposal_reason |
text | Optional; free-form reason (a blank saves, with a warning shown during entry) |
status |
varchar | pending (default), completed, reported |
completion_date |
date | Required when status='completed' (CHECK constraint) |
form_41_submitted |
boolean | Default false |
form_41_submission_date |
date | Required when form_41_submitted=true |
witnessed |
boolean | Default false |
witnessed_by |
uuid | References auth.users(id) when witnessed=true |
witness_names |
text | Free-form fallback when witnessed_by is unknown |
authorized_entity_name |
varchar(255) | Required for authorized_reverse_distributor and on_site_destruction |
disposal_receipt_number |
varchar(100) | Vendor-provided receipt |
notes |
text | Optional |
Disposal methods enum
These are the disposal methods CS Logbook records (public.disposal_method). They are this
application's categories for describing what your clinic did. They are not a federally approved list
of methods, and selecting one does not establish that a disposal met any legal requirement.
Federal rules work differently from a list of approved methods. For destruction they specify the required result, that every controlled substance is rendered non-retrievable, together with the procedures for getting there, and they require compliance with applicable federal, state, tribal and local law. Whether a particular act qualifies therefore depends on what was actually done and what result it achieved, which is not something a category in a dropdown can capture.
CS Logbook records the disposal. It does not verify it. The app cannot observe a physical destruction, confirm a substance was rendered non-retrievable, or certify that a pathway was used correctly. Those remain the responsibility of your clinic and its DEA registrant.
authorized_reverse_distributor: transferred to a DEA-registered reverse distributor, that is, a person registered or otherwise authorized to accept controlled substances for destruction. Most common.dea_take_back_program: handed over at a DEA-organized take-back event.law_enforcement_surrender: surrendered to a law enforcement agency authorized to accept controlled substances. That agency is not necessarily a DEA office, so record which agency actually took custody in Notes.on_site_destruction: destroyed at your own registered location. Federal procedure requires two employees of the registrant to handle or observe the handling of the substance, and to personally witness the destruction, until it is rendered non-retrievable. Recording this value states that your clinic destroyed the substance on site; it does not assert that those procedures were followed.mail_back_program: sent away in a mail-back envelope program.other: a method none of the above describes. Describe what was actually done in Notes, since the app knows nothing else about it.
Edge cases
Item count = 0
Occasionally a disposal row may show 0 items if the disposal was created but no disposal_items rows exist yet. This is rare and indicates an incomplete record — investigate whether the disposal was abandoned mid-flow.
Witness shows "Witnessed (name on file)"
When witnessed=true but witnessed_by is NULL (or the user record has been deleted), the column shows "Witnessed (name on file)" as a fallback. The underlying record retains witness_names (free-form text) for audit purposes.
Status vs Form 41
A disposal can be status='completed' but form_41_submitted=false. This is the most common case at month-end: physical disposal happened, but the DEA Form 41 paperwork is still pending. The Pending column in the rollup helps you find these.
Common mistakes
- Looking for a Create Disposal button on this page. Disposals are created from the inventory transactions surface (the disposal-transaction sheet on a container's detail view). This page is the rollup view for compliance review only.
- Treating Status='reported' as 'submitted to DEA'. The
reportedstatus reflects internal report compilation, not Form 41 submission. Theform_41_submittedboolean is the canonical Form 41 indicator. - Assuming the app enforces the witness. It does not, and it never blocks a save. A disposal recorded without a witness is flagged as incomplete and can be completed later from its detail page — see Inventory → Transactions § Waste/Disposal. Your own witnessing obligations are set by your clinic's policy and your state board; check them rather than inferring them from what the form accepts.
Related
- Inventory → Transactions — disposal-transaction creation flow
- Inventory → Containers — disposals reference container IDs in
disposal_items - Audits → DEA Audit Prep — disposals are the second checklist category in DEA inspections
- Glossary § DEA CFR citations