A newer version of the Gradio SDK is available: 6.15.2
I used Excel! I was creating the schedule for internal medicine.
I split the schedule into interns (PGY1) and seniors (PGY2/PGY3). You do need to keep  each PGY level distinct though (even among seniors) because you’ll have different core rotations for every year.
I then referenced the ACGME block schedule that the program submits every year. This will tell you what rotations every resident has to go through in any given year. There’s an x amount of inpatient, x amount of outpatient clinic, x amount of subspecialty #1, subspecialty #2, etc.
You need to confirm how the year is split (ie how many rotation blocks there are). My program had 13 blocks of 4 weeks each.
That’s the basics
Oh sorry, we also sometimes (but not always) had blocks split further into two (eg Block 1A, 1B) so I split the academic year into 26 sub-blocks essentially.
The way I did it is columns are blocks and rows are residents.
I added extra columns at the end, and programmed excel formulas that would track the number of “WARDS” or “ICU” or “nephro” that the resident was assigned to, and then I used conditional formatting so that the cell would change color to green when the residents met the required number, and red if they exceeded their requirements.
I did the same at the bottom of the spreadsheet with each rotation (a tracker that would help me keep track of how many interns were assigned to “WARD” or “ICU” or “nephro” or whatever so that I could ensure we had adequate coverage over the year).
At this point, you essentially have a blank template that you can now use to assign residents.
You’ll have to talk to your friend to find out how many interns & seniors are needed on each rotation at any given point in the year. For eg: 3 inpatient teams with 1 senior and 1-2 interns each would mean 3 seniors and 4-6 interns at any given point. You also need to pay attention to when the hospital tends to have more admissions — for us it was winter, because all of the respiratory illness hits. So during those busy months, you would want to assign the maximum number of interns possible so that each team’s capacity to take on patient increases.
You will also need to ask your friend if there are other residents who rotate in the department, like transitional years, psychiatry, etc. You aren’t in control of those schedules usually, which is why it’s also important to reach out to whoever is scheduling those early to make sure that you can coordinate this and find out if there are rotations where they won’t be sending any residence at all. (for example, the first rotation of the year). For me, this wasn’t too hard because other departments would generally adjust to the internal medicine schedule since it was so complex and a lot harder to change compared to theirs.
You’ll also need to ask your friend how vacation works at their program. Some programs will require residents to pick their vacation dates in 1 week, 2 week or 4 week stretches, several months before the academic year even starts. Some will let residents decide later, but make them figure out their own coverage.
The latter is easier to schedule. As a resident, I preferred the former because I didn’t have to worry about finding someone to cover my backup/night float/call days.
They’ll need to collect all vacation requests before they start scheduling, if it’s the former.
All that sounds like a lot, but was honestly the easiest part of scheduling lol
(One of the perks of having the chief schedule is that they already know most of these requirements because they lived through those requirements)
Before building all of those formulae etc into excel, I tried ChatGPT 4.0. I tried to give it specific logical rules in an attempt to get it to build the schedule.
It kept forgetting old rules, moving around people’s vacation dates to random spots, and sometimes not understanding simple commands which a human would (eg: assign the rotation “wards” such that every person has it exactly four times and each block has at least three people assigned to it)
So I gave up at that point and built the Excel template I mentioned above
I was kind of miffed because I paid for ChatGPT myself just for this lol
But after this, it was basically trial and error, wherein I would input rotations (you can either go resident by resident, or block by block – I prefer preferred block by block.)
I would fill it out cell by cell, then I would realize something wasn’t working out, and go back and change a Bajillion things. Then I would continue, only to find another issue – again and again and again.
Took about 7 hours the first time I did it, just for the intern class, because I had almost no guidance (I was figuring this all it myself). At the end of my chief year, I helped the new chiefs make the schedule for the next academic year, and that was significantly faster – only took about three hours. But that was with me constantly providing input and pointing out issues early before they built too much into the schedule and had to change everything much later.
It’s a little bit like a logic puzzle, though — just the most exasperating one you’ll do essentially for free lol
There are more specific things, but that’s the gist of how to approach this to start. If you have an email, I can send you a blank version of the Excel template I used. I made a more advanced version, but I lost access when I left my previous institute, so this one is a little more basic, but still pretty good imo
TL;DR it’s basically a giant logic puzzle. 60% of the work is just figuring out what all the requirements are (easier said than done), and 40% is actually solving the logic puzzle so that you satisfy all the requirements.