Skip to content

The data

The PhysioNet/Computing in Cardiology Challenge 2019 corpus, published under the Open Database License.

That licence is why this project exists in public. The trained models can be shared on a model hub and every number can be reproduced by a stranger. Credentialed corpora such as MIMIC and eICU allow neither: PhysioNet requires that models trained on them stay on the platform.

patients 40,336 across two hospital systems (A: 20,336, B: 20,000)
rows 1,552,210, one per ICU hour
septic 2,932 patients, 7.3 percent
channels 8 vital signs, 26 laboratory values, 6 demographic fields
size 42 MB
corpus digest ef46d3e6ec2497f7279ef352acdc32521cf54d42bb785ba2f3df4f2e179d854f

Never committed

Nothing under data/ reaches the repository, the wheel or a model repository. prodrome data fetch downloads it and prodrome data prepare computes a digest over the sorted per-patient content hashes, which is stable across machines and changes if a single hour of a single patient changes.

The ignore rules are anchored to the repository root. An unanchored data/ also matches src/prodrome/data/, which in this repository silently excluded a source package from a commit and from the linter before it was caught.

The label

SepsisLabel turns on six hours before a recorded clinical onset, which the organisers defined as suspicion of infection, meaning a culture drawn and antibiotics given within a defined window, together with an increase in SOFA score.

It is a proxy for a biological event, not the event. Every document in this project says so, because a model that quietly treats a proxy as ground truth is the standard dishonesty of this field. What Prodrome predicts is the moment a clinician was about to write something down.

The channels

Vital signs are charted most hours: heart rate, oxygen saturation, temperature, systolic and diastolic pressure, mean arterial pressure, respiratory rate, end-tidal carbon dioxide.

Laboratory values are ordered rather than sampled, so most hours have none. That asymmetry is the single most important thing about this dataset: the pattern of which values exist encodes clinician suspicion. See What the model reads.

Demographics are age, sex, two unit indicators, the time between hospital and ICU admission, and ICULOS, the ICU hour.

Rows are contiguous with no gaps, which the parser checks, so shifting by k rows is shifting by k hours.

What this corpus cannot support

There is no Glasgow Coma Scale, so:

  • qSOFA is two of three components and can never reach 3. It is named qsofa_partial.
  • SOFA covers four of six organ systems: coagulation, liver, cardiovascular and renal. Respiration needs PaO2, which is absent. It is named sofa_partial.

SIRS is complete, since all four of its components are present.

Calling a partial score by its full name would make the baseline look worse than the real thing and flatter the models, so the names carry the suffix everywhere.

The synthetic corpus

The test suite runs entirely on a corpus the package generates, so a fresh clone with no download and no data licence still proves the pipeline works. It reproduces the shape rather than the medicine: hourly rows, vitals present most hours, laboratory values present rarely, stays of very different lengths, and a minority that turn positive.

Citation

Reyna MA, Josef CS, Jeter R, et al. Early Prediction of Sepsis From Clinical Data: The PhysioNet/Computing in Cardiology Challenge 2019. Critical Care Medicine 48(2): 210-217, 2020.