πŸ“ Tutorial βš™οΈ Mechanics 🧭 Dashboard Guide ← Dashboard
Step-by-Step Guide

DDI AL Ballot 2027
Complete Registration Walkthrough

Register your leave preferences for the 2027 Annual Leave Ballot β€” from verifying your NUH email to submitting your selections and checking the live dashboard.

πŸ“‹ In This Guide

  1. Introduction
  2. Prerequisites
  3. Step-by-Step Instructions
    1. Email Verification
    2. OTP Verification
    3. Verification Confirmation
    4. Select P1 Ballot 1 (Month)
    5. Select P1 Ballot 1 (Week)
    6. Additional Ballot Selections
    7. Bonus Week Selection
    8. Declaration & Submission
    9. Confirmation & Dashboard
  4. Troubleshooting Tips
  5. Next Steps

Introduction

The DDI AL Ballot 2027 lets you choose the weeks you would like to take annual leave next year. The registration form is quick and straightforward: you verify your NUH email, pick your preferred months and weeks for two P1 ballots and two P2 ballots, decide whether to opt into the bonus week, and submit your declaration.

This guide walks through every step with visual references so you know exactly what to expect. Read the Ballot Mechanics guide first if you want to understand how P1/P2 priorities and weekly capacity work behind the scenes.

Prerequisites

Before you start, make sure you have the following ready:

πŸ’‘ Before you begin

Do the whole form in one sitting. The email verification step is time-sensitive, and FormSG sessions expire after a period of inactivity.

Step-by-Step Instructions

Follow the steps in order. Steps that belong to the same priority group are colour-coded: P1 (higher priority, orange) and P2 (lower priority, blue).

1

Email Verification

Start here

Open the ballot registration link. The first section asks you to verify your email address.

  • Where to enter: type your full NUH email address into the Email field.
  • What to click: press the Verify button.
  • Expected behaviour: the form advances to the OTP step. If the address is rejected, double-check for typos β€” the system only accepts recognised NUH email addresses.
verify-email.png Enter your NUH email and click Verify Email
2

OTP Verification

Security check

A one-time password (OTP) is sent to the email address you entered. Complete this step promptly.

  • Where to find the OTP: open your email inbox and look for the verification email from FormSG.
  • How to enter it: type the 6-character alphanumeric code into the OTP field on the form (the code appears in bold in the email).
  • Time sensitivity: the OTP expires after 30 minutes. If it expires, you will need to request a new code before you can submit the form.
fill-otp.png Enter the 6-digit OTP from your email
formsg-otp.jpg FormSG OTP verification screen

⏰ Time limit

OTPs expire after 30 minutes. If your code no longer works, click Resend Code and use the code from the latest email.

3

Verification Confirmation

Verified

Once the OTP is accepted, the form confirms that your email has been verified.

  • Confirmation: you will see a green border around the email field and a green tick inside it, and the Verify button now reads Verified.
  • What happens next: the ballot selection sections unlock automatically β€” continue straight to Step 4. You will not need the OTP again in this session.
email-verified.png Green confirmation that the email is verified
4

Select P1 Ballot 1 (Month)

P1Priority 1

In the P1 Ballot 1 section, choose the month you most want leave in. P1 is your highest-priority request.

  • Navigation: scroll to the P1 Ballot 1 (Month) dropdown.
  • Selection options: pick one month from the list.
  • Confirmation: the month you pick is highlighted in the field β€” the week dropdown in the next step updates to match it.
select-month.png P1 Ballot 1 month dropdown selection
5

Select P1 Ballot 1 (Week)

P1Priority 1

Choose the specific week within the month you selected in Step 4.

  • How to choose: open the P1 Ballot 1 (Week) dropdown and pick the week you want.
  • Relationship to the month: the week options depend on the month you chose β€” only weeks within that month are listed. If you change the month, re-select your week.
  • Tip: weeks with public holidays or school holidays tend to be oversubscribed β€” see the Ballot Mechanics guide for the full list.
select-week.png P1 Ballot 1 week dropdown selection
6

Additional Ballot Selections

P1P2Repeat pattern

Repeat the same month-then-week pattern from Steps 4–5 for your remaining ballot entries:

  • P1 Ballot 2 β€” a second month/week at priority 1.
  • P2 Ballot 1 β€” a first month/week at priority 2 (lower priority than P1).
  • P2 Ballot 2 β€” a second month/week at priority 2.

Each section works exactly like Steps 4–5: pick the Month, then pick the Week within it. You may choose the same month in different ballots, but avoid selecting the exact same week twice β€” the declaration in Step 8 requires no duplicates.

ℹ️ No screenshots available

These sections follow the identical dropdown pattern shown in Steps 4–5. Simply repeat the same actions for P1 Ballot 2, P2 Ballot 1, and P2 Ballot 2.

7

Bonus Week Selection

Bonus

Decide whether you want to be included in the bonus week (the extra 2028-W01 ballot).

  • Opt in: your name enters the bonus-week draw for an additional chance to secure leave that week.
  • Opt out: you are not included in the bonus-week draw; your regular P1/P2 selections are unaffected.

Choose the option that matches your preference β€” there is no penalty for either choice.

select-bonus.png Bonus week opt-in / opt-out options
8

Declaration & Submission

Final check

Before submitting, the form asks you to declare that your selections are correct.

  • Declaration text: read the statement confirming that your ballot entries are correct and contain no duplicate weeks.
  • Checkbox actions: tick the declaration checkbox(es) β€” submission stays disabled until they are checked.
  • Submit button: click the Submit button at the bottom of the form once everything is verified.

⚠️ After submitting

Once submitted, the only way to change your selected weeks is to submit a new form with all your choices.

declarations.png Declaration checkbox and Submit button
9

Confirmation & Dashboard

Done

After submitting, you land on the confirmation page β€” you're all set.

  • Confirmation page: a success screen shows that your response was submitted.
  • Email copy: you will receive an email containing a copy of your responses β€” it can take a few minutes to arrive (check Spam if needed).
  • Dashboard access: click the View Live Dashboard button on the confirmation page to see the week-by-week overview with your entries (not accessible on NUH intranet).
confirmation.png Submission confirmation page
dashboard.png Live dashboard with your ballot entries

Troubleshooting Tips

πŸ“§
OTP email not arriving
Wait 1–2 minutes, then check your Spam/Junk folder. Make sure you entered the exact NUH address. If it still doesn't arrive, request a new code.
⏰
OTP expired / no longer valid
OTPs are time-limited. Click Resend Code to get a fresh one and complete the verification promptly.
🚫
Email address not accepted
Check for typos and ensure it is your NUH staff address.
πŸ”
Form flags a duplicate week
You may have selected the same week in two ballots. Change one of the selections so each week appears only once before submitting.
πŸ•ΈοΈ
Page timed out or froze
FormSG sessions expire after inactivity. Refresh the page and restart β€” you may need to verify your email again. Keep the form open and complete it in one sitting.

Next Steps

✏️ Modify your selections

The dashboard updates with new entries from other staff in real time. If you see a week getting overcrowded and want to ballot for another week, resubmit the form again with your new choices.

πŸŽ‰ You're all set

That's the entire registration flow. If anything looks wrong on the dashboard, contact BYT/CEM before the ballot closes.

How It Works

Ballot Mechanics
How Leave is Allocated

A clear explanation of how the 2027 Leave Ballot system decides who gets which weeks. The actual code is also provided below for full transparency.

πŸ“‹ In This Guide

1. How It Works β€” A Simple Overview

The Leave Ballot system allocates annual leave weeks fairly. Here's the simple version:

  1. You submit your preferred weeks (P1 = high priority, P2 = standard priority, and optionally the Bonus Week).
  2. The system checks how many slots are available each week (15 base slots).
  3. The draw runs with a random seed. It allocates P1 requests first, then P2 requests.
  4. You get your weeks if there's space and your modality hasn't reached its cap.
  5. If you have fewer than 4 weeks, you can submit a reballot for additional weeks.
🎯 Fair and Transparent: Every draw uses a seed value, so results are reproducible and auditable. The actual code is shown below so you can verify the logic yourself.

2. Weekly Capacity: 15 Slots

Each week has 15 slots available for ballot leave.

πŸ“Œ Important: Protected leaves (ML, MRL, PL, SPL, RL, HL, TL, ICL, CCL, FCL, AL) do not reduce the 15 slots. They are counted separately.

What Counts Toward the 15 Slots?

What Does NOT Count?

πŸ“ Example: Week 10 has 3 staff on ML. The week still has 15 slots available for ballot. The 3 ML staff are on leave in addition to the 15 ballot staff.

3. Modality Caps & Leave Conflicts

Two important rules control who can be on leave at the same time: Modality Caps and Leave Conflicts.

3a. Modality Caps

Each modality (department/role) has a maximum number of staff that can be on leave in a single week. This ensures no single department is understaffed.

Modality Cap Cap (if β‰₯1 on protected leave)
IR34
PACS23
CT56
MRI56
NM34
BIC23
US45
GENβ€”β€”

How caps work: If your modality has a cap of 3, only 3 staff from your modality can be on leave in that week (including both ballot and protected leave).

Dynamic +1 cap: If there is at least 1 staff from a modality on protected leave (ML, MRL, PL, SPL, RL, HL, TL, ICL, CCL, FCL, AL) in a week, that modality's capacity increases by 1.

πŸ“ Example: IR Modality
  • Base cap: 3
  • Protected leaves in Week 10: 1 IR staff on ML
  • Relaxed total capacity: 3 + 1 = 4
  • Ballot slots available: 4 - 1 = 3
πŸ“ Result: 1 IR staff is already on ML. The remaining 3 slots can be allocated through the ballot (4 total capacity - 1 protected leave).

3b. Leave Conflicts β€” Department IC & 2IC

To ensure department operations continue smoothly, Department ICs (In-Charge) and 2ICs (Second In-Charge) cannot be on leave at the same time.

β›” Rule: If an IC and their 2IC both request the same week, one of them will be skipped during the draw. The decision is based solely on randomisation β€” whoever gets processed first keeps the slot.

How it works in the draw:

  1. When the draw processes entries, it checks if the staff member conflicts with anyone already allocated.
  2. If the IC is already allocated for a week, the 2IC will be skipped for that week.
  3. If the 2IC is allocated first, the IC will be skipped instead.
  4. The order is determined by the random shuffle β€” no one has priority over the other.

Example: IR Department

Staff Role Week Requested Priority Result
CXQ IR IC 2027-W10 P1 βœ… Allocated
PTY IR 2IC 2027-W10 P1 ❌ Skipped (conflict with IC)

Common Conflict Pairs

4. Exempted Staff

Some staff may be designated as Exempted β€” mainly those on PACS & AHA.

What This Means:

πŸ“ Example: Week 10 has 15 slots. 2 exempted staff ballot for this week. Effective capacity becomes 17 slots.

Exempted staff appear with a light brown background on the dashboard.

5. The Draw Process (Step by Step)

1. Submit β€” You submit your P1, P2, and Bonus Week preferences. β†’
2. Check β€” The system checks duplicate entries and flags them. β†’
3. Shuffle β€” Entries are shuffled randomly using a seed. β†’
4. Allocate P1 β€” P1 (high priority) entries are allocated first. β†’
5. Allocate P2 β€” P2 (standard priority) entries are allocated next, using remaining slots. β†’
6. Results β€” You can see who got which weeks on the dashboard.

Allocation Rules (In Order)

  1. Conflict Check β€” If you conflict with an already-allocated staff member (like an IC/2IC pair), you are skipped.
  2. Exempted Status β€” Exempted staff are always allocated.
  3. Slot Availability β€” There must be a slot remaining in the week.
  4. Modality Cap β€” Your modality must not have exceeded its cap.
  5. Randomisation β€” Within the same priority, allocation order is random (using the seed).
🎲 Reproducible Results: The same seed always produces the same allocation, ensuring transparency.

6. The Actual Code

Below is the actual Python code that runs the draw. You can review it to verify the logic is fair and transparent.

# ============================================ # DRAW ALGORITHM # ============================================ async def run_draw(seed: str): random.seed(seed) async with AsyncSessionLocal() as session: # Clear previous draw results await session.execute(delete(DrawResult)) ballots = (await session.execute(select(BallotEntry))).scalars().all() protected_leaves = (await session.execute(select(ProtectedLeave))).scalars().all() # Group protected leaves by week other_by_week = {} for ol in protected_leaves: other_by_week.setdefault(ol.week_label, []).append(ol) # Skip duplicate entries valid_ballots = [] for b in ballots: if b.duplicate_flag: continue # Skip duplicates valid_ballots.append(b) # Group ballots by week ballot_by_week = {} for b in valid_ballots: ballot_by_week.setdefault(b.week_label, {"high": [], "low": [], "bonus": []}) ballot_by_week[b.week_label][b.priority].append(b) # Load exempted staff exempted_ids = get_exempted_ids() # Load leave conflicts (IC/2IC pairs) conflicts = get_conflicts() conflict_set = build_conflict_set(conflicts) # Count protected leaves by modality per week protected_leave_counts_by_week = {} for ol in protected_leaves: if ol.modality: protected_leave_counts_by_week.setdefault(ol.week_label, {}) protected_leave_counts_by_week[ol.week_label].setdefault(ol.modality, 0) protected_leave_counts_by_week[ol.week_label][ol.modality] += 1 for week in REGULAR_WEEKS: # 1. Calculate available slots base_slots = get_week_slots(week) # Default: 15 # Count exempted staff for this week week_ballots = ballot_by_week.get(week, {"high": [], "low": [], "bonus": []}) all_entries = week_ballots["high"] + week_ballots["low"] + week_ballots["bonus"] exempted_count = sum(1 for b in all_entries if b.employee_id in exempted_ids) # Effective slots = base + exempted effective_slots = base_slots + exempted_count # 2. Calculate modality caps (with relaxation) effective_caps = {} for mod, base_cap in MODALITY_CAPS.items(): protected_count = protected_leave_counts_by_week.get(week, {}).get(mod, 0) if protected_count > 0: # Relax: total capacity = base_cap + 1 total_cap = base_cap + 1 # Ballot slots = total_cap - protected_leaves ballot_cap = max(0, total_cap - protected_count) else: ballot_cap = base_cap effective_caps[mod] = ballot_cap # 3. Process P1 entries (high priority) p1_entries = ballot_by_week.get(week, {}).get("high", []) random.shuffle(p1_entries) slots_remaining = effective_slots modality_counts = {m: 0 for m in effective_caps} winners = [] for entry in p1_entries: mod = get_modality(entry.employee_id) cap = effective_caps.get(mod, 0) is_exempted = entry.employee_id in exempted_ids # Check for conflicts (IC/2IC cannot be on leave together) if has_conflict(entry, winners, conflict_set): continue # Conflict with already-allocated staff if is_exempted: winners.append(entry) # Always allocate exempted elif slots_remaining > 0 and modality_counts[mod] < cap: winners.append(entry) modality_counts[mod] += 1 slots_remaining -= 1 else: pass # Skipped # 4. Process P2 entries (standard priority) p2_entries = ballot_by_week.get(week, {}).get("low", []) random.shuffle(p2_entries) for entry in p2_entries: mod = get_modality(entry.employee_id) cap = effective_caps.get(mod, 0) is_exempted = entry.employee_id in exempted_ids # Check for conflicts (IC/2IC cannot be on leave together) if has_conflict(entry, winners, conflict_set): continue # Conflict with already-allocated staff if is_exempted: winners.append(entry) # Always allocate exempted elif slots_remaining > 0 and modality_counts[mod] < cap: winners.append(entry) modality_counts[mod] += 1 slots_remaining -= 1 else: pass # Skipped # 5. Save winners to database for w in winners: session.add(DrawResult(employee_id=w.employee_id, week_label=week)) # Bonus week processing (same logic) bonus_entries = ballot_by_week.get(BONUS_WEEK, {}).get("bonus", []) random.shuffle(bonus_entries) slots_remaining = bonus_slots modality_counts = {m: 0 for m in effective_caps} bonus_winners = [] for entry in bonus_entries: mod = get_modality(entry.employee_id) cap = effective_caps.get(mod, 0) is_exempted = entry.employee_id in exempted_ids # Check for conflicts (IC/2IC cannot be on leave together) if has_conflict(entry, bonus_winners, conflict_set): continue # Conflict with already-allocated staff if is_exempted: bonus_winners.append(entry) # Always allocate exempted elif slots_remaining > 0 and modality_counts[mod] < cap: bonus_winners.append(entry) modality_counts[mod] += 1 slots_remaining -= 1 else: pass # Skipped # Save bonus winners for w in bonus_winners: session.add(DrawResult(employee_id=w.employee_id, week_label=BONUS_WEEK)) await session.commit()
πŸ” Key Things to Note in the Code:
  • Only ignored duplicates are skipped β€” cross-duplicate P2 entries; P1/P2 duplicates are deduped and still enter the draw.
  • Exempted staff are always allocated β€” they bypass caps and add capacity.
  • Conflicts are checked β€” IC and 2IC cannot be on leave together.
  • Randomisation uses a seed β€” results are reproducible.
  • P1 entries are processed before P2 β€” higher priority requests go first.
  • Modality caps are checked β€” no single department gets overloaded.
  • Protected leaves relax caps by +1 β€” but they also consume modality capacity.

7. Reballot

If you receive fewer than 4 weeks of leave in the first draw, you can submit a reballot.

1. Identify β€” The system finds staff with <4 weeks allocated. β†’
2. Generate Links β€” You receive a unique, secure link via email. β†’
3. Submit β€” You select your preferred additional weeks. β†’
4. Second Draw β€” A second draw runs to allocate remaining slots.
πŸ”— Secure Links: Each reballot link is unique and secure, verifying your identity and the number of weeks you're owed.

8. Duplicate Entries

The system detects and handles duplicate entries:

⚠️ Duplicate Types

P1 Duplicate

You selected the same week multiple times in P1. The dashboard shows each entry you submitted β€” the duplicate occurrence is marked VOID ❌. Only one entry enters the draw.

P2 Duplicate

You selected the same week multiple times in P2. The dashboard shows each entry you submitted β€” the duplicate occurrence is marked VOID ❌. Only one entry enters the draw.

Cross Duplicate

You selected the same week in both P1 and P2. The dashboard shows both entries: the P1 entry is valid (no tag) and enters the draw; the P2 entry is marked VOID ❌ and is excluded.

⚠️ Important: Every submitted entry is captured on the dashboard β€” duplicates are not hidden. The entry that actually counts is the one without the VOID ❌ badge; the flagged duplicate is excluded from the draw. For a cross duplicate, the P1 entry wins the week and the P2 entry is shown as VOID ❌.
User Guide

Dashboard Guide
Using the Leave Ballot Dashboard

Everything you need to know to understand your leave ballot dashboard.

πŸ“‹ In This Guide

1. Dashboard Overview

The dashboard shows all weeks of the year, organized by month. Each week is displayed as a card that shows who has submitted, who has been allocated, and how many slots remain.

πŸ“† What You'll See β€” Scroll to explore
February 2027
1–7 Feb 2027-W05
🧧 Chinese New Year
πŸ“Œ Protected Leaves (2)
BYT (IR)RL
TJH (MRI)TL
πŸ“‹ Submitted (9)
GMT (CT)P1
EAG (US)P1
CSE (MRI)P2
DRD (NM)P2
CCC (GEN)P2
ZYC (IR)P2
YHY (IR)P1
FZS (MRI)P1
GQY (CT)P1
Ballot entries: 9
IR
PACS
CT
MRI
NM
BIC
US
3/4
0/2
2/5
3/6
1/3
0/2
1/4
πŸ“Œ Pre-Draw: Entries show as "Submitted". BYT is exempted (always allocated, adds a slot). Baby blue marks future-modality staff (GEN β†’ a future modality in 2027): EAG (US), CSE (MRI), TJH (MRI).
1–7 Feb 2027-W05 (9 slots)
🧧 Chinese New Year
πŸ“Œ Protected Leaves (2)
BYT (IR)RL
TJH (MRI)TL
βœ… Allocated (8)
GMT (CT)P1
EAG (US)P1
YHY (IR)P1
FZS (MRI)P1
GQY (CT)P1
CSE (MRI)P2
DRD (NM)P2
CCC (GEN)P2
❌ Unallocated (1)
ZYC (IR)P2
πŸ”„ Reballot (1)
CKM (MRI)Rebid
Remaining slots: 1 / 9
IR
PACS
CT
MRI
NM
BIC
US
3/2
0/0
2/3
3/4
1/1
0/0
1/2
πŸ“Œ Post-Draw (oversubscribed): With the base cap cut to 9 and each modality cap reduced by 2, 8 of 9 requests were allocated. ZYC missed out because the IR cap was reached, and CKM reballoted for the 1 remaining slot.
3–9 Jan 2028 2028-W01
⭐ BONUS
πŸ“Œ Protected Leaves (2)
BYT (IR)RL
TJH (MRI)TL
πŸ“‹ Bonus Opt-ins (9)
GMT (CT)Bonus
EAG (US)Bonus
CSE (MRI)Bonus
DRD (NM)Bonus
CCC (GEN)Bonus
ZYC (IR)Bonus
YHY (IR)Bonus
FZS (MRI)Bonus
GQY (CT)Bonus
Ballot entries: 9
IR
PACS
CT
MRI
NM
BIC
US
3/2
0/0
2/3
3/4
1/1
0/0
1/2
πŸ“Œ Bonus Week: An extra 2028-W01 week with reduced caps. There are no P1/P2 priorities β€” every opt-in is treated equally as a "Bonus" entry.
← Scroll left/right to see all examples β†’

Key Things to Know

A quick legend for reading the mock cards above:

πŸ“Œ Key things to know:
  • Month headers β€” weeks are grouped by month for easy navigation.
  • Week cards β€” each card shows one week's complete data.
  • Holiday badges β€” public holidays and school holidays are clearly marked.
  • Clickable week titles β€” click any week's title to jump straight to that week in the Draw Log.
  • Future modalities β€” GEN staff moving into a modality in 2027 are highlighted baby blue and shown with their future modality (e.g. EAG (US)). During the draw they take up the future modality's cap.
  • Capacity not shown β€” each week has a set capacity for ballot leave, but the exact number is intentionally hidden as it may be adjusted before the draw. Only the number of entries is shown.
  • Colored sections β€” each box is colour-coded: green Allocated, orange Submitted/Unallocated, yellow Reballot, grey Protected Leaves.
  • Name highlights β€” a staff name's background marks their status: light brown = exempted staff, baby blue = future-modality staff.
  • "Submitted" vs "Allocated" β€” before the draw, entries show as Submitted. After the draw, successful entries become Allocated, and unsuccessful ones become Unallocated.
  • Oversubscribed weeks β€” when more staff request a week than there is capacity, the draw randomly selects who gets the slots. The entry counter turns red to alert you.

How the Slot Counter Works

Each card shows a slot counter β€” Ballot entries: X before the draw and Remaining slots: X / Y after it. The weekly capacity is intentionally not shown before the draw, as it may be adjusted then β€” once the draw has run, the final capacity is shown.

πŸ“Š The counter states:
  • Pre-draw β€” "Ballot entries: X" shows how many staff have submitted for that week (e.g. "Ballot entries: 9").
  • Post-draw β€” "Remaining slots: X / Y" shows slots left after allocations (the capacity is final once the draw has run).
  • Oversubscribed β€” when more staff request a week than there is capacity, the counter turns red.
  • Exempted staff β€” exempted staff are included in the entry count but not called out separately.

How the Modality Counter Works

Each week card includes a modality counter β€” a small grid showing, for every modality, how many staff are using it versus that modality's capacity for the week:

πŸ“Š Modality Counter Example β€” 1–7 Jan (2027-W01)
IR
PACS
CT
MRI
NM
BIC
US
0/3
0/2
2/5
4/6
0/3
0/2
0/4

How to read it:

πŸ“Œ Tip: Use the search bar above the dashboard to filter weeks by staff initials, and the filter chips (All weeks Β· πŸŽ‰ Public Holidays Β· πŸŽ’ School Holidays Β· ⚠️ Oversubscribed) to narrow the week view. This is useful for checking specific staff members' allocations.

2. Exempted Staff

Some staff may appear with a light brown background around their name. These are exempted staff.

What This Means for You:

πŸ“ Example: A week has 15 slots. If 2 exempted staff request that week, effective capacity becomes 17 slots.

3. Analytics

The Analytics section shows key metrics about submissions and draw results:

πŸ“Š Reading Allocation Stats: A row like "4 weeks β€” 3 staff β€” 30%" means 3 of the non-exempted staff (30%) received exactly 4 balloted weeks. The bonus week and protected leaves are excluded from the calculation, and exempted staff are not counted at all.

4. Draw Log

The Draw Log shows exactly how the algorithm processed each week. You can see the original entries, the shuffled order, and the decision for each entry.

πŸ“‹ Example Draw Log Entry β€” 2027-W05 (from the mock cards above)
1–7 Feb 2027 (2027-W05) – 9 allocated, 0 remaining β–Ό
P1 Entries
Original: GMT(CT), EAG(US), YHY(IR), FZS(MRI), GQY(CT)
Shuffled: FZS(MRI), GMT(CT), YHY(IR), EAG(US), GQY(CT)
FZS(MRI) β†’ ALLOCATED (MRI 1/3)
GMT(CT) β†’ ALLOCATED (CT 1/3)
YHY(IR) β†’ ALLOCATED (IR 1/1)
EAG(US) β†’ ALLOCATED (US 1/2)
GQY(CT) β†’ ALLOCATED (CT 2/3)
P2 Entries
Original: CSE(MRI), DRD(NM), CCC(GEN), ZYC(IR)
Shuffled: DRD(NM), CSE(MRI), ZYC(IR), CCC(GEN)
DRD(NM) β†’ ALLOCATED (NM 1/1)
CSE(MRI) β†’ ALLOCATED (MRI 2/3)
ZYC(IR) β†’ SKIPPED (IR cap reached)
CCC(GEN) β†’ ALLOCATED (GEN)
Reballot Entries
Original: CKM(MRI)
Shuffled: CKM(MRI)
CKM(MRI) β†’ ALLOCATED (MRI 3/3)

The draw log shows:

πŸ” Search: Use the search bar in the Draw Log section to find specific staff members across all weeks, and the Expand all / Collapse all buttons to reveal or hide every decision at once. Type initials to filter to only the weeks containing that staff member.
πŸ“Š What to look for:
  • ALLOCATED β€” this staff member got the week.
  • SKIPPED β€” this staff member did not get the week. The reason is shown in brackets.
  • Modality counters β€” e.g., "CT 1/4" means 1 of 4 CT slots used.
  • Conflict skips β€” "conflict with IC" means the staff member was skipped because they conflict with an already-allocated staff member.
  • Collapsed by default β€” each week starts collapsed; click a header (β–Ά/β–Ό) to expand it, or use the Expand all / Collapse all buttons.

5. Missing Leaves

This section shows staff who have fewer than 4 weeks of allocated leave. The department target is 4 weeks.

The Weeks Not Allocated column lists the weeks each person missed as date ranges (e.g., 6–12 Feb) rather than week codes β€” hover a range to see its week code. A range with an asterisk (*) means that week's submission was flagged as a duplicate and excluded from the draw.

πŸ“Œ Note: If you're on this list, you'll be eligible for the reballot process to request additional weeks.

6. FAQ

How often does the dashboard refresh?

The dashboard checks for updates every 15 seconds while the tab is visible and focused β€” it pauses when you switch away, to save resources. The "Updated" time in the top bar shows when data was last refreshed.

What does the ☰ button do?

The floating ☰ button opens a menu with quick links to the Dashboard, Analytics, Draw Log and Missing Leaves sections, plus this guide.

← Back to Dashboard