Discrete Event Simulation and Scheduling Systems.
My first project here at MECMC is to develop a discrete event simulation (DES) of the surgical core. It’s a cool project that I can’t get into all the details of, but suffice to say that there’s a lot of interesting work to be done and much of the work is brand new to me. Obviously, I’ve specialized in DES for many years now. It’s my wheelhouse. I enjoy it, I’m pretty good at it, and I was hired specifically for this skill.
But operating rooms are a whole different world from my usual areas of application. DES is, in large part, a system for building very intricate networks of queues. Queues in parallel and series that interact with each other in peculiar ways. This allows us to model real-world Complex Systems and make predictions about their responses to perturbations. Perturbations might be to arrival rates, service times, or the flow of objects from one queue to another. But fundamentally, it’s about things lining up for service by other things.
This makes it ideal for healthcare delivery systems. Because we have servers (physicians, nurses, and facility capacity, etc.) and we have customers (patients, but also supplies, and phone calls, and other demands on resource time and attention). So healthcare delivery is well-modeled by queueing systems. This is especially true in the environments I’ve worked in in the past, like emergency departments and telephone systems.
However, there are challenges when writing simulations of systems which use scheduled arrivals. Queueing theory was developed with random arrivals in mind. All the math is done for random arrivals. But when we’re modeling elective surgeries, the arrivals aren’t random. Sure, they might be if you go far enough back in the chain (i.e., the ‘arrival’ of a person discovering they need surgery), but for my purposes, I need to model the patients from when they are scheduled for surgery. And that schedule is a rigid object, with particular timed events associated with it.
It would be far easier if the operating rooms were for emergent patients. Then, you just feed them in according to their interarrival time. But when dealing with scheduled patients, you have to devise a different kind of arrival system. What I’ve done, is build a separate “patient creator” entity, which looks at OR availability each day, and iteratively fills the OR with patients until there’s no capacity left using a greedy algorithm. I could simply have generated a bunch of patients and stuffed them into the rooms until there was no room left and then sent the rest home. But this way is far more elegant.
I would say that in general, DES is not necessarily the best tool for the optimization of appointment-based healthcare delivery systems (Mixed Integer Programming, for example, may be appropriate.). It’s far better for systems where the random arrival stream is a feature of the system being investigated, like the ED. In order to treat appointment-based systems with DES, you need to rig it like I described above. But in the position I’m in, I don’t necessarily get to choose the approach to the problems. I’m the simulation guy, and they want a surgical simulation. So I took the challenge to build something, and I think I came up with something kind of elegant.
Now I’m hoping the IRB decides it’s exempt.