Skip to content

Discrete Event Simulation and Scheduling Systems.

16 May 2013

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.

3 Comments leave one →
  1. 21 May 2013 08:57

    I am wondering what software you are using to do this (or whether you are writing code to build it yourself)? I am the Product Marketing Manager of a product called SimEvents that works with MATLAB and am wondering if you ever tried it for discrete event simulation, especially for this type of problem. The link for our Discrete Event Simulation page is this: in case you want to check out the product. Would love to hear your thoughts on this product.

    • 21 May 2013 10:25

      Hello Teresa! I won’t say what software I’m using for reasons of privacy and conflict of interest. However, I will say that I used Matlab when I was in school. Not SimEvents, but I did use simulink for dynamical systems and thought it was a very good tool.

  2. adamfzcampbell permalink
    12 September 2013 03:39

    No need to elaborate the work.I am impressed by the mere thought of this bizarre idea.

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s