A pilot project for the NHS AI (Artificial Intelligence) Lab Skunkworks team, Bed Allocation aims to explore whether machine learning can effectively aid bed management in Kettering General Hospital.
Bed allocation was identified as a suitable opportunity for the AI Skunkworks programme in May 2021.
This proof of concept (TRL 4) is intended to demonstrate different approaches to forecasting and bed allocation using machine learning. It is not intended for deployment in a clinical or non-clinical setting without further development and compliance with the UK Medical Device Regulations 2002 where the product qualifies as a medical device.
The NHS AI Lab Skunkworks team and the Kettering General Hospital NHS Foundation Trust (KGH) commissioned a 12-week project via the Accelerated Capability Environment (ACE) to test whether Machine Learning (ML) can assist with bed allocation.
Faculty, an applied AI company, was engaged to collaborate closely with KGH to develop a Proof of Concept (PoC) to demonstrate how artificial intelligence (AI) could be used to enable both site managers and less experienced staff members to allocate and optimise patient movement and safety within the hospital.
This project was subject to a Data Protection Impact Assessment (DPIA), ensuring the protection of the data used in line with the UK Data Protection Act 2018 and UK GDPR. No data or trained models are shared in this repository.
The full technical report (PDF) is available to download.
This project consists of 5 components:
Component | Description | Documentation |
---|---|---|
Virtual Hospital | Defines a hospital with wards and beds | src/hospital |
Allocation Agent | Allocates a new patient based on the virtual hospital environment and constraints | src/agent |
Demand Forecast | Generates a forecast for bed demand based on historical data | src/forecasting |
Fake data generation | Generates fake data to test the setup and running of the repo | fake_data_generation/ |
UI | A web-based frontend built with Plotly Dash that integrates the virtual hospital, allocation and demand forecast components | app |
Using historical admissions data, the forecast model feeds into the allocation agent (for Monte Carlo Tree Search) and suggests the best available bed for an incoming patient:
- The greedy allocation agent is the only agent integrated into the UI due to performance issues with the MCTS approach
- Several characteristics of the virtual hospital are hardcoded into this prototype
- This tool has been tested on macOS only
This project requires Python 3.9+.
- Create a virtual environment using e.g. venv
- For standard installation run
pip install .
from within the repo. - To install in development mode with the Pytest testing suite available run
pip install -e ."[testing]"
.
The user interface integrates the greedy allocation approach, which is independent of the time series forecast, as well as a visual forecast of upcoming patients.
There are two ways to generate the required data artefacts before launching the UI:
This repository includes a fake data generator and integration test which will run an end-to-end build of the required data artefacts as well as launch the UI.
To run the integration test, install the tool in development mode (pip install -e ."[testing]"
) and from the main project directory run:
cd tests/integration
./integration_test.sh
and follow the instructions.
If you'd like to use your own data, please get in touch with us for support: england.aiskunkworks@nhs.net.
With the required artefacts in place, to launch the UI from your virtual environment, run python app/run.py
which will listen on port 8888.
Below are some FAQs to help answer some common queries around what the tool is and how it works
- The Bed Allocation tool was produced to assist bed managers, as well as other colleagues involved in the process of allocating a bed to a patient on admission to a Trust's hospital.
- The tool is intended to be used in a Human-in-the-loop (HITL) approach (meaning the tool is an information source for a human, who makes decisions using the tool as well as other sources). The bed manager remains essential to the bed allocation process, making all decisions. The benefit of the Bed Allocation tool is that it automates some of the 'simpler' considerations made as part of the bed allocation process, freeing up the bed manager to spend more time and effort on the more. complex elements of their role which AI cannot assist with.
- The constraints that the tool uses can be found here for wards, here for patients and here for rooms. These constraints help the tool to identify beds which might be appropriate for the patient. The constraints themselves are intended to be simple, clear and easily explainable rules around what a patient, ward or room can or cannot accommodate.
- The GUI of the tool clearly displays the rationale of the suggestion that has been made. This is an important characteristic of the tool as it allows the user to clearly see all of the constraints that the tool tried to meet, and those which are being violated by a given bed allocation suggestion. This ensures that a bed manager understands why a given bed has been suggested, and enables them to make a decision as to whether that bed would be appropriate for that patient.
- The tool does not attempt to capture the complex, nuanced understanding that a bed manager possesses, which only they can provide. This is why it's essential that the tool is used as part of a HITL approach, as the tool does not have the ability to consider many of the factors that a human bed manager would, and which could provide reasoning as to why a bed is not appropriate for a patient.
- Automates aspects of a bed manager's role which can be easily encoded as rules
- Frees up time for bed manager to provide insight on more complex and nuanced issues
- Provides a transparent way to view how a bed allocation suggestion has been made
- The tool still requires insight of a bed manager and all decisions should be taken by a bed manager (using HITL process)
- The tool can only apply constraints which can be expressed as yes/no questions, and does not attempt to balance constraints off against one another.
- The tool has been tested on a small dataset but has not been proven on a large, real-world dataset, and therefore is not ready for use in a real hospital setting. Applying the tool to a larger dataset could reveal areas where additional work is needed for the tool to be useful to bed managers.
The project is supported by the NHS AI Lab Skunkworks, which exists within the NHS AI Lab at NHSX to support the health and care community to rapidly progress ideas from the conceptual stage to a proof of concept.
Find out more about the NHS AI Lab Skunkworks. Join our Virtual Hub to hear more about future problem-sourcing event opportunities. Get in touch with the Skunkworks team at england.aiskunkworks@nhs.net.
Unless stated otherwise, the codebase is released under the MIT Licence. This covers both the codebase and any sample code in the documentation.
The documentation is © Crown copyright and available under the terms of the Open Government 3.0 licence.