Settings → Staff (the Staff Log)
Purpose
The Staff page is your clinic's Staff Log — the register of everyone who handles controlled substances, mirroring the personnel list every clinic keeps on its paper logs. Each transaction, disposal, and correction in CS Logbook is attributed to a Staff Log entry, so this register is the source of truth for who did what.
Route: /home/[account]/settings/staff (paths.config.ts → accountStaffSettings).
When to use it
- Add a staff member when they start handling controlled substances at the clinic.
- Edit a member's name, initials, role, prescriber flag, or employment dates.
- Deactivate a member when they leave — set them inactive; never delete them.
- Reactivate a returning member.
What the Staff Log captures
| Field | Why it matters |
|---|---|
| Full name + initials | Initials are what appear on controlled-substance log entries (e.g. JDS). |
| Role + prescriber flag | Marks who can prescribe controlled substances (license validity is checked separately via Licenses). |
| Employment start date / employment end date | The person's first and last day at the clinic — lets a historical log entry be tied to who was on staff at the time. |
| Status (active / inactive) | Active staff appear in pickers; inactive staff are retained for history. |
A Staff Log entry can exist without a login — historical staff, or active staff
who never sign in to the app. (clinic_staff.user_id is nullable.) These roster-only
staff still appear on the Staff Identification Log report,
so your compliance roster is complete even for people who never open the app.
ℹ️ Saving without an employment start date. The start date is optional. If you leave it blank, CS Logbook shows an amber note — "No start date recorded. Your Clinic Staff Log won't show when this person's initials became valid on a controlled-substance record. You can save without it." This is a soft alert only — it never blocks saving (per the CS Logbook compliance philosophy, ADR-006). Add the date later from the same form whenever you have it.
Walkthrough — deactivate vs. delete
There is no delete. To retire a staff member, open the row menu
(clinic-staff-row-menu-<id>) → Set Inactive (clinic-staff-deactivate-<id>).
This sets status = inactive; their history and every record they touched are preserved.
Set Active (clinic-staff-reactivate-<id>) reverses it.
⚠️ Deactivating is NOT the same as recording a last day. Deactivating stamps an internal system date that CS Logbook manages and overwrites on the next status change — it is not your record of when the person stopped working here. If you want the Clinic Staff Log to show when to stop honoring someone's initials, type their last day into the "Employment end date" field on the staff form. The two are deliberately separate: a value you type is yours and is never overwritten by a status change.
Hard deletion is blocked at the database (clinic_staff_delete_blocked RLS policy) —
deleting a staff row would orphan the controlled-substance records that reference it,
which DEA record-retention rules forbid.
Staff Log vs. app members (two separate things)
Staff Log (clinic_staff) |
Members (accounts_memberships) |
|
|---|---|---|
| What it is | Compliance roster of CS handlers | App login seats |
| Counts toward the plan user limit? | No | Yes (maxUsers) |
| How someone leaves | Set inactive (never deleted) | Remove (revokes login, frees a seat) |
| Managed on | this Staff page | Settings → Members |
A person who both handles controlled substances and logs in has a row in both. Deactivating them on the Staff page should also remove their membership so the login seat is freed; reactivation re-invites them.
Related
- Settings → Members — app login seats + roles
- Compliance Requirements §11.1.3 — the Staff Log requirement
- ADR-016 — the
clinic_staffclinical-actor model (identity independent ofauth.users) - Licenses — DEA/state license tracking for prescribers