Viral or Unspecified Pneumonia ECMO-Eligible Risk Score from our paper.
Respiratory complications due to coronavirus disease COVID-19 have claimed tens of thousands of lives in 2020. Many cases of COVID-19 escalate from Severe Acute Respiratory Syndrome (SARS-CoV-2) to viral pneumonia to acute respiratory distress syndrome (ARDS) to death. Extracorporeal membranous oxygenation (ECMO) is a life-sustaining oxygenation and ventilation therapy that may be used for patients with severe ARDS when mechanical ventilation is insufficient to sustain life. While early planning and surgical cannulation for ECMO can increase survival, clinicians report the lack of a risk score hinders these efforts. In this work, we leverage machine learning techniques to develop a score to highlight critically ill patients with viral or unspecified pneumonia at high risk of mortality or decompensation in a subpopulation eligible for ECMO. Our risk score is validated on two large, publicly available critical care databases and predicts mortality at least as well as other existing risk scores. Stratifying our cohorts into low-risk and high-risk groups, we find that the high-risk group also has a higher proportion of decompensation indicators such as vasopressor and ventilator use. Finally, the risk score is provided in the form of a nomogram for direct calculation of patient risk, and can be used to highlight at-risk patients among critical care patients eligible for ECMO.
Follow the instructions in the README in src/data_processing
to extract csv files for the eICU and MIMIC cohorts (stored in data/final_splits
). These contain viral or unspecified pneumonia patients who are filtered for ECMO-eligibility.
The src/
folder contains code for training the model and analyzing results. For the following explanation: cd src/
Grid search: In order to examine the performance across various penalizer levels:
- run
bash run_grid_search.sh
, which will callpipeline.py
- run
jupyter notebook
and openshow_grid_plots.ipynb
. This creates the figures displaying the grid search results in the appendix of the paper.
Model evaluation/ analysis: To analyze and evaluate the chosen model:
- run
jupyter notebook
and openmodel_results.ipynb
. This notebook runs our model with best hyperparameter level selected from grid search and produces the results in our paper. It usespreprocess.py
to standardize and impute the data, and also callscomparison_risk_scores.R
to compare our risk score with the baseline risk scores listed in our paper.
Additional information: Table 1 of the paper is created by eicu_eda.py
Please consider citing our paper if you use our code.