This repository provides a reproducible analytical pipeline (RAP) that implements a real-life stroke service capacity planning model in R. It serves as a practical example, fully reproducible and aligned with RAP principles, based on the following study:
Monks T, Worthington D, Allen M, Pitt M, Stein K, James MA. A modelling tool for capacity planning in acute and community stroke services. BMC Health Serv Res. 2016 Sep 29;16(1):530. doi: 10.1186/s12913-016-1789-4. PMID: 27688152; PMCID: PMC5043535.
Model diagram:
Clone the repository:
git clone https://github.com/pythonhealthdatascience/rdesrap_stroke.git
cd rdesrap_stroke
Set up the R environment using renv
(recommended):
renv::init()
renv::restore()
If you encounter issues restoring the exact environment, you can install dependencies from DESCRIPTION
and generate your own lock file:
renv::init()
renv::install()
renv::snapshot()
The simulation code is in the R/
folder as a local package. There are files executing the model and analysing the results in rmarkdown/
.
Install the local package:
devtools::install() # Needed if running in parallel
devtools::load_all() # Sufficient if running sequentially
library(simulation)
Run a single simulation:
param <- create_parameters(number_of_runs = 1L)
single_results <- runner(param = param)
Run multiple replications:
param <- create_parameters(number_of_runs = 5L)
single_results <- runner(param = param)
Run all analyses (from command line):
bash run_rmarkdown.sh
Run tests:
devtools::test()
Lint code:
lintr::lint_dir()
The original study used Simul8. Each of the outputs from that article have been replicated in this repository using R:
- Figure 1. Simulation probability density function for occupancy of an acute stroke unit.
- Figure 3. Simulated trade-off between the probability that a patient is delayed and the no. of acute beds available.
- Table 2. Likelihood of delay. Current admissions versus 5% more admissions.
- Table 3. Results of pooling of acute and rehab beds.
- Supplementary Table 1. Likelihood of delay. Current admissions versus No Complex neurological patients.
- Supplementary Table 3. Likelihood of delay. Current admissions versus ring fenced acute stroke beds.
To generate these, simply execute rmarkdown/analysis.Rmd
.
Examples
Figure 1
Original:
From this repository:
Figure 3
Original:
From this repository:
The run time for this analysis (notebooks/analysis.Rmd
) is 1m 38s seconds. This was on an Intel Core i7-12700H, 32GB RAM, Ubuntu 24.04.1.
The other notebooks generate results for tests and illustrate other functionality (e.g. importing parameters from csv, running with logs), and these just take a second or two.
If you use this repository, please cite either the GitHub repository or Zenodo:
Heather, A. (2025). Stroke capacity planning model: R DES RAP. GitHub. https://github.com/pythonhealthdatascience/rdesrap_stroke.
Heather, A. (2025). Stroke capacity planning model: R DES RAP. Zenodo. https://doi.org/10.5281/zenodo.15863376.
Contributors:
Amy Heather - developed the repository.
MIT Licence. See LICENSE.md
for details.
This repository was developed with thanks to a few others sources. These are acknowledged throughout in the relevant scipts, and also summarised here:
TODO
This project was developed as part of the project STARS: Sharing Tools and Artefacts for Reproducible Simulations. It is supported by the Medical Research Council [grant number MR/Z503915/1].