Total working hours
On-call duties
Workload distribution (days)
MedScheduler — Help & Reference
MedScheduler builds a monthly on-call rota for a department of physicians. A typical workflow: (1) add or import physicians in the left sidebar, (2) set leave, blocks and rules, (3) press Auto-Schedule, (4) review the Schedule, Summary and Coverage tabs, then (5) export or save to the cloud. Every tab and button is explained below.
Getting started — typical workflow
- 1. Add physicians
- Use the left sidebar (Add Physician) or Import from File to load names in bulk.
- 2. Set constraints
- Add Annual Leave, Block Specialty days, and adjust Rules, Shifts and Combined pairs as needed.
- 3. Auto-Schedule
- Generate the whole month automatically, honouring all leave, blocks and rules.
- 4. Review & adjust
- Check the Schedule grid, Summary totals and Coverage view; fix any cell by clicking it, or use Manual Assign. Watch the ⚠ conflict chip.
- 5. Save / export
- Save to the cloud workspace (☁ Save) and/or export to Excel (Export Rota or Export Summary).
Top bar — row 1 (workspace & account)
- ☰ Sidebar toggle
- Show or hide the physicians sidebar (useful on narrow screens).
- ◀ ▶ Month nav
- Move to the previous or next month. The month name shows between the arrows; each month keeps its own schedule.
- Workspace selector
- Switch between workspaces, grouped as My Schedule (your default), My workspaces (extra ones you created) and Shared with me. Appears once you have more than one.
- 🗂 Workspaces
- Create, rename and delete independent workspaces — e.g. separate rotas for different wards or rotations. Each has its own physicians, schedule and equity ledger. Your My Schedule workspace cannot be deleted.
- 🚪 Leave
- Leave a shared workspace you were invited to (shown only for shared workspaces).
- 🌓 Theme
- Toggle between light and dark themes.
- 📜 History
- View the audit trail — who changed what, and when.
- 🔔 Notifications
- Pending workspace invites (Accept / Decline) and recent activity; the badge shows unread count.
- Sign out
- Sign out of your account.
Top bar — row 2 (actions)
- ⚡ Auto-Schedule
- Automatically fills the whole month: duties, morning shifts, post-call rest and days off, honouring leave, blocks and rules.
- 📅 Annual Leave
- Add or remove leave date ranges per physician. Leave days are protected and never overwritten.
- 🚫 Block Specialty
- Mark a team/specialty/clinic as unavailable for a date range (e.g. a clinic closed for a week).
- 📌 Manual Assign
- Manually set a specific code for a physician across a range of days (from–to), with rule validation. Days already taken or that would break a rule are skipped and reported.
- ⚠ Conflict chip
- Shows the current count of scheduling conflicts (e.g. duplicate slots, missing post-call rest, work on a leave day). Click for details.
- 📥 Export Rota
- Export the simplified, colour-coded monthly rota to Excel — the version for distribution.
- 📥 Export Summary
- Export an Excel sheet with the working-hours distribution per physician: morning shifts, on-calls, random off & day off, post-call off, clinic days, and total working hours, plus department totals and averages.
- ☁ Save / ⬇ Load
- Save the current schedule to, or load it from, the active cloud workspace.
- 👥 Share
- Invite people to your workspace by email and manage members (owner only).
- 📣 Publish
- Owner only. Marks the displayed month as "Published" and emails every physician who has an email set their own shifts for that month. Saving again returns the month to Draft until you re-publish. Publishing also refreshes each physician's personal calendar feed. Email delivery requires the server's email service to be configured.
- ↶ Undo / ↷ Redo
- Step backward or forward through recent manual changes. Disabled when there is nothing to undo/redo.
- 🔧 Shifts
- Configure Teams, Specialties, Duty Shifts, Clinics and Combined pairs (see 'Shifts panel' below).
- ⚙ Rules
- Edit scheduling rules — see 'Scheduling rules' below.
- 🗑 Clear Month
- Erase all assignments for the current month (asks for confirmation first).
Left sidebar — physicians
- Add Physician
- Enter a Full name, optional Initials, and an optional Email (used to send that physician their shifts when you Publish), then click + Add Physician. Set or edit an email later via the ✉ button next to a name.
- ⬆ Import from File
- Load physician names in bulk from a .txt or .csv file.
- Physicians list
- Every physician with their initials, specialty and team. Edit or remove physicians here; the count shows at the top.
Tab 1 — Schedule
A colour-coded grid: physicians are rows, days of the month are columns. Each cell shows the assigned code for that physician on that day.
- Edit a cell
- Click any cell to open the Edit Assignment dialog and pick a new code. Manual edits apply immediately and can be undone.
- Colour coding
- Each duty/off code has its own colour (see 'Duty codes' below) so the month reads at a glance.
Tab 2 — Summary
One row per physician totalling their month, to check the workload is balanced and the rules are met.
- Morning Days
- Number of 8-hour morning shifts.
- Total Hrs
- Total scheduled hours (highlighted if over the max-hours rule).
- On-Calls
- Number of on-call duties.
- Daycare
- Number of Daycare Clinic assignments.
- Post-Call
- Post-call rest days earned after duties.
- Random Off / Leave
- Random off days and annual leave days.
- Weekends Inc in Offs / Total Off Days
- Weekend days counted within offs, and total days off for the month.
The Equity ledger below the charts tracks each physician's cumulative on-call & weekend burden across the months you have Published. It shows total on-calls, weekend duties and hours, each physician's deviation from the team mean (red = above, green = below), and this month's contribution. Auto-Schedule reads this ledger to steer future on-call duties toward under-burdened physicians — always within the safety rules (post-call rest, max hours, coverage), never overriding them. It fills in as you publish; an empty ledger changes nothing.
Tab 3 — Coverage
A read-only inverse view: days are rows and each column is a slot (team, specialty, duty or clinic). Each cell lists the initials of whoever covers that slot that day — quick to confirm nothing is left uncovered. A combined slot shows its physician in both member columns; blocked slots are highlighted; weekend rows are tinted.
- 🖨 Print / Save PDF
- Print the coverage view or save it as a PDF (landscape, colours preserved).
🔧 Shifts panel
Define the shift codes the scheduler uses. Changes apply on the next Auto-Schedule run and are saved with your schedule. Shift codes cannot be changed after creation — but a label, short name, colour and duty hours can be edited at any time, and any row can be removed with its ✕ button.
- Teams
- Morning team shifts. Add a code, label, short name and colour. At least one team is required, so the ✕ on the last remaining team is refused.
- Specialties
- Specialty morning shifts (e.g. GI, Neurology). Optional — remove them all to run teams only.
- Duty Shifts
- On-call duties (e.g. 16-hour male/female side). The scheduler ensures one slot per duty type per day. Optional — remove every duty shift to turn off on-call entirely and produce a mornings-only rota (no duties, and therefore no post-call days).
- Clinics
- Clinic shifts such as Daycare. Optional — remove them all to disable clinic assignments.
- Combined
- Pair a team/specialty with another so one physician can cover both as a single slot when short-staffed (e.g. NE/NP, or T1/GI). Two separate doctors are used whenever enough are available; a pair cannot be two teams.
Duty codes (defaults)
The codes below are the defaults; teams, specialties, duties and clinics are all editable in the Shifts panel.
- T1 / T2 / T3
- Team 1–3 morning shifts (8h each).
- CAHM
- Cardiology / Hematology (8h).
- GI
- Gastroenterology (8h).
- NE / NP
- Neurology / Nephrology (8h); NENP = one physician covering both.
- PU
- Pulmonology (8h).
- DC
- Daycare Clinic (8h).
- DM / DF
- 16-hour on-call duty — male / female side.
- PC
- Post-Call Off (mandatory rest after a duty).
- O / L / R
- Day Off / Annual Leave / Random Off.
Scheduling rules (⚙ Rules)
These limits apply on the next Auto-Schedule run and are saved with the schedule:
- Max Consecutive Days
- Days in a row before a forced day off.
- Min / Max Post-Call Off Days
- Mandatory recovery days after each duty, and the upper bound stamped when the schedule allows.
- Min / Max Duties / Physician
- Minimum on-call shifts per month, and the cap (0 = no cap).
- Duty Shift Hours
- Hours per on-call duty.
- Morning Shift Hours
- Hours per morning shift.
- Min / Max Hours / Month
- The hour floor reached by filling morning shifts, and the hard monthly ceiling that is never exceeded.
- Guarantee weekend off
- When on, the scheduler tries to give each physician at least one full weekend off.
Physician self-service portal (roles & requests)
- Admin vs Physician
- When you invite someone (👥 Share) you pick a role. Admin gets full access like you. Physician gets a read-only view of only their own shifts, plus forms to submit preferences, leave and shift swaps — they never see or edit the full schedule or other physicians' rows. Absent role = Admin, so existing members are unaffected.
- Physician onboarding
- Invite the person as a Physician, they sign in with that exact email and Accept under the 🔔 bell, and you press ☁ Save once so their personal view is generated. Only then do their cards populate.
- 🗓 Preferences
- Physicians submit preferred days off + an optional max on-call count for next month. Open 🗓 Preferences to see submissions; Apply off-days as R stamps soft days-off (R) on that physician's empty cells for the chosen month — review and Save. It never overwrites an existing assignment.
- 📩 Leave Requests
- Physicians request annual leave. Open 📩 Leave Requests (badge = pending count) and Approve — which adds the dates to the schedule's leave list and saves automatically — or Reject. Both notify the physician.
- 🔁 Swaps
- A physician proposes to swap one of their shifts with a colleague; the colleague accepts (choosing their own shift) or declines; then you Confirm (which exchanges the two shifts and saves) or Reject in the 🔁 Swaps panel. Everyone is notified at each step.
- Colleague list (swaps)
- A physician can only propose a swap to colleagues who have an email address on their physician card. Fill in each physician's email (left sidebar) and press ☁ Save so colleagues appear in each other's swap list.
- Max on-call cap
- If a physician sets a max on-call count, Auto-Schedule treats it as a soft preference: it steers on-call duties away from them, but coverage and safety always win — so the cap may occasionally be exceeded. You'll get a ⚠ warning after scheduling listing anyone over their requested cap.
- Invitations
- Invitations are in-app: the invited person signs in with that exact email and Accepts under the 🔔 bell. If email is configured (same setup as publish emails), they also receive an invitation email with a sign-in link.
- 📱 Phone calendar feed
- Each physician's portal has an Add to my phone calendar card with a personal, private feed link. Subscribing once puts their Published shifts in their phone's calendar; every re-publish updates the existing entries in place — nothing is duplicated, and drafts are never exposed. Nothing to configure on your side: just Publish.