Skip to main content

The Calendar, Rebuilt

The calendar reads like a calendar — wider canvas, half-hour grid, an unmissable “Now” pill, a Web vs WhatsApp event split, and reschedule that works even after a no-show. We did a top-to-bottom overhaul because the receptionist seat lives in this page all day, and every small friction was multiplying.

What’s new

  • Wider canvas by default. The right-side Overview panel (Status Overview, Doctors Today) starts collapsed so the calendar gets the full canvas. The sidebar is narrower too — 320 to 280 pixels. Your “panel open” or “panel closed” choice is remembered per user.
  • Click-to-book is off by default. Clicking an empty time slot no longer opens a booking form. Bookings go through the New Appointment button. Day and week views only respond to clicking an existing appointment card. Turn click-to-book back on from Settings → Appointment Setup if you want the old behaviour.
  • 30-minute default with sensible options. The duration picker shows 30 min (default), 1 hour, and Custom… (5–480 minutes for the edge case). Tapping a slot stages a 30-minute appointment by default — no more 60-minute placeholder you had to shorten.
  • Drag-to-reschedule snaps to 30-minute boundaries (:00 or :30). An Appointment Setup toggle lets you switch to 15-minute snap if you prefer.
  • Cancelled and no-show appointments can be rescheduled. Reschedule was previously greyed out for these states. That guard is gone for those two specifically — those are exactly the cases where you need to move the patient to a new slot. Rescheduling resets the status to Scheduled automatically.
  • Per-clinic 12h or 24h time format. Pick one in Settings → Appointment Setup. The choice applies everywhere — axis, cards, hover tooltips, drag confirmations.
  • Day view is more spacious. Hour rows are 96 pixels tall. Half-hour gridlines mark :30. A floating “Now” pill in the top-right jumps the view to the current time. Each card shows its duration as a tiny pill at the bottom right (30m, 1h, 1h 30m). Empty days show “No appointments scheduled” instead of a blank grid. Patient names render in Title Case, not SCREAMED IN ALL CAPS.
  • Week and month views scale to busy clinics. Month view shows a count badge per day, a subtle density tint, and up to 3 compact chips with a +N more link into the full day list. Week view auto-switches to agenda mode when a day has more than 24 appointments — that day’s column becomes a scrollable list of compact chips instead of cards stacking illegibly into lanes.
  • 15-minute slots in the reschedule picker. Both the admin reschedule flow and the WhatsApp patient self-reschedule list now offer 15-minute increments. Bookings still default to 30-minute appointments.
  • A duplicate-block on identical appointments. A patient cannot have two active appointments at the same time on the same day — the server returns a clean 409 with a friendly message. Cancelled and no-show slots are excluded so re-booking after a cancellation still works.
  • Out-of-hours errors explain themselves. The message shows the appointment’s start, the computed end, and the clinic’s open–close window so you can pick a slot that fits.
  • Doctor schedules enforced at booking. If a doctor is marked off on a day, bookings for that day are rejected. Appointments outside the doctor’s configured working hours are rejected with a clear message.
  • Day view shrinks to the doctor’s shift. Filter to a doctor and the time grid only shows that doctor’s working hours instead of nine empty hours at the top.
  • Cancellation reason dialog. Cancelling or marking no-show opens a structured dialog asking why (mandatory), whether the patient was contacted, and whether a follow-up was arranged. The answers save to the appointment record and appear in the History tab.
  • Cleaner timeline with Web / WhatsApp tabs. The appointment timeline splits into Web (status changes, invoices, notes, file uploads) and WhatsApp (template sends, delivery receipts, patient replies). The “All” tab merges everything chronologically. Every event shows full date and time in Pakistan time.

How to use it

  1. Open Calendar from the sidebar. The Overview panel starts collapsed for more canvas.
  2. Click an existing appointment card to open its detail panel. Click New Appointment in the toolbar to book a new one.
  3. Drag a card to reschedule. The snap interval and time format come from Settings → Appointment Setup.
  4. To cancel, open the card and click Cancel. Fill in the reason dialog.
  5. To reschedule a cancelled or no-show appointment, open it and click Reschedule. The reschedule flow picks the next available slot in the patient’s preferred window.
  6. Switch between Day, Week and Month views. The month view’s count badge and density tint show where the heat is.

What changed since the last revision

  • Click-to-book is off by default. Tap New Appointment instead.
  • Default booking length is 30 minutes, not 60.
  • Cancelled and no-show appointments can be rescheduled directly.
  • The cancellation reason dialog is new.
  • The timeline now splits Web and WhatsApp events.
  • Doctor schedules are enforced at booking time.
  • Time format is per-clinic.

Need help?

If anything is unclear, write to [email protected] or open a ticket from Settings → Support.