# CRASH chemotherapy toxicity score

CRASH

Status: LIVE
Price: $0.005 USDC
`GET /api/calc/crash`
HTML: https://magentlab.com/docs/crash
Markdown: https://magentlab.com/docs/crash.md

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

## What it computes

Sum Extermann 2012 Table 4 CRASH points into hematologic (0–6), nonhematologic (0–8), and combined (0–12, Chemotox once) scores with published four-level risk bands.

## When to use

When an agent already has caller-assigned CRASH inputs for an older patient considered for chemotherapy and needs the published hematologic, nonhematologic, and combined scores, not a chemotherapy order, not CARG-TT, and not the trauma CRASH score. magent does not look up regimens or assay LDH.

## When not to use

- Not a medical device.
- Not a chemotherapy order. This tool does not start, stop, or choose cancer treatment. Not CARG-TT.
- Not the trauma CRASH score (MRC CRASH head-injury trial). This is the Extermann 2012 Chemotherapy Risk Assessment Scale for High-Age Patients.
- Hematologic, nonhematologic, and combined incidences (7/23/54/100%, 33/46/67/93%, 50/58/77/79%) are derivation-cohort observations, not patient-specific probabilities.
- Chemotox is caller-assigned MAX2 (0–1). magent does not look up regimens.
- Caller assigns diastolic BP, IADL (10–29), LDH and LDH ULN, ECOG, Mini-Mental Status, and Mini-Nutritional Assessment. magent does not measure blood pressure, interview, or assay LDH.
- Combined score counts Chemotox once (max 12, not 14). LDH awards 0 or 2 points only (empty 1-point column in Table 4).

## Formula

```
CRASH (Extermann 2012 Table 4) hematologic = diastolic_mm_hg (<=72 0, >72 1) + iadl (26-29 0, 10-25 1) + ldh (ldh_u_l > 0.74 * ldh_uln_u_l 2 else 0; empty 1-point column) + chemotox (0-0.44 0, 0.45-0.57 1, >0.57 2); max 6; nonhematologic = ecog (0 → 0, 1-2 → 1, 3-4 → 2) + mms (30 → 0, <30 → 2) + mna (28-30 → 0, <28 → 2) + chemotox (same); max 8; combined = hematologic + nonhematologic - chemotox (count Chemotox once; max 12 not 14); H 0-1 low 7%, 2-3 medium_low 23%, 4-5 medium_high 54%, 6 high 100%; NH 0-2 low 33%, 3-4 medium_low 46%, 5-6 medium_high 67%, 7-8 high 93%; combined 0-3 low 50%, 4-6 medium_low 58%, 7-9 medium_high 77%, 10-12 high 79%; not trauma CRASH; not CARG-TT; Chemotox is caller-assigned MAX2
```

## Citation

[Predicting the risk of chemotherapy toxicity in older patients: the Chemotherapy Risk Assessment Scale for High-Age Patients (CRASH) score](https://doi.org/10.1002/cncr.26646)
Extermann M, Boler I, Reich RR, et al.
Cancer. 2012;118(13):3377-3386
DOI: [10.1002/cncr.26646](https://doi.org/10.1002/cncr.26646)

## Worked example

### Published worked example (combined high)

Given: `chemotox=0.50, diastolic_mm_hg=80, ecog=1, iadl=20, ldh_u_l=500, ldh_uln_u_l=618, mms=28, mna=26`

1. Diastolic 80 >72 → 1; IADL 20 (10–25) → 1; LDH 500 > 0.74×618≈457.32 → 2; Chemotox 0.50 → 1. Hematologic = 5 (medium_high, 54%)
2. ECOG 1 → 1; MMS 28 <30 → 2; MNA 26 <28 → 2; Chemotox 0.50 → 1. Nonhematologic = 6 (medium_high, 67%)
3. Combined = 5+6−1 = 10 (Chemotox once; high, 79%). Not a chemotherapy order.


### All lowest Table 4 poles

Given: `chemotox=0.44, diastolic_mm_hg=72, ecog=0, iadl=29, ldh_u_l=100, ldh_uln_u_l=200, mms=30, mna=30`

1. Diastolic ≤72 → 0; IADL 26–29 → 0; LDH not >0.74×ULN → 0; Chemotox 0–0.44 → 0. Hematologic = 0 (low, 7%)
2. ECOG 0 → 0; MMS 30 → 0; MNA 28–30 → 0; Chemotox 0. Nonhematologic = 0 (low, 33%)
3. Combined = 0 (low, 50%)


## Also searched as

- CRASH score
- CRASH chemotherapy toxicity
- Extermann CRASH
- Chemotherapy Risk Assessment Scale for High-Age Patients
- Chemotox CRASH
- MAX2 Chemotox
- chemotherapy toxicity older patients
- CRASH hematologic score

## Parameters

- `diastolic_mm_hg` (number, required): Diastolic blood pressure in mm Hg (20-160). Extermann 2012 Table 4: ≤72 → 0, >72 → 1 hematologic point. magent does not measure blood pressure.
- `iadl` (integer, required): Instrumental activities of daily living integer 10-29 (Extermann 2012 CRASH IADL). 26-29 → 0, 10-25 → 1 hematologic point. magent does not interview the patient.
- `ldh_u_l` (number, required): Lactate dehydrogenase in U/L (1-20000). +2 hematologic points if ldh_u_l > 0.74 × ldh_uln_u_l, else 0 (empty 1-point column). magent does not assay LDH.
- `ldh_uln_u_l` (number, required): Laboratory LDH upper limit of normal in U/L (50-2000). Used only as 0.74 × ULN for the LDH rule. No special-case ULN value. magent does not assay LDH.
- `chemotox` (number, required): Caller-assigned MAX2 Chemotox from 0 to 1. 0-0.44 → 0, 0.45-0.57 → 1, >0.57 → 2. Counted once in the combined score. magent does not look up regimens.
- `ecog` (integer, required): ECOG performance status integer 0-4. Extermann 2012: 0 → 0, 1-2 → 1, 3-4 → 2 nonhematologic points. magent does not assign performance status.
- `mms` (integer, required): Mini-Mental Status integer 0-30. Extermann 2012: 30 → 0, <30 → 2 nonhematologic points. magent does not administer the Mini-Mental Status.
- `mna` (integer, required): Mini-Nutritional Assessment integer 0-30. Extermann 2012: 28-30 → 0, <28 → 2 nonhematologic points. magent does not administer the Mini-Nutritional Assessment.

## 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.

Method: `POST /api/calc/crash`
Max items: 25
Price: unit_amount + extra_item_amount * (n - 1) (unit 5000 atomic, extra 2000 atomic)
Status: 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:

```json
{
  "items": [
    {
      "chemotox": "0.50",
      "diastolic_mm_hg": "80",
      "ecog": "1",
      "iadl": "20",
      "ldh_u_l": "500",
      "ldh_uln_u_l": "618",
      "mms": "28",
      "mna": "26"
    },
    {
      "chemotox": "0.50",
      "diastolic_mm_hg": "80",
      "ecog": "1",
      "iadl": "20",
      "ldh_u_l": "500",
      "ldh_uln_u_l": "618",
      "mms": "28",
      "mna": "26"
    }
  ]
}
```

Human paywall (two-item fixture): https://api.magentlab.com/paywall/bulk/crash

Example 200:

```json
{
  "count": 2,
  "path": "/api/calc/crash",
  "items": [
    {
      "components": [
        {
          "value": 80.0,
          "factor": "diastolic_mm_hg",
          "points": 1,
          "present": true
        },
        {
          "value": 20,
          "factor": "iadl",
          "points": 1,
          "present": true
        },
        {
          "value": 500.0,
          "factor": "ldh",
          "points": 2,
          "present": true
        },
        {
          "value": 0.5,
          "factor": "chemotox",
          "points": 1,
          "present": true
        },
        {
          "value": 1,
          "factor": "ecog",
          "points": 1,
          "present": true
        },
        {
          "value": 28,
          "factor": "mms",
          "points": 2,
          "present": true
        },
        {
          "value": 26,
          "factor": "mna",
          "points": 2,
          "present": true
        }
      ],
      "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": "Extermann M, Boler I, Reich RR, et al.",
        "doi": "10.1002/cncr.26646",
        "id": "extermann-2012",
        "pmid": "22072065",
        "source": "Cancer. 2012;118(13):3377-3386",
        "title": "Predicting the risk of chemotherapy toxicity in older patients: the Chemotherapy Risk Assessment Scale for High-Age Patients (CRASH) score"
      },
      "formula": "crash",
      "formula_expression": "CRASH (Extermann 2012 Table 4) hematologic = diastolic_mm_hg (<=72 0, >72 1) + iadl (26-29 0, 10-25 1) + ldh (ldh_u_l > 0.74 * ldh_uln_u_l 2 else 0; empty 1-point column) + chemotox (0-0.44 0, 0.45-0.57 1, >0.57 2); max 6; nonhematologic = ecog (0 → 0, 1-2 → 1, 3-4 → 2) + mms (30 → 0, <30 → 2) + mna (28-30 → 0, <28 → 2) + chemotox (same); max 8; combined = hematologic + nonhematologic - chemotox (count Chemotox once; max 12 not 14); H 0-1 low 7%, 2-3 medium_low 23%, 4-5 medium_high 54%, 6 high 100%; NH 0-2 low 33%, 3-4 medium_low 46%, 5-6 medium_high 67%, 7-8 high 93%; combined 0-3 low 50%, 4-6 medium_low 58%, 7-9 medium_high 77%, 10-12 high 79%; not trauma CRASH; not CARG-TT; Chemotox is caller-assigned MAX2",
      "diastolic_mm_hg": 80.0,
      "ecog": 1,
      "chemotox": 0.5,
      "combined_incidence_percent": 79,
      "combined_risk": "high",
      "combined_score": 10,
      "hematologic_incidence_percent": 54,
      "hematologic_risk": "medium_high",
      "hematologic_score": 5,
      "iadl": 20,
      "ldh_u_l": 500.0,
      "ldh_uln_u_l": 618.0,
      "max_combined_score": 12,
      "max_hematologic_score": 6,
      "max_nonhematologic_score": 8,
      "mms": 28,
      "mna": 26,
      "nonhematologic_incidence_percent": 67,
      "nonhematologic_risk": "medium_high",
      "nonhematologic_score": 6
    },
    {
      "components": [
        {
          "value": 80.0,
          "factor": "diastolic_mm_hg",
          "points": 1,
          "present": true
        },
        {
          "value": 20,
          "factor": "iadl",
          "points": 1,
          "present": true
        },
        {
          "value": 500.0,
          "factor": "ldh",
          "points": 2,
          "present": true
        },
        {
          "value": 0.5,
          "factor": "chemotox",
          "points": 1,
          "present": true
        },
        {
          "value": 1,
          "factor": "ecog",
          "points": 1,
          "present": true
        },
        {
          "value": 28,
          "factor": "mms",
          "points": 2,
          "present": true
        },
        {
          "value": 26,
          "factor": "mna",
          "points": 2,
          "present": true
        }
      ],
      "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": "Extermann M, Boler I, Reich RR, et al.",
        "doi": "10.1002/cncr.26646",
        "id": "extermann-2012",
        "pmid": "22072065",
        "source": "Cancer. 2012;118(13):3377-3386",
        "title": "Predicting the risk of chemotherapy toxicity in older patients: the Chemotherapy Risk Assessment Scale for High-Age Patients (CRASH) score"
      },
      "formula": "crash",
      "formula_expression": "CRASH (Extermann 2012 Table 4) hematologic = diastolic_mm_hg (<=72 0, >72 1) + iadl (26-29 0, 10-25 1) + ldh (ldh_u_l > 0.74 * ldh_uln_u_l 2 else 0; empty 1-point column) + chemotox (0-0.44 0, 0.45-0.57 1, >0.57 2); max 6; nonhematologic = ecog (0 → 0, 1-2 → 1, 3-4 → 2) + mms (30 → 0, <30 → 2) + mna (28-30 → 0, <28 → 2) + chemotox (same); max 8; combined = hematologic + nonhematologic - chemotox (count Chemotox once; max 12 not 14); H 0-1 low 7%, 2-3 medium_low 23%, 4-5 medium_high 54%, 6 high 100%; NH 0-2 low 33%, 3-4 medium_low 46%, 5-6 medium_high 67%, 7-8 high 93%; combined 0-3 low 50%, 4-6 medium_low 58%, 7-9 medium_high 77%, 10-12 high 79%; not trauma CRASH; not CARG-TT; Chemotox is caller-assigned MAX2",
      "diastolic_mm_hg": 80.0,
      "ecog": 1,
      "chemotox": 0.5,
      "combined_incidence_percent": 79,
      "combined_risk": "high",
      "combined_score": 10,
      "hematologic_incidence_percent": 54,
      "hematologic_risk": "medium_high",
      "hematologic_score": 5,
      "iadl": 20,
      "ldh_u_l": 500.0,
      "ldh_uln_u_l": 618.0,
      "max_combined_score": 12,
      "max_hematologic_score": 6,
      "max_nonhematologic_score": 8,
      "mms": 28,
      "mna": 26,
      "nonhematologic_incidence_percent": 67,
      "nonhematologic_risk": "medium_high",
      "nonhematologic_score": 6
    }
  ]
}
```

## Response fields

- `formula` (string): crash
- `formula_expression` (string): Exact expression used
- `hematologic_score` (integer): Extermann 2012 hematologic points 0-6
- `nonhematologic_score` (integer): Extermann 2012 nonhematologic points 0-8
- `combined_score` (integer): Hematologic + nonhematologic minus Chemotox once; 0-12
- `max_hematologic_score` (integer): Always 6
- `max_nonhematologic_score` (integer): Always 8
- `max_combined_score` (integer): Always 12
- `hematologic_risk` (string): low, medium_low, medium_high, or high (H-toxicity derivation split)
- `nonhematologic_risk` (string): low, medium_low, medium_high, or high (non-H derivation split)
- `combined_risk` (string): low, medium_low, medium_high, or high (combined derivation split)
- `hematologic_incidence_percent` (integer): Derivation H-toxicity incidence 7, 23, 54, or 100; not a patient probability
- `nonhematologic_incidence_percent` (integer): Derivation non-H incidence 33, 46, 67, or 93; not a patient probability
- `combined_incidence_percent` (integer): Derivation combined incidence 50, 58, 77, or 79; not a patient probability
- `diastolic_mm_hg` (number): Diastolic BP used, mm Hg
- `iadl` (integer): IADL integer used
- `ldh_u_l` (number): LDH used, U/L
- `ldh_uln_u_l` (number): LDH ULN used, U/L
- `chemotox` (number): Caller-assigned MAX2 Chemotox used
- `ecog` (integer): ECOG used
- `mms` (integer): Mini-Mental Status used
- `mna` (integer): Mini-Nutritional Assessment used
- `components` (array): Per-factor points with Chemotox listed once
- `citation` (object): Extermann 2012 citation
- `disclaimer` (string): Not-a-device notice

## Example JSON

Frozen fixture. Not a live lookup.

```json
{
  "components": [
    {
      "value": 80.0,
      "factor": "diastolic_mm_hg",
      "points": 1,
      "present": true
    },
    {
      "value": 20,
      "factor": "iadl",
      "points": 1,
      "present": true
    },
    {
      "value": 500.0,
      "factor": "ldh",
      "points": 2,
      "present": true
    },
    {
      "value": 0.5,
      "factor": "chemotox",
      "points": 1,
      "present": true
    },
    {
      "value": 1,
      "factor": "ecog",
      "points": 1,
      "present": true
    },
    {
      "value": 28,
      "factor": "mms",
      "points": 2,
      "present": true
    },
    {
      "value": 26,
      "factor": "mna",
      "points": 2,
      "present": true
    }
  ],
  "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": "Extermann M, Boler I, Reich RR, et al.",
    "doi": "10.1002/cncr.26646",
    "id": "extermann-2012",
    "pmid": "22072065",
    "source": "Cancer. 2012;118(13):3377-3386",
    "title": "Predicting the risk of chemotherapy toxicity in older patients: the Chemotherapy Risk Assessment Scale for High-Age Patients (CRASH) score"
  },
  "formula": "crash",
  "formula_expression": "CRASH (Extermann 2012 Table 4) hematologic = diastolic_mm_hg (<=72 0, >72 1) + iadl (26-29 0, 10-25 1) + ldh (ldh_u_l > 0.74 * ldh_uln_u_l 2 else 0; empty 1-point column) + chemotox (0-0.44 0, 0.45-0.57 1, >0.57 2); max 6; nonhematologic = ecog (0 → 0, 1-2 → 1, 3-4 → 2) + mms (30 → 0, <30 → 2) + mna (28-30 → 0, <28 → 2) + chemotox (same); max 8; combined = hematologic + nonhematologic - chemotox (count Chemotox once; max 12 not 14); H 0-1 low 7%, 2-3 medium_low 23%, 4-5 medium_high 54%, 6 high 100%; NH 0-2 low 33%, 3-4 medium_low 46%, 5-6 medium_high 67%, 7-8 high 93%; combined 0-3 low 50%, 4-6 medium_low 58%, 7-9 medium_high 77%, 10-12 high 79%; not trauma CRASH; not CARG-TT; Chemotox is caller-assigned MAX2",
  "diastolic_mm_hg": 80.0,
  "ecog": 1,
  "chemotox": 0.5,
  "combined_incidence_percent": 79,
  "combined_risk": "high",
  "combined_score": 10,
  "hematologic_incidence_percent": 54,
  "hematologic_risk": "medium_high",
  "hematologic_score": 5,
  "iadl": 20,
  "ldh_u_l": 500.0,
  "ldh_uln_u_l": 618.0,
  "max_combined_score": 12,
  "max_hematologic_score": 6,
  "max_nonhematologic_score": 8,
  "mms": 28,
  "mna": 26,
  "nonhematologic_incidence_percent": 67,
  "nonhematologic_risk": "medium_high",
  "nonhematologic_score": 6
}
```

## Errors

- HTTP 400 `invalid_diastolic_bp`: diastolic_mm_hg must be a number from 20 to 160. Returned before settlement; you are not charged.
- HTTP 400 `invalid_crash_iadl`: iadl must be an integer from 10 to 29 (Extermann 2012 CRASH IADL). Returned before settlement; you are not charged.
- HTTP 400 `invalid_ldh`: ldh_u_l must be a number from 1 to 20000 (Extermann 2012 LDH U/L). Returned before settlement; you are not charged.
- HTTP 400 `invalid_ldh_uln`: ldh_uln_u_l must be a number from 50 to 2000. Returned before settlement; you are not charged.
- HTTP 400 `invalid_crash_chemotox`: chemotox must be a number from 0 to 1 (Extermann 2012 MAX2 Chemotox as assigned by the caller). Returned before settlement; you are not charged.
- HTTP 400 `invalid_ecog`: ecog must be an integer from 0 to 4 (Shipp 1993 IPI). Returned before settlement; you are not charged.
- HTTP 400 `invalid_crash_mms`: mms must be an integer from 0 to 30 (Extermann 2012 Mini-Mental Status). Returned before settlement; you are not charged.
- HTTP 400 `invalid_crash_mna`: mna must be an integer from 0 to 30 (Extermann 2012 Mini-Nutritional Assessment). Returned before settlement; you are not charged.
- HTTP 400 `invalid_items`: POST body must be a JSON object with only an items array Returned before settlement; you are not charged.
- HTTP 400 `invalid_item_count`: items must be an array of 1 to 25 objects Returned before settlement; you are not charged.
- HTTP 400 `invalid_item`: each items entry must be a JSON object Returned before settlement; you are not charged.

Shared HTTP 402 and 503: https://magentlab.com/docs/payments

## Related tools

- [G8](https://magentlab.com/docs/g8) — Sum the eight Bellera 2012 G8 items (seven MNA items A, B, C, E, F, H, P plus age) and return whether the published ≤14 impaired-screen cutoff is met.
- [CARG-TT](https://magentlab.com/docs/carg-tt) — Sum Hurria 2011 Table 5 CARG chemotherapy-toxicity weights and return low (0-5, 30%), intermediate (6-9, 52%), or high (10-19, 83%) grade 3-5 toxicity risk.

## 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.

- GET the tool with Accept: application/json (do not send Accept: text/html unless you want the human paywall).
- HTTP 402 means you have not paid. Decode the base64 PAYMENT-REQUIRED header. HTTP 503 is not a new quote.
- Sign accepts[0] (exact, EIP-3009) with validBefore = now + maxTimeoutSeconds (600 seconds), or accepts[1] (batch-settlement deposit/voucher) on product GET. Ping and POST {items} stay exact. Magent retries transient facilitator 429/5xx before answering.
- Retry the same URL with PAYMENT-SIGNATURE (base64 JSON of accepted and payload). Magent attaches canonical extensions.bazaar on CDP verify/settle; echoing 402 bazaar is optional.
- Success is HTTP 200 JSON plus PAYMENT-RESPONSE. exact settles before the tool. batch-settlement verifies (and deposit-settles) before the tool and commits the charge after HTTP 2xx. HTTP 503: retry the same PAYMENT-SIGNATURE. Mint a new exact nonce only after a new HTTP 402.

- offered `exact` on eip155:8453: Fixed-price USDC on Base. The buyer authorizes the advertised amount (EIP-3009). magent settles before the tool runs (paymentFlow upfront). extra.assetTransferMethod=eip3009 extra.paymentFlow=upfront.
- offered `batch-settlement` on eip155:8453: Payment-channel vouchers claimed later in batches. Exact stays accepts[0]. Same-path POST {items} is still exact. extra.assetTransferMethod=eip3009 extra.paymentFlow=authorization.

- not offered `upto`: Not offered. Usage-based: buyer authorizes a ceiling, seller settles the actual amount after work. Reserved for a future metered tool. Not for current calculators or code search.

Same-path POST {items} is still scheme exact: one EIP-3009 authorization for GET unit plus $0.002 per extra item. That is not x402 batch-settlement (payment channels / vouchers).

Shared HTTP 402 and 503 table: https://magentlab.com/docs/payments

Stdio MCP (one process per host): https://magentlab.com/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.
