Optimised Ventilator Deployment
Doctors in Italy have reportedly been facing heartbreaking decisions regarding whether or not to assign arriving patients in the ICU to a ventilator.
It is an ethical nightmare and terrifying that these decisions need to be made, however it is nonetheless a reality of the dire circumstances facing medical communities around the world right now. Objectively, the goal of the medical workers while managing the supply of their ventilators, has been to maximise the surviving life-years of all of the patients that are arriving to the ICU, subject to the available supply of ventilators, and our expectations of how many ventilators will become available in the future. This means that sadly not all lives are treated equally, and the decision of whether to place a patient on a ventilator takes into account both their chances of survival and their remaining expected lifespan should they survive.
In mathematics, the framework of making the best possible decisions subject to quantifiable data is known as a decision problem, and fortunately, with good data these problems can sometimes be solved to optimality, often having considerable improvements over hard-set rules that are made ahead of time. To showcase this, I thought it could be interesting to go through an example of how analytics could be applied to the ventilator deployment problem to hopefully improve patient outcomes.
Let’s pretend that we are working with the doctors on the front lines of the crisis in Italy today. What rules can we create to most effectively utilise the remaining available supply of ventilators? In a previous article, I wrote about the importance of accurate information regarding the true numbers of coronavirus cases in the community (as opposed to just the confirmed cases). If we had some accuracy around these numbers today, we would be able to estimate (or know); the ventilator supply availability that is available or will become available, patient survival likelihoods with & without ventilators (by age bracket), the impending demand profile of patients (both by number and by age bracket) and the distribution of time a patient uses a ventilator before releasing it.
With this information available, the doctors want to make a well-informed decision regarding which age brackets are provided a ventilator and when, and which age brackets are unfortunately refused access based on all of the above. Ideally, based on the supply of ventilators we hope that all age brackets are approved for ventilators, however it is not necessarily going to be the reality of the crisis as it unfolds.
The decision that needs to be made today is whether a patient in each age bracket that arrives at the ICU in a critical condition should be admitted or refused a ventilator today. However, since our decision today also impacts our supply availability of ventilators for coming days (when we may anticipate more demand), we don’t want to exhaust our supply of ventilators today just to get the best ‘in-day’ result when that would leave us vulnerable to future arrivals. Therefore, we seek to plan our entire ventilator deployment into the future to maximise the expected saved life-years for each day forward from now until the end of the decision horizon. Then the optimal result for that problem will tell us what we should do today.
This can be formulated as an Integer Program, with binary decision variables specifying whether a patient presenting in each age bracket should be permitted the use of a ventilator on each day forward from now. To highlight, this, I have fabricated some example data that the medical community might have access to and tried to solve the ventilator deployment problem for these rules. Lets pretend that we think that patients will present with the demand profile below:
And here’s an example of how many ventilators we might expect to have in our supply for each day from now excluding the ventilators that we will use on the basis of today’s decisions:
Further, we can also make predictions about the age distribution of the presenting patients and their expected survival rates in each age bracket, today and for all days from now:
For example, elderly patients (70+) might be expected to make up 12% of arrivals at ICU, they might be predicted to have a 16% chance of survival if granted a ventilator but only a 8% chance of survival without one. It may be assumed that an older patient like this will live for 5 years longer if they survive this incident. Similar data is shown for all age groups above. Please be mindful that this is not real data (I fabricated it for this example).
And finally, lets pretend that we have knowledge from data offshore of the number of days that Italian patients were on their ventilator until it was released back into the supply pool of ventilators to use as shown by the distribution below:
I’ll save you the mathematical problem definition and cut straight to the solution for this demo problem (since it will look foreign to anyone unfamiliar with Integer Programming &/or University level math).
The optimal ventilator deployment plan, as of the day we perform the optimisation is given below for this data:
The red sections above represent situations in which someone in the bracket should not be assigned a ventilator under this demand scenario we configured in the interests of maximising life-years. In all other cases, the patient should be given a ventilator to use.
Critically, we have determined from this that on the day of performing the analysis (day 1), the best decision is to refuse access to some patients presenting at ICU.
Under these planning decisions we would see the supply of available ventilators change by day as shown below:
The decision to refuse ventilators to some patients immediately is morally challenging, since at that point in time, there are enough ventilators available to use. However the decision reflects the fact that we anticipate a need for those ventilators in coming days, when those ventilators could be used by younger, prioritised age groups.
So, does this mean that all these decisions are locked in now and we need to follow them strictly for all days forward from now? No, since as information comes to light on each day forward from now, we would use this information to revise our expected forward demand for ventilators and re-optimize our ventilator deployment plan. We would ideally do this daily, such that our real-time deployment is more adaptive to changes in demand. This is very important since Coronavirus is a quickly evolving problem, and it is likely our anticipated demands for even 3 days from now will become outdated in 3 days-time.
Lets compare these results to what would we would have experienced if the policy decisions regarding who to grant a ventilator were made purely on a first-in-first-serve basis (FIFS) and we experienced the exact demand profile shown above. Under this case, the simulated deployment of ventilators is shown below:
We can see that with this approach we would quickly release all available ventilators and deplete our supply for future patients:
So how different are the results from using the optimised deployment plan vs the first-in-first-serve deployment plan? Well under the optimised plan, 2.25% more life-years are saved (as opposed to the first-in-first-serve plan). Of-course, in a real deployment this number would depend on the real demand of patients and supply of ventilators as well as the age profile data. This may not sound like much, but for the example shown above, that amounts to 1,153 more living years among the patients that arrived to the ICU.
This is achieved by the optimised plan more effectively ‘rationing’ ventilators for anticipated demand, whereas the first-in-first-serve plan will give any patient a ventilator that needs it if one is available.
One more question we might have about this problem is, “how many more life-years could we save if we could allow a percentage of arrivals in an age group a ventilator?”. In integer programming this is referred to as a relaxation of the original problem, since we have removed the restriction that all of an age group cohort have to be either admitted or refused a ventilator. For our demo problem above, this yields a 0.67% improvement in saved life-years over the original solution, so there is only a marginal benefit to discriminating admission to a ventilator within age groups.
This modelling can also be performed in reverse; instead of starting with a supply of ventilators and working out how many life-years we can save, we could use the model to determine how many ventilators we need to save a certain number of life-years.
Finally, one last question to consider is “would our outcomes improve if we could reclaim ventilators early from patients showing no signs of recovery?”. This is a deeply contentious issue and as such I have chosen not to model it, however it could be modelled within this framework by:
Reducing survival rates with ventilators slightly of the patients in all age brackets to account for the fact that some patients taken off a ventilator could have recovered if the ventilator wasn’t reclaimed.
Changing the ventilator time usage distribution to account for the fact that some ventilators would be in use for far less time (due to the reclamation of the ventilator).
I hope this work highlights the need to try to plan for this crisis as effectively as possible and practical to try to deliver the best possible overall patient outcomes under the circumstances.
I’m not going to talk about the ethical conundrum of making these decisions, but it is a reality that doctors in Italy were faced with this challenge. Where possible, I hope the right people are trying to prepare an approach to dealing with the tough questions we may be asked.
Since this work was published, it has been translated into Greek by Evangelos-Marios Nikolados a PhD student of Quantitative Epidemiology at the University of Edinburgh.
I also shared all relevant code with Evangelos in the hope it may prove useful in the UK or Greece.