MAGENT

Infection / VTE · LIVE

POMPE-C (Kline 2012)

POMPE-C

Compute the Kline 2012 POMPE-C 30-day mortality probability for a caller who already has active cancer and acute pulmonary embolism, from five dichotomous findings plus respiratory rate, room-air SpO2, and weight in pounds.

LIVE $0.005 USDC GET /api/calc/pompe_c

Markdown: /docs/pompe-c.md · Canonical: https://magentlab.com/docs/pompe-c

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

What it computes

Compute the Kline 2012 POMPE-C 30-day mortality probability for a caller who already has active cancer and acute pulmonary embolism, from five dichotomous findings plus respiratory rate, room-air SpO2, and weight in pounds.

When to use

When an agent already has active cancer and image-proven acute PE as in the paper and needs the published logistic 30-day mortality percent and low/intermediate/high band, not a PE or cancer diagnosis, not integer points, and not a treatment or dose order.

When not to use

  • Not a medical device. magent does not diagnose pulmonary embolism or cancer and does not recommend a dose or disposition.
  • Derivation and validation were patients with active cancer and acute PE. This is not a PE diagnostic tool and not a cancer-screening tool.
  • This is the Kline 2012 web-prototype logistic (intercept 3.718). magent does not emit integer points or a survival percent other than this 30-day mortality estimate.
  • Dichotomous inputs are caller-assigned. magent does not examine the patient, read a DNR order, take a pulse, or measure saturation or weight.
  • SpO2 is room-air pulse oximetry as in the paper. Weight is pounds. Bands are the paper's 5% and 50% validation cutoffs, not treatment thresholds.

Formula

mortality_pct = 100 * (1 - 1 / (1 + exp(3.718 + 1.551*dnr + 0.800*respiratory_distress + 0.734*unilateral_leg_swelling + 1.473*altered_mental_status + 1.027*heart_rate_gt_99 + 0.044*respiratory_rate + (-0.063)*spo2_percent + (-0.012)*weight_lb))); Kline 2012 web-prototype logistic (intercept 3.718); heart_rate_gt_99 coefficient 1.027 from Table 2 (OR 2.8) because the manuscript prototype line-wraps as + HR; flags 1 if true else 0; low if mortality_pct <= 5, high if > 50, else intermediate; 30-day all-cause mortality probability for active cancer + acute PE; not integer points

Citation

Title
Derivation and validation of a multivariate model to predict mortality from pulmonary embolism with cancer: The POMPE-C tool
Authors
Kline JA, Roy PM, Than MP, Hernandez J, Courtney DM, Jones AE, Penaloza A, Pollack CV Jr
Source
Thromb Res. 2012;129(5):e194-e199
DOI
10.1016/j.thromres.2012.03.015

Worked example

No flags, RR 18, SpO2 97, weight 170 lb

Given: altered_mental_status=falsednr=falseheart_rate_gt_99=falserespiratory_distress=falserespiratory_rate=18spo2_percent=97unilateral_leg_swelling=falseweight_lb=170

  1. logit = 3.718 + 0.044×18 + (−0.063)×97 + (−0.012)×170 = −3.641
  2. mortality_pct = 100 × (1 − 1 / (1 + exp(−3.641))) = 2.6
  3. risk_band low (mortality_pct <= 5)

All flags present, RR 28, SpO2 88, weight 120 lb

Given: altered_mental_status=truednr=trueheart_rate_gt_99=truerespiratory_distress=truerespiratory_rate=28spo2_percent=88unilateral_leg_swelling=trueweight_lb=120

  1. logit = 3.718 + 1.551 + 0.800 + 0.734 + 1.473 + 1.027 + 0.044×28 + (−0.063)×88 + (−0.012)×120 = 3.551
  2. mortality_pct from the prototype logistic is > 50
  3. risk_band high

Also searched as

  • POMPE-C
  • Kline POMPE-C
  • PE cancer mortality
  • pulmonary embolism cancer
  • POMPE C
  • Kline 2012 PE mortality
  • cancer PE 30-day mortality

Try

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

/api/calc/pompe_c?dnr=false&respiratory_distress=false&unilateral_leg_swelling=false&altered_mental_status=false&heart_rate_gt_99=false&respiratory_rate=18&spo2_percent=97&weight_lb=170

Full URL: https://api.magentlab.com/api/calc/pompe_c?dnr=false&respiratory_distress=false&unilateral_leg_swelling=false&altered_mental_status=false&heart_rate_gt_99=false&respiratory_rate=18&spo2_percent=97&weight_lb=170

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/pompe_c?dnr=false&respiratory_distress=false&unilateral_leg_swelling=false&altered_mental_status=false&heart_rate_gt_99=false&respiratory_rate=18&spo2_percent=97&weight_lb=170"

Parameters

Name Type Required Description
dnr boolean required Do-not-resuscitate status as assigned by the caller (Kline 2012: new or existing verbal or written desire not to be resuscitated). true or false. magent does not read an advance directive.
respiratory_distress boolean required Respiratory distress as assigned by the caller (Kline 2012: obvious anxiety from dyspnea or increased work of breathing). true or false. magent does not examine the patient.
unilateral_leg_swelling boolean required Unilateral limb swelling as assigned by the caller (Kline 2012: new noticeable arm or leg asymmetry). true or false. magent does not examine the limbs.
altered_mental_status boolean required Altered mental status as assigned by the caller (Kline 2012: acute impairment in consciousness, new disorientation, delirium, or confusion). true or false. magent does not examine the patient.
heart_rate_gt_99 boolean required Heart rate documented over 99 beats/min in the previous six hours, as assigned by the caller. true or false. magent does not take a pulse.
respiratory_rate integer required Highest documented respiratory rate in breaths/min within the previous six hours (integer 4-80). Continuous predictor in the Kline 2012 prototype logistic.
spo2_percent number required Most recent pulse oximetry on room air, percent (50-100). Continuous predictor in the Kline 2012 prototype logistic. magent does not measure saturation.
weight_lb number required Body weight in pounds (2-1100), measured or by patient estimate as in Kline 2012. Pounds enter the logistic directly. magent does not convert from kilograms.

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/pompe_c 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": [
    {
      "altered_mental_status": "false",
      "dnr": "false",
      "heart_rate_gt_99": "false",
      "respiratory_distress": "false",
      "respiratory_rate": "18",
      "spo2_percent": "97",
      "unilateral_leg_swelling": "false",
      "weight_lb": "170"
    },
    {
      "altered_mental_status": "false",
      "dnr": "false",
      "heart_rate_gt_99": "false",
      "respiratory_distress": "false",
      "respiratory_rate": "18",
      "spo2_percent": "97",
      "unilateral_leg_swelling": "false",
      "weight_lb": "170"
    }
  ]
}

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/pompe_c",
  "items": [
    {
      "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": "Kline JA, Roy PM, Than MP, Hernandez J, Courtney DM, Jones AE, Penaloza A, Pollack CV Jr",
        "doi": "10.1016/j.thromres.2012.03.015",
        "id": "kline-2012",
        "pmid": "22475313",
        "source": "Thromb Res. 2012;129(5):e194-e199",
        "title": "Derivation and validation of a multivariate model to predict mortality from pulmonary embolism with cancer: The POMPE-C tool"
      },
      "formula": "pompe_c",
      "formula_expression": "mortality_pct = 100 * (1 - 1 / (1 + exp(3.718 + 1.551*dnr + 0.800*respiratory_distress + 0.734*unilateral_leg_swelling + 1.473*altered_mental_status + 1.027*heart_rate_gt_99 + 0.044*respiratory_rate + (-0.063)*spo2_percent + (-0.012)*weight_lb))); Kline 2012 web-prototype logistic (intercept 3.718); heart_rate_gt_99 coefficient 1.027 from Table 2 (OR 2.8) because the manuscript prototype line-wraps as + HR; flags 1 if true else 0; low if mortality_pct <= 5, high if > 50, else intermediate; 30-day all-cause mortality probability for active cancer + acute PE; not integer points",
      "risk_band": "low",
      "logit": -3.641,
      "spo2_percent": 97.0,
      "respiratory_rate": 18,
      "altered_mental_status": false,
      "dnr": false,
      "heart_rate_gt_99": false,
      "mortality_pct": 2.6,
      "respiratory_distress": false,
      "unilateral_leg_swelling": false,
      "weight_lb": 170.0
    },
    {
      "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": "Kline JA, Roy PM, Than MP, Hernandez J, Courtney DM, Jones AE, Penaloza A, Pollack CV Jr",
        "doi": "10.1016/j.thromres.2012.03.015",
        "id": "kline-2012",
        "pmid": "22475313",
        "source": "Thromb Res. 2012;129(5):e194-e199",
        "title": "Derivation and validation of a multivariate model to predict mortality from pulmonary embolism with cancer: The POMPE-C tool"
      },
      "formula": "pompe_c",
      "formula_expression": "mortality_pct = 100 * (1 - 1 / (1 + exp(3.718 + 1.551*dnr + 0.800*respiratory_distress + 0.734*unilateral_leg_swelling + 1.473*altered_mental_status + 1.027*heart_rate_gt_99 + 0.044*respiratory_rate + (-0.063)*spo2_percent + (-0.012)*weight_lb))); Kline 2012 web-prototype logistic (intercept 3.718); heart_rate_gt_99 coefficient 1.027 from Table 2 (OR 2.8) because the manuscript prototype line-wraps as + HR; flags 1 if true else 0; low if mortality_pct <= 5, high if > 50, else intermediate; 30-day all-cause mortality probability for active cancer + acute PE; not integer points",
      "risk_band": "low",
      "logit": -3.641,
      "spo2_percent": 97.0,
      "respiratory_rate": 18,
      "altered_mental_status": false,
      "dnr": false,
      "heart_rate_gt_99": false,
      "mortality_pct": 2.6,
      "respiratory_distress": false,
      "unilateral_leg_swelling": false,
      "weight_lb": 170.0
    }
  ]
}

Response

Field Type Description
formula string pompe_c
formula_expression string Kline 2012 web-prototype logistic expression
dnr boolean Do-not-resuscitate flag used
respiratory_distress boolean Respiratory-distress flag used
unilateral_leg_swelling boolean Unilateral limb-swelling flag used
altered_mental_status boolean Altered-mental-status flag used
heart_rate_gt_99 boolean Heart-rate-over-99 flag used
respiratory_rate integer Respiratory rate in breaths/min used
spo2_percent number Room-air pulse oximetry percent used
weight_lb number Body weight in pounds used
logit number Kline 2012 prototype linear predictor, 4 decimal places
mortality_pct number Estimated 30-day all-cause mortality probability in percent (0-100), 1 decimal. Not a survival percent.
risk_band string Kline 2012 validation cutoffs: low if mortality_pct <= 5, high if > 50, else intermediate. A band, not a treatment order.
citation object Kline et al. Thromb Res 2012 citation
disclaimer string Not-a-device notice

Example JSON

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

{
  "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": "Kline JA, Roy PM, Than MP, Hernandez J, Courtney DM, Jones AE, Penaloza A, Pollack CV Jr",
    "doi": "10.1016/j.thromres.2012.03.015",
    "id": "kline-2012",
    "pmid": "22475313",
    "source": "Thromb Res. 2012;129(5):e194-e199",
    "title": "Derivation and validation of a multivariate model to predict mortality from pulmonary embolism with cancer: The POMPE-C tool"
  },
  "formula": "pompe_c",
  "formula_expression": "mortality_pct = 100 * (1 - 1 / (1 + exp(3.718 + 1.551*dnr + 0.800*respiratory_distress + 0.734*unilateral_leg_swelling + 1.473*altered_mental_status + 1.027*heart_rate_gt_99 + 0.044*respiratory_rate + (-0.063)*spo2_percent + (-0.012)*weight_lb))); Kline 2012 web-prototype logistic (intercept 3.718); heart_rate_gt_99 coefficient 1.027 from Table 2 (OR 2.8) because the manuscript prototype line-wraps as + HR; flags 1 if true else 0; low if mortality_pct <= 5, high if > 50, else intermediate; 30-day all-cause mortality probability for active cancer + acute PE; not integer points",
  "risk_band": "low",
  "logit": -3.641,
  "spo2_percent": 97.0,
  "respiratory_rate": 18,
  "altered_mental_status": false,
  "dnr": false,
  "heart_rate_gt_99": false,
  "mortality_pct": 2.6,
  "respiratory_distress": false,
  "unilateral_leg_swelling": false,
  "weight_lb": 170.0
}

Client errors (HTTP 400)

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

HTTP Code When
400 invalid_flag boolean clinical flags must be true or false Returned before settlement; you are not charged.
400 invalid_respiratory_rate respiratory_rate must be an integer from 4 to 80. Returned before settlement; you are not charged.
400 invalid_spo2 spo2_percent must be a number from 50 to 100. Returned before settlement; you are not charged.
400 invalid_weight weight_kg (1-500) or weight_lb (2-1100) is required 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

  • PESI — Compute the Aujesky 2005 Pulmonary Embolism Severity Index (PESI) from age, sex, comorbidities, vital signs, and altered mental status.
  • sPESI — Compute the Jiménez 2010 simplified Pulmonary Embolism Severity Index (sPESI) from age and five caller-assigned findings.

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.