BERT-ESI-Triage v58 โ€” BiomedBERT multi-head triage classifier

TL;DR

bert-esi-triage-v58 is a fine-tuned BiomedBERT classifier for the Emergency Severity Index (ESI 1-5) triage decision. v58 is the successor to v57 (epoch 3) on the same 18-eval suite. Headline improvements vs v57 e3:

  • MIMIC-IV-ED ESI 1 recall: +4.0pp ensemble (78.1% โ†’ 82.1%).
  • MC-MED Stanford ESI 1 recall: +7.0pp (77.0% โ†’ 84.0%).
  • MIETIC ensemble ESI 1 recall held at 96.7%.
  • Lukina v3 ESI 1 recall held at 94.3%.
  • Concept-density / frequent-flyer / polypharmacy / geriatric / multi-CC subgroup slices all win ESI 1 recall by +1.6 to +6.7pp.

Trade-off: cal_exact regresses by 2-6pp on MIETIC, judgment_gap, cardiac_arrest, and sepsis slices (a recall-for-safety shift).

Architecture differences vs v57

  • No engineered-feature fusion. v57 trained with an 11-d MEWS / qSOFA / shock_index feature vector projected to 64-d and concatenated with CLS into esi_head Linear(832, 5). v58 drops the fusion path and uses esi_head Linear(768, 5) directly on CLS. The encoder learns vital patterns from raw text alone.
  • Trainer. v58 uses train_bert_v44_bf16.py (bf16 native on GB10); v57 used train_bert_v44_v53_3.py (feature-fusion variant).
  • Symptom head dim. v58 = 199, v57 = 203 (concept vocab pruning).

Inference

Load with PyTorch + transformers; CLS-pooled features feed each head:

  • esi_head: Linear(768, 5) โ€” main output.
  • 19 auxiliary heads: symptom, flag, pain, arrival, gestalt, disposition, resource, vitals, etc.

The companion Space vadimbelsky/esi-triage-demo ships the full calibration stack (demographic normalizer โ†’ per-dialect temperature โ†’ confidence-aware ESI 1 bias โ†’ deterministic engine min ensemble).

License

  • Model weights: MIT.
  • Training data: private (MIMIC-IV-ED + Stanford MC-MED + MIETIC + Lukina v3 + curated synth).

โš ๏ธ Not a medical device. Not for clinical use. This is a research artifact distributed for reproducibility and benchmarking. Real deployment requires institutional validation + IRB + local recalibration.

Performance โ€” v58 epoch 3 vs v57 epoch 3

Per-slice ESI 1 recall (calibrated):

Slice n v57 cal_ESI1_R v58 cal_ESI1_R ฮ”
mimic_holdout 7,917 76.6% 80.2% +3.6pp
mcmed_clean_holdout 1,000 77.0% 84.0% +7.0pp
mietic_clean_holdout 200 90.0% 86.7% -3.3pp
lukina_v3 201 94.3% 94.3% 0pp
sepsis_eval_v1 93 95.0% 95.0% 0pp
stroke_eval_v1 97 95.0% 92.5% -2.5pp
anaphylaxis_eval_v1 90 97.1% 97.1% 0pp
cardiac_arrest_eval_v1 103 93.3% 90.0% -3.3pp
ob_emergency_eval_v1 98 95.0% 90.0% -5.0pp
pediatric_n200_v2 200 95.0% 95.0% 0pp
judgment_gap_v1 177 88.9% 83.3% -5.6pp
geriatric_n200_v1 200 78.8% 80.0% +1.3pp
polypharmacy_n200_v1 200 72.5% 76.2% +3.7pp
frequent_flyer_n200_v1 135 80.0% 86.7% +6.7pp
vital_completeness 231 83.3% 86.7% +3.3pp
multi_cc_complexity 304 76.2% 77.8% +1.6pp
concept_density 260 80.0% 86.7% +6.7pp

Verdict: 8 wins / 5 losses / 5 neutral on ESI 1 recall (mean +0.78pp).

MIMIC per-class recall (calibrated):

Class n v57 R v58 R ฮ”
ESI 1 475 76.6% 80.2% +3.6pp
ESI 2 2,582 64.6% 62.7% -1.9pp
ESI 3 4,286 54.4% 50.1% -4.4pp
ESI 4 554 64.6% 67.7% +3.1pp
ESI 5 20 40.0% 40.0% 0pp

Known gaps (carried to v59)

  • SYMPTOM_LABELS index mismatch. v58 symptom_head outputs 199 logits; the demo's SYMPTOM_LABELS list (inherited from v47/v49) has 178 canonical entries plus runtime padding for the extra positions. Specific concepts that grew between v57โ†’v58 may be mislabeled in the Space UI. Tracked for v59 (task #463).
  • ESI 5 recall โ‰ค 40% across slices โ€” sparse class, dialect-noisy labels. v58 holds the v57 floor but does not improve it.
  • MIETIC / OB / cardiac_arrest ESI 1 R regressions vs v57. Likely driven by dropping the engineered-feature signal on narrative slices where vitals are inline rather than parsed.
  • Engineered features no longer in graph. Downstream stacks that computed MEWS / qSOFA / shock_index and passed them to v57 must drop that path for v58.

Companion Space

vadimbelsky/esi-triage-demo โ€” 19-head dashboard with engine ensemble, demographic normalizer, dialect detection, per-dialect calibration. The Space loads this model and exposes the full calibrated pipeline.

Downloads last month

-

Downloads are not tracked for this model. How to track
Inference Providers NEW
This model isn't deployed by any Inference Provider. ๐Ÿ™‹ Ask for provider support

Model tree for vadimbelsky/bert-esi-triage-v58

Space using vadimbelsky/bert-esi-triage-v58 1

Evaluation results

  • ESI 1 recall (ensembled) on MIMIC-IV-ED holdout (n=7,917)
    self-reported
    0.821
  • ESI 1 recall (calibrated) on MIMIC-IV-ED holdout (n=7,917)
    self-reported
    0.802
  • ESI exact (calibrated) on MIMIC-IV-ED holdout (n=7,917)
    self-reported
    0.572
  • ESI 1 recall (calibrated) on MC-MED Stanford clean (n=1,000)
    self-reported
    0.840
  • ESI exact (calibrated) on MC-MED Stanford clean (n=1,000)
    self-reported
    0.602
  • ESI 1 recall (ensembled) on MIETIC narrative clean (n=200)
    self-reported
    0.967
  • ESI exact (calibrated) on MIETIC narrative clean (n=200)
    self-reported
    0.775
  • ESI 1 recall (calibrated) on Lukina v3 (n=201)
    self-reported
    0.943