Calculate SAPS-II (Simplified Acute Physiology Score II) for ICU patients. Use for mortality prediction, severity assessment, or international ICU benchmarking.
The Simplified Acute Physiology Score II (SAPS-II) is a severity scoring system developed from a European/North American multicenter study. Calculated from the worst values in the first 24 hours of ICU stay.
| Variable | Scoring Range | Points |
|---|---|---|
| Age | <40 to >=80 | 0-18 |
| Heart Rate | <40 to >=160 | 0-11 |
| Systolic BP | <70 to >=200 | 0-13 |
| Temperature | <39 or >=39C |
| 0-3 |
| PaO2/FiO2 (if ventilated) | <100 to >=200 | 6-11 |
| Urine Output | <500 to >=1000 mL/day | 0-11 |
| BUN | <28 to >=84 mg/dL | 0-10 |
| WBC | <1 to >=20 x10^9/L | 0-12 |
| Potassium | <3 or >=5 mEq/L | 0-3 |
| Sodium | <125 or >=145 mEq/L | 0-5 |
| Bicarbonate | <15 to >=20 mEq/L | 0-6 |
| Bilirubin | <4 to >=6 mg/dL | 0-9 |
| GCS | <6 to >=14 | 0-26 |
| Chronic Disease | AIDS/Hematologic Malignancy/Metastatic Cancer | 9-17 |
| Admission Type | Scheduled Surgical/Medical/Unscheduled Surgical | 0-8 |
PaO2/FiO2 Scoring: Only scored for patients on mechanical ventilation OR CPAP/BiPAP. Non-ventilated patients get 0 points for this component.
Mortality Probability: Calculated using:
sapsii_prob = 1 / (1 + exp(-(-7.7631 + 0.0737*sapsii + 0.9971*ln(sapsii+1))))
This 1993 formula tends to overestimate mortality in modern ICU cohorts (calibration drift). Consider recalibration for contemporary populations.
Time Window: Uses worst value from ICU admission to 24 hours after.
SAPS-II is available as a pre-computed derived table. Materialize with:
m4 init-derived mimic-iv # All derived tables including sapsii
The derived table provides the total score, predicted mortality probability, and all 15 component sub-scores (age_score, hr_score, sysbp_score, temp_score, pao2fio2_score, uo_score, bun_score, wbc_score, potassium_score, sodium_score, bicarbonate_score, bilirubin_score, gcs_score, comorbidity_score, admissiontype_score).
BigQuery users already have this table via physionet-data.mimiciv_derived.sapsii without running init-derived.
MIMIC-IV implementation details:
admissions.admission_type (elective vs not) + surgical service flag from services table.MIMIC-IV limitations:
SAPS-II is not pre-computed in eICU (only APACHE IV is provided in apachepatientresult). It must be calculated from raw tables. 13 of 15 components are straightforward:
| Component | eICU Source |
|---|---|
| Age | patient.age (string; "> 89" for elderly) |
| Heart Rate, Systolic BP, Temperature | vitalperiodic / vitalaperiodic |
| PaO2, FiO2 | lab |
| Ventilation status | respiratorycare / respiratorycharting |
| Urine Output | intakeoutput |
| BUN, WBC, K, Na, HCO3, Bilirubin | lab (text labname, not numeric itemid) |
| GCS | nursecharting |
eICU limitations:
diagnosis table uses free-text diagnosisstring with variably populated icd9code across the 208 sites. ICD-based extraction (AIDS, hematologic malignancy, metastatic cancer) may have incomplete capture. Consider supplementing with pasthistory table or text matching on diagnosisstring.patient.unitadmitsource and service fields.respiratorycare and respiratorycharting tables rather than procedural events.See scripts/mimic-iv.sql for the full MIMIC-IV implementation. An eICU script is not yet available.
SELECT
CASE
WHEN sapsii < 25 THEN 'Low (<25)'
WHEN sapsii < 50 THEN 'Moderate (25-49)'
WHEN sapsii < 75 THEN 'High (50-74)'
ELSE 'Very High (>=75)'
END AS severity_category,
COUNT(*) AS n_patients,
ROUND(AVG(sapsii_prob), 3) AS avg_predicted_mortality
FROM mimiciv_derived.sapsii
GROUP BY 1
ORDER BY 1;
-- Which components contribute most to high SAPS-II?
SELECT
'Age' AS component, AVG(age_score) AS avg_score FROM mimiciv_derived.sapsii WHERE sapsii >= 50
UNION ALL
SELECT 'Heart Rate', AVG(hr_score) FROM mimiciv_derived.sapsii WHERE sapsii >= 50
UNION ALL
SELECT 'Systolic BP', AVG(sysbp_score) FROM mimiciv_derived.sapsii WHERE sapsii >= 50
UNION ALL
SELECT 'GCS', AVG(gcs_score) FROM mimiciv_derived.sapsii WHERE sapsii >= 50
UNION ALL
SELECT 'Comorbidity', AVG(comorbidity_score) FROM mimiciv_derived.sapsii WHERE sapsii >= 50
ORDER BY avg_score DESC;