HeartCalc / Developers

Developers and AI assistants

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.

What's available

Only verified calculators are exposed. Experimental tools on the site stay web-only prototypes; STAT 2020 lives on its own site.

CalculatorAPI endpointMCP 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/cathcalculate_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/scdcalculate_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-bpcalculate_neonatal_bp
MCP server
https://heartcalc.doctorarichai.com/mcp
OpenAPI 3.1
/openapi.json
Tool list (JSON)
/api/v1

MCP server

A 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.

https://heartcalc.doctorarichai.com/mcp

Claude (claude.ai, Claude Desktop)

  1. Go to Customize > Connectors.
  2. Click + Add, then Add custom connector.
  3. Name it HeartCalc, paste the URL above and click Continue.
  4. Under Authentication, choose No sign in, then click Add.
  5. In a chat, click + at the lower left, open Connectors and switch HeartCalc on.

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 Code

claude mcp add --transport http heartcalc https://heartcalc.doctorarichai.com/mcp

Other MCP clients

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.

REST API

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.

Response

state
ok 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
Tool-specific numbers. Each is {value, unit, display}: value unrounded, display formatted as the page shows it.
messages
Guards, notes and warnings worded exactly as on the page, each with a level: info, caution or danger.
summary
A plain-text paragraph with the key numbers, the guard messages and the citation, ready to quote.
Also
inputs (normalized echo), model, citations (with DOIs), calculator_url, method_url, computed_at, version and disclaimer.
Errors
HTTP 400 only for a malformed request: invalid JSON, a body that is not an object, or a value outside an enumerated set (for example vo2Method=fick). Unknown parameters are ignored and named in an info message.

Cath Hemodynamics

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'
Response (state 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}'
Response (state 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."
}

Sudden Cardiac Death Risk (HCM)

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'
Response (state 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"}'
Response (state 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."
}

Neonatal Blood Pressure

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'
Response (state 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}'
Response (state 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."
}

Prefill links

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
  • Numbers are plain decimals in the units on the page.
  • Yes/no questions take yes or no; checkboxes take true or false; choices take the listed values (for example vo2Method=auto, mode=pma, lge=notdone).
  • Mode switches you leave out are implied the same way on the page and the API: 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).
  • If you send a date of birth, calculator_url carries the decimal age it gives instead, so a birth date never ends up in a link.

Rules for AI use

  1. Cite the source. Name HeartCalc, give the calculator_url, and cite the primary reference from citations (with its DOI).
  2. Surface every guard. When 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.
  3. Decision support only. The output informs a clinician's judgement; it is not a diagnosis, a treatment decision or a substitute for the primary references.
  4. No identifiers. Never send names, MRNs, dates of birth or other identifiers. The calculators don't need them: for SCD and cath, send the age (ageY, plus ageM/ageD on cath) rather than dob.
  5. Don't re-derive. Report the returned numbers (use display for the page's rounding); don't recompute or extrapolate outside the stated population.

Privacy

  • Inputs are used only to compute the response. The API and MCP server do not store, log or forward them, and set no cookies.
  • Responses are sent with Cache-Control: no-store. A date of birth, if sent, is never echoed back or put in a link.
  • The hosting platform keeps standard request logs (time, path, status) as any website does. A GET puts its parameters in the URL, so prefer POST, and in any case send no identifiers.
  • The web pages compute in your browser and send nothing anywhere.

Versioning

  • The path carries the major version: /api/v1/…. Within v1, fields and messages may be added but existing fields keep their names and meaning.
  • A breaking change gets a new path (/api/v2/…), and v1 keeps working for a transition period.
  • Each response names the calculator 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.
  • New tools join the API and MCP server only once they are verified on the site.

Decision support only; verify against the primary references and clinical judgement. Inputs are not stored.