# Altitude-Adjusted PERC Rule (Madsen 2019) — PERC at ~4980 ft

> Altitude-Adjusted PERC Rule (Madsen 2019) — PERC at ~4980 ft is a paid API for AI agents from api.magentlab.com, paid per call via x402, $0.005/call, status unknown (last checked 2026-09-14).

Evaluates all eight PERC criteria with the Madsen 2019 altitude adjustment (SpO2 threshold ≥90% instead of ≥95%) to determine if a low-pretest-probability patient is PERC-negative for pulmonary embolism at high altitude.

## Facts

- Endpoint: GET https://api.magentlab.com/api/calc/perc_altitude
- Price: $0.005/call
- Payment: x402
- Status: unknown
- Last checked: 2026-09-14
- Activations on Zero: 0
- Tags: x402
- Canonical page: https://www.zero.xyz/c/altitude-adjusted-perc-rule-madsen-2019-perc-at-4980-ft-8327759a
- Structured record (JSON): https://api.zero.xyz/v1/capabilities/cap_FNk83t2SjrWjU9ofzObDT

Status and success rate cover calls made through Zero and Zero's own probes. Third-party monitors may report differently.

## How to call it through Zero

Zero handles the 402 payment challenge and records the run. With the Zero CLI installed (`npm i -g @zeroxyz/cli`):

```sh
zero fetch --capability altitude-adjusted-perc-rule-madsen-2019-perc-at-4980-ft-8327759a
```

Example prompt: My patient is 43 years old, heart rate 88, SpO2 91%, no unilateral leg swelling, no hemoptysis, no recent surgery or trauma, no prior PE or DVT, and not on any hormones — can you run the altitude-adjusted PERC rule (Madsen 2019) to see if they're PERC-negative?

## When to prefer this

Choose this endpoint when evaluating a patient at approximately 4980 feet (high altitude) who already has low pretest probability for PE (per Kline criteria) and you need the Madsen 2019 altitude-adjusted SpO2 threshold (≥90%) rather than the standard sea-level PERC cutoff (>94%). Do not use for sea-level patients — use a standard PERC calculator instead. Not a medical device or diagnostic tool; clinical judgment required.

## Known failure modes

- Missing required query parameters (age, heart_rate_bpm, spo2_percent, or any boolean field) returns a validation error
- Age outside the valid range (18–120) may be rejected
- SpO2 outside 50–100 range may be rejected
- Heart rate outside 30–220 bpm may be rejected
- Caller has high pretest probability — rule is only valid with low pretest probability as per Kline criteria (caller responsibility)
- Confusing sea-level PERC (SpO2 >94%) with this altitude-adjusted version (SpO2 ≥90%) leads to incorrect criterion application

## How this service works

Altitude-adjusted PERC (Madsen 2019). Same eight Kline factors as sea-level PERC except hypoxia is O2 sat <90% at ~4980 ft, not <95%. PERC-negative only when all eight hold: age <50, pulse <100, SaO2 ≥90%, and no unilateral leg swelling, hemoptysis, recent trauma or surgery, prior PE or DVT, or hormone use. Caller must already have low pretest probability as in Kline. Not a PE diagnosis, not sea-level PERC, and not a medical device.

## Output

Returns a structured object indicating whether the patient is PERC-negative under the Madsen 2019 altitude adjustment (SpO2 threshold ≥90%), along with the status of each of the eight criteria. A PERC-negative result requires all eight criteria to be simultaneously met: age <50, pulse <100, SpO2 ≥90%, and absence of unilateral leg swelling, hemoptysis, recent surgery/trauma, prior VTE, and hormone use.

## Request schema (JSON Schema)

```json
{
 "type": "object",
 "$schema": "https://json-schema.org/draft/2020-12/schema",
 "required": [
  "input"
 ],
 "properties": {
  "input": {
   "type": "object",
   "required": [
    "type",
    "method"
   ],
   "properties": {
    "type": {
     "type": "string",
     "const": "http"
    },
    "method": {
     "enum": [
      "GET",
      "HEAD",
      "DELETE"
     ],
     "type": "string"
    },
    "headers": {
     "type": "object",
     "additionalProperties": {
      "type": "string"
     }
    },
    "queryParams": {
     "type": "object",
     "required": [
      "age",
      "heart_rate_bpm",
      "spo2_percent",
      "unilateral_leg_swelling",
      "hemoptysis",
      "recent_surgery_or_trauma",
      "prior_vte",
      "estrogen_use"
     ],
     "properties": {
      "age": {
       "type": "integer",
       "description": "Age in years (18-120). Criterion met when age < 50; 50 does not meet."
      },
      "prior_vte": {
       "type": "boolean",
       "description": "Prior PE or DVT. true or false as assigned by the caller. Criterion met when false."
      },
      "hemoptysis": {
       "type": "boolean",
       "description": "Hemoptysis. true or false as assigned by the caller. Criterion met when false."
      },
      "estrogen_use": {
       "type": "boolean",
       "description": "Hormone or exogenous estrogen use. true or false as assigned by the caller. Criterion met when false."
      },
      "spo2_percent": {
       "type": "number",
       "description": "Oxygen saturation percent (50-100). Criterion met when SaO2 ≥ 90; 89.9 does not meet. Madsen 2019 altitude adjustment, not sea-level PERC >94."
      },
      "heart_rate_bpm": {
       "type": "integer",
       "description": "Pulse in beats per minute (integer 30-220). Criterion met when pulse < 100; 100 does not meet."
      },
      "unilateral_leg_swelling": {
       "type": "boolean",
       "description": "Unilateral leg swelling. true or false as assigned by the caller. Criterion met when false."
      },
      "recent_surgery_or_trauma": {
       "type": "boolean",
       "description": "Recent trauma or surgery. true or false as assigned by the caller. Criterion met when false."
      }
     }
    }
   },
   "additionalProperties": false
  },
  "output": {
   "type": "object",
   "required": [
    "type"
   ],
   "properties": {
    "type": {
     "type": "string"
    },
    "example": {
     "type": "object"
    }
   }
  }
 }
}
```

## More

- Live health (JSON, refreshed every minute): https://www.zero.xyz/c/altitude-adjusted-perc-rule-madsen-2019-perc-at-4980-ft-8327759a/health.json
- [Zero catalog index](https://www.zero.xyz/llms.txt)
- [Other services from api.magentlab.com](https://www.zero.xyz/host/api.magentlab.com/llms.txt)
