VTE risk in pregnancy calculator
A pregnant woman with a BMI of 41, aged 38 and with a previous clot scores 7 points, the high band: the teaching advice is to consider preventive heparin throughout pregnancy and for 6 weeks after birth. Tick the factors that apply. Free in your browser.
- Free
- Runs in your browser
- No sign-up
- Your data stays on your device
Run — free
Runs in your browser. Free, unlimited — your data never leaves this page.
Venous thromboembolism in pregnancy is a leading preventable cause of maternal morbidity, and antenatal services commonly estimate that risk by adding published points for body-mass index, age, previous clots, thrombophilia, and obstetric history. This pregnancy VTE risk calculator implements that additive antenatal rule as a pure function: you send a finite BMI, a finite age, and yes-or-no history flags, and you receive the integer score, a low, intermediate, or high band, and the matching low-molecular-weight heparin recommendation used in teaching—routine antenatal care, consider prophylaxis from twenty-eight weeks, or consider prophylaxis throughout pregnancy. An invalid BMI is rejected with invalid input rather than being clamped into a neighbouring obesity band.
How the antenatal VTE score is defined
The additive antenatal score implemented here follows the teaching form of the Royal College of Obstetricians and Gynaecologists Green-top Guideline on reducing venous thromboembolism during pregnancy and the puerperium. Each listed factor contributes a fixed integer; nothing is weighted by a regression coefficient and nothing is estimated from a black-box model. Previous venous thromboembolism, other than a single event provoked only by major surgery, contributes four points and by itself already reaches the high band.
Known high-risk thrombophilia—antithrombin deficiency, protein C or S deficiency, or homozygous or compound heterozygous factor V Leiden or prothrombin G20210A—contributes three points, as does a significant medical comorbidity such as cancer, heart failure, active lupus, inflammatory bowel disease, nephrotic syndrome, type 1 diabetes with nephropathy, sickle cell disease, or current intravenous drug use. Body-mass index of forty or greater contributes two points; a BMI of thirty or greater but below forty contributes one point; those two obesity bands are alternatives, never added together.
Age strictly greater than thirty-five years contributes one point. Family history of unprovoked or estrogen-related VTE in a first-degree relative, known low-risk thrombophilia, parity of three or more, current smoking, gross varicose veins, current pre-eclampsia, multiple pregnancy, and IVF or other assisted reproduction each contribute one point. Low-risk thrombophilia is not stacked on top of a high-risk lesion: if both flags are true, only the three high-risk points are counted.
The integer total then maps to a teaching anticoagulation band: four or more suggests considering prophylactic low-molecular-weight heparin throughout pregnancy and for six weeks after birth; exactly three suggests considering prophylaxis from twenty-eight weeks and for six weeks after birth; two or fewer is routine antenatal care from this score alone, with reassessment if the person is admitted or after birth.
This is educational arithmetic from the published point table, not a diagnosis, not a prescription, and not a substitute for a clinician, local protocol, or a full postnatal reassessment that adds caesarean birth, postpartum haemorrhage, or prolonged labour.
Where pregnancy VTE calculators show up in real work
Midwifery and obstetric teaching constantly assign antenatal thromboprophylaxis drills from textbook BMI, age, and history combinations, so a single trusted oracle that returns the integer beside each component speeds grading and demo setup. Simulation centres and electronic worksheet products want a documented BMI, age, and history path that clients can audit by hand rather than a black-box clot-risk model that mixes D-dimer, Wells, or revised Geneva items without disclosure.
Research assistants preparing synthetic maternity datasets need stable VTE labels from known risk factors without network calls or model drift, and they need a hard reject when BMI arrives negative or out of range so dirty extracts cannot masquerade as scores. If you later need a postnatal-only score that adds caesarean birth, postpartum haemorrhage, or stillbirth, a pulmonary-embolism pretest such as the revised Geneva score, or a pregnancy weight-gain range from BMI and weeks, treat those as separate search intents and landings rather than overloading this pregnancy VTE calculator page.
Always present results as educational estimates from the published antenatal point table; clinical decisions require qualified professionals, a full history this tool does not collect, and local thromboprophylaxis protocols that may start heparin on admission even when the outpatient score is low. Keep requests small, pin the integer score and the recommendation key in tests, and you get reproducible VTE figures for homework, LMS plugins, and edge workers without standing up a clinical information system of your own.
What you can do with it
Antenatal teaching answer keys
Generate the integer VTE score, component points, and LMWH band from textbook BMI, age, and history flags so instructors and auto-graders share one transparent ground truth.
FAQ
What does this pregnancy VTE calculator return?
An integer antenatal score from BMI, age, and history flags, a low / intermediate / high band, a recommendation key, and a short anticoagulation sentence (routine care, consider LMWH from 28 weeks, or consider LMWH throughout pregnancy).
Which scoring rule do you use?
The teaching form of the RCOG Green-top antenatal point table: previous VTE 4, high-risk thrombophilia 3, medical comorbidity 3, BMI ≥40 → 2 else BMI ≥30 → 1, age >35 → 1, and one point each for family history, low-risk thrombophilia, parity ≥3, smoking, varicose veins, pre-eclampsia, multiple pregnancy, and IVF.
What happens if BMI is invalid?
A missing, non-finite, zero, negative, or out-of-range BMI (outside 10–80 kg/m²) is rejected rather than being clamped into an obesity band.
How do I format the input?
Send bmi and age as finite numbers (for example 32 and 36) and any history flags as booleans. Omitted flags count as false.
What does it cost?
The browser tool is free and runs locally.
Related tools
For developers — API access
Everything on this page is available programmatically. This section is for teams who want to wire it into their own systems; everyone else can just use the tool above.
API endpoint
Prefer to automate it? One authenticated POST creates the task; the result comes back by webhook or a signed link. The same capability also runs here on the web, by email and from Telegram — and soon from our app too.
Call it from your stack
curl -X POST https://api.kit.forhosting.com/health/vte-risk-pregnancy \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"bmi":32,"age":36}'const res = await fetch("https://api.kit.forhosting.com/health/vte-risk-pregnancy", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"bmi": 32,
"age": 36
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/health/vte-risk-pregnancy",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"bmi": 32,
"age": 36
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/health/vte-risk-pregnancy", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"bmi":32,"age":36}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"bmi":32,"age":36}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/health/vte-risk-pregnancy", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)Example request
{
"bmi": 32,
"age": 36
}Example response
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "health.vte_risk_pregnancy",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}The API is asynchronous: the call returns a task_id immediately and the result arrives by webhook. Polling is capped at 1 req/s per task.
Pricing
Published price — no tokens, no invented credits. A failed task is never charged.
Errors
| HTTP | Code | Meaning |
|---|---|---|
401 | unauthorized | Missing or invalid API key. |
402 | insufficient_balance | Your balance doesn't cover the task price. |
404 | unknown_type | That task type doesn't exist. |
429 | rate_limited | Too many requests. Use the webhook instead of polling. |
Technical notes
Successful API calls use the published $0.002 per item; invalid input is not billed.
What you send and what you get back
Send two required finite numbers and any history flags you know. Each accepts true or false, yes or no, and one or zero. Inclusive thresholds matter at the edges: a BMI of thirty scores one obesity point, a BMI of forty scores two, and an age of thirty-five does not yet score the age point because the published cutoff is strictly greater than thirty-five. The field bmi is pre-pregnancy body-mass index in kilograms per square metre and must lie between ten and eighty inclusive; a missing, non-finite, zero, negative, or out-of-range value fails with invalid_input naming that field rather than being folded into the nearest obesity band. Aliases body_mass_index, pre_pregnancy_bmi, prepregnancy_bmi, and bmi_kg_m2 are accepted. The field age is maternal age in completed years between ten and seventy inclusive; aliases years, age_years, and maternal_age are accepted. History flags are optional booleans that default to false when omitted: previous_vte, thrombophilia_high, medical_comorbidity, family_history_vte, thrombophilia_low, parity_ge_3, smoker, varicose_veins, preeclampsia, multiple_pregnancy, and ivf. A garbage string in a flag fails with invalid_input instead of counting as no. On success the response echoes the cleaned BMI, age, and every flag, reports each component as bmi_points, age_points, previous_vte_points, and the remaining *_points fields, reports score as their integer sum, sets risk to low, intermediate, or high, sets recommendation to routine_antenatal, consider_lmwh_from_28_weeks, or consider_lmwh_throughout, and includes anticoagulation as a short English sentence you can show next to the number, plus unit_bmi, unit_age, formula, and method for display and for pinning in tests. Pricing for successful API calls is the published $0.002 per item; validation failures do not consume prepaid balance.
Where pregnancy VTE calculators show up in real work
Because this capability is a pure parse engine, API pricing is the published base of $0.002 per successful item and failed validation does not consume balance.
Integration use cases
Maternity worksheet fixtures
Show RCOG-style antenatal thromboprophylaxis thresholds in midwifery labs without mixing postnatal caesarean points or a pulmonary-embolism pretest on the same landing.
Deterministic maternity datasets
Bulk-produce stable antenatal VTE labels for synthetic records and regression tests, with hard invalid_input when BMI is missing, non-finite, or outside 10–80 kg/m².