Hospital systems · 2026

Internship system

One register for every intern at Kasr Al Ainy, and the engines that run rotations and courses off it.

Role
Internship coordinator, who built the systems
Years
2026
Built with
  • Python
  • Headless Chrome
  • Excel
The cover page of the Training Office publishing plan for November 2026 to January 2028.

A course for every month, through January 2028.

The cover of the Training Office's publishing plan, which runs from November 2026 to January 2028.

01

The problem

As internship coordinator I had the same interns listed in many separate files. Each department kept its own version. A rotation list could go out with a gap in cover that nobody had spotted, and when an intern booked a training course and didn't turn up, the place was simply lost.

02

What I built

I started with one central register that holds a single permanent record for each person. Around it I wrote separate systems for the rotations in four departments and for the training office's courses. There are also systems for surveys and biometric attendance, and a read-only web portal that hasn't been deployed yet.

03

How it works

  1. Nobody is ever deleted from the register. Nobody gets created by accident either, and each field has exactly one owner, the only person allowed to change it.
  2. Before an import touches the register, it is matched against it and diffed. Then a preflight check runs, and only after that is it applied.
  3. In Internal Medicine every rotation week becomes a bilingual PDF and a spreadsheet. Three send files go out: one for the interns, and separate ones for the administration and for the departments. A separate report flags any gap in cover.
  4. Surgery gets ten-day department letters in Arabic, printed on a copy of the official letterhead.
  5. Training courses run on register, then confirm, then attend. If you book a place and don't come, the system puts you on the blacklist by itself. Every intern has a card listing their courses.
How an import reaches the register
  1. 01

    Match

    Each incoming row is matched to a person already on the register.

  2. 02

    Diff

    Every field that would change is listed, with the old value beside the new one.

  3. 03

    Preflight

    The rules are checked before anything is written. Nobody can be deleted or created by accident.

  4. 04

    Apply

    Only then does the import go into the register.

04

What it changed

1,901
Cohort 194 had this many interns, and each of them has exactly one record.
4
Four departments get their rotations from engines I wrote.
3
Every Internal Medicine rotation week goes out as three send files.