MAGENT

Emergency · LIVE

SAPS II Simplified Acute Physiology Score

SAPS II

Compute the Le Gall 1993 SAPS II integer from 12 physiology variables, age, type of admission, and one chronic disease, then the paper's logit hospital-mortality probability.

LIVE $0.005 USDC GET /api/calc/saps_ii

Markdown: /docs/saps-ii.md · Canonical: https://magentlab.com/docs/saps-ii

Not a medical device. Not a diagnosis, dose, or listing recommendation.

What it computes

Compute the Le Gall 1993 SAPS II integer from 12 physiology variables, age, type of admission, and one chronic disease, then the paper's logit hospital-mortality probability.

When to use

When an agent needs the published 1993 SAPS II integer and hospital-mortality probability and must not invent SAPS 3 points, APACHE points, or unnamed class bands.

When not to use

  • Not a medical device. magent does not measure vitals and does not examine the patient.
  • Each physiology item is the worst value in 24 hours as assigned by the caller. magent does not choose the worst from a time series.
  • Not SAPS 3. Not APACHE II, APACHE III, or APACHE IV. Le Gall 1993 Table 1 bands and logit only.
  • The 1993 derivation excluded patients younger than 18 years, burn patients, coronary care patients, and cardiac surgery patients. This tool still returns the published table for a valid adult input; it does not apply later customizations.
  • PaO2/FiO2 is scored only if the caller assigns mechanical ventilation or CPAP. If ventilated is false, oxygenation points are 0 even when a ratio is sent. Ventilated or CPAP scores at least 6.
  • Chronic diseases are one Table 1 row (none, metastatic cancer, hematologic malignancy, or AIDS), not additive.
  • Hospital-mortality probability is the 1993 logit only. The paper publishes no named low/intermediate/high class bands.
  • Temperature has no hypothermia points in the 1993 table (<39 °C is 0).

Formula

SAPS II = sum of 17 Le Gall 1993 variables (worst values in 24h as assigned by the caller): heart_rate (<40 → 11, 40-69 → 2, 70-119 → 0, 120-159 → 4, ≥160 → 7), systolic_bp_mm_hg (<70 → 13, 70-99 → 5, 100-199 → 0, ≥200 → 2), temperature_c (<39 → 0, ≥39 → 3), PaO2/FiO2 mm Hg if ventilated or CPAP (<100 → 11, 100-199 → 9, ≥200 → 6) else 0, urine_output_l_day (<0.500 → 11, 0.500-0.999 → 4, ≥1.000 → 0), urea_mmol_l (<10.0 → 0, 10.0-29.9 → 6, ≥30.0 → 10) or bun_mg_dl (<28 → 0, 28-83 → 6, ≥84 → 10), wbc_k_ul (<1.0 → 12, 1.0-19.9 → 0, ≥20.0 → 3), potassium_mmol_l (<3.0 or ≥5.0 → 3, 3.0-4.9 → 0), sodium_mmol_l (<125 → 5, 125-144 → 0, ≥145 → 1), bicarbonate_meq_l (<15 → 6, 15-19 → 3, ≥20 → 0), bilirubin_mg_dl (<4.0 → 0, 4.0-5.9 → 4, ≥6.0 → 9) or bilirubin_umol_l (<68.4 → 0, 68.4-102.5 → 4, ≥102.6 → 9), gcs (<6 → 26, 6-8 → 13, 9-10 → 7, 11-13 → 5, 14-15 → 0), age (<40 → 0, 40-59 → 7, 60-69 → 12, 70-74 → 15, 75-79 → 16, ≥80 → 18), admission_type (scheduled_surgical → 0, medical → 6, unscheduled_surgical → 8), chronic_disease (none → 0, metastatic_cancer → 9, hematologic_malignancy → 10, aids → 17, one row not additive); logit = -7.7631 + 0.0737*SAPS_II + 0.9971*ln(SAPS_II+1); hospital_mortality_probability = exp(logit)/(1+exp(logit)); max 163

Citation

Title
A new Simplified Acute Physiology Score (SAPS II) based on a European/North American multicenter study
Authors
Le Gall JR, Lemeshow S, Saulnier F
Source
JAMA. 1993;270(24):2957-2963
DOI
10.1001/jama.270.24.2957

Worked example

All-normal physiology, age 35, scheduled surgical, no chronic disease

Given: admission_type=scheduled_surgicalage=35bicarbonate_meq_l=24bilirubin_mg_dl=0.8chronic_disease=nonegcs=15heart_rate=80potassium_mmol_l=4.0sodium_mmol_l=140systolic_bp_mm_hg=120temperature_c=37.0urea_mmol_l=5.0urine_output_l_day=1.5ventilated=falsewbc_k_ul=8.0

  1. Each of the 12 physiology rows is in a 0-point Le Gall 1993 band (not ventilated, so PaO2/FiO2 is not scored; GCS 15 → 0)
  2. Age 35 → 0; scheduled_surgical → 0; chronic_disease none → 0
  3. Score = 0 (max 163); logit = -7.7631; hospital_mortality_probability from exp(logit)/(1+exp(logit))

Age 50 only

Given: admission_type=scheduled_surgicalage=50bicarbonate_meq_l=24bilirubin_mg_dl=0.8chronic_disease=nonegcs=15heart_rate=80potassium_mmol_l=4.0sodium_mmol_l=140systolic_bp_mm_hg=120temperature_c=37.0urea_mmol_l=5.0urine_output_l_day=1.5ventilated=falsewbc_k_ul=8.0

  1. Physiology, admission, and chronic disease remain 0
  2. Age 40-59 → 7
  3. Score = 7 (max 163) with the 1993 logit probability

Also searched as

  • SAPS II
  • Simplified Acute Physiology Score II
  • SAPS 2 score
  • Le Gall SAPS II
  • ICU hospital mortality score
  • SAPSII

Try

Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.

/api/calc/saps_ii?age=35&heart_rate=80&systolic_bp_mm_hg=120&temperature_c=37.0&ventilated=false&urine_output_l_day=1.5&urea_mmol_l=5.0&wbc_k_ul=8.0&potassium_mmol_l=4.0&sodium_mmol_l=140&bicarbonate_meq_l=24&bilirubin_mg_dl=0.8&gcs=15&admission_type=scheduled_surgical&chronic_disease=none

Full URL: https://api.magentlab.com/api/calc/saps_ii?age=35&heart_rate=80&systolic_bp_mm_hg=120&temperature_c=37.0&ventilated=false&urine_output_l_day=1.5&urea_mmol_l=5.0&wbc_k_ul=8.0&potassium_mmol_l=4.0&sodium_mmol_l=140&bicarbonate_meq_l=24&bilirubin_mg_dl=0.8&gcs=15&admission_type=scheduled_surgical&chronic_disease=none

Call

Expect HTTP 402 until you retry with PAYMENT-SIGNATURE. Incomplete query params return HTTP 400 before any quote or charge.

curl -i -H "Accept: application/json" "https://api.magentlab.com/api/calc/saps_ii?age=35&heart_rate=80&systolic_bp_mm_hg=120&temperature_c=37.0&ventilated=false&urine_output_l_day=1.5&urea_mmol_l=5.0&wbc_k_ul=8.0&potassium_mmol_l=4.0&sodium_mmol_l=140&bicarbonate_meq_l=24&bilirubin_mg_dl=0.8&gcs=15&admission_type=scheduled_surgical&chronic_disease=none"

Parameters

Name Type Required Description
age integer required Age in years, integer 18-120 (Le Gall 1993 excluded patients younger than 18). <40 → 0; 40-59 → 7; 60-69 → 12; 70-74 → 15; 75-79 → 16; ≥80 → 18.
heart_rate integer required Heart rate in beats/min, integer 20-250, worst in 24h as assigned by the caller. <40 → 11; 40-69 → 2; 70-119 → 0; 120-159 → 4; ≥160 → 7. magent does not measure pulse.
systolic_bp_mm_hg number required Systolic blood pressure in mm Hg (20-300), worst in 24h as assigned by the caller. <70 → 13; 70-99 → 5; 100-199 → 0; ≥200 → 2. magent does not measure blood pressure.
temperature_c number required Body temperature in °C (20-46). <39 → 0; ≥39 → 3. The 1993 table has no hypothermia points. magent does not measure temperature or convert Fahrenheit.
ventilated boolean required true if the caller assigns mechanical ventilation or CPAP in the first 24h (Le Gall 1993 PaO2/FiO2 row). false → 0 oxygenation points and pao2_fio2 is ignored. Ventilated or CPAP scores at least 6 even when PaO2/FiO2 is ≥200.
pao2_fio2 number optional PaO2/FiO2 ratio in mm Hg (10-800). Required when ventilated is true. <100 → 11; 100-199 → 9; ≥200 → 6. Ignored when ventilated is false. magent does not compute the ratio from PaO2 and FiO2.
urine_output_l_day number required Urine output in L/24h (0-20) as assigned by the caller. <0.500 → 11; 0.500-0.999 → 4; ≥1.000 → 0. magent does not measure urine.
urea_mmol_l number optional Serum urea in mmol/L (0.1-80). One of urea_mmol_l or bun_mg_dl is required. If both are sent, urea_mmol_l is scored and bun_mg_dl is ignored. <10.0 → 0; 10.0-29.9 → 6; ≥30.0 → 10.
bun_mg_dl number optional Blood urea nitrogen in mg/dL (1-250). Alternate to urea_mmol_l (Le Gall 1993 US column). Ignored when urea_mmol_l is present. <28 → 0; 28-83 → 6; ≥84 → 10. magent does not convert BUN to urea.
wbc_k_ul number required White blood count in thousands per mm^3 (0-100). <1.0 → 12; 1.0-19.9 → 0; ≥20.0 → 3.
potassium_mmol_l number required Serum potassium in mmol/L (1-12). <3.0 → 3; 3.0-4.9 → 0; ≥5.0 → 3.
sodium_mmol_l number required Serum sodium in mmol/L (90-200). <125 → 5; 125-144 → 0; ≥145 → 1.
bicarbonate_meq_l number required Serum bicarbonate in mEq/L (2-60). <15 → 6; 15-19 → 3; ≥20 → 0. Arterial pH is not a SAPS II variable.
bilirubin_mg_dl number optional Serum bilirubin in mg/dL (0-40). One of bilirubin_mg_dl or bilirubin_umol_l is required. If both are sent, bilirubin_mg_dl is scored and bilirubin_umol_l is ignored. <4.0 → 0; 4.0-5.9 → 4; ≥6.0 → 9.
bilirubin_umol_l number optional Serum bilirubin in µmol/L (0-684). Alternate to bilirubin_mg_dl (Le Gall 1993 SI column). Ignored when bilirubin_mg_dl is present. <68.4 → 0; 68.4-102.5 → 4; ≥102.6 → 9. magent does not convert units.
gcs integer required Glasgow Coma Scale total as assigned by the caller (integer 3-15). <6 → 26; 6-8 → 13; 9-10 → 7; 11-13 → 5; 14-15 → 0. magent does not examine the patient.
admission_type string required · scheduled_surgical, medical, unscheduled_surgical Le Gall 1993 type of admission as assigned by the caller: scheduled_surgical (0), medical (6), or unscheduled_surgical (8). magent does not classify the admission.
chronic_disease string required · none, metastatic_cancer, hematologic_malignancy, aids Le Gall 1993 chronic-disease row as assigned by the caller: none (0), metastatic_cancer (9), hematologic_malignancy (10), or aids (17). One token; the paper's table is not additive. magent does not diagnose.

Bulk (POST)

POST the same path with a JSON items array. The first item is the GET unit; each additional item is $0.002. Invalid items return HTTP 400 before settlement.

POST /api/calc/saps_ii Max 25 unit_amount + extra_item_amount * (n - 1) extra $0.002 PREVIEW

  • 1 to 25 items. Each item uses the same keys as the GET query parameters.
  • POST of 1 item costs the same as GET. Lists longer than 25: chunk into multiple POSTs. Extra items still execute; do not pad dummy rows.
  • The first invalid item fails the whole request (index in the 400 JSON). You are not charged.
  • HTTP 200 is {count, path, items}. Each items[i] is the GET 200 body for that row.
  • Catalog misses (empty matches, found=false) stay paid 200s inside that slot.
  • x402 resource URL is this path plus n and body_sha256. Browsers that prefer text/html get the same paywall as GET; Pay retries POST with the same items.

Example request (fixture)

{
  "items": [
    {
      "admission_type": "scheduled_surgical",
      "age": "35",
      "bicarbonate_meq_l": "24",
      "bilirubin_mg_dl": "0.8",
      "chronic_disease": "none",
      "gcs": "15",
      "heart_rate": "80",
      "potassium_mmol_l": "4.0",
      "sodium_mmol_l": "140",
      "systolic_bp_mm_hg": "120",
      "temperature_c": "37.0",
      "urea_mmol_l": "5.0",
      "urine_output_l_day": "1.5",
      "ventilated": "false",
      "wbc_k_ul": "8.0"
    },
    {
      "admission_type": "scheduled_surgical",
      "age": "35",
      "bicarbonate_meq_l": "24",
      "bilirubin_mg_dl": "0.8",
      "chronic_disease": "none",
      "gcs": "15",
      "heart_rate": "80",
      "potassium_mmol_l": "4.0",
      "sodium_mmol_l": "140",
      "systolic_bp_mm_hg": "120",
      "temperature_c": "37.0",
      "urea_mmol_l": "5.0",
      "urine_output_l_day": "1.5",
      "ventilated": "false",
      "wbc_k_ul": "8.0"
    }
  ]
}

Open bulk paywall →

Opens a two-item fixture on the API host. Unpaid browsers get the same MetaMask paywall as GET; Pay retries POST with those items.

Example 200 (fixture)

{
  "count": 2,
  "path": "/api/calc/saps_ii",
  "items": [
    {
      "components": [
        {
          "value": 35,
          "factor": "age",
          "points": 0,
          "present": false
        },
        {
          "value": 80,
          "factor": "heart_rate",
          "points": 0,
          "present": false
        },
        {
          "value": 120.0,
          "factor": "systolic_bp_mm_hg",
          "points": 0,
          "present": false
        },
        {
          "value": 37.0,
          "factor": "temperature_c",
          "points": 0,
          "present": false
        },
        {
          "value": null,
          "factor": "oxygenation",
          "branch": "not_ventilated",
          "points": 0,
          "present": false,
          "ventilated": false
        },
        {
          "value": 1.5,
          "factor": "urine_output_l_day",
          "points": 0,
          "present": false
        },
        {
          "value": 5.0,
          "factor": "urea",
          "branch": "urea_mmol_l",
          "points": 0,
          "present": false
        },
        {
          "value": 8.0,
          "factor": "wbc_k_ul",
          "points": 0,
          "present": false
        },
        {
          "value": 4.0,
          "factor": "potassium_mmol_l",
          "points": 0,
          "present": false
        },
        {
          "value": 140.0,
          "factor": "sodium_mmol_l",
          "points": 0,
          "present": false
        },
        {
          "value": 24.0,
          "factor": "bicarbonate_meq_l",
          "points": 0,
          "present": false
        },
        {
          "value": 0.8,
          "factor": "bilirubin",
          "branch": "bilirubin_mg_dl",
          "points": 0,
          "present": false
        },
        {
          "value": 15,
          "factor": "gcs",
          "points": 0,
          "present": false
        },
        {
          "value": "scheduled_surgical",
          "factor": "admission_type",
          "points": 0,
          "present": false
        },
        {
          "value": "none",
          "factor": "chronic_disease",
          "points": 0,
          "present": false
        }
      ],
      "disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
      "citation": {
        "authors": "Le Gall JR, Lemeshow S, Saulnier F",
        "doi": "10.1001/jama.270.24.2957",
        "id": "le-gall-1993",
        "pmid": "8254858",
        "source": "JAMA. 1993;270(24):2957-2963",
        "title": "A new Simplified Acute Physiology Score (SAPS II) based on a European/North American multicenter study"
      },
      "formula": "saps_ii",
      "formula_expression": "SAPS II = sum of 17 Le Gall 1993 variables (worst values in 24h as assigned by the caller): heart_rate (<40 → 11, 40-69 → 2, 70-119 → 0, 120-159 → 4, ≥160 → 7), systolic_bp_mm_hg (<70 → 13, 70-99 → 5, 100-199 → 0, ≥200 → 2), temperature_c (<39 → 0, ≥39 → 3), PaO2/FiO2 mm Hg if ventilated or CPAP (<100 → 11, 100-199 → 9, ≥200 → 6) else 0, urine_output_l_day (<0.500 → 11, 0.500-0.999 → 4, ≥1.000 → 0), urea_mmol_l (<10.0 → 0, 10.0-29.9 → 6, ≥30.0 → 10) or bun_mg_dl (<28 → 0, 28-83 → 6, ≥84 → 10), wbc_k_ul (<1.0 → 12, 1.0-19.9 → 0, ≥20.0 → 3), potassium_mmol_l (<3.0 or ≥5.0 → 3, 3.0-4.9 → 0), sodium_mmol_l (<125 → 5, 125-144 → 0, ≥145 → 1), bicarbonate_meq_l (<15 → 6, 15-19 → 3, ≥20 → 0), bilirubin_mg_dl (<4.0 → 0, 4.0-5.9 → 4, ≥6.0 → 9) or bilirubin_umol_l (<68.4 → 0, 68.4-102.5 → 4, ≥102.6 → 9), gcs (<6 → 26, 6-8 → 13, 9-10 → 7, 11-13 → 5, 14-15 → 0), age (<40 → 0, 40-59 → 7, 60-69 → 12, 70-74 → 15, 75-79 → 16, ≥80 → 18), admission_type (scheduled_surgical → 0, medical → 6, unscheduled_surgical → 8), chronic_disease (none → 0, metastatic_cancer → 9, hematologic_malignancy → 10, aids → 17, one row not additive); logit = -7.7631 + 0.0737*SAPS_II + 0.9971*ln(SAPS_II+1); hospital_mortality_probability = exp(logit)/(1+exp(logit)); max 163",
      "max_score": 163,
      "score": 0,
      "logit": -7.7631,
      "hospital_mortality_probability": 4.25e-4
    },
    {
      "components": [
        {
          "value": 35,
          "factor": "age",
          "points": 0,
          "present": false
        },
        {
          "value": 80,
          "factor": "heart_rate",
          "points": 0,
          "present": false
        },
        {
          "value": 120.0,
          "factor": "systolic_bp_mm_hg",
          "points": 0,
          "present": false
        },
        {
          "value": 37.0,
          "factor": "temperature_c",
          "points": 0,
          "present": false
        },
        {
          "value": null,
          "factor": "oxygenation",
          "branch": "not_ventilated",
          "points": 0,
          "present": false,
          "ventilated": false
        },
        {
          "value": 1.5,
          "factor": "urine_output_l_day",
          "points": 0,
          "present": false
        },
        {
          "value": 5.0,
          "factor": "urea",
          "branch": "urea_mmol_l",
          "points": 0,
          "present": false
        },
        {
          "value": 8.0,
          "factor": "wbc_k_ul",
          "points": 0,
          "present": false
        },
        {
          "value": 4.0,
          "factor": "potassium_mmol_l",
          "points": 0,
          "present": false
        },
        {
          "value": 140.0,
          "factor": "sodium_mmol_l",
          "points": 0,
          "present": false
        },
        {
          "value": 24.0,
          "factor": "bicarbonate_meq_l",
          "points": 0,
          "present": false
        },
        {
          "value": 0.8,
          "factor": "bilirubin",
          "branch": "bilirubin_mg_dl",
          "points": 0,
          "present": false
        },
        {
          "value": 15,
          "factor": "gcs",
          "points": 0,
          "present": false
        },
        {
          "value": "scheduled_surgical",
          "factor": "admission_type",
          "points": 0,
          "present": false
        },
        {
          "value": "none",
          "factor": "chronic_disease",
          "points": 0,
          "present": false
        }
      ],
      "disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
      "citation": {
        "authors": "Le Gall JR, Lemeshow S, Saulnier F",
        "doi": "10.1001/jama.270.24.2957",
        "id": "le-gall-1993",
        "pmid": "8254858",
        "source": "JAMA. 1993;270(24):2957-2963",
        "title": "A new Simplified Acute Physiology Score (SAPS II) based on a European/North American multicenter study"
      },
      "formula": "saps_ii",
      "formula_expression": "SAPS II = sum of 17 Le Gall 1993 variables (worst values in 24h as assigned by the caller): heart_rate (<40 → 11, 40-69 → 2, 70-119 → 0, 120-159 → 4, ≥160 → 7), systolic_bp_mm_hg (<70 → 13, 70-99 → 5, 100-199 → 0, ≥200 → 2), temperature_c (<39 → 0, ≥39 → 3), PaO2/FiO2 mm Hg if ventilated or CPAP (<100 → 11, 100-199 → 9, ≥200 → 6) else 0, urine_output_l_day (<0.500 → 11, 0.500-0.999 → 4, ≥1.000 → 0), urea_mmol_l (<10.0 → 0, 10.0-29.9 → 6, ≥30.0 → 10) or bun_mg_dl (<28 → 0, 28-83 → 6, ≥84 → 10), wbc_k_ul (<1.0 → 12, 1.0-19.9 → 0, ≥20.0 → 3), potassium_mmol_l (<3.0 or ≥5.0 → 3, 3.0-4.9 → 0), sodium_mmol_l (<125 → 5, 125-144 → 0, ≥145 → 1), bicarbonate_meq_l (<15 → 6, 15-19 → 3, ≥20 → 0), bilirubin_mg_dl (<4.0 → 0, 4.0-5.9 → 4, ≥6.0 → 9) or bilirubin_umol_l (<68.4 → 0, 68.4-102.5 → 4, ≥102.6 → 9), gcs (<6 → 26, 6-8 → 13, 9-10 → 7, 11-13 → 5, 14-15 → 0), age (<40 → 0, 40-59 → 7, 60-69 → 12, 70-74 → 15, 75-79 → 16, ≥80 → 18), admission_type (scheduled_surgical → 0, medical → 6, unscheduled_surgical → 8), chronic_disease (none → 0, metastatic_cancer → 9, hematologic_malignancy → 10, aids → 17, one row not additive); logit = -7.7631 + 0.0737*SAPS_II + 0.9971*ln(SAPS_II+1); hospital_mortality_probability = exp(logit)/(1+exp(logit)); max 163",
      "max_score": 163,
      "score": 0,
      "logit": -7.7631,
      "hospital_mortality_probability": 4.25e-4
    }
  ]
}

Response

Field Type Description
formula string saps_ii
formula_expression string Exact expression used
score integer SAPS II integer 0-163
max_score integer Always 163
logit number Le Gall 1993 logit, 4 decimal places
hospital_mortality_probability number exp(logit)/(1+exp(logit)) from the unrounded logit, 6 decimal places. A probability, not a named class.
components array Fifteen Table 1 rows (chronic diseases share one row)
citation object Le Gall 1993 citation
disclaimer string Not-a-device notice

Example JSON

Machine form of the same example. Frozen fixture. Not a live lookup.

{
  "components": [
    {
      "value": 35,
      "factor": "age",
      "points": 0,
      "present": false
    },
    {
      "value": 80,
      "factor": "heart_rate",
      "points": 0,
      "present": false
    },
    {
      "value": 120.0,
      "factor": "systolic_bp_mm_hg",
      "points": 0,
      "present": false
    },
    {
      "value": 37.0,
      "factor": "temperature_c",
      "points": 0,
      "present": false
    },
    {
      "value": null,
      "factor": "oxygenation",
      "branch": "not_ventilated",
      "points": 0,
      "present": false,
      "ventilated": false
    },
    {
      "value": 1.5,
      "factor": "urine_output_l_day",
      "points": 0,
      "present": false
    },
    {
      "value": 5.0,
      "factor": "urea",
      "branch": "urea_mmol_l",
      "points": 0,
      "present": false
    },
    {
      "value": 8.0,
      "factor": "wbc_k_ul",
      "points": 0,
      "present": false
    },
    {
      "value": 4.0,
      "factor": "potassium_mmol_l",
      "points": 0,
      "present": false
    },
    {
      "value": 140.0,
      "factor": "sodium_mmol_l",
      "points": 0,
      "present": false
    },
    {
      "value": 24.0,
      "factor": "bicarbonate_meq_l",
      "points": 0,
      "present": false
    },
    {
      "value": 0.8,
      "factor": "bilirubin",
      "branch": "bilirubin_mg_dl",
      "points": 0,
      "present": false
    },
    {
      "value": 15,
      "factor": "gcs",
      "points": 0,
      "present": false
    },
    {
      "value": "scheduled_surgical",
      "factor": "admission_type",
      "points": 0,
      "present": false
    },
    {
      "value": "none",
      "factor": "chronic_disease",
      "points": 0,
      "present": false
    }
  ],
  "disclaimer": "Not a medical device. Deterministic published-formula or published-code output for autonomous agents. A licensed clinician remains responsible for patient care and billing submissions.",
  "citation": {
    "authors": "Le Gall JR, Lemeshow S, Saulnier F",
    "doi": "10.1001/jama.270.24.2957",
    "id": "le-gall-1993",
    "pmid": "8254858",
    "source": "JAMA. 1993;270(24):2957-2963",
    "title": "A new Simplified Acute Physiology Score (SAPS II) based on a European/North American multicenter study"
  },
  "formula": "saps_ii",
  "formula_expression": "SAPS II = sum of 17 Le Gall 1993 variables (worst values in 24h as assigned by the caller): heart_rate (<40 → 11, 40-69 → 2, 70-119 → 0, 120-159 → 4, ≥160 → 7), systolic_bp_mm_hg (<70 → 13, 70-99 → 5, 100-199 → 0, ≥200 → 2), temperature_c (<39 → 0, ≥39 → 3), PaO2/FiO2 mm Hg if ventilated or CPAP (<100 → 11, 100-199 → 9, ≥200 → 6) else 0, urine_output_l_day (<0.500 → 11, 0.500-0.999 → 4, ≥1.000 → 0), urea_mmol_l (<10.0 → 0, 10.0-29.9 → 6, ≥30.0 → 10) or bun_mg_dl (<28 → 0, 28-83 → 6, ≥84 → 10), wbc_k_ul (<1.0 → 12, 1.0-19.9 → 0, ≥20.0 → 3), potassium_mmol_l (<3.0 or ≥5.0 → 3, 3.0-4.9 → 0), sodium_mmol_l (<125 → 5, 125-144 → 0, ≥145 → 1), bicarbonate_meq_l (<15 → 6, 15-19 → 3, ≥20 → 0), bilirubin_mg_dl (<4.0 → 0, 4.0-5.9 → 4, ≥6.0 → 9) or bilirubin_umol_l (<68.4 → 0, 68.4-102.5 → 4, ≥102.6 → 9), gcs (<6 → 26, 6-8 → 13, 9-10 → 7, 11-13 → 5, 14-15 → 0), age (<40 → 0, 40-59 → 7, 60-69 → 12, 70-74 → 15, 75-79 → 16, ≥80 → 18), admission_type (scheduled_surgical → 0, medical → 6, unscheduled_surgical → 8), chronic_disease (none → 0, metastatic_cancer → 9, hematologic_malignancy → 10, aids → 17, one row not additive); logit = -7.7631 + 0.0737*SAPS_II + 0.9971*ln(SAPS_II+1); hospital_mortality_probability = exp(logit)/(1+exp(logit)); max 163",
  "max_score": 163,
  "score": 0,
  "logit": -7.7631,
  "hospital_mortality_probability": 4.25e-4
}

Client errors (HTTP 400)

Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.

HTTP Code When
400 invalid_saps_ii SAPS II needs Le Gall 1993 physiologic, age, admission-type, and chronic-disease values in published ranges. Returned before settlement; you are not charged.
400 invalid_items POST body must be a JSON object with only an items array Returned before settlement; you are not charged.
400 invalid_item_count items must be an array of 1 to 25 objects Returned before settlement; you are not charged.
400 invalid_item each items entry must be a JSON object Returned before settlement; you are not charged.

Related tools

  • APACHE II — Compute the Knaus 1985 APACHE II integer from 12 Acute Physiology Score items, age points, and chronic-health points.
  • SOFA — Compute the Vincent 1996 SOFA score from PaO2/FiO2, platelets, bilirubin, MAP and adrenergic agents, GCS, and creatinine or urine output.

Payment

Unpaid requests return HTTP 402 even if query parameters or POST items are missing or invalid, so CDP and agents can index the path. After a PAYMENT-SIGNATURE, invalid params return HTTP 400 JSON before settlement. magent does not charge. Fix the params, then request a new 402 quote for that complete URL. Catalog misses (empty matches, found=false) are valid paid 200s. Unpaid valid requests return HTTP 402 with a base64 PAYMENT-REQUIRED header. HTTP 503 is not a new quote: retry the same PAYMENT-SIGNATURE. Full handshake and shared payment errors: Payments. Stdio MCP: /docs/mcp.

Guarantees

  • HTTP 402 is unpaid, including a missing query. After PAYMENT-SIGNATURE, invalid parameters return HTTP 400 before settlement. You are not charged. HTTP 402 never includes the tool JSON.
  • exact: settlement finishes before the tool (paymentFlow upfront). batch-settlement: verify/deposit before the tool; chargedCumulativeAmount commits after HTTP 2xx. Uncertain or failed settlement fails closed (HTTP 503). Retry the same PAYMENT-SIGNATURE.
  • HTTP 402 is unpaid only. Do not sign a second authorization because of a 503.
  • Execution is timeout-bounded and concurrency-capped.
  • Calculator inputs are stored encrypted for allowlisted operators (Magent Console). They are not in public logs, SSH lookups, catalog, or rollups. Request logs store path without query.