Note: project is still WIP and not a finished solution.
Scarce medical resources (i.e. ventilators, PPE, doctors, nurses) are currently being allocated to various regions within a country in a potentially sub-optimal manner, given the lack of time to make such decisions methodically. Moreover, in many countries, such as Italy, there is even a lack of a centralized overview of the demand and availability of medical resources per region. There are several potential consequences, of which we list three:
- Regions with excess of resources relative to the demand may have them standing idle, while they could be used in regions where the pandemic is worse. This means lives could be lost due to lack of ventilators in the south of a country, even though they are available in the north, but that fact was not known beforehand.
- Dangerous shortages may occur if the current trend of widespread, inappropriate use and distribution of PPE continues. In the event transport restrictions persist and production capacity is affected, the proper rationing and allocation of these resources becomes increasingly important.
- The current methods of resource allocation may lead to long waiting times and other logistical issues. For instance, Italy attempted moving doctors from the south of the country to the north, where the pandemic was worse, but then had great trouble finding accommodation for them and handling related logistics.
The above is a combinatorial optimization problem: how can we allocate our scarce medical resources across all regions in a way that improves health outcomes?
RAISE (Resource Allocation Intelligent Support Engine) consists of an optimization engine wrapped in a web app. The engine applies mathematical optimization to solve this medical resource allocation problem in a way that fulfills the most demand across regions while minimizing transportation times. We use transportation times as a proxy for improving health outcomes: the regions with excess ventilators will be advised to distribute them to the closest regions that might need them most, because time is of the essence during the pandemic. The model is abstract enough to be applied at different levels:
- Regional - allocation of resources between different hospitals
- Country - allocation of resources between provinces/regions
- Continent - allocation of resources between countries
There are two main outcomes from running the model:
- A new optimal allocation of medical resources across regions.
- An overview of how much each region distributes from their current resources to other regions.
There are three main benefits of RAISE:
- It provides a simple visual overview of all the resource demands and availabilities/stocks across all regions (i.e. in a country), on a map. At a later stage, it will automatically aggregate this data on a live basis from each region's relevant database.
- It generates the optimal allocation of resources across regions in relation to their demand for these resources. Rather than making rough estimates of which resource goes where, RAISE can generate the optimal solution to this problem based on the ethical, legal and medical reasons the end-user would like to embed in the estimation of the resource demand.
- It provides decision-makers with a very simple and intuitive interface and workflow, which can generate insights much faster than Excel or paper calculations. This ease of use enables users to make faster and more effective decisions and can bring more discussion points to the table for the allocation problem.
What we have done during the weekend
Everything: the research, the optimization model and algorithm, the front-end, the back-end, the design, the problem definition, the data collection, data pre-processing and the communication/marketing (i.e. this post and the video).
Here's a short run-through of how it all played out:
- Thursday evening we had a first informal meeting to get to know each other, eight complete strangers having met through Slack. After getting a feel of each other's backgrounds and interests and refining the problem and solution, we distributed some tentative exploration tasks.
- Friday evening we had our kick-off meeting with some great work having been done on the details of the problem, the design and the back-end. Also, more people joined the team, excited about the prospect of such a cool project, bringing our tally to 12.
- Saturday morning we already had the model formulated, a data preprocessing plan, a good chunk of the real data needed for a demo run, the overall design, parts of the front-end, the development environment and parts of the back-end. By Saturday evening, we had the implemented optimization model and engine and around 70% of the back- and front-end development.
- Sunday evening the different parts (i.e. optimization engine, database, back-end, UI) were ready to be connected which is still work in process. We also made this post and the promotional video.
Impact to the crisis
In addition to the benefits listed in the Solution section, RAISE provides an excellent platform on which to develop new and better resource allocation and distribution models in times of crisis. Also:
At the province level, RAISE facilitates hospitals to make fast, day-to-day decisions on how to share IC capacity and personnel.
At the country level, RAISE supports tactical-level allocation of supplies for coming weeks or months, enabling preparedness for new outbreaks or changes in demand.
At the continental level, RAISE provides a platform for countries to cooperate and support each other, by positioning strategic reserves of resources in countries that can be most negatively impacted by the pandemic.
How we built it
Back-end - Java Springboot framework, PostgreSQL database
Front-end - Vue.js
Optimization - modeling: Pyomo, solver: glpk
Necessities in order to continue the project
- Operations researchers and contact with decision-makers, to embed more of the real-life logic and to assist with further developments on the model.
- Time from all members, to handle all the different use cases.
- Real data on resource availabilities and demand per region.
- Contact with public institutions to validate and improve our model.
Value of the solution after the crisis
The model can be re-framed and reshaped to fit other types of crises as well, such as humanitarian. Furthermore, it could also be applied for other types of resources i.e. protective equipment for businesses.
Challenges we ran into
- Integration of the different parts: first some problems with the back-end, then the back-and-forth between design and front-end, then plugging in the optimization model to the database. Quite complicated to put so many parts together in such a short time. Still 1-2 days of work expected on this part.
- Finding work in idle time. Sometimes it was difficult to find more tasks for people who had finished theirs already.
- Modeling. The academic literature optimization models for pandemics can be very complex, so we had to make a lot of decisions on how to reformulate them for the scope of this challenge.
Accomplishments that I'm proud of
Lots, but in particular:
- How well the team works together, even though we all met each other only 3 days ago.
- How amazing the product can look, feel and work, even though we started with development merely 2 days ago.
- How driven the team is and how much belief they have in this solution.
What I learned
Speaking for myself, as the team coordinator, I learned what it actually means to be responsible of such a large team. Keeping the morale up, finding everyone work to do, providing people with inspiration and direction. These were areas I had limited experience with from my professional career, so I am honored to have gotten this chance.
- Optimization model a) embed more real-life factors, such as fairness and population health factors. These are currently applied in the data pre-processing step (see git for documentation). b) improve objective function to better reflect health-outcomes and provide actual insights
- Interface a) implement validation for inputs b) improve workflow and test with users in the healthcare sector
- Back-end a) implement micro-service architecture and deploy on private servers b) better connect the different parts of the system
- Overall a) connect and test all the different modules
- Marketing a) develop a concrete communication plan and get in touch with potential end-users b) collaborate with other interesting projects (i.e. demand forecasting projects like the WHET project or tools for real-time monitoring of available resources at institutions like the MASC project)
- Machine learning a) Implement forecasting/demand prediction engine based on epidemiologic models