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 requires a witness has one recorded
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 |
DEA-approved method enum |
| 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 | DEA-approved method; required |
disposal_reason |
text | Required; free-form reason |
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
DEA-approved methods (public.disposal_method):
authorized_reverse_distributor— sent to a DEA-registered reverse distributor (most common)dea_take_back_program— DEA-organized take-back eventlaw_enforcement_surrender— surrendered to local DEA officeon_site_destruction— destroyed on-site (requires DEA authorization)mail_back_program— mail-back envelope programother— other approved method (document in notes)
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. - Skipping the witness for Schedule II/III disposals. State boards typically require a witness for Schedule II and Schedule III disposals. The disposal-transaction sheet enforces this for waste disposal — see Inventory → Transactions § Waste/Disposal.
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