Built around the things that actually fail audits
Every feature here exists because a real sedation case needed it. Nothing is speculative -- the whole product is built around catching the failure modes a dentist sees in their own practice.
Deterministic flagging engine
Pure-function rules over case state. Categorized as Missing (information not yet recorded), Suspicious (data is recorded but looks wrong), Sequence (out-of-order events), Confirmation (clinically meaningful state changes), Threshold (numbers outside expected ranges). Every flag is overrideable -- with a logged reason that travels with the signed record.
- ✓ Pre-op checklist + pre-sedation checklist + surgical timeout each gate signing with their own rule.
- ✓ Recovery requires a complete 5-component Aldrete before signing -- catches the most common board-defense failure.
- ✓ Vital extremes (HR, SpO2, BP, etCO2, RR) flagged per reading; pediatric thresholds differ from adult.
- ✓ Health history must be reviewed before the case starts.
- ✓ Browser + server run the same rules; the server is the gate, the browser is for UX.
Local-anesthetic toxicity calculator
Half-life-aware cumulative toxicity across every local anesthetic you've dosed. Multi-anesthetic doses sum linearly (per FDA / Stoelting). Computed against the patient's ideal body weight (Devine formula for adults; AAPD BMI-for-age for pediatrics, floored at 5kg). Tracks AAPD pediatric and manufacturer adult ceilings independently because they disagree in dentistry.
- ✓ 9 catalog entries cover the standard dental LA list: Lidocaine 2% (1:100k + 1:50k), Articaine 4% (1:100k + 1:200k), Bupivacaine 0.5%, Mepivacaine 3% plain + 2% w/ levonordefrin, Prilocaine 4% plain + 1:200k.
- ✓ Carpule input on the form auto-converts to mg via per-drug mg_per_carpule.
- ✓ Live badge on the case detail page; tone shifts at 60% (amber) and 80% (red).
- ✓ Future-dated events handled gracefully (clock skew can't accidentally amplify).
Automatic vitals from a Mindray ePM 10M
Plug the monitor's USB serial cable into your computer and connect from Chrome -- nothing to install, no bridge software, no drivers. The browser reads the device directly through its built-in Web Serial API, decodes the DIAP ASCII protocol, parses the response, and plots readings on the strip chart in real time.
- ✓ Nothing to install -- Chrome talks to the monitor directly. No desktop service, no MSI, no drivers.
- ✓ Connect from the open case in a couple of clicks; the readings land on the active case automatically.
- ✓ Decoded Mindray DIAP protocol over standard USB -- no proprietary middleman, no vendor lock-in.
- ✓ Manual vitals entry is always available as a fallback when you'd rather chart by hand.
- ✓ Desktop Bridge service remains available for niche headless or multi-operatory setups that need it.
Records that hold up to a board defense
Every signed PDF lands in an S3 Object Lock bucket with a 7-year retention policy. The audit chain is INSERT-only at the Postgres level (no DELETE, no UPDATE -- enforced by a database trigger, not just application code). Once you sign, the only way to amend is the 48-hour unsign-and-amend window, which is itself fully logged.
- ✓ PDF includes patient, schedule, providers, pre-op assessment, pre-sedation checklist, surgical timeout, full strip chart with drug events, recovery section (Aldrete + A&Ox3), complications, discharge instructions, and the flag snapshot at signing.
- ✓ 48-hour timer with reminder emails at the 24h and 47h marks.
- ✓ Unsign-and-amend creates a new signed PDF; the original stays available in the audit chain.
- ✓ Tenant-isolated at the queryset-manager level -- never trusts the view layer alone.
Aldrete + A&Ox3 + complications + discharge
5-component Aldrete (Activity / Respiration / Circulation / Consciousness / O2 saturation, each 0-2). Total renders as a colored badge that flips green at >= 9 (the AAP/AAOMS discharge threshold). A&Ox3 checkbox. Free-text complications + discharge-instruction fields with 600ms debounced save.
- ✓ Circulation row offers a 'Use suggested' button driven by the systolic-BP delta between the first and most recent BP-bearing readings.
- ✓ Incomplete Aldrete blocks signing as an ERROR-severity flag (overrideable).
- ✓ All four fields render on the signed PDF in canonical order.
Everything you need to actually ship a case
Patient management. Operatory management. Tenant-admin invites for additional providers and assistants. Custom user roles. Per-tenant case display IDs (2026-001000, 2026-001001, ...). Per-operatory active case auto-discovery. Drawn-once electronic signature stored on your user profile.
- ✓ Tenant-scoped data isolation enforced via a queryset manager.
- ✓ Custom User model from migration 0001 (Django convention; can't be retrofitted).
- ✓ Patients are tenant-scoped -- the same human is a different row at different practices.
- ✓ Reserved subdomains prevent tenant subdomain collisions.
Try SedationLog free for 30 days
No credit card. Cancel anytime. Bring your own monitor or get up and running in under an hour with a paired Mindray.