Infection / VTE · LIVE
Michigan PICC-DVT risk score
Sum the Chopra 2017 Michigan Risk Score factors for PICC-associated thrombosis and return class I–IV with Table 4 observed percents.
Markdown: /docs/michigan-picc.md · Canonical: https://magentlab.com/docs/michigan-picc
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Sum the Chopra 2017 Michigan Risk Score factors for PICC-associated thrombosis and return class I–IV with Table 4 observed percents.
When to use
When an agent needs the published Michigan PICC-DVT point total (not Padua, not IMPROVE) and must not invent a PICC order or lumen count.
When not to use
- Not a medical device and not a diagnosis of PICC-associated thrombosis. magent does not examine the patient; flags are caller-assigned.
- Not a PICC order, insertion, or removal decision.
- magent does not count lumens. Caller assigns single, double, or triple; triple includes quad as published.
- VTE history is one 3-tier field (never / remote / within_30_days). Remote and recent are not added.
- Observed percents are Chopra 2017 Table 4 (class I 0.9%, II 1.6%, III 2.7%, IV 4.7%). Not Padua or IMPROVE.
Formula
Michigan PICC-DVT (Chopra 2017) = other_cvc (1) + (WBC >12 x10^9/L) (1) + active_cancer (2) + picc_lumens (single 0, double 2, triple 3; triple includes quad) + vte_history (never 0, remote 2, within_30_days 3); max 10; class I=0 (observed 0.9%), II=1-2 (1.6%), III=3-4 (2.7%), IV=>4 (4.7% Table 4)
Citation
- Title
- The Michigan Risk Score to predict peripherally inserted central catheter-associated thrombosis
- Authors
- Chopra V, Kaatz S, Conlon A, Paje D, Grant PJ, Rogers MAM, Bernstein SJ, Saint S, Flanders SA
- Source
- J Thromb Haemost. 2017;15(10):1951-1962
Worked example
Single-lumen PICC, no other factors
Given:
active_cancer=falseother_cvc=falsepicc_lumens=singlevte_history=neverwbc_k_ul=8
- other_cvc false → 0; WBC 8 ×10^9/L is not >12 → 0; active_cancer false → 0; single lumen → 0; vte_history never → 0
- Score = 0 (max 10); risk_class I; observed_vte_percent 0.9
Active cancer and triple lumen is class IV
Given:
active_cancer=trueother_cvc=falsepicc_lumens=triplevte_history=neverwbc_k_ul=8
- active_cancer → 2; triple lumen → 3
- Score = 5 (max 10); risk_class IV; observed_vte_percent 4.7
Also searched as
- Michigan PICC-DVT Risk Score
- Michigan Risk Score
- Chopra PICC thrombosis
- PICC-associated thrombosis
- PICC DVT score
- Chopra 2017
- Michigan PICC score
- PICC thrombosis risk
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/michigan_picc?other_cvc=false&wbc_k_ul=8&active_cancer=false&picc_lumens=single&vte_history=never
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/michigan_picc?other_cvc=false&wbc_k_ul=8&active_cancer=false&picc_lumens=single&vte_history=never"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
other_cvc |
boolean | required | Another CVC present when the index PICC is placed, as assigned by the caller (Chopra 2017). true or false. true scores 1. magent does not count catheters. |
wbc_k_ul |
number | optional | WBC in 10^3/µL (same as 10^9/L) at PICC insertion. Provide wbc_k_ul or wbc_ul. Range 0.01-500. >12 scores 1 (12.0 does not). |
wbc_ul |
number | optional | WBC in cells/µL (same as cells/mm^3) at PICC insertion. Provide wbc_k_ul or wbc_ul. Range 10-500000. >12000 scores 1 (12000 does not; 12001 does). |
active_cancer |
boolean | required | Active cancer as assigned by the caller (Chopra 2017). true or false. true scores 2. |
picc_lumens |
string | required · single, double, triple | PICC lumen count as assigned by the caller (Chopra 2017). single scores 0; double scores 2; triple scores 3. triple includes quad as published. magent does not count lumens. |
vte_history |
string | required · never, remote, within_30_days | One 3-tier VTE history field (Chopra 2017). never scores 0; remote (prior VTE beyond 30 days) scores 2; within_30_days scores 3. Do not add remote and recent. |
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": [
{
"active_cancer": "false",
"other_cvc": "false",
"picc_lumens": "single",
"vte_history": "never",
"wbc_k_ul": "8"
},
{
"active_cancer": "false",
"other_cvc": "false",
"picc_lumens": "single",
"vte_history": "never",
"wbc_k_ul": "8"
}
]
}
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/michigan_picc",
"items": [
{
"components": [
{
"factor": "other_cvc",
"points": 0,
"present": false
},
{
"value": 8.0e3,
"factor": "wbc_gt_12",
"points": 0,
"present": false
},
{
"factor": "active_cancer",
"points": 0,
"present": false
},
{
"value": "single",
"factor": "picc_lumens",
"points": 0,
"present": false
},
{
"value": "never",
"factor": "vte_history",
"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": "Chopra V, Kaatz S, Conlon A, Paje D, Grant PJ, Rogers MAM, Bernstein SJ, Saint S, Flanders SA",
"doi": "10.1111/jth.13794",
"id": "chopra-2017",
"pmid": "28796444",
"source": "J Thromb Haemost. 2017;15(10):1951-1962",
"title": "The Michigan Risk Score to predict peripherally inserted central catheter-associated thrombosis"
},
"formula": "michigan_picc",
"formula_expression": "Michigan PICC-DVT (Chopra 2017) = other_cvc (1) + (WBC >12 x10^9/L) (1) + active_cancer (2) + picc_lumens (single 0, double 2, triple 3; triple includes quad) + vte_history (never 0, remote 2, within_30_days 3); max 10; class I=0 (observed 0.9%), II=1-2 (1.6%), III=3-4 (2.7%), IV=>4 (4.7% Table 4)",
"max_score": 10,
"score": 0,
"wbc_ul": 8.0e3,
"observed_vte_percent": 0.9,
"picc_lumens": "single",
"risk_class": "I",
"vte_history": "never"
},
{
"components": [
{
"factor": "other_cvc",
"points": 0,
"present": false
},
{
"value": 8.0e3,
"factor": "wbc_gt_12",
"points": 0,
"present": false
},
{
"factor": "active_cancer",
"points": 0,
"present": false
},
{
"value": "single",
"factor": "picc_lumens",
"points": 0,
"present": false
},
{
"value": "never",
"factor": "vte_history",
"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": "Chopra V, Kaatz S, Conlon A, Paje D, Grant PJ, Rogers MAM, Bernstein SJ, Saint S, Flanders SA",
"doi": "10.1111/jth.13794",
"id": "chopra-2017",
"pmid": "28796444",
"source": "J Thromb Haemost. 2017;15(10):1951-1962",
"title": "The Michigan Risk Score to predict peripherally inserted central catheter-associated thrombosis"
},
"formula": "michigan_picc",
"formula_expression": "Michigan PICC-DVT (Chopra 2017) = other_cvc (1) + (WBC >12 x10^9/L) (1) + active_cancer (2) + picc_lumens (single 0, double 2, triple 3; triple includes quad) + vte_history (never 0, remote 2, within_30_days 3); max 10; class I=0 (observed 0.9%), II=1-2 (1.6%), III=3-4 (2.7%), IV=>4 (4.7% Table 4)",
"max_score": 10,
"score": 0,
"wbc_ul": 8.0e3,
"observed_vte_percent": 0.9,
"picc_lumens": "single",
"risk_class": "I",
"vte_history": "never"
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | michigan_picc |
formula_expression |
string | Exact expression used |
score |
integer | Chopra 2017 Michigan PICC-DVT points 0-10 |
max_score |
integer | 10 |
risk_class |
string | Chopra 2017 class I (0), II (1-2), III (3-4), or IV (>4). A class, not a PICC order or VTE diagnosis. |
observed_vte_percent |
number | Chopra 2017 Table 4 observed PICC-DVT percent for the class: I 0.9, II 1.6, III 2.7, IV 4.7. |
picc_lumens |
string | Lumen category used (single, double, or triple) |
vte_history |
string | VTE history category used (never, remote, or within_30_days) |
wbc_ul |
number | Normalized WBC in cells/µL used for the >12000 cutoff |
components |
array | Per-factor points |
citation |
object | Chopra et al. J Thromb Haemost 2017 citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"components": [
{
"factor": "other_cvc",
"points": 0,
"present": false
},
{
"value": 8.0e3,
"factor": "wbc_gt_12",
"points": 0,
"present": false
},
{
"factor": "active_cancer",
"points": 0,
"present": false
},
{
"value": "single",
"factor": "picc_lumens",
"points": 0,
"present": false
},
{
"value": "never",
"factor": "vte_history",
"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": "Chopra V, Kaatz S, Conlon A, Paje D, Grant PJ, Rogers MAM, Bernstein SJ, Saint S, Flanders SA",
"doi": "10.1111/jth.13794",
"id": "chopra-2017",
"pmid": "28796444",
"source": "J Thromb Haemost. 2017;15(10):1951-1962",
"title": "The Michigan Risk Score to predict peripherally inserted central catheter-associated thrombosis"
},
"formula": "michigan_picc",
"formula_expression": "Michigan PICC-DVT (Chopra 2017) = other_cvc (1) + (WBC >12 x10^9/L) (1) + active_cancer (2) + picc_lumens (single 0, double 2, triple 3; triple includes quad) + vte_history (never 0, remote 2, within_30_days 3); max 10; class I=0 (observed 0.9%), II=1-2 (1.6%), III=3-4 (2.7%), IV=>4 (4.7% Table 4)",
"max_score": 10,
"score": 0,
"wbc_ul": 8.0e3,
"observed_vte_percent": 0.9,
"picc_lumens": "single",
"risk_class": "I",
"vte_history": "never"
}
Client errors (HTTP 400)
Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_wbc |
wbc_k_ul (0.01-500) or wbc_ul (10-500000) is required Returned before settlement; you are not charged. |
| 400 | invalid_picc_lumens |
picc_lumens must be single, double, or triple (Chopra 2017 Michigan PICC-DVT Risk Score; triple includes quad). Returned before settlement; you are not charged. |
| 400 | invalid_vte_recency |
vte_history must be never, remote, or within_30_days (Chopra 2017; remote is prior VTE beyond 30 days). Returned before settlement; you are not charged. |
| 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
- Padua score — Compute the Barbar 2010 Padua Prediction Score for VTE risk in hospitalized medical patients from age and ten caller-assigned findings.
- IMPROVE VTE — Compute the Spyropoulos 2011 7-factor associative IMPROVE VTE score during hospitalization from age and six caller-assigned 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. 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.