Provider Manual · Part I

Shuffle mode — mass rescheduling

When a provider calls in sick, move the whole day in one reviewed batch: select appointments, drag or bulk-move them, watch the staged queue and its conflict badges, then apply everything at once and tell every patient.

8 sections~23 min read11 screenshots
I
Part I · continued

Shuffle mode — mass rescheduling

When a provider calls in sick, move the whole day in one reviewed batch: select appointments, drag or bulk-move them, watch the staged queue and its conflict badges, then apply everything at once and tell every patient.

1.13Overview

Move a whole day of appointments in one reviewed batch

A provider calls in sick at 7 AM. Eighteen patients are on the books. Rescheduling them one at a time means eighteen rounds of open–pick a slot–save–then call or message the patient, with no way to see the whole plan before you commit to it and no consistent story reaching patients.

Shuffle mode is an editing mode on the calendar built for exactly that morning. Turn it on and the calendar becomes a staging area: you drag appointments to new slots, or select a group and hand it to a bulk action, and every change piles up in a queue on the right. Nothing is written to the schedule until you press Apply. Until then you can drag the same visit five times, undo, redo, or walk the whole thing back.

When you do apply, the entire batch is committed together and Hero can send one message per patient — by email, text, portal message, or any combination — explaining what changed, with each patient’s own name, provider, and times filled in.

Staged, not saved

Every drag and every bulk action queues a change. The schedule, the patient, and the portal see nothing until you apply. Exiting the mode without applying throws the whole plan away.

One batch, one message

Apply commits every staged change in a single request, then sends one message per patient — not one per appointment — so a patient with two moved visits is told once.

Shuffle mode works in all four calendar views — Day, Team, Week, and Month — and layers on top of the normal calendar covered in Using the calendar. It is a rescheduling tool only: it never creates appointments and never opens a chart.

Who can use it. The shuffle button appears only for users who can already change appointments. Staff accounts need the scheduling.manage permission (see Staff & assistants); a staff member with view-only scheduling access never sees the control, and the server enforces the same permission again when the batch is applied. Physicians have it by default.
1.14Enter & exit

The shuffle button, and the prompt that protects your work

The shuffle icon — two crossing arrows — is the last button in the right-hand cluster of the calendar toolbar, after the list-layout, export, and hide-resolved buttons. It has no text label; hovering it reads “Shuffle mode: drag & multi-select appointments, stage the changes, then apply them all at once.”

The Hero EMR calendar toolbar showing the date navigator reading Wednesday, September 9, the physician picker set to Johnson, Sarah MD, the Day / Team / Week / Month view switcher with Day active, and at the far right the list-layout, export, hide-resolved, and crossing-arrows shuffle buttons
The calendar toolbar with shuffle mode off. The crossing-arrows button at the far right turns it on; it is present in all four views.

You can also press S — on its own, no modifier — anywhere on the calendar to toggle the mode. Like every shortcut in this manual that is a default you can remap; the full list lives under Ctrl+Shift+?.

Turning it on changes three things at once: a mode banner appears under the toolbar, the staged-changes panel opens on the right, and the action bar docks along the bottom. In Day view an extra checkbox column appears at the left of the table, and the appointment-preview pane is hidden to give the grid its full width.

The Hero EMR Day view in shuffle mode: a blue banner reading Shuffle mode — Drag appointments to new slots, or select several and use the actions below — nothing changes until you apply, with an Exit button; the appointment table has gained a leftmost checkbox column with unchecked boxes beside Michael Chen, Emily Rodriguez, and David Smith; the right panel reads Staged changes 0 over Nothing staged yet; the bottom bar shows 0 selected and the greyed-out bulk actions
Shuffle mode on in Day view. The banner states the contract — nothing changes until you apply — and the queue on the right starts empty. Bulk actions stay greyed out until something is selected.

The banner reads “Shuffle mode — Drag appointments to new slots, or select several and use the actions below — nothing changes until you apply” and carries an Exit button at its right end.

Leaving the mode

Three things exit shuffle mode: the Exit button, the shuffle toolbar button again, or Esc. With an empty queue you simply leave. With anything staged you get a confirmation first:

  • OK discards every staged change. Nothing was applied, so the schedule is exactly as it was.
  • Cancel keeps you in shuffle mode with your queue intact.
The queue lives in your browser, not on the server. Staged changes exist only in the tab you are working in. Reloading the page, closing the tab, or losing the connection loses the whole plan — the browser’s own “leave site?” prompt is the only warning you get, and a crash gives you none. Build the batch and apply it in one sitting rather than leaving it staged while you go and phone someone.
In Week and Month, switch off the list layout. Shuffle interaction works in the calendar grid. If Week or Month is showing the list layout (the list button in the toolbar), you still get the banner, the queue, and the action bar, but the rows are not draggable or selectable and staged changes are not drawn on them. Switch back to the grid before shuffling.
1.15Selecting appointments

Click to tick, shift-click for a run, one button for the day

Inside shuffle mode an appointment is a checkbox, not a link. A plain click toggles it in and out of the selection — it never clears what you already picked, and it never opens the appointment. That is deliberate: a stray click must not wipe a selection you spent a minute assembling.

The Day view in shuffle mode with all three appointments selected: Michael Chen, Emily Rodriguez, and David Smith each show a green checked checkbox in the left column and a highlighted row; the bottom action bar now reads 3 selected with a clear-selection X, Select all shown, and the enabled buttons Next with same provider, Next in practice, Let patient reschedule, Cancel, and Shift
Three appointments selected by plain clicks. The count chip on the left of the action bar tracks the selection, and every bulk action lights up once at least one visit is picked.

The ways to select

  1. Click an appointment. Adds it to the selection, or removes it if it was already selected. In Day view you can click the row anywhere — the checkbox in the left column mirrors the state but the whole row is the target.
  2. Shift-click for a range. Click the first appointment, then shift-click a later one: everything between them in time order joins the selection. The range replaces your selection — hold Cmd/Ctrl as well as Shift to add the range to what you already had. Ranges stay inside one container: one day’s table in Day view, one provider’s column in Team view, one day’s cell in Week or Month.
  3. Select all shown. The button next to the count chip adds every eligible appointment in the view you are looking at, respecting your current filters.
  4. Select a whole provider column (Team view). Each provider column header carries a small checkbox icon that selects all of that provider’s appointments for the day. This is the one-click start for the sick-provider morning: open Team view, click that provider’s header checkbox, then pick a bulk action.
  5. Select a whole day (Week and Month). Each day cell shows a checkbox affordance next to its appointment count — “Select every appointment this day” — which adds that day to the selection. Use it to sweep up a Tuesday and a Thursday together.

The count chip at the left of the action bar reads 3 selected and gains an X that clears the selection. Selected appointments are outlined on the calendar so you can see the set you are about to act on.

Select all shown does not work in Team view. Press it there and Hero tells you to “use the checkbox in each provider column header” instead — because “all shown” across every provider at once is almost never what you mean on a multi-provider day. Select the affected column instead.

What can’t be shuffled

Only booked patient appointments can move. Clicking anything else tells you why and selects nothing:

What you clickedWhat Hero says
An open slot, a break, or a placeholder“Only booked patient appointments can be shuffled.”
An event synced from Google or Outlook“External calendar events are managed in the source calendar.”
A visit whose note is already signed“This visit has a signed note and can no longer be moved.”
A cancelled, completed, or no-show visit“A <status> visit cannot be rescheduled.”
The faded original of something you already staged“This is the original slot of a move you already staged.”

Checked-in and in-progress visits are excluded for the same reason — only appointments still in a scheduled or confirmed state are eligible.

1.16Drag & drop

Drag one visit, or drag the whole selection at once

Pick up any eligible appointment and drag it to a new slot. A card follows your cursor showing the patient and the target it would land on, and the slot you are hovering is highlighted. Release to stage the move; the appointment is not saved, it is queued.

Team view in shuffle mode mid-drag: Michael Chen's 9:00 AM block is being dragged down the timeline, a floating card beside the cursor reads Michael Chen over Wed, Sep 9 · 1:15 PM, and the 1:15 PM target region is outlined in blue with a small 1:15 PM time chip at its top edge
A drag in flight in Team view. The card beside the cursor names the patient and the exact target — day, time, and (when you cross columns) the new provider — and the outlined block shows where the visit would land.

How targets work in each view

ViewDrop behavior
DayDrop on any row; the appointment adopts that row’s start time.
TeamDrop anywhere on a provider’s timeline. Vertical position sets the time, snapped to 15 minutes; dropping on a different provider’s column reassigns the visit to that provider.
WeekDrop on any day column; position sets the time, snapped to 15 minutes.
MonthDrop on a day cell. The appointment keeps its own time and only the date changes.

Week and Month show a single provider, so cross-provider reassignment happens in Team view only.

Group drag

If you drag an appointment that is part of a selection of two or more, the whole selection travels with it. Hero measures how far you moved the one you grabbed and applies that same shift — days and minutes — to everything else, so the day keeps its shape: a 9:00, a 10:00, and an 11:00 dragged forward two hours become 11:00, 12:00, and 1:00. The card beside your cursor reads “Moving 3 appointments” instead of a patient name.

Drag a group across provider columns in Team view and every member is reassigned to the column you dropped on.

Ghosts, snapping, and taking it back

  • The original slot keeps a faded grey ghost of the appointment so you can always see where it came from. Ghosts can’t be clicked, dragged, or selected.
  • Times snap to 15-minute increments, and a drag can’t push a visit outside the column’s working hours.
  • Dropping an appointment back on its exact original slot un-stages it — the queue card disappears and the ghost is reabsorbed. It is the quickest way to change your mind about one visit.
  • Releasing anywhere that isn’t a valid slot stages nothing; the card reads “Drop on a calendar slot” while you hover dead space.
The drop outline doesn’t judge the slot. While you drag, the highlight only shows you where the visit will land — it isn’t a free/busy signal, and a slot that already has a patient in it will happily accept the drop. Conflicts are detected a moment after you release, and they show up as badges on the queue card (see The staged queue). Dropping onto an occupied slot is a legitimate move — it is how you deliberately double-book — so Hero flags it rather than blocking it.
1.17Bulk actions

Five ways to re-home a selection without dragging

Dragging is right for a handful of visits. For a whole day, use the action bar along the bottom — every button acts on the current selection and, like a drag, only stages.

The shuffle action bar with three appointments selected: a 3 selected chip, an X to clear the selection, Select all shown, then the buttons Next with same provider, Next in practice, Let patient reschedule, Cancel, and Shift, with undo and redo arrows at the right end
The action bar. Everything to the right of the divider acts on the selection; the undo and redo arrows at the far end step through your staging history.

Next with same provider

Stages each selected appointment onto its own provider’s next open slot — the earliest free slot from now onwards that fits the visit’s own duration and type, searched up to 60 days ahead. Hero looks up the whole selection in one pass and makes sure the proposals don’t collide with each other, so a full day can be re-seated with one press. Use this when the provider will be back and you just need their patients later in the week.

Next in practice

Same idea, but the search fans out across every provider in the practice who offers that visit type, and takes the earliest slot anyone has. Patients moved to a different provider are staged as a reassignment. Use this when the patients matter more than the provider — an acute clinic, or a locum covering the day.

If nothing can be found for some of the selection within 60 days, Hero says so (“No open slot found for 4 appointments in the next 60 days”) and stages the ones it could place.

Let patient reschedule

The honest option when you can’t pick a good time on the patient’s behalf. It stages a reschedule request, and on apply Hero does two things for each patient:

  1. Releases the slot. The appointment is cancelled — recorded as provider-initiated, with the reason provider_unavailable and any cancellation fee waived. The visit stays visible on the calendar in a muted state rather than vanishing, so the day’s history is still readable, and the time itself becomes bookable again.
  2. Messages the patient a link to rebook. The message carries a secure portal link tied to that specific request. Opening it takes the patient to the portal’s booking screen with a RESCHEDULE NEEDED banner naming the visit that has to move, and the original provider and visit type already selected — they just pick a new time.
The patient portal booking screen headed Schedule An Appointment Now with a yellow RESCHEDULE NEEDED banner reading Your New Patient Consultation with Sarah Johnson, MD on Wednesday, September 2, 2026 at 1:00 PM needs to be rescheduled — pick a new time below, above In-office visit / Remote visit options and a Physician selector already set to Sarah Johnson, MD
What the patient sees after following the link: the visit that needs moving is named, and the provider and visit type are pre-filled so rebooking is a matter of choosing a time.

Requests stay open for 30 days. If a patient never acts, the request quietly expires and the banner disappears from their portal — so check back on anyone you released rather than assuming they rebooked.

The slot really is released. “Let patient reschedule” is not a hold. The moment the batch applies, the appointment is cancelled and the time is open to anyone — including the waitlist and online booking. A patient who takes three days to read the message may find their old time gone. If the time must be protected, move the visit yourself instead.

Cancel

Stages a plain cancellation for the selection — the same provider-initiated, fee-waived cancellation described above, without a reschedule request or a rebooking link. The patient still gets whatever message you write in the composer. Use it when the visit shouldn’t simply be moved: a cancelled clinic that patients will be re-contacted about separately.

Shift…

Opens a small popover for moving a selection relatively, which is usually what “the morning is running late” or “Tuesday moves to Thursday” actually means.

The Shift popover open above the action bar in Day view with three appointments checked: a heading Shift selection over six preset buttons −1h, −30m, −15m, +15m, +30m, +1h, then a heading Move to another day (same times) with a date field and a Stage button
The Shift… popover. The six presets nudge the whole selection along the same day; the date field below moves it to another day at the same clock times.
  • Offset presets−1h, −30m, −15m, +15m, +30m, +1h. Each press moves every selected visit by that much from wherever it currently sits, so pressing +30m twice is an hour. Providers are unchanged.
  • Move to another day (same times) — pick a date and press Stage. Every selected visit keeps its clock time and its provider and lands on that day. This is the direct answer to “move the whole of Tuesday to Thursday”.
Shifts never cross midnight. An offset that would push a visit past the end of the day is clamped to stay within it, because a bulk shift that silently rolls a 5 PM appointment into the small hours of the next morning is nearly always a mistake. Use Move to another day when you genuinely want a different date.
1.18The staged queue

Everything you’ve changed, before any of it is real

The panel on the right is the plan. Its header reads Staged changes with a running count, and each queued change gets a card naming the patient, the visit type and length, and the move itself as old → new.

Day view with three staged moves: the appointment rows for Michael Chen, Emily Rodriguez, and David Smith are faded to ghosts, and the right panel headed Staged changes 3 with an Undo all control shows three cards, each with an amber Move badge, the patient name, New patient consultation · 60 min, and the change Wed, Sep 9 · 9:00 AM → Fri, Sep 11 · 9:00 AM, above an orange Review & apply (3) button
A whole day staged onto Friday. The original rows are ghosted on the calendar, each card carries a Move badge and its before-and-after, and the button at the bottom counts what will be applied.

One appointment is only ever one card. Drag the same visit three times and the card simply updates — the latest target wins — so the queue always reads as the plan, never as a history of your fiddling.

Badges

Each card is tagged with what will happen to it:

BadgeMeaning
MoveSame provider, new date and/or time.
ReassignA different provider (with or without a time change). The card adds a line naming the old and new provider.
Ask patientStaged by Let patient reschedule — the slot will be released and the patient invited to rebook.
CancelStaged by Cancel — the visit will be cancelled outright.

Conflict badges

A moment after each change is staged, Hero checks the target against the real calendar and adds a second badge if there is a problem. Hover it to read exactly what it found.

Day view with one staged change: Michael Chen's 9:00 row is a faded ghost and a second Michael Chen row appears at 10:00 outlined in amber, directly under Emily Rodriguez's existing 10:00 appointment; the queue card carries both a Move badge and an amber Conflict badge, and the panel footer reads 1 conflict to review at apply above Review & apply (1)
A staged move that double-books 10:00. The ghost marks the original slot, the amber outline marks the staged target, and the card carries a Conflict badge. Nothing is blocked — the footer just warns that it needs a decision at apply time.
  • Conflict (amber) — the target collides with something that can be overridden: a double-booking, blocked time, or a booking rule. You can apply it, but you must confirm it first.
  • Blocked (red) — the change cannot be applied at all: the appointment has vanished or been changed by someone else, the visit is locked or in the past, or the target provider doesn’t offer that visit type. Blocked items must be fixed or removed.

The panel footer summarizes: “2 conflicts to review at apply”, or “1 blocked change — resolve or remove before applying” when anything is blocked.

Badges are advisory. The check runs against the calendar as it looked a second ago. Apply re-validates everything authoritatively on the server, so a queue with no badges can still report a failure if a colleague booked into your target in the meantime. Treat a clean queue as encouraging, not as a guarantee.

Undoing

  • One card — hover it and click the X to drop just that change.
  • EverythingUndo all at the top right of the panel clears the queue in one step (itself undoable).
  • Step by step — the undo and redo arrows at the right of the action bar, or Cmd/Ctrl+Z and Shift+Cmd/Ctrl+Z, walk back and forth through your staging history — up to 50 steps.
One batch is capped at 200 changes. Past that Hero refuses to stage more and asks you to apply what you have first. A very large multi-day sweep should be done as several batches.
1.19Review & apply

Commit the batch and tell every patient once

Review & apply at the bottom of the queue opens the last stop before anything is written. The dialog is headed Review & apply changes and opens with a count of what is about to happen, summarized by kind: 3 moved, 2 reassigned, 4 patient reschedules, 1 cancelled.

The Review & apply changes dialog: subtitle 3 staged changes will be applied together, a 3 moved chip, a Notify affected patients section with a checked Send box and the note One message per patient explaining the change — sent only after the batch applies; Email and Text message are unchecked and Portal message is checked; a Message to patients textarea holds the default template with placeholders, below it a row of placeholder chips, a Preview · Michael Chen box showing the rendered message, a collapsed Patients (3 of 3 will be notified) section, and the buttons Keep staging and Apply & notify (3)
The review dialog with the notification composer. Here only Portal message is ticked; the preview underneath shows the message exactly as the first patient will read it.

Conflicts and blocks

Anything blocked is listed first in red, each with an inline remove link that drops it from the batch. Blocked items cannot be forced — leave one in and it will simply fail.

Anything conflicted gets its own section listing each collision in plain language. To proceed you tick one checkbox — “Apply these conflicted changes anyway (recorded as a scheduling override)” — which reveals an Override reason field pre-filled with Mass reschedule. The reason is stored with the override for audit.

The override confirmation covers every conflicted item at once. There is no per-item tick. If you want to accept some collisions but not others, remove the ones you don’t want from the queue first, then apply. Overriding also requires the scheduling-override capability — without it those items fail individually with an override_required error while the rest of the batch still applies.

The notification composer

Under Notify affected patients sits the message that goes out, with the promise printed above it: “One message per patient explaining the change — sent only after the batch applies.” Nothing is sent if the batch fails, and failed items are left out of the blast.

The Send checkbox at the top right of the section turns messaging off entirely; untick it and Hero confirms that patients will not be messaged and you can tell them individually later.

Three channels can be combined, and all three are on by default:

ChannelWhat it does
EmailQueues one email per patient. The subject is set for you: “An update about your appointment”, or “Please choose a new appointment time” for released visits.
Text messageQueues one SMS per patient, subject to their consent and opt-outs as with any other text.
Portal messagePosts the message into the patient’s portal inbox from the provider. Requires the patient to have a portal account and portal messaging to be enabled for your practice.
Check the channels every time. Email, text, and portal all start ticked, so pressing Apply without looking sends on all three. For a routine shuffle that is often right — but decide it deliberately, especially on a large batch.

Placeholders and the preview

The Message to patients box starts from a default that already reads as a complete message, and every token is filled in per patient. Click a chip to insert it:

PlaceholderBecomes
{{patient_first_name}}The patient’s first name.
{{provider}}The provider on the visit.
{{visit_type}}The appointment type, e.g. “New patient consultation”.
{{old_time}}The original date and time, in your practice’s timezone.
{{new_time}}The new date and time. Blank for cancellations and releases, which have no new time.
{{org_name}}Your practice name.
{{portal_link}}The patient’s secure portal link. Reschedule requests always include it whether or not you add the token.

A dashed Preview box below renders the message for the first patient in the batch, so you can see the real wording rather than the tokens before you send it to thirty people.

Each patient’s message also lists their own visits. Underneath whatever you write, Hero appends the specific changes for that patient — a line per appointment, such as “September 9, 2026 at 9:00 AM → September 11, 2026 at 9:00 AM”, or “released — please pick a new time”. The preview box doesn’t show those lines, so a message that looks vague in preview still arrives specific. This is also why a patient with three moved visits gets one message listing three lines, not three messages.

Leaving individual patients out

The Patients (12 of 14 will be notified) section expands into a list of everyone affected, each ticked. Untick anyone you would rather call yourself — a patient mid-treatment, or someone you already spoke to. Their appointment still changes; only the message is suppressed. Patients whose contact preferences or account status make them ineligible are skipped automatically.

Applying

The submit button reads Apply & notify (12) when a channel is selected, or Apply 12 changes when messaging is off. Keep staging backs out and leaves the queue untouched.

The dialog after applying, headed Batch applied, with a green banner reading 3 applied and one row per patient — Michael Chen rescheduled · message queued via portal, Emily Rodriguez rescheduled · message queued via portal, David Smith rescheduled · message queued via portal — above Close and Done buttons
The result view. Every item reports individually, including which channels its message went out on.

Results come back per item — rescheduled, cancelled, or released — patient asked to rebook, each noting the channels used. If anything failed, the banner says so and names the reason against each item.

Failures stay in the queue. A partial batch is a normal outcome: successful items are committed and clear, failed items remain staged so you can adjust the target and apply again. One bad item never rolls back the rest. Applying the same batch twice is safe — Hero recognizes the retry and will not move anything twice.

Once applied, the calendar refetches for every provider involved, on both sides of the move, and your undo history is cleared — applied changes cannot be pulled back into the queue.

Freed slots may be offered to the waitlist. Every slot a shuffle vacates is handed to the waitlist automatically, exactly as a normal cancellation would be (see Waitlist). That is usually the point — but it does mean the times you just emptied may not stay empty for long.
1.20Limits & troubleshooting

What shuffle mode will not do, and what the errors mean

Known limits

  • No undo after applying. There is no “revert this batch” button. Once applied, putting things back means shuffling them back — which is easy enough, but the patients will have had the first message. Review before you apply, not after.
  • Recurring appointments move one at a time. Shuffle mode has no concept of a series; staging a visit that belongs to one moves that single occurrence.
  • One appointment, one batch. The queue holds a single change per appointment — the latest one you staged.
  • 200 changes per batch. Split larger sweeps.
  • No send scheduling. You cannot time the message blast. Messages are queued the moment the batch commits — though a patient’s quiet-hours preference can still hold their message until a reasonable hour, so “sent on apply” does not always mean “delivered on apply”.

Times are always your practice’s times

Every time you see and every time you drop onto — in the calendar, on the queue cards, in the preview, and in the message the patient receives — is your organization’s local time, not your computer’s. Shuffling from a laptop in another timezone moves appointments to the times you see on screen.

Common failures

What you seeWhat happened & what to do
“This appointment changed since you staged it. Refresh the calendar and try again.”Someone else moved or edited that visit while it sat in your queue. Hero refuses rather than overwrite their work. Remove the item, refresh, and redo it.
“This appointment is no longer available.”The visit was cancelled or deleted elsewhere. Drop it from the queue.
“Another booking is in progress for this time slot.”Someone is booking that exact slot right now. Wait a moment and retry, or pick a different target.
“The selected provider does not offer ‘<visit type>’.”A cross-provider reassignment landed on someone who doesn’t do that visit type. Add the visit type to that provider (see Visit types) or choose another column.
“This appointment requires administrative review before it can be changed.”A billing policy is holding the visit. It has to be handled outside shuffle mode.
An override that failed with override_requiredYou confirmed a conflict but your account can’t authorize scheduling overrides. Ask someone who can, or remove the conflicting item.

Every batch is recorded

Shuffle batches are written to the audit trail — who applied it, when, what each item changed from and to, the message that was sent, and any override reason. If a patient asks why their appointment moved, the answer is recoverable.

Need help? Email support@heroemr.com.