> ## Documentation Index
> Fetch the complete documentation index at: https://help.clinikehr.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Shifts

> Build a rota, create reusable shift types and repeating patterns, and manage swap and cover requests.

export const StillStuck = ({topic}) => <div className="ck-callout ck-callout--note" role="note">
    <p className="ck-callout__body">
      <strong>Still stuck{topic ? ` with ${topic}` : ''}?</strong>{' '}
      Check <a href="/platform/help/troubleshooting">Troubleshooting</a> first —
      it covers the failures we see most often. If that does not resolve it,{' '}
      <a href="/platform/help/contact-support">contact support</a> and include
      your workspace name and the time the problem happened, so we can find the
      matching entry in your audit log.
    </p>
  </div>;

export const Path = ({steps = []}) => <span className="ck-path">
    {steps.map((s, i) => <span key={i} className="ck-path__step">
        {i > 0 ? <span className="ck-path__sep" aria-hidden="true">
            ›
          </span> : null}
        {s}
      </span>)}
  </span>;

export const Availability = ({editions = ['all'], plans, roles, note}) => {
  const list = editions.includes('all') ? ['clinic', 'pharmacy', 'lims'] : editions;
  return <div className="ck-avail" role="note" aria-label="Feature availability">
      <span className="ck-avail__label">Available in</span>

      {list.map(e => <span key={e} className={`ck-pill ck-pill--${e}`}>
          {EDITION_LABELS[e] || e}
        </span>)}

      {plans ? <span className="ck-avail__label">Plan</span> : null}
      {plans ? <span className="ck-pill ck-pill--plan">{plans}</span> : null}

      {roles ? <span className="ck-avail__label">Who</span> : null}
      {roles ? <span className="ck-pill ck-pill--role">{roles}</span> : null}

      {note ? <span className="ck-avail__note">{note}</span> : null}
    </div>;
};

<Availability editions={['clinic']} plans="Team and above" roles="Everyone can view; managing the rota needs owner, manager, or a granted Shifts permission" note="Requesting cover on your own shift needs no permission at all" />

This is where your hospital's staff rota lives: who is working, when, and what happens when someone needs cover. It sits inside Settings rather than its own page, next to **Staff & Teams**.

<Path steps={['Settings', 'Team', 'Shifts']} />

## What this tab controls

| Section            | What it does                                                                                                                                                                                          | Who sees it                                                        |
| ------------------ | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- | ------------------------------------------------------------------ |
| **Rota**           | The week or month grid, by person or by department. Click a slot to assign a shift, or a shift to edit it. On a phone this becomes a day-by-day list instead of a squeezed grid.                      | Everyone (edit needs a permission — see below)                     |
| **Shift types**    | Reusable templates like "Day 7:00 AM – 7:00 PM", including overnight shifts. Repeating patterns generate real shifts from a template on a schedule you set (e.g. every Monday, Wednesday and Friday). | Managing needs a permission                                        |
| **Cover & swaps**  | Requests to swap or cover a shift: a colleague accepts, then a manager approves before the shift actually changes hands.                                                                              | Everyone with a stake in the request; approving needs a permission |
| **Coverage rules** | A minimum headcount for a department or role during a time window — the rota flags any window that falls short, and highlights a person booked onto two overlapping shifts.                           | Managing needs a permission                                        |

A staff member who cannot manage the rota sees a simple **My shifts** view instead: their own upcoming shifts, a **Request swap or cover** button on each, and the requests they are part of.

<Availability editions={['clinic']} plans="Team and above" roles="Owner, manager, or a role granted the Shifts permission" note="Grant the permission from Staff & Teams → a person's Permissions" />

## Assign a shift

<Steps>
  <Step title="Open the Rota tab">
    Choose **Week** or **Month**, and **By person** or **By department**. Use the arrows to move between periods.
  </Step>

  <Step title="Select a slot or a shift type">
    Click an empty slot for that day and person, or **New shift** to pick anyone. Choosing a shift type fills in the hours for you; you can still adjust them.
  </Step>

  <Step title="Assign and save">
    Pick who it belongs to — or leave it **Open (unassigned)** for someone to claim later — and save. The shift appears on the rota immediately, and the person gets a notification.
  </Step>
</Steps>

## Build a repeating pattern

Instead of assigning the same shift week after week, create a shift type once, then a pattern that says which days it repeats on and how far into the future to generate it. The tab shows how many shifts a pattern will add before you confirm. Running it again later only adds what's missing — it never duplicates a shift already on the rota.

**Copy week** duplicates a whole week's rota to another week in one step, for the whole team or one department.

## Request and approve cover

<Steps>
  <Step title="Ask for cover">
    From your own shift, or a colleague's if you manage the rota, select **Request swap or cover** and add a reason.
  </Step>

  <Step title="A colleague accepts">
    Anyone the request was sent to — or anyone at all, for an open request — can accept it from **Cover & swaps**. Accepting does not move the shift yet.
  </Step>

  <Step title="A manager approves">
    Only once a manager approves does the shift actually reassign. Approving or declining notifies both people.
  </Step>
</Steps>

## Coverage rules

Set a minimum headcount for a department or role during a time window — for example, at least two people on Front Desk between 9:00 AM and 5:00 PM on weekdays. The Rota tab flags any window that falls below the minimum, and separately flags a person booked onto two overlapping shifts.

<Note>
  **A shift fills in a day that has NO working hours set at all — it does not add to a day that already has some.** If a person has no [Availability](/hospital/settings/booking-settings) schedule covering a given weekday, a shift assigned that date makes them bookable for exactly the shift's hours. On a day they already have a working-hours schedule — even a narrow one — an extra shift on that same day changes nothing about what can be booked; their regular hours are what's offered. To make someone bookable for LONGER on a day they already work, widen their Availability schedule for that day instead. A service line that never uses shifts sees no change.
</Note>

<Warning>
  **Cancelling a shift removes it from the rota permanently**, along with any open swap or cover request for it. This cannot be undone — assign a replacement shift afterward if the work still needs covering.
</Warning>

<StillStuck />
