Hematology · LIVE
HIT Expert Probability (HEP) score
HEP score
Sum the Cuker 2010 HIT Expert Probability (HEP) eight clinical features with published signed integer weights and return the 2010 cutoff-2 and cutoff-5 operating points.
Markdown: /docs/hep.md · Canonical: https://magentlab.com/docs/hep
Not a medical device. Not a diagnosis, dose, or listing recommendation.
What it computes
Sum the Cuker 2010 HIT Expert Probability (HEP) eight clinical features with published signed integer weights and return the 2010 cutoff-2 and cutoff-5 operating points.
When to use
When an agent has already applied the Cuker 2010 HEP table and needs the published signed total, not a 4Ts score, HIT antibody result, SRA, or ELISA.
When not to use
- Not a medical device. Not a diagnosis of HIT.
- This is the Cuker 2010 HEP score, not the 4Ts score (Lo 2006) and not a HIT antibody, SRA, or ELISA result.
- Items are caller-assigned from the published 2010 table. magent does not grade platelet counts, day of onset, or assay SRA/ELISA.
- Cutoff 2 (100% sensitive / 60% specific vs expert panel) and cutoff 5 (86% / 88%) are 2010 operating-characteristic points, not a HIT diagnosis.
Formula
HEP = magnitude (lt_30 -1, 30_to_50 1, gt_50 3) + timing (typical_lt_4 -2, typical_day_4 2, typical_5_10 3, typical_11_14 2, typical_gt_14 -1; rapid_lt_48h 2, rapid_gt_48h -1) + nadir (le_20 -2, gt_20 2) + thrombosis select at most one (none 0; typical_new_ge_4d 3, typical_progression 2; rapid_new 3, rapid_progression 2) + skin_necrosis 3 + systemic_reaction 2 + bleeding -1 + other causes select all (chronic_thrombocytopenia -1, new_drug_thrombocytopenia -2, severe_infection -2, overt_dic -2, intra_arterial_device -2, cpb_96h -1, no_other_cause 3 mutually exclusive with other causes); Cuker 2010; range -16 to 19; cutoff 2 was 100% sensitive / 60% specific vs expert panel; cutoff 5 was 86% sensitive / 88% specific
Citation
- Authors
- Cuker A, Arepally G, Crowther MA, Rice L, Datko F, Hook K, Propert KJ, Kuter DJ, Ortel TL, Konkle BA, Cines DB
- Source
- J Thromb Haemost. 2010;8(12):2642-2650
Worked example
Typical-onset high features, no other cause
Given:
bleeding=falsechronic_thrombocytopenia=falsecpb_96h=falseintra_arterial_device=falsemagnitude=gt_50nadir=gt_20new_drug_thrombocytopenia=falseno_other_cause=trueovert_dic=falsesevere_infection=falseskin_necrosis=falsesystemic_reaction=falsethrombosis=typical_new_ge_4dtiming=typical_5_10
- magnitude gt_50 +3; typical_5_10 +3; nadir gt_20 +2; typical_new_ge_4d +3
- skin_necrosis 0; systemic_reaction 0; bleeding 0; no_other_cause +3
- Score = 14 (max 19); score_ge_2 true; score_ge_5 true
Also searched as
- HIT Expert Probability
- HEP score
- Cuker HEP
- heparin-induced thrombocytopenia HEP
- HEP pretest HIT
- Cuker 2010 HEP
- HIT expert score
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/hep?magnitude=gt_50&timing=typical_5_10&nadir=gt_20&thrombosis=typical_new_ge_4d&skin_necrosis=false&systemic_reaction=false&bleeding=false&chronic_thrombocytopenia=false&new_drug_thrombocytopenia=false&severe_infection=false&overt_dic=false&intra_arterial_device=false&cpb_96h=false&no_other_cause=true
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/hep?magnitude=gt_50&timing=typical_5_10&nadir=gt_20&thrombosis=typical_new_ge_4d&skin_necrosis=false&systemic_reaction=false&bleeding=false&chronic_thrombocytopenia=false&new_drug_thrombocytopenia=false&severe_infection=false&overt_dic=false&intra_arterial_device=false&cpb_96h=false&no_other_cause=true"
Parameters
| Name | Type | Required | Description |
|---|---|---|---|
magnitude |
string | required | Caller-assigned Cuker 2010 magnitude of platelet fall (peak to nadir since heparin exposure). lt_30 (<30%) scores -1; 30_to_50 (30-50%) scores 1; gt_50 (>50%) scores 3. magent does not grade platelet counts. |
timing |
string | required | Caller-assigned Cuker 2010 timing. Typical-onset: typical_lt_4 (fall begins <4 days) -2; typical_day_4 (day 4) 2; typical_5_10 (days 5-10) 3; typical_11_14 (days 11-14) 2; typical_gt_14 (>14 days) -1. Rapid-onset after re-exposure within 100 days: rapid_lt_48h (<48 h) 2; rapid_gt_48h (>48 h) -1. magent does not infer day of onset. |
nadir |
string | required | Caller-assigned Cuker 2010 nadir platelet count. le_20 (≤20 ×10^9/L) scores -2; gt_20 (>20 ×10^9/L) scores 2. magent does not take a raw platelet count. |
thrombosis |
string | required | Caller-assigned Cuker 2010 thrombosis (select at most one). none scores 0. Typical-onset: typical_new_ge_4d (new VTE or ATE ≥4 days after heparin) 3; typical_progression (progression of preexisting VTE or ATE while receiving heparin) 2. Rapid-onset: rapid_new (new VTE or ATE after heparin) 3; rapid_progression 2. |
skin_necrosis |
boolean | required | Skin necrosis at subcutaneous heparin injection sites (Cuker 2010). true scores 3; false scores 0. magent does not examine the skin. |
systemic_reaction |
boolean | required | Acute systemic reaction after intravenous heparin bolus (Cuker 2010). true scores 2; false scores 0. |
bleeding |
boolean | required | Presence of bleeding, petechiae, or extensive bruising (Cuker 2010). true scores -1; false scores 0. |
chronic_thrombocytopenia |
boolean | required | Presence of a chronic thrombocytopenic disorder (Cuker 2010 other causes; select all that apply). true scores -1. Mutually exclusive with no_other_cause true. |
new_drug_thrombocytopenia |
boolean | required | Newly initiated non-heparin medication known to cause thrombocytopenia (Cuker 2010). true scores -2. Mutually exclusive with no_other_cause true. |
severe_infection |
boolean | required | Severe infection as an other cause of thrombocytopenia (Cuker 2010). true scores -2. Mutually exclusive with no_other_cause true. |
overt_dic |
boolean | required | Overt DIC as assigned by the caller (Cuker 2010: fibrinogen <100 mg/dL and D-dimer >5.0 μg/mL). true scores -2. magent does not assay fibrinogen or D-dimer. Mutually exclusive with no_other_cause true. |
intra_arterial_device |
boolean | required | Indwelling intra-arterial device (Cuker 2010 examples: IABP, VAD, ECMO). true scores -2. Mutually exclusive with no_other_cause true. |
cpb_96h |
boolean | required | Cardiopulmonary bypass within the previous 96 hours (Cuker 2010). true scores -1. Mutually exclusive with no_other_cause true. |
no_other_cause |
boolean | required | No other apparent cause of thrombocytopenia (Cuker 2010). true scores 3. Must be false if any other-cause flag is true. |
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": [
{
"bleeding": "false",
"chronic_thrombocytopenia": "false",
"cpb_96h": "false",
"intra_arterial_device": "false",
"magnitude": "gt_50",
"nadir": "gt_20",
"new_drug_thrombocytopenia": "false",
"no_other_cause": "true",
"overt_dic": "false",
"severe_infection": "false",
"skin_necrosis": "false",
"systemic_reaction": "false",
"thrombosis": "typical_new_ge_4d",
"timing": "typical_5_10"
},
{
"bleeding": "false",
"chronic_thrombocytopenia": "false",
"cpb_96h": "false",
"intra_arterial_device": "false",
"magnitude": "gt_50",
"nadir": "gt_20",
"new_drug_thrombocytopenia": "false",
"no_other_cause": "true",
"overt_dic": "false",
"severe_infection": "false",
"skin_necrosis": "false",
"systemic_reaction": "false",
"thrombosis": "typical_new_ge_4d",
"timing": "typical_5_10"
}
]
}
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/hep",
"items": [
{
"components": [
{
"value": "gt_50",
"factor": "magnitude",
"points": 3,
"present": true
},
{
"value": "typical_5_10",
"factor": "timing",
"points": 3,
"present": true
},
{
"value": "gt_20",
"factor": "nadir",
"points": 2,
"present": true
},
{
"value": "typical_new_ge_4d",
"factor": "thrombosis",
"points": 3,
"present": true
},
{
"factor": "skin_necrosis",
"points": 0,
"present": false
},
{
"factor": "systemic_reaction",
"points": 0,
"present": false
},
{
"factor": "bleeding",
"points": 0,
"present": false
},
{
"factor": "chronic_thrombocytopenia",
"points": 0,
"present": false
},
{
"factor": "new_drug_thrombocytopenia",
"points": 0,
"present": false
},
{
"factor": "severe_infection",
"points": 0,
"present": false
},
{
"factor": "overt_dic",
"points": 0,
"present": false
},
{
"factor": "intra_arterial_device",
"points": 0,
"present": false
},
{
"factor": "cpb_96h",
"points": 0,
"present": false
},
{
"factor": "no_other_cause",
"points": 3,
"present": true
}
],
"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": "Cuker A, Arepally G, Crowther MA, Rice L, Datko F, Hook K, Propert KJ, Kuter DJ, Ortel TL, Konkle BA, Cines DB",
"doi": "10.1111/j.1538-7836.2010.04059.x",
"id": "cuker-2010",
"pmid": "20854372",
"source": "J Thromb Haemost. 2010;8(12):2642-2650",
"title": "The HIT Expert Probability (HEP) Score: a novel pre-test probability model for heparin-induced thrombocytopenia based on broad expert opinion"
},
"formula": "hep",
"formula_expression": "HEP = magnitude (lt_30 -1, 30_to_50 1, gt_50 3) + timing (typical_lt_4 -2, typical_day_4 2, typical_5_10 3, typical_11_14 2, typical_gt_14 -1; rapid_lt_48h 2, rapid_gt_48h -1) + nadir (le_20 -2, gt_20 2) + thrombosis select at most one (none 0; typical_new_ge_4d 3, typical_progression 2; rapid_new 3, rapid_progression 2) + skin_necrosis 3 + systemic_reaction 2 + bleeding -1 + other causes select all (chronic_thrombocytopenia -1, new_drug_thrombocytopenia -2, severe_infection -2, overt_dic -2, intra_arterial_device -2, cpb_96h -1, no_other_cause 3 mutually exclusive with other causes); Cuker 2010; range -16 to 19; cutoff 2 was 100% sensitive / 60% specific vs expert panel; cutoff 5 was 86% sensitive / 88% specific",
"max_score": 19,
"score": 14,
"score_ge_2": true,
"score_ge_5": true
},
{
"components": [
{
"value": "gt_50",
"factor": "magnitude",
"points": 3,
"present": true
},
{
"value": "typical_5_10",
"factor": "timing",
"points": 3,
"present": true
},
{
"value": "gt_20",
"factor": "nadir",
"points": 2,
"present": true
},
{
"value": "typical_new_ge_4d",
"factor": "thrombosis",
"points": 3,
"present": true
},
{
"factor": "skin_necrosis",
"points": 0,
"present": false
},
{
"factor": "systemic_reaction",
"points": 0,
"present": false
},
{
"factor": "bleeding",
"points": 0,
"present": false
},
{
"factor": "chronic_thrombocytopenia",
"points": 0,
"present": false
},
{
"factor": "new_drug_thrombocytopenia",
"points": 0,
"present": false
},
{
"factor": "severe_infection",
"points": 0,
"present": false
},
{
"factor": "overt_dic",
"points": 0,
"present": false
},
{
"factor": "intra_arterial_device",
"points": 0,
"present": false
},
{
"factor": "cpb_96h",
"points": 0,
"present": false
},
{
"factor": "no_other_cause",
"points": 3,
"present": true
}
],
"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": "Cuker A, Arepally G, Crowther MA, Rice L, Datko F, Hook K, Propert KJ, Kuter DJ, Ortel TL, Konkle BA, Cines DB",
"doi": "10.1111/j.1538-7836.2010.04059.x",
"id": "cuker-2010",
"pmid": "20854372",
"source": "J Thromb Haemost. 2010;8(12):2642-2650",
"title": "The HIT Expert Probability (HEP) Score: a novel pre-test probability model for heparin-induced thrombocytopenia based on broad expert opinion"
},
"formula": "hep",
"formula_expression": "HEP = magnitude (lt_30 -1, 30_to_50 1, gt_50 3) + timing (typical_lt_4 -2, typical_day_4 2, typical_5_10 3, typical_11_14 2, typical_gt_14 -1; rapid_lt_48h 2, rapid_gt_48h -1) + nadir (le_20 -2, gt_20 2) + thrombosis select at most one (none 0; typical_new_ge_4d 3, typical_progression 2; rapid_new 3, rapid_progression 2) + skin_necrosis 3 + systemic_reaction 2 + bleeding -1 + other causes select all (chronic_thrombocytopenia -1, new_drug_thrombocytopenia -2, severe_infection -2, overt_dic -2, intra_arterial_device -2, cpb_96h -1, no_other_cause 3 mutually exclusive with other causes); Cuker 2010; range -16 to 19; cutoff 2 was 100% sensitive / 60% specific vs expert panel; cutoff 5 was 86% sensitive / 88% specific",
"max_score": 19,
"score": 14,
"score_ge_2": true,
"score_ge_5": true
}
]
}
Response
| Field | Type | Description |
|---|---|---|
formula |
string | hep |
formula_expression |
string | Exact expression used |
score |
integer | HEP points (signed; published range -16 to 19) |
max_score |
integer | 19 |
score_ge_2 |
boolean | true iff score ≥ 2 (Cuker 2010 cutoff 2: 100% sensitive / 60% specific vs expert panel). Not a HIT diagnosis. |
score_ge_5 |
boolean | true iff score ≥ 5 (Cuker 2010 cutoff 5: 86% sensitive / 88% specific). Not a HIT diagnosis. |
components |
array | Per-feature signed points |
citation |
object | Cuker 2010 citation |
disclaimer |
string | Not-a-device notice |
Example JSON
Machine form of the same example. Frozen fixture. Not a live lookup.
{
"components": [
{
"value": "gt_50",
"factor": "magnitude",
"points": 3,
"present": true
},
{
"value": "typical_5_10",
"factor": "timing",
"points": 3,
"present": true
},
{
"value": "gt_20",
"factor": "nadir",
"points": 2,
"present": true
},
{
"value": "typical_new_ge_4d",
"factor": "thrombosis",
"points": 3,
"present": true
},
{
"factor": "skin_necrosis",
"points": 0,
"present": false
},
{
"factor": "systemic_reaction",
"points": 0,
"present": false
},
{
"factor": "bleeding",
"points": 0,
"present": false
},
{
"factor": "chronic_thrombocytopenia",
"points": 0,
"present": false
},
{
"factor": "new_drug_thrombocytopenia",
"points": 0,
"present": false
},
{
"factor": "severe_infection",
"points": 0,
"present": false
},
{
"factor": "overt_dic",
"points": 0,
"present": false
},
{
"factor": "intra_arterial_device",
"points": 0,
"present": false
},
{
"factor": "cpb_96h",
"points": 0,
"present": false
},
{
"factor": "no_other_cause",
"points": 3,
"present": true
}
],
"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": "Cuker A, Arepally G, Crowther MA, Rice L, Datko F, Hook K, Propert KJ, Kuter DJ, Ortel TL, Konkle BA, Cines DB",
"doi": "10.1111/j.1538-7836.2010.04059.x",
"id": "cuker-2010",
"pmid": "20854372",
"source": "J Thromb Haemost. 2010;8(12):2642-2650",
"title": "The HIT Expert Probability (HEP) Score: a novel pre-test probability model for heparin-induced thrombocytopenia based on broad expert opinion"
},
"formula": "hep",
"formula_expression": "HEP = magnitude (lt_30 -1, 30_to_50 1, gt_50 3) + timing (typical_lt_4 -2, typical_day_4 2, typical_5_10 3, typical_11_14 2, typical_gt_14 -1; rapid_lt_48h 2, rapid_gt_48h -1) + nadir (le_20 -2, gt_20 2) + thrombosis select at most one (none 0; typical_new_ge_4d 3, typical_progression 2; rapid_new 3, rapid_progression 2) + skin_necrosis 3 + systemic_reaction 2 + bleeding -1 + other causes select all (chronic_thrombocytopenia -1, new_drug_thrombocytopenia -2, severe_infection -2, overt_dic -2, intra_arterial_device -2, cpb_96h -1, no_other_cause 3 mutually exclusive with other causes); Cuker 2010; range -16 to 19; cutoff 2 was 100% sensitive / 60% specific vs expert panel; cutoff 5 was 86% sensitive / 88% specific",
"max_score": 19,
"score": 14,
"score_ge_2": true,
"score_ge_5": true
}
Client errors (HTTP 400)
Invalid params return 400 without charge. Shared HTTP 402 and 503 meanings: Payments.
| HTTP | Code | When |
|---|---|---|
| 400 | invalid_hep |
HEP items must use Cuker 2010 Table point values (signed integers as published; not the 4Ts score). 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
- 4Ts score — Compute the Lo 2006 4Ts score as the sum of four caller-assigned integers 0-2 (thrombocytopenia, timing, thrombosis, other causes).
- PLASMIC score — Sum the seven Bendapudi 2017 PLASMIC items and return the published 0-4 / 5 / 6-7 pretest band for severe ADAMTS13 deficiency.
- ISTH overt DIC — Sum the four Taylor 2001 ISTH SSC overt DIC laboratory items (platelets, fibrin-related marker, PT prolongation, fibrinogen) and return the published <5 / >=5 band.
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.