Hemodynamics · LIVE
Duke Activity Status Index
DASI
Sum the Hlatky 1989 Duke Activity Status Index Table I weights for 12 yes/no activities and return DASI and estimated peak VO2.
Markdown: /docs/dasi.md · Canonical: https://magentlab.com/docs/dasi
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Sum the Hlatky 1989 Duke Activity Status Index Table I weights for 12 yes/no activities and return DASI and estimated peak VO2.
When to use
When an agent has caller-assigned yes/no replies to the twelve Hlatky 1989 DASI activities and needs the published weighted sum and VO2peak regression, not an exercise test or a functional-capacity assignment.
When not to use
- Not a medical device. magent does not observe the patient.
- Not a functional-capacity assignment, exercise-test replacement, or cardiopulmonary exercise prescription.
- Yes/no replies are caller-assigned from the Hlatky 1989 Table I questionnaire. magent does not interview the patient or measure oxygen uptake.
- This is the Hlatky 1989 questionnaire sum and VO2peak = 0.43 x DASI + 9.6 regression only. It does not convert VO2peak to METs and does not apply a later perioperative functional-capacity cutoff.
Formula
DASI = 2.75*self_care + 1.75*walk_indoors + 2.75*walk_blocks + 5.50*climb_stairs + 8.00*run_short + 2.70*light_housework + 3.50*moderate_housework + 8.00*heavy_housework + 4.50*yardwork + 5.25*sexual_relations + 6.00*moderate_recreation + 7.50*strenuous_sports (Yes = weight, No = 0); VO2peak_mL/kg/min = 0.43*DASI + 9.6 (Hlatky 1989 Table I)
Citation
- Authors
- Hlatky MA, Boineau RE, Higginbotham MB, Lee KL, Mark DB, Califf RM, Cobb FR, Pryor DB
- Source
- Am J Cardiol. 1989;64(10):651-654
Worked example
All 12 activities false
Given:
climb_stairs=falseheavy_housework=falselight_housework=falsemoderate_housework=falsemoderate_recreation=falserun_short=falseself_care=falsesexual_relations=falsestrenuous_sports=falsewalk_blocks=falsewalk_indoors=falseyardwork=false
- Each No adds 0
- DASI = 0.0 (max 58.2)
- VO2peak = 0.43 * 0.0 + 9.6 = 9.6 mL/kg/min
All 12 activities true
Given:
climb_stairs=trueheavy_housework=truelight_housework=truemoderate_housework=truemoderate_recreation=truerun_short=trueself_care=truesexual_relations=truestrenuous_sports=truewalk_blocks=truewalk_indoors=trueyardwork=true
- Sum of Table I weights = 58.2 (light housework is 2.70)
- DASI = 58.2 (max 58.2)
- VO2peak = 0.43 * 58.2 + 9.6 = 34.6 mL/kg/min
Also searched as
- Duke Activity Status Index
- DASI
- Duke Activity Status
- Hlatky DASI
- DASI questionnaire
- DASI VO2peak
- functional capacity index
- Duke activity questionnaire
Try
Opens the live endpoint. Unpaid browser requests show the paywall; agents should send Accept: application/json.
Full URL: https://api.magentlab.com/api/calc/dasi?self_care=false&walk_indoors=false&walk_blocks=false&climb_stairs=false&run_short=false&light_housework=false&moderate_housework=false&heavy_housework=false&yardwork=false&sexual_relations=false&moderate_recreation=false&strenuous_sports=false
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/dasi?self_care=false&walk_indoors=false&walk_blocks=false&climb_stairs=false&run_short=false&light_housework=false&moderate_housework=false&heavy_housework=false&yardwork=false&sexual_relations=false&moderate_recreation=false&strenuous_sports=false"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
self_care |
boolean | required | Can take care of self: eating, dressing, bathing, or using the toilet (Hlatky 1989 Table I). true or false. Yes adds 2.75. |
walk_indoors |
boolean | required | Can walk indoors, such as around the house (Hlatky 1989 Table I). true or false. Yes adds 1.75. |
walk_blocks |
boolean | required | Can walk a block or two on level ground (Hlatky 1989 Table I). true or false. Yes adds 2.75. |
climb_stairs |
boolean | required | Can climb a flight of stairs or walk up a hill (Hlatky 1989 Table I). true or false. Yes adds 5.50. |
run_short |
boolean | required | Can run a short distance (Hlatky 1989 Table I). true or false. Yes adds 8.00. |
light_housework |
boolean | required | Can do light work around the house like dusting or washing dishes (Hlatky 1989 Table I). true or false. Yes adds 2.70. |
moderate_housework |
boolean | required | Can do moderate work around the house like vacuuming, sweeping floors, or carrying in groceries (Hlatky 1989 Table I). true or false. Yes adds 3.50. |
heavy_housework |
boolean | required | Can do heavy work around the house like scrubbing floors, or lifting or moving heavy furniture (Hlatky 1989 Table I). true or false. Yes adds 8.00. |
yardwork |
boolean | required | Can do yardwork like raking leaves, weeding, or pushing a power mower (Hlatky 1989 Table I). true or false. Yes adds 4.50. |
sexual_relations |
boolean | required | Can have sexual relations (Hlatky 1989 Table I). true or false. Yes adds 5.25. |
moderate_recreation |
boolean | required | Can participate in moderate recreational activities like golf, bowling, dancing, doubles tennis, or throwing a baseball or football (Hlatky 1989 Table I). true or false. Yes adds 6.00. |
strenuous_sports |
boolean | required | Can participate in strenuous sports like swimming, singles tennis, football, basketball, or skiing (Hlatky 1989 Table I). true or false. Yes adds 7.50. |
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.
- 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": [
{
"climb_stairs": "false",
"heavy_housework": "false",
"light_housework": "false",
"moderate_housework": "false",
"moderate_recreation": "false",
"run_short": "false",
"self_care": "false",
"sexual_relations": "false",
"strenuous_sports": "false",
"walk_blocks": "false",
"walk_indoors": "false",
"yardwork": "false"
},
{
"climb_stairs": "false",
"heavy_housework": "false",
"light_housework": "false",
"moderate_housework": "false",
"moderate_recreation": "false",
"run_short": "false",
"self_care": "false",
"sexual_relations": "false",
"strenuous_sports": "false",
"walk_blocks": "false",
"walk_indoors": "false",
"yardwork": "false"
}
]
}
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/dasi",
"items": [
{
"components": [
{
"factor": "self_care",
"points": 0.0,
"present": false
},
{
"factor": "walk_indoors",
"points": 0.0,
"present": false
},
{
"factor": "walk_blocks",
"points": 0.0,
"present": false
},
{
"factor": "climb_stairs",
"points": 0.0,
"present": false
},
{
"factor": "run_short",
"points": 0.0,
"present": false
},
{
"factor": "light_housework",
"points": 0.0,
"present": false
},
{
"factor": "moderate_housework",
"points": 0.0,
"present": false
},
{
"factor": "heavy_housework",
"points": 0.0,
"present": false
},
{
"factor": "yardwork",
"points": 0.0,
"present": false
},
{
"factor": "sexual_relations",
"points": 0.0,
"present": false
},
{
"factor": "moderate_recreation",
"points": 0.0,
"present": false
},
{
"factor": "strenuous_sports",
"points": 0.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": "Hlatky MA, Boineau RE, Higginbotham MB, Lee KL, Mark DB, Califf RM, Cobb FR, Pryor DB",
"doi": "10.1016/0002-9149(89)90496-7",
"id": "hlatky-1989",
"pmid": "2782256",
"source": "Am J Cardiol. 1989;64(10):651-654",
"title": "A brief self-administered questionnaire to determine functional capacity (The Duke Activity Status Index)"
},
"formula": "dasi",
"formula_expression": "DASI = 2.75*self_care + 1.75*walk_indoors + 2.75*walk_blocks + 5.50*climb_stairs + 8.00*run_short + 2.70*light_housework + 3.50*moderate_housework + 8.00*heavy_housework + 4.50*yardwork + 5.25*sexual_relations + 6.00*moderate_recreation + 7.50*strenuous_sports (Yes = weight, No = 0); VO2peak_mL/kg/min = 0.43*DASI + 9.6 (Hlatky 1989 Table I)",
"max_score": 58.2,
"score": 0.0,
"dasi": 0.0,
"vo2peak_ml_kg_min": 9.6
},
{
"components": [
{
"factor": "self_care",
"points": 0.0,
"present": false
},
{
"factor": "walk_indoors",
"points": 0.0,
"present": false
},
{
"factor": "walk_blocks",
"points": 0.0,
"present": false
},
{
"factor": "climb_stairs",
"points": 0.0,
"present": false
},
{
"factor": "run_short",
"points": 0.0,
"present": false
},
{
"factor": "light_housework",
"points": 0.0,
"present": false
},
{
"factor": "moderate_housework",
"points": 0.0,
"present": false
},
{
"factor": "heavy_housework",
"points": 0.0,
"present": false
},
{
"factor": "yardwork",
"points": 0.0,
"present": false
},
{
"factor": "sexual_relations",
"points": 0.0,
"present": false
},
{
"factor": "moderate_recreation",
"points": 0.0,
"present": false
},
{
"factor": "strenuous_sports",
"points": 0.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": "Hlatky MA, Boineau RE, Higginbotham MB, Lee KL, Mark DB, Califf RM, Cobb FR, Pryor DB",
"doi": "10.1016/0002-9149(89)90496-7",
"id": "hlatky-1989",
"pmid": "2782256",
"source": "Am J Cardiol. 1989;64(10):651-654",
"title": "A brief self-administered questionnaire to determine functional capacity (The Duke Activity Status Index)"
},
"formula": "dasi",
"formula_expression": "DASI = 2.75*self_care + 1.75*walk_indoors + 2.75*walk_blocks + 5.50*climb_stairs + 8.00*run_short + 2.70*light_housework + 3.50*moderate_housework + 8.00*heavy_housework + 4.50*yardwork + 5.25*sexual_relations + 6.00*moderate_recreation + 7.50*strenuous_sports (Yes = weight, No = 0); VO2peak_mL/kg/min = 0.43*DASI + 9.6 (Hlatky 1989 Table I)",
"max_score": 58.2,
"score": 0.0,
"dasi": 0.0,
"vo2peak_ml_kg_min": 9.6
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | dasi |
formula_expression |
string | Exact expression used |
score |
number | DASI (same as dasi); 0-58.2 |
max_score |
number | 58.2 |
dasi |
number | Hlatky 1989 Table I weighted sum (0-58.2) |
vo2peak_ml_kg_min |
number | Estimated peak VO2 in mL/kg/min = 0.43 * DASI + 9.6 |
components |
array | Per-activity Table I weights |
citation |
object | Hlatky et al. Am J Cardiol 1989 citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"components": [
{
"factor": "self_care",
"points": 0.0,
"present": false
},
{
"factor": "walk_indoors",
"points": 0.0,
"present": false
},
{
"factor": "walk_blocks",
"points": 0.0,
"present": false
},
{
"factor": "climb_stairs",
"points": 0.0,
"present": false
},
{
"factor": "run_short",
"points": 0.0,
"present": false
},
{
"factor": "light_housework",
"points": 0.0,
"present": false
},
{
"factor": "moderate_housework",
"points": 0.0,
"present": false
},
{
"factor": "heavy_housework",
"points": 0.0,
"present": false
},
{
"factor": "yardwork",
"points": 0.0,
"present": false
},
{
"factor": "sexual_relations",
"points": 0.0,
"present": false
},
{
"factor": "moderate_recreation",
"points": 0.0,
"present": false
},
{
"factor": "strenuous_sports",
"points": 0.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": "Hlatky MA, Boineau RE, Higginbotham MB, Lee KL, Mark DB, Califf RM, Cobb FR, Pryor DB",
"doi": "10.1016/0002-9149(89)90496-7",
"id": "hlatky-1989",
"pmid": "2782256",
"source": "Am J Cardiol. 1989;64(10):651-654",
"title": "A brief self-administered questionnaire to determine functional capacity (The Duke Activity Status Index)"
},
"formula": "dasi",
"formula_expression": "DASI = 2.75*self_care + 1.75*walk_indoors + 2.75*walk_blocks + 5.50*climb_stairs + 8.00*run_short + 2.70*light_housework + 3.50*moderate_housework + 8.00*heavy_housework + 4.50*yardwork + 5.25*sexual_relations + 6.00*moderate_recreation + 7.50*strenuous_sports (Yes = weight, No = 0); VO2peak_mL/kg/min = 0.43*DASI + 9.6 (Hlatky 1989 Table I)",
"max_score": 58.2,
"score": 0.0,
"dasi": 0.0,
"vo2peak_ml_kg_min": 9.6
}
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_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
- H2FPEF — Sum the Reddy 2018 H2FPEF points score (six components, max 9) and return score and max_score only.
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.