
Software
ED Scheduler
Residency Scheduling, Solved
The chief resident at NYU Long Island Emergency Medicine was building monthly shift schedules by hand — juggling 18 residents across two hospital sites, 10 shift types, night block patterns, rest requirements, and individual time-off requests. The process took days of spreadsheet work each month, and a single missed constraint could cascade into compliance violations.
I built a tool that generates compliant schedules in seconds. It enforces every constraint automatically, flags violations for manual review, and exports directly to the hospital's ShiftAdmin scheduling system.
The Schedule Grid
The calendar view displays an entire month of assignments in a dense, scannable grid. Each row is a shift slot, each column is a day. Residents are color-coded by PGY year — hover over any name to see all of their assignments highlighted across the grid.
| Mon 7/6 | Tue 7/7 | Wed 7/8 | Thu 7/9 | Fri 7/10 | Sat 7/11 | Sun 7/12 | ||
|---|---|---|---|---|---|---|---|---|
| Adult Day | Team 1 | R3-A | R3-A | R3-A | R3-A | |||
| Team 2 | R2-A | R2-A | R2-A | R2-D | R2-D | |||
| Team 3 | R1-C | R1-C | R1-C | R1-C | ||||
| Adult Night | Team 1 | R1-A | R1-A | R1-A | ||||
| Team 2 | R1-B | R1-B | R1-B | R1-B | ||||
| Peds | Day | R2-B | R2-B | R2-B | R2-B | |||
| Mid | R2-C | R2-C | R2-C | R2-C | ||||
| Night | R1-D | R1-D | R1-D | |||||
| Suffolk | Day | R3-B | R3-B | R3-B | R3-B | |||
| Evening | R2-D | R2-D | R2-D | |||||
| Night | R3-C | R3-C | R3-C | R3-C |
Interactive demo — hover to highlight resident assignments
Phased Generation
The scheduler generates assignments in five sequential phases. Night blocks are placed first because they have the tightest constraints — contiguous blocks of 3, 4, or 5 nights depending on PGY year. Day shifts fill around them. The chief resident reviews and approves each phase before the next one runs.
Five-phase generation pipeline
Constraint System
33 unique rule sets define the requirements for each rotation type and length combination. The constraint engine enforces rest periods, consecutive day limits, night block patterns, teaching minimums, and weekend guarantees.
Between shift end and next start
Maximum consecutive work days
Contiguous night patterns by PGY year
Validation & Audit
After each generation phase, every constraint is checked. Violations are flagged with severity levels — errors that must be acknowledged before proceeding and warnings that can be noted. Every resident gets a detailed audit showing shift counts, night dates, weekend balance, and request status.
Constraint Violations
0/5 acknowledgedShift Breakdown
Requests
Night Blocks
Jul 7–9, Jul 21–23
Interactive violation acknowledgment and per-resident audit
Technical
Client-side React application with no backend — all scheduling logic and constraint solving runs in the browser. The annual block scheduler is a separate Python constraint solver that generates the year-long rotation schedule across 13 four-week blocks for 18 residents.