HeartCalc / Developers
A public JSON API and a remote MCP server for the verified calculators, running the same code as the pages
Compute, don't recite. AI assistants and agents can call HeartCalc instead of reproducing equations from memory. Every answer comes from the site's tested calculator code, with the page's own guard messages, units and citations.
Only verified calculators are exposed. Experimental tools on the site stay web-only prototypes; STAT 2020 lives on its own site.
| Calculator | API endpoint | MCP tool |
|---|---|---|
| Cath Hemodynamics Fick flows and resistances from cath saturations and pressures: predicted or measured VO2, Qp, Qs, Qep, Qp:Qs, PVR/PVRi, SVR/SVRi, Rp:Rs, optional differential lung perfusion correction. | /api/v1/cath | calculate_cath_hemodynamics |
| Sudden Cardiac Death Risk (HCM) Hypertrophic cardiomyopathy 5-year sudden cardiac death risk: HCM Risk-Kids (age 1-16) and HCM Risk-SCD (age 16-80), chosen by age, plus the 2024 AHA/ACC ICD recommendation rows. | /api/v1/scd | calculate_hcm_scd_risk |
| Neonatal Blood Pressure Systolic blood pressure centiles for babies born at 23+0 to 41+6 weeks, from birth through the first year (NNNI 1999 reconstruction), and the percentile of one systolic reading. | /api/v1/neonatal-bp | calculate_neonatal_bp |
https://heartcalc.doctorarichai.com/mcpA remote Model Context Protocol server over Streamable HTTP. It is stateless and needs no sign-in. It offers the three calculators plus list_heartcalc_tools, which lists all 22 tools on the site and marks the experimental ones as prototypes that cannot be computed here.
HeartCalc, paste the URL above and click Continue.On Team and Enterprise plans an owner adds it under Organization settings > Connectors (Add, then Custom > Web); members then connect it from Customize > Connectors. Wording follows Claude's help article, which has the current steps if the menus change.
claude mcp add --transport http heartcalc https://heartcalc.doctorarichai.com/mcp
Clients that speak Streamable HTTP (Cursor, VS Code, Windsurf and others) take the URL directly:
{
"mcpServers": {
"heartcalc": { "url": "https://heartcalc.doctorarichai.com/mcp" }
}
}
For a client that only runs local (stdio) servers, bridge with mcp-remote:
{
"mcpServers": {
"heartcalc": { "command": "npx", "args": ["-y", "mcp-remote", "https://heartcalc.doctorarichai.com/mcp"] }
}
}
Each calculator tool returns the same JSON as the REST API as structuredContent, plus a short text summary that carries the key numbers, the not-applicable and guard messages and the citation. Tools are annotated read-only and closed-world.
No key, no sign-in. Send GET with query parameters or POST a JSON object to https://heartcalc.doctorarichai.com/api/v1/<tool>. CORS is open (*), and responses are never cached (Cache-Control: no-store). Parameter names are the form ids on each page; units, ranges and enums are in /openapi.json.
stateok computed · missing more inputs needed (messages say which) · not_applicable the model must not be used for this patient (messages say why) · invalid an entry is not a number, a date is malformed, or a value is impossible. All four are HTTP 200.result{value, unit, display}: value unrounded, display formatted as the page shows it.messagesinfo, caution or danger.summaryinputs (normalized echo), model, citations (with DOIs), calculator_url, method_url, computed_at, version and disclaimer.vo2Method=fick). Unknown parameters are ignored and named in an info message.Fick flows and resistances at any age. Here: a 6-month-old with a left-to-right shunt (the page's example), VO2 predicted by Seckeler; then an 8-year-old girl with unequal lung perfusion, VO2 by Lundell/LaFarge (vo2Method=auto).
curl 'https://heartcalc.doctorarichai.com/api/v1/cath?ageY=0&ageM=6&ht=68&wt=7.5&hgb=11.5&hr=140&sao2=97&mvDirect=71&pa=85&mAo=55&mRA=6&mPA=28&mLA=8'
ok){
"tool": "cath",
"name": "Cath Hemodynamics",
"version": "1.0.0",
"api_version": "1.0.0",
"status": "verified",
"computed_at": "2026-10-13T13:58:33.177Z",
"inputs": {
"ageY": 0,
"ageM": 6,
"ht": 68,
"wt": 7.5,
"hgb": 11.5,
"vo2Method": "seckeler",
"hr": 140,
"sao2": 97,
"mvDirect": 71,
"pa": 85,
"mAo": 55,
"mRA": 6,
"mPA": 28,
"mLA": 8
},
"state": "ok",
"summary": "Cath Hemodynamics (Fick): Qp:Qs 2.00 : 1; Qs 1.54 L/min (4.10 L/min/m²); Qp 3.09 L/min (8.21 L/min/m²); PVRi 2.44 WU·m²; SVRi 11.94 WU·m²; Rp:Rs 0.20. VO2 63 mL/min (167 mL/min/m²), predicted by Seckeler. Pulmonary vein saturation not entered: 98% assumed. VO2 is predicted, not measured. VO2 equation: Seckeler MD, et al. A new predictive equation for oxygen consumption in children and adults with congenital and acquired heart disease. Heart 2015;101:517-524. doi:10.1136/heartjnl-2014-306378. Source: HeartCalc https://heartcalc.doctorarichai.com/cath. Decision support only.",
"result": {
"qp_qs": {
"value": 2,
"unit": "ratio",
"display": "2.00 : 1"
},
"qs": {
"value": 1.5445479927759538,
"unit": "L/min",
"display": "1.54"
},
"qsi": {
"value": 4.103624081500381,
"unit": "L/min/m²",
"display": "4.10"
},
"qp": {
"value": 3.0890959855519076,
"unit": "L/min",
"display": "3.09"
},
"qpi": {
"value": 8.207248163000761,
"unit": "L/min/m²",
"display": "8.21"
},
"qep": {
"value": 1.4873425115620296,
"unit": "L/min",
"display": "1.49"
},
"qepi": {
"value": 3.951638004407774,
"unit": "L/min/m²",
"display": "3.95"
},
"pvr": {
"value": 6.47438606425392,
"unit": "WU",
"display": "6.47"
},
"pvri": {
"value": 2.436870386125565,
"unit": "WU·m²",
"display": "2.44"
},
"svr": {
"value": 31.72449171484421,
"unit": "WU",
"display": "31.72"
},
"svri": {
"value": 11.940664892015269,
"unit": "WU·m²",
"display": "11.94"
},
"rp_rs": {
"value": 0.20408163265306123,
"unit": "ratio",
"display": "0.20"
},
"tpg": {
"value": 20,
"unit": "mmHg",
"display": "20"
},
"mixed_venous_sat": {
"value": 71,
"unit": "%",
"display": "71.0"
},
"pv_sat_used": {
"value": 98,
"unit": "%",
"display": "98.0",
"assumed": true
},
"bsa": {
"value": 0.3763863263545405,
"unit": "m²",
"display": "0.38",
"method": "Mosteller"
},
"age_years": {
"value": 0.5,
"unit": "years",
"display": "0.50",
"source": "entered"
},
"vo2": {
"value": 62.80749957824139,
"unit": "mL/min",
"display": "63",
"source": "predicted",
"method": "Seckeler"
},
"vo2_index": {
"value": 166.8697696501315,
"unit": "mL/min/m²",
"display": "167"
},
"predicted_vo2": {
"seckeler": {
"name": "Seckeler",
"state": "ok",
"vo2_index": {
"value": 166.8697696501315,
"unit": "mL/min/m²",
"display": "167",
"sd": 27.6
},
"vo2": {
"value": 62.80749957824139,
"unit": "mL/min",
"display": "63"
},
"status": "Used"
},
"lundell": {
"name": "Lundell (under 3 y)",
"state": "ok",
"vo2_index": {
"value": 172.93500000000003,
"unit": "mL/min/m²",
"display": "173",
"sd": 38.7
},
"vo2": {
"value": 65.09036934812248,
"unit": "mL/min",
"display": "65"
},
"status": "Available"
},
"lafarge": {
"name": "LaFarge",
"state": "not_applicable",
"vo2_index": {
"value": null,
"unit": "mL/min/m²",
"display": null,
"sd": null
},
"vo2": {
"value": null,
"unit": "mL/min",
"display": null
},
"status": "Not valid under 3 years"
}
},
"sensitivity": {
"description": "If predicted VO2 is off by 1 SD",
"sd": 27.6,
"minus_1sd": {
"vo2_index": {
"value": 139.2697696501315,
"unit": "mL/min/m²",
"display": "139"
},
"qsi": {
"value": 3.4248910498261727,
"unit": "L/min/m²",
"display": "3.42"
},
"qpi": {
"value": 6.849782099652345,
"unit": "L/min/m²",
"display": "6.85"
},
"pvri": {
"value": 2.9198009088515504,
"unit": "WU·m²",
"display": "2.92"
},
"svri": {
"value": 14.307024453372597,
"unit": "WU·m²",
"display": "14.31"
}
},
"plus_1sd": {
"vo2_index": {
"value": 194.46976965013147,
"unit": "mL/min/m²",
"display": "194"
},
"qsi": {
"value": 4.782357113174588,
"unit": "L/min/m²",
"display": "4.78"
},
"qpi": {
"value": 9.564714226349176,
"unit": "L/min/m²",
"display": "9.56"
},
"pvri": {
"value": 2.0910190860594007,
"unit": "WU·m²",
"display": "2.09"
},
"svri": {
"value": 10.245993521691062,
"unit": "WU·m²",
"display": "10.25"
}
}
},
"differential": null
},
"messages": [
{
"level": "caution",
"text": "Pulmonary vein saturation not entered: 98% assumed."
},
{
"level": "caution",
"text": "VO2 is predicted, not measured."
}
],
"model": {
"method": "Fick principle. O2 capacity = 13.6 x Hgb; Qs = VO2 / (cap x (SaO2 - MV)); Qp = VO2 / (cap x (PV - PA)); Qep = VO2 / (cap x (PV - MV)); Qp:Qs = (SaO2 - MV) / (PV - PA); PVR = (mPA - mLA) / Qp; SVR = (mAo - mRA) / Qs; BSA by Mosteller.",
"vo2_source": "predicted",
"vo2_equation": "Seckeler",
"differential_lung_perfusion": false,
"dissolved_oxygen": "not included"
},
"citations": [
{
"citation": "Seckeler MD, et al. A new predictive equation for oxygen consumption in children and adults with congenital and acquired heart disease. Heart 2015;101:517-524.",
"doi": "10.1136/heartjnl-2014-306378",
"url": "https://doi.org/10.1136/heartjnl-2014-306378"
},
{
"citation": "Lundell KH, et al. Oxygen consumption in infants and children during heart catheterization. Pediatr Cardiol 1996;17:207-213.",
"doi": "10.1007/BF02524795",
"url": "https://doi.org/10.1007/BF02524795"
},
{
"citation": "LaFarge CG, Miettinen OS. The estimation of oxygen consumption. Cardiovasc Res 1970;4:23-30.",
"doi": "10.1093/cvr/4.1.23",
"url": "https://doi.org/10.1093/cvr/4.1.23"
},
{
"citation": "Laitinen PO, Räsänen J. Measured versus predicted oxygen consumption in children with congenital heart disease. Heart 1998;80:601-605.",
"doi": "10.1136/hrt.80.6.601",
"url": "https://doi.org/10.1136/hrt.80.6.601"
}
],
"calculator_url": "https://heartcalc.doctorarichai.com/cath?ageY=0&ageM=6&ht=68&wt=7.5&hgb=11.5&vo2Method=seckeler&hr=140&sao2=97&mvDirect=71&pa=85&mAo=55&mRA=6&mPA=28&mLA=8",
"method_url": "https://heartcalc.doctorarichai.com/cath",
"disclaimer": "Decision support only; verify against the primary references and clinical judgement. Inputs are not stored."
}
curl -X POST https://heartcalc.doctorarichai.com/api/v1/cath \
-H 'Content-Type: application/json' \
-d '{"ageY":8,"sex":"F","ht":128,"wt":26,"hgb":13,"hr":90,"vo2Method":"auto","sao2":98,"mvDirect":72,"pa":74,"pv":99,"mAo":70,"mRA":6,"mPA":40,"mLA":10,"diffOn":true,"pctR":70,"mRPA":38,"mLPA":45}'
ok){
"tool": "cath",
"name": "Cath Hemodynamics",
"version": "1.0.0",
"api_version": "1.0.0",
"status": "verified",
"computed_at": "2026-10-13T13:58:33.178Z",
"inputs": {
"ageY": 8,
"sex": "F",
"ht": 128,
"wt": 26,
"hgb": 13,
"vo2Method": "auto",
"hr": 90,
"sao2": 98,
"mvDirect": 72,
"pa": 74,
"pv": 99,
"mAo": 70,
"mRA": 6,
"mPA": 40,
"mLA": 10,
"diffOn": true,
"pctR": 70,
"mRPA": 38,
"mLPA": 45
},
"state": "ok",
"summary": "Cath Hemodynamics (Fick): Qp:Qs 1.04 : 1; Qs 2.86 L/min (2.97 L/min/m²); Qp 2.97 L/min (3.09 L/min/m²); PVRi 9.63 WU·m²; SVRi 21.52 WU·m²; Rp:Rs 0.45. VO2 131 mL/min (137 mL/min/m²), predicted by LaFarge. VO2 is predicted, not measured. VO2 equation: LaFarge CG, Miettinen OS. The estimation of oxygen consumption. Cardiovasc Res 1970;4:23-30. doi:10.1093/cvr/4.1.23. Source: HeartCalc https://heartcalc.doctorarichai.com/cath. Decision support only.",
"result": {
"qp_qs": {
"value": 1.04,
"unit": "ratio",
"display": "1.04 : 1"
},
"qs": {
"value": 2.8589715828993305,
"unit": "L/min",
"display": "2.86"
},
"qsi": {
"value": 2.973510183818649,
"unit": "L/min/m²",
"display": "2.97"
},
"qp": {
"value": 2.9733304462153027,
"unit": "L/min",
"display": "2.97"
},
"qpi": {
"value": 3.0924505911713935,
"unit": "L/min/m²",
"display": "3.09"
},
"qep": {
"value": 2.7530837464956512,
"unit": "L/min",
"display": "2.75"
},
"qepi": {
"value": 2.8633801770105505,
"unit": "L/min/m²",
"display": "2.86"
},
"pvr": {
"value": 10.018137768867502,
"unit": "WU",
"display": "10.02"
},
"pvri": {
"value": 9.632242509417118,
"unit": "WU·m²",
"display": "9.63"
},
"svr": {
"value": 22.38567196078827,
"unit": "WU",
"display": "22.39"
},
"svri": {
"value": 21.52338349075696,
"unit": "WU·m²",
"display": "21.52"
},
"rp_rs": {
"value": 0.44752454991816715,
"unit": "ratio",
"display": "0.45"
},
"tpg": {
"value": 30,
"unit": "mmHg",
"display": "30"
},
"mixed_venous_sat": {
"value": 72,
"unit": "%",
"display": "72.0"
},
"pv_sat_used": {
"value": 99,
"unit": "%",
"display": "99.0",
"assumed": false
},
"bsa": {
"value": 0.9614803401237304,
"unit": "m²",
"display": "0.96",
"method": "Mosteller"
},
"age_years": {
"value": 8,
"unit": "years",
"display": "8.00",
"source": "entered"
},
"vo2": {
"value": 131.4212057227164,
"unit": "mL/min",
"display": "131",
"source": "predicted",
"method": "LaFarge"
},
"vo2_index": {
"value": 136.6863161297756,
"unit": "mL/min/m²",
"display": "137"
},
"predicted_vo2": {
"seckeler": {
"name": "Seckeler",
"state": "ok",
"vo2_index": {
"value": 151.49530066156402,
"unit": "mL/min/m²",
"display": "151",
"sd": 27.6
},
"vo2": {
"value": 145.65975320722737,
"unit": "mL/min",
"display": "146"
},
"status": "Available"
},
"lundell": {
"name": "Lundell (3 y and older)",
"state": "ok",
"vo2_index": {
"value": 171.10030223135658,
"unit": "mL/min/m²",
"display": "171",
"sd": 34.4
},
"vo2": {
"value": 164.5095767846778,
"unit": "mL/min",
"display": "165"
},
"status": "Available"
},
"lafarge": {
"name": "LaFarge",
"state": "ok",
"vo2_index": {
"value": 136.6863161297756,
"unit": "mL/min/m²",
"display": "137",
"sd": null
},
"vo2": {
"value": 131.4212057227164,
"unit": "mL/min",
"display": "131"
},
"status": "Used"
}
},
"sensitivity": null,
"differential": {
"right": {
"flow_pct": {
"value": 70,
"unit": "%",
"display": "70.0",
"display_page": "70"
},
"qpi": {
"value": 2.1647154138199753,
"unit": "L/min/m²",
"display": "2.16"
},
"qp": {
"value": 2.081331312350712,
"unit": "L/min",
"display": "2.08"
},
"mean_pa": {
"value": 38,
"unit": "mmHg",
"display": "38"
},
"tpg": {
"value": 28,
"unit": "mmHg",
"display": "28"
},
"pvr": {
"value": 13.452927861050647,
"unit": "WU",
"display": "13.45"
},
"pvri": {
"value": 12.934725655502987,
"unit": "WU·m²",
"display": "12.93"
}
},
"left": {
"flow_pct": {
"value": 30.000000000000004,
"unit": "%",
"display": "30.0",
"display_page": "30"
},
"qpi": {
"value": 0.9277351773514182,
"unit": "L/min/m²",
"display": "0.93"
},
"qp": {
"value": 0.891999133864591,
"unit": "L/min",
"display": "0.89"
},
"mean_pa": {
"value": 45,
"unit": "mmHg",
"display": "45"
},
"tpg": {
"value": 35,
"unit": "mmHg",
"display": "35"
},
"pvr": {
"value": 39.23770626139772,
"unit": "WU",
"display": "39.24"
},
"pvri": {
"value": 37.72628316188371,
"unit": "WU·m²",
"display": "37.73"
}
},
"uncorrected_pvri": {
"value": 9.701044241627239,
"unit": "WU·m²",
"display": "9.70"
},
"pv_flow_weighted": false,
"note": "PVRi above combines both lungs in parallel (9.63 vs 9.70 from main PA pressure alone)."
}
},
"messages": [
{
"level": "caution",
"text": "VO2 is predicted, not measured."
}
],
"model": {
"method": "Fick principle. O2 capacity = 13.6 x Hgb; Qs = VO2 / (cap x (SaO2 - MV)); Qp = VO2 / (cap x (PV - PA)); Qep = VO2 / (cap x (PV - MV)); Qp:Qs = (SaO2 - MV) / (PV - PA); PVR = (mPA - mLA) / Qp; SVR = (mAo - mRA) / Qs; BSA by Mosteller.",
"vo2_source": "predicted",
"vo2_equation": "LaFarge",
"differential_lung_perfusion": true,
"dissolved_oxygen": "not included"
},
"citations": [
{
"citation": "LaFarge CG, Miettinen OS. The estimation of oxygen consumption. Cardiovasc Res 1970;4:23-30.",
"doi": "10.1093/cvr/4.1.23",
"url": "https://doi.org/10.1093/cvr/4.1.23"
},
{
"citation": "Seckeler MD, et al. A new predictive equation for oxygen consumption in children and adults with congenital and acquired heart disease. Heart 2015;101:517-524.",
"doi": "10.1136/heartjnl-2014-306378",
"url": "https://doi.org/10.1136/heartjnl-2014-306378"
},
{
"citation": "Lundell KH, et al. Oxygen consumption in infants and children during heart catheterization. Pediatr Cardiol 1996;17:207-213.",
"doi": "10.1007/BF02524795",
"url": "https://doi.org/10.1007/BF02524795"
},
{
"citation": "Laitinen PO, Räsänen J. Measured versus predicted oxygen consumption in children with congenital heart disease. Heart 1998;80:601-605.",
"doi": "10.1136/hrt.80.6.601",
"url": "https://doi.org/10.1136/hrt.80.6.601"
}
],
"calculator_url": "https://heartcalc.doctorarichai.com/cath?ageY=8&sex=F&ht=128&wt=26&hgb=13&vo2Method=auto&hr=90&sao2=98&mvDirect=72&pa=74&pv=99&mAo=70&mRA=6&mPA=40&mLA=10&diffOn=true&pctR=70&mRPA=38&mLPA=45",
"method_url": "https://heartcalc.doctorarichai.com/cath",
"disclaimer": "Decision support only; verify against the primary references and clinical judgement. Inputs are not stored."
}
Hypertrophic cardiomyopathy, primary prevention; age picks the model. Here: a 12-year-old boy (HCM Risk-Kids, from measurements in mm); then a 30-year-old with NSVT (HCM Risk-SCD) with the 2024 AHA/ACC rows.
curl 'https://heartcalc.doctorarichai.com/api/v1/scd?ageY=12&sex=male&wt=40&mwtMm=17&laMm=29&lvot=24&syncope=no&nsvt=no'
ok){
"tool": "scd",
"name": "Sudden Cardiac Death Risk (HCM)",
"version": "1.0.0",
"api_version": "1.0.0",
"status": "verified",
"computed_at": "2026-10-13T13:58:33.184Z",
"inputs": {
"ageY": 12,
"sex": "male",
"wt": 40,
"mode": "mm",
"mwtMm": 17,
"laMm": 29,
"lvot": 24,
"syncope": "no",
"nsvt": "no"
},
"state": "ok",
"summary": "HCM sudden cardiac death risk. Model used: HCM Risk-Kids (age 1–16). HCM Risk-Kids: estimated 5-year risk of SCD or equivalent event 5.1% (intermediate, 4 to <6%) [Norrish G, et al, doi:10.1001/jamacardio.2019.2861]. 2024 AHA/ACC: Complete the ICD risk factors section to show the recommendation class. Source: HeartCalc https://heartcalc.doctorarichai.com/scd. Decision support only; risk thresholds are not the sole arbiter.",
"result": {
"route": {
"key": "kids",
"age_whole_years": 12,
"models": "HCM Risk-Kids (age 1–16)",
"age_years": {
"value": 12,
"unit": "years",
"display": "12.00",
"source": "entered"
}
},
"no_model": null,
"models": [
{
"id": "hcm_risk_kids",
"name": "HCM Risk-Kids",
"population": "Children with HCM aged 1 to 16 years",
"outcome": "Estimated 5-year risk of SCD or equivalent event",
"state": "ok",
"risk_5y_pct": {
"value": 5.120254954125181,
"unit": "%",
"display": "5.1"
},
"risk_group": "intermediate",
"risk_group_label": "Intermediate risk",
"risk_group_range": "4 to <6%",
"group_reliable": true,
"prognostic_index": 0.012919630803872843,
"reasons": [],
"missing": [],
"message": null,
"mwt_z": {
"value": 10.793911375330545,
"unit": "Z",
"display": "10.79",
"source": "calculated (hcmriskkids.org)"
},
"la_z": {
"value": 0.5210174577885494,
"unit": "Z",
"display": "0.52",
"source": "calculated (hcmriskkids.org)"
},
"bsa": {
"value": 1.2568296794482265,
"unit": "m²",
"display": "1.26",
"method": "0.1023 x weight^0.68 (hcmriskkids.org)"
},
"input_mode": "mm",
"notes": [
{
"level": "info",
"text": "Developed for use at the first evaluation. ESC 2023 recommends assessing 5-year risk at first evaluation and re-evaluating every 1–2 years or with any change in clinical status (Class I, Level B). Does not include LGE, genotype, family history of SCD or LV systolic dysfunction."
}
],
"interpretation": "ESC 2023: an ICD may be considered in individual patients at an estimated 5-year risk of ≥4% to <6%, after detailed clinical assessment of lifelong complication risk and the impact on lifestyle, socio-economic status and psychological health (Class IIb, Level B).",
"citation": {
"citation": "Norrish G, et al. Development of a novel risk prediction model for sudden cardiac death in childhood hypertrophic cardiomyopathy (HCM Risk-Kids). JAMA Cardiol 2019;4(9):918-927.",
"doi": "10.1001/jamacardio.2019.2861",
"url": "https://doi.org/10.1001/jamacardio.2019.2861"
}
}
],
"aha_2024": {
"state": "missing",
"rows_used": "paediatric (age <16)",
"majors": [],
"rows": [],
"missing": [
"family history (≤50 y)",
"massive LVH",
"LV apical aneurysm",
"LVEF <50%",
"extensive LGE"
],
"notes": [],
"summary": "Complete the ICD risk factors section to show the recommendation class.",
"massive_lvh": {
"value": null,
"derived_from": "massive (entered)"
},
"citation": {
"citation": "Ommen SR, et al. 2024 AHA/ACC/AMSSM/HRS/PACES/SCMR guideline for the management of hypertrophic cardiomyopathy. Circulation 2024. Recommendations for ICD placement (section 7.2) and Table 8.",
"doi": "10.1161/CIR.0000000000001250",
"url": "https://doi.org/10.1161/CIR.0000000000001250"
},
"lead": "Supports shared decision-making; it is not a decision. Risk thresholds should not be the sole arbiter."
}
},
"messages": [
{
"level": "info",
"text": "Note: Developed for use at the first evaluation. ESC 2023 recommends assessing 5-year risk at first evaluation and re-evaluating every 1–2 years or with any change in clinical status (Class I, Level B). Does not include LGE, genotype, family history of SCD or LV systolic dysfunction.",
"source": "hcm_risk_kids"
},
{
"level": "info",
"text": "ESC 2023: an ICD may be considered in individual patients at an estimated 5-year risk of ≥4% to <6%, after detailed clinical assessment of lifelong complication risk and the impact on lifestyle, socio-economic status and psychological health (Class IIb, Level B).",
"source": "hcm_risk_kids"
},
{
"level": "info",
"text": "Missing input. Enter family history (≤50 y), massive LVH, LV apical aneurysm, LVEF <50%, extensive LGE to show the recommendation class.",
"source": "aha_2024"
}
],
"model": {
"route": "kids",
"models_run": [
"HCM Risk-Kids"
],
"routing_rule": "Completed years: <1 none; 1–15 HCM Risk-Kids; 16 both; 17–80 HCM Risk-SCD; >80 none (AHA combined calculator; ESC 2023 agrees).",
"risk_groups": "low <4%, intermediate 4 to <6%, high ≥6% (ESC 2023 thresholds), applied to the unrounded risk"
},
"citations": [
{
"citation": "Norrish G, et al. Development of a novel risk prediction model for sudden cardiac death in childhood hypertrophic cardiomyopathy (HCM Risk-Kids). JAMA Cardiol 2019;4(9):918-927.",
"doi": "10.1001/jamacardio.2019.2861",
"url": "https://doi.org/10.1001/jamacardio.2019.2861"
},
{
"citation": "Ommen SR, et al. 2024 AHA/ACC/AMSSM/HRS/PACES/SCMR guideline for the management of hypertrophic cardiomyopathy. Circulation 2024. Recommendations for ICD placement (section 7.2) and Table 8.",
"doi": "10.1161/CIR.0000000000001250",
"url": "https://doi.org/10.1161/CIR.0000000000001250"
},
{
"citation": "Arbelo E, et al. 2023 ESC Guidelines for the management of cardiomyopathies. Eur Heart J 2023;44:3503-3626. Recommendation Table 23.",
"doi": "10.1093/eurheartj/ehad194",
"url": "https://doi.org/10.1093/eurheartj/ehad194"
}
],
"calculator_url": "https://heartcalc.doctorarichai.com/scd?ageY=12&sex=male&wt=40&mode=mm&mwtMm=17&laMm=29&lvot=24&syncope=no&nsvt=no",
"method_url": "https://heartcalc.doctorarichai.com/scd",
"disclaimer": "Decision support only; verify against the primary references and clinical judgement. Inputs are not stored."
}
curl -X POST https://heartcalc.doctorarichai.com/api/v1/scd \
-H 'Content-Type: application/json' \
-d '{"ageY":30,"mwtMm":22,"laMm":42,"lvot":20,"syncope":"no","nsvt":"yes","fh":"no","fh50":"no","aneur":"no","lvef":"no","lge":"no"}'
ok){
"tool": "scd",
"name": "Sudden Cardiac Death Risk (HCM)",
"version": "1.0.0",
"api_version": "1.0.0",
"status": "verified",
"computed_at": "2026-10-13T13:58:33.184Z",
"inputs": {
"ageY": 30,
"mode": "mm",
"mwtMm": 22,
"laMm": 42,
"lvot": 20,
"syncope": "no",
"nsvt": "yes",
"fh": "no",
"fh50": "no",
"aneur": "no",
"lvef": "no",
"lge": "no"
},
"state": "ok",
"summary": "HCM sudden cardiac death risk. Model used: HCM Risk-SCD (adult, 16–80). HCM Risk-SCD: estimated 5-year risk of SCD 6.7% (high, ≥6%) [O'Mahony C, et al, doi:10.1093/eurheartj/eht439]. 2024 AHA/ACC [doi:10.1161/CIR.0000000000001250]: Class 2b (B-NR): ICD may be considered (extensive LGE or NSVT). Supports shared decision-making. Source: HeartCalc https://heartcalc.doctorarichai.com/scd. Decision support only; risk thresholds are not the sole arbiter.",
"result": {
"route": {
"key": "adult",
"age_whole_years": 30,
"models": "HCM Risk-SCD (adult, 16–80)",
"age_years": {
"value": 30,
"unit": "years",
"display": "30.00",
"source": "entered"
}
},
"no_model": null,
"models": [
{
"id": "hcm_risk_scd",
"name": "HCM Risk-SCD",
"population": "Patients with HCM aged 16 to 80 years",
"outcome": "Estimated 5-year risk of SCD",
"state": "ok",
"risk_5y_pct": {
"value": 6.70815880801986,
"unit": "%",
"display": "6.7"
},
"risk_group": "high",
"risk_group_label": "High risk",
"risk_group_range": "≥6%",
"group_reliable": true,
"prognostic_index": 3.5462794700000004,
"reasons": [],
"missing": [],
"message": null,
"age_used": {
"value": 30,
"unit": "years (completed)"
},
"notes": [
{
"level": "info",
"text": "ESC 2023 recommends assessing 5-year risk at first evaluation and re-evaluating every 1–2 years or with any change in clinical status (Class I, Level B). Does not include LGE, LVEF or LV apical aneurysm: see the 2024 AHA/ACC section."
}
],
"interpretation": "ESC 2023: an ICD should be considered at an estimated 5-year risk of ≥6%, after detailed clinical assessment of lifelong complication risk, competing mortality, and the impact on lifestyle, socio-economic status and psychological health (Class IIa, Level B).",
"citation": {
"citation": "O'Mahony C, et al. A novel clinical risk prediction model for sudden cardiac death in hypertrophic cardiomyopathy (HCM Risk-SCD). Eur Heart J 2014;35(30):2010-2020.",
"doi": "10.1093/eurheartj/eht439",
"url": "https://doi.org/10.1093/eurheartj/eht439"
}
}
],
"aha_2024": {
"state": "ok",
"rows_used": "adult (age ≥16)",
"majors": [],
"rows": [
{
"id": "2b-adult",
"cor": "2b",
"loe": "B-NR",
"label": "COR 2b",
"text": "In select adult patients with HCM and without major SCD risk factors after clinical assessment, or in whom the decision to proceed with ICD placement remains otherwise uncertain, ICD may be considered in patients with extensive LGE by contrast-enhanced CMR imaging or NSVT present on ambulatory monitoring."
}
],
"missing": [],
"notes": [],
"summary": "Class 2b (B-NR): ICD may be considered (extensive LGE or NSVT). Supports shared decision-making.",
"massive_lvh": {
"value": false,
"derived_from": "mwtMm 22 mm (≥30 mm)"
},
"citation": {
"citation": "Ommen SR, et al. 2024 AHA/ACC/AMSSM/HRS/PACES/SCMR guideline for the management of hypertrophic cardiomyopathy. Circulation 2024. Recommendations for ICD placement (section 7.2) and Table 8.",
"doi": "10.1161/CIR.0000000000001250",
"url": "https://doi.org/10.1161/CIR.0000000000001250"
},
"lead": "Supports shared decision-making; it is not a decision. Risk thresholds should not be the sole arbiter.",
"shared_decision_making": {
"cor": "1",
"loe": "C-EO",
"label": "COR 1",
"text": "Individual clinical judgment, and a thorough and balanced discussion of the evidence, benefits and estimated risks, to engage the patient in ICD decision-making."
}
}
},
"messages": [
{
"level": "info",
"text": "Note: ESC 2023 recommends assessing 5-year risk at first evaluation and re-evaluating every 1–2 years or with any change in clinical status (Class I, Level B). Does not include LGE, LVEF or LV apical aneurysm: see the 2024 AHA/ACC section.",
"source": "hcm_risk_scd"
},
{
"level": "info",
"text": "ESC 2023: an ICD should be considered at an estimated 5-year risk of ≥6%, after detailed clinical assessment of lifelong complication risk, competing mortality, and the impact on lifestyle, socio-economic status and psychological health (Class IIa, Level B).",
"source": "hcm_risk_scd"
},
{
"level": "info",
"text": "2024 AHA/ACC: Class 2b (B-NR): ICD may be considered (extensive LGE or NSVT). Supports shared decision-making.",
"source": "aha_2024"
}
],
"model": {
"route": "adult",
"models_run": [
"HCM Risk-SCD"
],
"routing_rule": "Completed years: <1 none; 1–15 HCM Risk-Kids; 16 both; 17–80 HCM Risk-SCD; >80 none (AHA combined calculator; ESC 2023 agrees).",
"risk_groups": "low <4%, intermediate 4 to <6%, high ≥6% (ESC 2023 thresholds), applied to the unrounded risk"
},
"citations": [
{
"citation": "O'Mahony C, et al. A novel clinical risk prediction model for sudden cardiac death in hypertrophic cardiomyopathy (HCM Risk-SCD). Eur Heart J 2014;35(30):2010-2020.",
"doi": "10.1093/eurheartj/eht439",
"url": "https://doi.org/10.1093/eurheartj/eht439"
},
{
"citation": "Ommen SR, et al. 2024 AHA/ACC/AMSSM/HRS/PACES/SCMR guideline for the management of hypertrophic cardiomyopathy. Circulation 2024. Recommendations for ICD placement (section 7.2) and Table 8.",
"doi": "10.1161/CIR.0000000000001250",
"url": "https://doi.org/10.1161/CIR.0000000000001250"
},
{
"citation": "Arbelo E, et al. 2023 ESC Guidelines for the management of cardiomyopathies. Eur Heart J 2023;44:3503-3626. Recommendation Table 23.",
"doi": "10.1093/eurheartj/ehad194",
"url": "https://doi.org/10.1093/eurheartj/ehad194"
}
],
"calculator_url": "https://heartcalc.doctorarichai.com/scd?ageY=30&mode=mm&mwtMm=22&laMm=42&lvot=20&syncope=no&nsvt=yes&fh=no&fh50=no&aneur=no&lvef=no&lge=no",
"method_url": "https://heartcalc.doctorarichai.com/scd",
"disclaimer": "Decision support only; verify against the primary references and clinical judgement. Inputs are not stored."
}
Babies born at 23+0 to 41+6 weeks, birth to 1 year. Here: born at 26+3 weeks, day 5, systolic 46 mm Hg (the page's example); then born at 24+0, now 30+2 weeks postmenstrual age, systolic 40.
curl 'https://heartcalc.doctorarichai.com/api/v1/neonatal-bp?gaW=26&gaD=3&pna=5&sbp=46'
ok){
"tool": "neonatal-bp",
"name": "Neonatal Blood Pressure",
"version": "1.0.0",
"api_version": "1.0.0",
"status": "verified",
"computed_at": "2026-10-13T13:58:33.188Z",
"inputs": {
"gaW": 26,
"gaD": 3,
"mode": "pna",
"pna": 5,
"sbp": 46
},
"state": "ok",
"summary": "Neonatal systolic BP, NNNI 1999 reconstruction. GA at birth 26+3 wk; day 5 of life; PMA 27+1 wk. Reference: mean 51.0 mm Hg, SD 8.7 (CV 17.0%). Centiles (mm Hg): 3rd 35, 10th 40, 50th 51, 75th 57, 90th 62, 95th 65, 97th 67. Systolic 46 mm Hg: 28th centile (z -0.58), 10th to 90th. Assumption. Centiles are reconstructed from the paper's stated values and its figures, with a normal distribution. They are approximate (see Model, equations and sources). Source: Northern Neonatal Nursing Initiative. Systolic blood pressure in babies of less than 32 weeks gestation in the first year of life. Arch Dis Child Fetal Neonatal Ed 1999;80(1):F38-F42. doi:10.1136/fn.80.1.F38. Computed by HeartCalc https://heartcalc.doctorarichai.com/neonatal-bp. Decision support only.",
"result": {
"gestation_at_birth": {
"value": 26.428571428571427,
"unit": "weeks",
"display": "26+3"
},
"postnatal_age": {
"value": 5,
"unit": "days",
"display": "day 5"
},
"postmenstrual_age": {
"value": 27.142857142857142,
"unit": "weeks",
"display": "27+1"
},
"phase": "transition",
"phase_label": "First 10 days (transition)",
"reference": {
"mean_sbp": {
"value": 51,
"unit": "mm Hg",
"display": "51.0"
},
"sd": {
"value": 8.67,
"unit": "mm Hg",
"display": "8.7"
},
"cv": {
"value": 0.17,
"unit": "fraction",
"display": "17.0%"
},
"centiles": {
"3rd": {
"value": 34.69351602,
"unit": "mm Hg",
"display": "35"
},
"10th": {
"value": 39.88894416,
"unit": "mm Hg",
"display": "40"
},
"50th": {
"value": 51,
"unit": "mm Hg",
"display": "51"
},
"75th": {
"value": 56.847828299999996,
"unit": "mm Hg",
"display": "57"
},
"90th": {
"value": 62.111055840000006,
"unit": "mm Hg",
"display": "62"
},
"95th": {
"value": 65.26088418,
"unit": "mm Hg",
"display": "65"
},
"97th": {
"value": 67.30648398,
"unit": "mm Hg",
"display": "67"
}
}
},
"reading": {
"sbp": {
"value": 46,
"unit": "mm Hg"
},
"z": {
"value": -0.5767012687427913,
"display": "-0.58"
},
"percentile": {
"value": 28.20705986568786,
"display": "28",
"words": "28th centile"
},
"band": "10to90",
"band_label": "10th to 90th",
"outside_3rd_97th": false
},
"rule_of_35": {
"p3": {
"value": 33.15,
"unit": "mm Hg",
"display": "33"
},
"p97": {
"value": 68.85000000000001,
"unit": "mm Hg",
"display": "69"
}
}
},
"messages": [
{
"level": "info",
"text": "Paper's shortcut: 3rd ≈ mean − 35% = 33 mm Hg; 97th ≈ mean + 35% = 69 mm Hg (slightly wider than the normal-model values above)."
},
{
"level": "caution",
"text": "Assumption. Centiles are reconstructed from the paper's stated values and its figures, with a normal distribution. They are approximate (see Model, equations and sources)."
}
],
"model": {
"method": "NNNI 1999 systolic BP reference, reconstructed: mean by gestation on day 0 and day 10 (stated values and figure reads), linear over days 0-10, rising as t^0.6 to a plateau of 92 mm Hg at 44 weeks PMA; CV 17% to 34 weeks PMA, moving linearly to 11.1% at 44 weeks; normal distribution. Percentile = Phi((SBP - mean) / (mean x CV)).",
"measurement": "Doppler systolic pressure (oscillometric devices tended to overestimate low pressures; intra-arterial not studied)",
"reconstruction": true
},
"citations": [
{
"citation": "Northern Neonatal Nursing Initiative. Systolic blood pressure in babies of less than 32 weeks gestation in the first year of life. Arch Dis Child Fetal Neonatal Ed 1999;80(1):F38-F42.",
"doi": "10.1136/fn.80.1.F38",
"url": "https://doi.org/10.1136/fn.80.1.F38"
},
{
"citation": "McNamara PJ, et al. Evaluating the efficacy and safety of milrinone for prevention of post-patent ductus arteriosus closure syndrome (the MIDAS trial) in extremely preterm infants. BMJ Open 2025;15(8):e105018. (Uses this reference for its blood pressure thresholds.)",
"doi": "10.1136/bmjopen-2025-105018",
"url": "https://doi.org/10.1136/bmjopen-2025-105018"
}
],
"calculator_url": "https://heartcalc.doctorarichai.com/neonatal-bp?gaW=26&gaD=3&mode=pna&pna=5&sbp=46",
"method_url": "https://heartcalc.doctorarichai.com/neonatal-bp",
"disclaimer": "Decision support only; verify against the primary references and clinical judgement. Inputs are not stored."
}
curl -X POST https://heartcalc.doctorarichai.com/api/v1/neonatal-bp \
-H 'Content-Type: application/json' \
-d '{"gaW":24,"mode":"pma","pmaW":30,"pmaD":2,"sbp":40}'
ok){
"tool": "neonatal-bp",
"name": "Neonatal Blood Pressure",
"version": "1.0.0",
"api_version": "1.0.0",
"status": "verified",
"computed_at": "2026-10-13T13:58:33.188Z",
"inputs": {
"gaW": 24,
"mode": "pma",
"pmaW": 30,
"pmaD": 2,
"sbp": 40
},
"state": "ok",
"summary": "Neonatal systolic BP, NNNI 1999 reconstruction. GA at birth 24+0 wk; day 44 of life; PMA 30+2 wk. Reference: mean 69.0 mm Hg, SD 11.7 (CV 17.0%). Centiles (mm Hg): 3rd 47, 10th 54, 50th 69, 75th 77, 90th 84, 95th 88, 97th 91. Systolic 40 mm Hg: below the 1st centile (z -2.47), below 3rd centile. Below the 3rd centile. This is the hypotension threshold the MIDAS trial takes from this reference (systolic below the 3rd percentile for gestational age). Confirm the reading and look at perfusion before acting on a number. Assumption. Centiles are reconstructed from the paper's stated values and its figures, with a normal distribution. They are approximate (see Model, equations and sources). Source: Northern Neonatal Nursing Initiative. Systolic blood pressure in babies of less than 32 weeks gestation in the first year of life. Arch Dis Child Fetal Neonatal Ed 1999;80(1):F38-F42. doi:10.1136/fn.80.1.F38. Computed by HeartCalc https://heartcalc.doctorarichai.com/neonatal-bp. Decision support only.",
"result": {
"gestation_at_birth": {
"value": 24,
"unit": "weeks",
"display": "24+0"
},
"postnatal_age": {
"value": 44,
"unit": "days",
"display": "day 44"
},
"postmenstrual_age": {
"value": 30.285714285714285,
"unit": "weeks",
"display": "30+2"
},
"phase": "rise",
"phase_label": "Rising toward the stable level",
"reference": {
"mean_sbp": {
"value": 69.00435720770275,
"unit": "mm Hg",
"display": "69.0"
},
"sd": {
"value": 11.730740725309468,
"unit": "mm Hg",
"display": "11.7"
},
"cv": {
"value": 0.17,
"unit": "fraction",
"display": "17.0%"
},
"centiles": {
"3rd": {
"value": 46.941250435985054,
"unit": "mm Hg",
"display": "47"
},
"10th": {
"value": 53.970802969700955,
"unit": "mm Hg",
"display": "54"
},
"50th": {
"value": 69.00435720770275,
"unit": "mm Hg",
"display": "69"
},
"75th": {
"value": 76.91662451951673,
"unit": "mm Hg",
"display": "77"
},
"90th": {
"value": 84.03791144570457,
"unit": "mm Hg",
"display": "84"
},
"95th": {
"value": 88.29971301269093,
"unit": "mm Hg",
"display": "88"
},
"97th": {
"value": 91.06746397942045,
"unit": "mm Hg",
"display": "91"
}
}
},
"reading": {
"sbp": {
"value": 40,
"unit": "mm Hg"
},
"z": {
"value": -2.472508589770881,
"display": "-2.47"
},
"percentile": {
"value": 0.6708433495892951,
"display": "<1",
"words": "below the 1st centile"
},
"band": "below3",
"band_label": "Below 3rd centile",
"outside_3rd_97th": true
},
"rule_of_35": null
},
"messages": [
{
"level": "caution",
"text": "Below the 3rd centile. This is the hypotension threshold the MIDAS trial takes from this reference (systolic below the 3rd percentile for gestational age). Confirm the reading and look at perfusion before acting on a number."
},
{
"level": "caution",
"text": "Assumption. Centiles are reconstructed from the paper's stated values and its figures, with a normal distribution. They are approximate (see Model, equations and sources)."
}
],
"model": {
"method": "NNNI 1999 systolic BP reference, reconstructed: mean by gestation on day 0 and day 10 (stated values and figure reads), linear over days 0-10, rising as t^0.6 to a plateau of 92 mm Hg at 44 weeks PMA; CV 17% to 34 weeks PMA, moving linearly to 11.1% at 44 weeks; normal distribution. Percentile = Phi((SBP - mean) / (mean x CV)).",
"measurement": "Doppler systolic pressure (oscillometric devices tended to overestimate low pressures; intra-arterial not studied)",
"reconstruction": true
},
"citations": [
{
"citation": "Northern Neonatal Nursing Initiative. Systolic blood pressure in babies of less than 32 weeks gestation in the first year of life. Arch Dis Child Fetal Neonatal Ed 1999;80(1):F38-F42.",
"doi": "10.1136/fn.80.1.F38",
"url": "https://doi.org/10.1136/fn.80.1.F38"
},
{
"citation": "McNamara PJ, et al. Evaluating the efficacy and safety of milrinone for prevention of post-patent ductus arteriosus closure syndrome (the MIDAS trial) in extremely preterm infants. BMJ Open 2025;15(8):e105018. (Uses this reference for its blood pressure thresholds.)",
"doi": "10.1136/bmjopen-2025-105018",
"url": "https://doi.org/10.1136/bmjopen-2025-105018"
}
],
"calculator_url": "https://heartcalc.doctorarichai.com/neonatal-bp?gaW=24&mode=pma&pmaW=30&pmaD=2&sbp=40",
"method_url": "https://heartcalc.doctorarichai.com/neonatal-bp",
"disclaimer": "Decision support only; verify against the primary references and clinical judgement. Inputs are not stored."
}
The API and the pages share parameter names, so the same query string works on both. Every response's calculator_url is the page with your inputs filled in; send it to the user so they can check the result and the method on the page.
https://heartcalc.doctorarichai.com/<tool>?<same parameters as the API> https://heartcalc.doctorarichai.com/api/v1/<tool>?<same parameters> https://heartcalc.doctorarichai.com/neonatal-bp?gaW=26&gaD=3&mode=pna&pna=5&sbp=46 https://heartcalc.doctorarichai.com/api/v1/neonatal-bp?gaW=26&gaD=3&mode=pna&pna=5&sbp=46
yes or no; checkboxes take true or false; choices take the listed values (for example vo2Method=auto, mode=pma, lge=notdone).vo2i means vo2Method=manual; any of pctR, mRPA, mLPA, rpv, lpv turns on diffOn; Z scores without measurements mean mode=z (SCD); pmaW/pmaD without pna mean mode=pma (neonatal BP).calculator_url carries the decimal age it gives instead, so a birth date never ends up in a link.calculator_url, and cite the primary reference from citations (with its DOI).state is not_applicable, say so and give the reason; don't present a number. Repeat caution and danger messages to the user. If state is missing, ask for what the messages name.ageY, plus ageM/ageD on cath) rather than dob.display for the page's rounding); don't recompute or extrapolate outside the stated population.Cache-Control: no-store. A date of birth, if sent, is never echoed back or put in a link./api/v1/…. Within v1, fields and messages may be added but existing fields keep their names and meaning./api/v2/…), and v1 keeps working for a transition period.version and api_version; /openapi.json carries the same version. A correction to a calculator changes the page and the API together, because they run the same code.Decision support only; verify against the primary references and clinical judgement. Inputs are not stored.