Reporting → Compliance Reports
Purpose
Federally-mandated and CFR-cited reports. These artifacts are the documents the DEA expects to see during a cyclic inspection and the records you'll attach to a DEA Form 106 (theft/loss) or Form 41 (disposal) submission. Six generators cover the full DEA compliance reporting surface.
Regulatory basis: DEA biennial inventory, records of disposal, Form 41 disposal, and Form 106 theft/loss. License Summary supports DEA registration-recordkeeping compliance.
When to use them
- DEA inspection: have a printed Substance Summary + most-recent Biennial Inventory PDF + active License Summary on hand.
- Theft or loss event: DEA rules require reporting within 1 business day. Generate DEA Form 106 the same day; submit via the DEA Diversion Control Division's online system.
- Disposal event: every reverse-distributor pickup, on-site destruction, or DEA witness-destruction needs a Form 41 record. Generate DEA Form 41 monthly or quarterly and retain.
- Audit close-out: when you complete a biennial inventory, generate the Biennial Inventory PDF as the canonical archive copy.
- License renewal cycle: run License Summary annually to surface licenses approaching expiration.
- Internal review of corrections: run Correction Audit Trail monthly to catch any unusual correction patterns.
Walkthrough — common pattern
- Open
/home/<your-clinic>/reports - Click the Compliance Reports tab
- Click Generate Report on the report's card
- Pick a format (PDF or CSV — see per-report notes for the canonical format)
- Fill any required filters (date range, biennial inventory selector, etc.)
- Click Generate Report
- The browser downloads the file

Substance Summary
A point-in-time aggregate of every controlled substance in your inventory, with container count and total on-hand quantity.
Use when: orienting an inspector; sanity-checking inventory for the next biennial; producing a "what do we have right now" summary for a clinic owner.
Columns:
- Substance name + schedule
- Active container count
- Total on-hand quantity (sum across containers)
- Average consumption (last 90 days)
- Days of inventory remaining (estimate)
Filters: optional substance filter (limits the report to a single substance).
Format: PDF (canonical) or CSV.
License Summary
Every facility and individual license registered with the clinic, with status, expiration date, and days-to-expiration.
Use when: an inspector asks for current registration documentation; preparing for the next license renewal cycle; confirming all prescribers have active DEA registrations.
Columns:
- Scope (facility or individual)
- License type (DEA registration, DEA practitioner, state pharmacy permit, state veterinary, etc.)
- License number
- Issuing authority + state (where applicable)
- Issue date / expiration date / days remaining
- Status (active / pending_renewal / expired / suspended / revoked)
- Holder display name (for individual licenses)
Filters: none — the report is always complete.
Format: PDF (canonical) or CSV.
Biennial Inventory PDF
The canonical PDF artifact of a completed biennial inventory, formatted to satisfy DEA biennial-inventory record-keeping requirements.
Use when: a biennial inventory has been completed and you need an archive copy. CS Logbook recommends generating + filing this PDF at the close of every biennial cycle.
Required filter: pick a completed biennial inventory from the dropdown. Inventories that are still in progress are not selectable.
Columns:
- Header: clinic name, address, DEA registration, inventory date, performed-by, witness, status
- Per-substance: name, schedule, container count, quantity on hand, location notes
- Footer: signed-by + signature timestamp + audit checksum
Format: PDF only. The Biennial Inventory PDF is intentionally a single-format report — the data is also exportable via the Audit-Period Reconciliation report (CSV available).
Correction Audit Trail
Every transaction correction recorded in the period, with the original values, the corrected values, the correcting user, and the correction reason.
Use when: monthly internal review; resolving a discrepancy traced to a correction; preparing for a DEA audit-trail review.
Required filter: date range (start and end). Use a preset or fill custom dates.
Columns:
- Original transaction date / type / quantity / container / performer
- Correction date / corrected-by user
- Field-level diff (original → corrected)
- Correction reason (free text from the user)
- Audit-trail checksum
Format: CSV (canonical for spreadsheet review) or PDF.
Where it lives: this report draws from the correction ledger — the append-only strikethrough/reversal record produced whenever a transaction is corrected (see Transactions § correcting a transaction). The live ledger surface is the Correction Audit Trail page at /home/<clinic>/compliance/correction-audit (per ADR-018), which lists each correction and its downstream balance impact; this report is the exportable, date-ranged view of the same data.
DEA Form 106 — Theft / Loss
The DEA's official form for reporting theft or significant loss of controlled substances. CS Logbook generates the report from the records in the audits/theft-loss feature.
Use when: theft or significant loss is discovered. DEA rules require notification within 1 business day; submit via the DEA Diversion Control Division's online system. The CS Logbook PDF is the archive copy + the data source for the online submission.
Required filter: date range (the period during which the incident was discovered).
Columns:
- Incident header: discovery date, type (theft / loss / significant loss), reporter, law enforcement contact (if reported)
- Per-item: substance name + schedule, container number, lot number, quantity stolen/lost, units, last-known-balance date
Format: CSV (machine-readable submission substrate) or PDF (archive copy).
Important: CS Logbook does NOT auto-submit to the DEA. The generated report is the artifact you transcribe to (or upload alongside) the DEA's online form.
DEA Form 41 — Disposals
The DEA's official form for documenting controlled substance disposal. Captures every disposal record (mail-back program, authorized reverse distributor, on-site destruction, DEA witness destruction).
Use when: monthly retention copy; in advance of a reverse-distributor pickup; closing out a disposal event.
Required filter: date range.
Columns:
- Disposal header: method (
mail_back_program/authorized_reverse_distributor/on_site_destruction/dea_witness_destruction), reason, witness, status, completion date - Per-substance: container number, lot, schedule, quantity disposed, signature
- Footer: form-41-submitted flag + submission date (if applicable)
Format: CSV or PDF.
Edge cases
Empty data
All Compliance reports return a valid file even when there are no rows in the period (the headers are present, the data section is empty). For the Biennial Inventory PDF specifically, the dropdown only lists completed inventories — if none exists, the dialog cannot proceed.
Date range that crosses a clinic timezone change
CS Logbook stores all dates in UTC and renders in the clinic's configured timezone. Reports include a footer note when the requested date range crosses a DST or timezone boundary; verify your interpretation matches the report's footer.
Soft-deleted records
Compliance reports include an explicit notice when soft-deleted records exist within the date range. They are EXCLUDED from the report by default. The Correction Audit Trail report has a separate column tracking deletion-style corrections; deletions of records older than the report period do not appear in the audit trail.
Form 106 / Form 41 numbering
CS Logbook does NOT assign DEA Form numbers. The DEA assigns Form 106 case numbers when you submit the online form; CS Logbook's report is keyed by the internal incident UUID. Cross-reference manually.
Common mistakes
- Treating the CS Logbook PDF as the official DEA submission. It is not. The DEA expects a submission via their online portal. The PDF is the substrate.
- Generating Form 41 disposals for an event that hasn't actually occurred. A disposal record in CS Logbook represents an actual disposal event. Don't pre-generate Form 41 for a planned but not-yet-witnessed destruction.
- Filtering the License Summary by date. Licenses are point-in-time records — the report does not take a date range. If you need a historical view, look at
license_renewal_history(separate feature). - Running the Biennial Inventory PDF for an in-progress inventory. The dialog will not let you select an in-progress one; complete the inventory first.
Related
- Audits → Biennial inventory — the data source for Biennial Inventory PDF + the inventory side of Audit-Period Reconciliation
- Audits → Theft/Loss — the data source for DEA Form 106
- Compliance → Disposals — the read-only rollup tied to the DEA Form 41 generator
- Compliance → Licenses — the data source for License Summary
- Glossary § DEA CFR citations