# Park 2016 IE 6-month mortality score

IE mortality

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

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

## What it computes

Compute the Park 2016 ICE simplified risk score for 6-month mortality in infective endocarditis from age and caller-assigned Table 5 flags, and return the score, quadratic 6-month mortality percent, and whether score >= 8.

## When to use

When an agent already has Park 2016 Table 5 inputs (age, dialysis, nosocomial or prosthetic IE, symptom duration, organism, vegetation site, NYHA class 3 or 4, stroke, paravalvular complication, persistent bacteremia, and whether surgery was performed) and needs the published simplified score and 6-month mortality percent, not a diagnosis or a surgery decision.

## When not to use

- Not a medical device. Not a diagnosis of infective endocarditis.
- magent does not examine the patient, interpret cultures or echocardiography, or decide surgery. Flags are caller-assigned.
- Table 5 simplified risk score only (Park 2016 ICE). Does not apply Table 6 quintile bands. score_ge_8 is the paper ROC operating point (simplified score >= 8), not a treatment cutoff.
- Staphylococcus aureus and viridans group streptococci are independent Table 5 rows; both may be true.
- Age 18-120 is the magent adult clamp via Params.age/1, not a published Park 2016 age range. Not Durack 1994 Duke diagnostic criteria.

## Formula

```
Park 2016 Table 5 simplified IE 6-month mortality score = constant 4 + age (<=45: 0, 46-60: 2, 61-70: 3, >70: 4) + dialysis 3 + nosocomial_ie 2 + prosthetic_ie 1 + symptoms_gt_1_month -1 + staphylococcus_aureus 1 + viridans_group_streptococci -2 + aortic_vegetation 1 + mitral_vegetation 1 + nyha_class_3_or_4 3 + stroke 2 + paravalvular_complication 2 + persistent_bacteremia 2 + surgical_treatment -2; mortality_percent = 2.416*score + 0.109*score*score - 4.849 rounded to 1 decimal (Table 5 footnote); score_ge_8 iff score >= 8 (paper ROC operating point). Not Table 6 quintile bands
```

## Citation

[Validated Risk Score for Predicting 6-Month Mortality in Infective Endocarditis](https://doi.org/10.1161/JAHA.115.003016)
Park LP, Chu VH, Peterson G, et al.
J Am Heart Assoc. 2016;5(4):e003016
DOI: [10.1161/JAHA.115.003016](https://doi.org/10.1161/JAHA.115.003016)

## Worked example

### Age 40, all Table 5 flags false

Given: `age=40, aortic_vegetation=false, dialysis=false, mitral_vegetation=false, nosocomial_ie=false, nyha_class_3_or_4=false, paravalvular_complication=false, persistent_bacteremia=false, prosthetic_ie=false, staphylococcus_aureus=false, stroke=false, surgical_treatment=false, symptoms_gt_1_month=false, viridans_group_streptococci=false`

1. Constant 4; age <=45 -> 0; all flags false -> 0
2. Score = 4; mortality_percent = 2.416*4 + 0.109*16 - 4.849 = 6.559 -> 6.6; score_ge_8 false


### Age 80 with dialysis (score >= 8)

Given: `age=80, aortic_vegetation=false, dialysis=true, mitral_vegetation=false, nosocomial_ie=false, nyha_class_3_or_4=false, paravalvular_complication=false, persistent_bacteremia=false, prosthetic_ie=false, staphylococcus_aureus=false, stroke=false, surgical_treatment=false, symptoms_gt_1_month=false, viridans_group_streptococci=false`

1. Constant 4; age >70 -> 4; dialysis -> +3
2. Score = 11; score_ge_8 true


## Also searched as

- IE mortality risk score
- Park IE mortality
- infective endocarditis 6-month mortality
- ICE IE mortality score
- Park 2016 endocarditis score
- simplified IE risk score
- IE 6-month mortality

## Parameters

- `age` (integer, required): Age in years (integer 18-120). Park 2016 Table 5: <=45 scores 0; 46-60 scores 2; 61-70 scores 3; >70 scores 4. Age 45 scores 0; 46 scores 2; 70 scores 3; 71 scores 4. magent does not examine the patient.
- `dialysis` (boolean, required): History of dialysis as assigned by the caller (Park 2016 Table 5). true or false. +3 if true. magent does not review dialysis records.
- `nosocomial_ie` (boolean, required): Nosocomial infective endocarditis as assigned by the caller (Park 2016 Table 5). true or false. +2 if true. magent does not classify acquisition.
- `prosthetic_ie` (boolean, required): Prosthetic-valve infective endocarditis as assigned by the caller (Park 2016 Table 5). true or false. +1 if true. magent does not examine the valve.
- `symptoms_gt_1_month` (boolean, required): Symptoms for more than 1 month before admission as assigned by the caller (Park 2016 Table 5). true or false. -1 if true. magent does not date symptom onset.
- `staphylococcus_aureus` (boolean, required): Staphylococcus aureus as assigned by the caller (Park 2016 Table 5). true or false. +1 if true. Independent of viridans_group_streptococci; both may be true. magent does not interpret cultures.
- `viridans_group_streptococci` (boolean, required): Viridans group streptococci as assigned by the caller (Park 2016 Table 5). true or false. -2 if true. Independent of staphylococcus_aureus; both may be true. magent does not interpret cultures.
- `aortic_vegetation` (boolean, required): Aortic vegetation as assigned by the caller (Park 2016 Table 5). true or false. +1 if true. Independent of mitral_vegetation. magent does not read an echocardiogram.
- `mitral_vegetation` (boolean, required): Mitral vegetation as assigned by the caller (Park 2016 Table 5). true or false. +1 if true. Independent of aortic_vegetation. magent does not read an echocardiogram.
- `nyha_class_3_or_4` (boolean, required): NYHA class 3 or 4 heart failure as assigned by the caller (Park 2016 Table 5). true or false. +3 if true. magent does not examine the patient or assign NYHA class.
- `stroke` (boolean, required): Stroke as assigned by the caller (Park 2016 Table 5). true or false. +2 if true. magent does not diagnose stroke.
- `paravalvular_complication` (boolean, required): Paravalvular complication as assigned by the caller (Park 2016 Table 5). true or false. +2 if true. magent does not read imaging.
- `persistent_bacteremia` (boolean, required): Persistent bacteremia as assigned by the caller (Park 2016 Table 5). true or false. +2 if true. magent does not interpret cultures.
- `surgical_treatment` (boolean, required): Surgical treatment as assigned by the caller (Park 2016 Table 5). true or false. -2 if true. magent does not decide surgery.

## 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/ie_mortality`
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": [
    {
      "age": "40",
      "aortic_vegetation": "false",
      "dialysis": "false",
      "mitral_vegetation": "false",
      "nosocomial_ie": "false",
      "nyha_class_3_or_4": "false",
      "paravalvular_complication": "false",
      "persistent_bacteremia": "false",
      "prosthetic_ie": "false",
      "staphylococcus_aureus": "false",
      "stroke": "false",
      "surgical_treatment": "false",
      "symptoms_gt_1_month": "false",
      "viridans_group_streptococci": "false"
    },
    {
      "age": "40",
      "aortic_vegetation": "false",
      "dialysis": "false",
      "mitral_vegetation": "false",
      "nosocomial_ie": "false",
      "nyha_class_3_or_4": "false",
      "paravalvular_complication": "false",
      "persistent_bacteremia": "false",
      "prosthetic_ie": "false",
      "staphylococcus_aureus": "false",
      "stroke": "false",
      "surgical_treatment": "false",
      "symptoms_gt_1_month": "false",
      "viridans_group_streptococci": "false"
    }
  ]
}
```

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

Example 200:

```json
{
  "count": 2,
  "path": "/api/calc/ie_mortality",
  "items": [
    {
      "components": [
        {
          "factor": "constant",
          "points": 4,
          "present": true
        },
        {
          "value": 40,
          "factor": "age",
          "points": 0,
          "present": true
        },
        {
          "factor": "dialysis",
          "points": 0,
          "present": false
        },
        {
          "factor": "nosocomial_ie",
          "points": 0,
          "present": false
        },
        {
          "factor": "prosthetic_ie",
          "points": 0,
          "present": false
        },
        {
          "factor": "symptoms_gt_1_month",
          "points": 0,
          "present": false
        },
        {
          "factor": "staphylococcus_aureus",
          "points": 0,
          "present": false
        },
        {
          "factor": "viridans_group_streptococci",
          "points": 0,
          "present": false
        },
        {
          "factor": "aortic_vegetation",
          "points": 0,
          "present": false
        },
        {
          "factor": "mitral_vegetation",
          "points": 0,
          "present": false
        },
        {
          "factor": "nyha_class_3_or_4",
          "points": 0,
          "present": false
        },
        {
          "factor": "stroke",
          "points": 0,
          "present": false
        },
        {
          "factor": "paravalvular_complication",
          "points": 0,
          "present": false
        },
        {
          "factor": "persistent_bacteremia",
          "points": 0,
          "present": false
        },
        {
          "factor": "surgical_treatment",
          "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": "Park LP, Chu VH, Peterson G, et al.",
        "doi": "10.1161/JAHA.115.003016",
        "id": "park-2016",
        "pmid": "27091179",
        "source": "J Am Heart Assoc. 2016;5(4):e003016",
        "title": "Validated Risk Score for Predicting 6-Month Mortality in Infective Endocarditis"
      },
      "formula": "ie_mortality",
      "formula_expression": "Park 2016 Table 5 simplified IE 6-month mortality score = constant 4 + age (<=45: 0, 46-60: 2, 61-70: 3, >70: 4) + dialysis 3 + nosocomial_ie 2 + prosthetic_ie 1 + symptoms_gt_1_month -1 + staphylococcus_aureus 1 + viridans_group_streptococci -2 + aortic_vegetation 1 + mitral_vegetation 1 + nyha_class_3_or_4 3 + stroke 2 + paravalvular_complication 2 + persistent_bacteremia 2 + surgical_treatment -2; mortality_percent = 2.416*score + 0.109*score*score - 4.849 rounded to 1 decimal (Table 5 footnote); score_ge_8 iff score >= 8 (paper ROC operating point). Not Table 6 quintile bands",
      "age_years": 40,
      "score": 4,
      "mortality_percent": 6.6,
      "score_ge_8": false
    },
    {
      "components": [
        {
          "factor": "constant",
          "points": 4,
          "present": true
        },
        {
          "value": 40,
          "factor": "age",
          "points": 0,
          "present": true
        },
        {
          "factor": "dialysis",
          "points": 0,
          "present": false
        },
        {
          "factor": "nosocomial_ie",
          "points": 0,
          "present": false
        },
        {
          "factor": "prosthetic_ie",
          "points": 0,
          "present": false
        },
        {
          "factor": "symptoms_gt_1_month",
          "points": 0,
          "present": false
        },
        {
          "factor": "staphylococcus_aureus",
          "points": 0,
          "present": false
        },
        {
          "factor": "viridans_group_streptococci",
          "points": 0,
          "present": false
        },
        {
          "factor": "aortic_vegetation",
          "points": 0,
          "present": false
        },
        {
          "factor": "mitral_vegetation",
          "points": 0,
          "present": false
        },
        {
          "factor": "nyha_class_3_or_4",
          "points": 0,
          "present": false
        },
        {
          "factor": "stroke",
          "points": 0,
          "present": false
        },
        {
          "factor": "paravalvular_complication",
          "points": 0,
          "present": false
        },
        {
          "factor": "persistent_bacteremia",
          "points": 0,
          "present": false
        },
        {
          "factor": "surgical_treatment",
          "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": "Park LP, Chu VH, Peterson G, et al.",
        "doi": "10.1161/JAHA.115.003016",
        "id": "park-2016",
        "pmid": "27091179",
        "source": "J Am Heart Assoc. 2016;5(4):e003016",
        "title": "Validated Risk Score for Predicting 6-Month Mortality in Infective Endocarditis"
      },
      "formula": "ie_mortality",
      "formula_expression": "Park 2016 Table 5 simplified IE 6-month mortality score = constant 4 + age (<=45: 0, 46-60: 2, 61-70: 3, >70: 4) + dialysis 3 + nosocomial_ie 2 + prosthetic_ie 1 + symptoms_gt_1_month -1 + staphylococcus_aureus 1 + viridans_group_streptococci -2 + aortic_vegetation 1 + mitral_vegetation 1 + nyha_class_3_or_4 3 + stroke 2 + paravalvular_complication 2 + persistent_bacteremia 2 + surgical_treatment -2; mortality_percent = 2.416*score + 0.109*score*score - 4.849 rounded to 1 decimal (Table 5 footnote); score_ge_8 iff score >= 8 (paper ROC operating point). Not Table 6 quintile bands",
      "age_years": 40,
      "score": 4,
      "mortality_percent": 6.6,
      "score_ge_8": false
    }
  ]
}
```

## Response fields

- `formula` (string): ie_mortality
- `formula_expression` (string): Exact expression used
- `score` (integer): Park 2016 Table 5 simplified risk score including the constant 4. May be negative. Not Table 6 quintile bands.
- `mortality_percent` (number): Probability of 6-month mortality from the Table 5 footnote quadratic 2.416*score + 0.109*score*score - 4.849, rounded to 1 decimal. Not clamped.
- `score_ge_8` (boolean): true iff simplified risk score >= 8 (Park 2016 ROC operating point). Not a treatment cutoff and not a quintile band.
- `age_years` (integer): Age used for the Table 5 age term
- `components` (array): Per-factor points including the constant
- `citation` (object): Park et al. J Am Heart Assoc 2016 citation
- `disclaimer` (string): Not-a-device notice

## Example JSON

Frozen fixture. Not a live lookup.

```json
{
  "components": [
    {
      "factor": "constant",
      "points": 4,
      "present": true
    },
    {
      "value": 40,
      "factor": "age",
      "points": 0,
      "present": true
    },
    {
      "factor": "dialysis",
      "points": 0,
      "present": false
    },
    {
      "factor": "nosocomial_ie",
      "points": 0,
      "present": false
    },
    {
      "factor": "prosthetic_ie",
      "points": 0,
      "present": false
    },
    {
      "factor": "symptoms_gt_1_month",
      "points": 0,
      "present": false
    },
    {
      "factor": "staphylococcus_aureus",
      "points": 0,
      "present": false
    },
    {
      "factor": "viridans_group_streptococci",
      "points": 0,
      "present": false
    },
    {
      "factor": "aortic_vegetation",
      "points": 0,
      "present": false
    },
    {
      "factor": "mitral_vegetation",
      "points": 0,
      "present": false
    },
    {
      "factor": "nyha_class_3_or_4",
      "points": 0,
      "present": false
    },
    {
      "factor": "stroke",
      "points": 0,
      "present": false
    },
    {
      "factor": "paravalvular_complication",
      "points": 0,
      "present": false
    },
    {
      "factor": "persistent_bacteremia",
      "points": 0,
      "present": false
    },
    {
      "factor": "surgical_treatment",
      "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": "Park LP, Chu VH, Peterson G, et al.",
    "doi": "10.1161/JAHA.115.003016",
    "id": "park-2016",
    "pmid": "27091179",
    "source": "J Am Heart Assoc. 2016;5(4):e003016",
    "title": "Validated Risk Score for Predicting 6-Month Mortality in Infective Endocarditis"
  },
  "formula": "ie_mortality",
  "formula_expression": "Park 2016 Table 5 simplified IE 6-month mortality score = constant 4 + age (<=45: 0, 46-60: 2, 61-70: 3, >70: 4) + dialysis 3 + nosocomial_ie 2 + prosthetic_ie 1 + symptoms_gt_1_month -1 + staphylococcus_aureus 1 + viridans_group_streptococci -2 + aortic_vegetation 1 + mitral_vegetation 1 + nyha_class_3_or_4 3 + stroke 2 + paravalvular_complication 2 + persistent_bacteremia 2 + surgical_treatment -2; mortality_percent = 2.416*score + 0.109*score*score - 4.849 rounded to 1 decimal (Table 5 footnote); score_ge_8 iff score >= 8 (paper ROC operating point). Not Table 6 quintile bands",
  "age_years": 40,
  "score": 4,
  "mortality_percent": 6.6,
  "score_ge_8": false
}
```

## Errors

- HTTP 400 `invalid_age`: age must be an integer from 18 to 120 Returned before settlement; you are not charged.
- HTTP 400 `invalid_flag`: boolean clinical flags must be true or false 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

- [Duke](https://magentlab.com/docs/duke) — Apply the Durack 1994 original Duke criteria for infective endocarditis and return definite, possible, or rejected from caller-assigned pathologic, major, minor, and rejected flags.

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