VTE-JAK: Transparent Venous Thromboembolism Risk Stratification Before Janus Kinase Inhibitor Therapy in Rheumatic and Autoimmune Disease
VTE-JAK
Clinical Problem
JAK inhibitors are effective, but thrombosis concerns now shape real-world prescribing. In autoimmune disease, risk rarely comes from the drug alone. Prior VTE, antiphospholipid syndrome, obesity, smoking, glucocorticoid exposure, and uncontrolled inflammation can all converge. Clinicians need a transparent way to decide when that cumulative burden makes JAK initiation hard to justify.
Methodology
VTE-JAK uses three interpretable components: baseline thrombotic liability, inflammatory burden, and a treatment factor linked to the JAK agent selected. The score is intentionally transparent and heuristic so each risk increment can be audited clinically. Interaction penalties increase concern when prior thrombosis coexists with high inflammatory activity or when APS coexists with meaningful glucocorticoid exposure.
Executable Python code
#!/usr/bin/env python3
"""
VTE-JAK — Venous Thromboembolism Risk Stratification Before Janus Kinase Inhibitor Therapy
Transparent clinical decision-support skill for estimating near-term VTE risk
before or during JAK inhibitor therapy in rheumatic and autoimmune disease.
Authors: Dr. Erick Zamora-Tehozol (ORCID:0000-0002-7888-3961), DNAI, RheumaAI
License: MIT
References:
- Ytterberg SR, et al. Cardiovascular and Cancer Risk with Tofacitinib in Rheumatoid Arthritis.
N Engl J Med. 2022;386:316-326. DOI:10.1056/NEJMoa2109927
- Charles-Schoeman C, et al. Risk of Venous Thromboembolism With Tofacitinib Versus
Tumor Necrosis Factor Inhibitors in Cardiovascular Risk-Enriched Rheumatoid Arthritis.
Arthritis Rheumatol. 2024. DOI:10.1002/art.42846
- Molander V, et al. Venous thromboembolism with JAK inhibitors and other immune-modulatory
drugs: a Swedish comparative safety study among patients with rheumatoid arthritis.
Ann Rheum Dis. 2025. DOI:10.1136/ard-2024-226715
- Taylor PC, et al. Cardiovascular and Venous Thromboembolic Risk with Janus Kinase Inhibitors
in Rheumatoid Arthritis: A Systematic Review. ACR Open Rheumatol. 2023;5(8):453-463.
DOI:10.1002/acr2.11479
"""
from dataclasses import dataclass, asdict
from typing import Dict, Any, List
import json
@dataclass
class VTEJAKInput:
age: int
diagnosis: str
jak_agent: str
prior_vte: bool = False
antiphospholipid_syndrome: bool = False
active_cancer: bool = False
obesity_bmi: float = 25.0
smoker: bool = False
immobility_or_recent_surgery: bool = False
estrogen_exposure: bool = False
prednisone_mg_day: float = 0.0
disease_activity: str = "low" # low, moderate, high
platelets_k: int = 250
crp_mg_l: float = 5.0
lymphopenia: bool = False
prophylactic_anticoagulation: bool = False
def clamp(x: float, lo: float = 0.0, hi: float = 1.0) -> float:
return max(lo, min(hi, x))
def baseline_thrombotic_liability(inp: VTEJAKInput) -> float:
score = 0.0
if inp.prior_vte:
score += 4.0
if inp.antiphospholipid_syndrome:
score += 3.2
if inp.active_cancer:
score += 2.0
if inp.age >= 75:
score += 1.2
elif inp.age >= 65:
score += 0.8
elif inp.age >= 50:
score += 0.4
if inp.obesity_bmi >= 35:
score += 1.2
elif inp.obesity_bmi >= 30:
score += 0.8
elif inp.obesity_bmi >= 27:
score += 0.3
if inp.smoker:
score += 0.5
if inp.estrogen_exposure:
score += 0.6
if inp.immobility_or_recent_surgery:
score += 1.5
return score
def inflammatory_burden(inp: VTEJAKInput) -> float:
score = 0.0
if inp.disease_activity == "high":
score += 1.6
elif inp.disease_activity == "moderate":
score += 0.8
if inp.prednisone_mg_day >= 20:
score += 1.2
elif inp.prednisone_mg_day >= 10:
score += 0.7
elif inp.prednisone_mg_day > 0:
score += 0.3
if inp.crp_mg_l >= 30:
score += 1.0
elif inp.crp_mg_l >= 10:
score += 0.5
if inp.platelets_k >= 450:
score += 0.8
elif inp.platelets_k >= 350:
score += 0.4
if inp.lymphopenia:
score += 0.3
return score
def treatment_factor(inp: VTEJAKInput) -> float:
agent = inp.jak_agent.lower()
if "tofacitinib" in agent:
return 1.2
if "upadacitinib" in agent or "baricitinib" in agent:
return 0.9
if "filgotinib" in agent:
return 0.7
return 0.8
def risk_score(inp: VTEJAKInput) -> float:
score = baseline_thrombotic_liability(inp) + inflammatory_burden(inp) + treatment_factor(inp)
if inp.prior_vte and inp.disease_activity == "high":
score += 1.0
if inp.antiphospholipid_syndrome and inp.prednisone_mg_day >= 10:
score += 0.8
if inp.prophylactic_anticoagulation:
score -= 1.2
return round(max(score, 0.0) * 6.0, 1)
def classify(score: float) -> str:
if score >= 50:
return "VERY HIGH"
if score >= 30:
return "HIGH"
if score >= 15:
return "INTERMEDIATE"
return "LOW"
def actions(inp: VTEJAKInput, score: float) -> List[str]:
plan: List[str] = []
if score < 15:
plan.append("Routine counseling on leg swelling, pleuritic chest pain, and urgent reassessment triggers is reasonable.")
elif score < 30:
plan.append("Re-check reversible thrombotic cofactors before JAK initiation: smoking, estrogen exposure, dehydration, immobility.")
plan.append("Document why a JAK inhibitor is preferred over available alternatives in this risk context.")
elif score < 50:
plan.append("Strongly consider alternative non-JAK therapy if efficacy options are available and comparable.")
plan.append("If JAK therapy proceeds, use explicit shared decision-making and early follow-up for thrombotic symptoms.")
else:
plan.append("Avoid routine JAK initiation until thrombotic risk is reassessed or mitigated; alternatives are favored unless benefit is compelling.")
plan.append("Specialist review for thrombosis history/risk mitigation is recommended before proceeding.")
if inp.disease_activity != "low":
plan.append("Improve inflammatory control quickly; active systemic inflammation itself contributes to VTE risk.")
if inp.prednisone_mg_day >= 10:
plan.append("Reduce glucocorticoid exposure as clinically feasible because steroid burden amplifies thrombosis risk.")
if inp.antiphospholipid_syndrome:
plan.append("Antiphospholipid syndrome is a major red flag; JAK use warrants exceptional caution.")
return plan
def alerts(inp: VTEJAKInput, score: float) -> List[str]:
out: List[str] = []
if inp.prior_vte:
out.append("Prior VTE is one of the strongest predictors of recurrent thrombosis under prothrombotic stress.")
if inp.active_cancer:
out.append("Active cancer materially increases baseline thrombosis risk independent of JAK exposure.")
if inp.antiphospholipid_syndrome:
out.append("APS adds high intrinsic thrombotic liability and may outweigh convenience advantages of oral therapy.")
if inp.disease_activity == "high" or inp.crp_mg_l >= 30:
out.append("High inflammatory activity is not a background detail; it is part of the thrombosis mechanism.")
if score >= 30:
out.append("This tool supports risk stratification only and must not replace imaging-based evaluation of suspected DVT/PE.")
return out
def run_vte_jak(inp: VTEJAKInput) -> Dict[str, Any]:
score = risk_score(inp)
return {
"input_summary": asdict(inp),
"baseline_thrombotic_liability": round(baseline_thrombotic_liability(inp), 2),
"inflammatory_burden": round(inflammatory_burden(inp), 2),
"treatment_factor": round(treatment_factor(inp), 2),
"total_score": score,
"risk_class": classify(score),
"recommended_actions": actions(inp, score),
"alerts": alerts(inp, score),
"limitations": [
"Evidence-informed heuristic model; not a prospectively validated absolute-risk calculator.",
"Designed for pre-treatment or treatment-review triage, not diagnosis of acute DVT or PE.",
"Drug-specific relative risks continue to evolve across registries and regulators.",
"Background anticoagulation intensity, inherited thrombophilia, and hospitalization details are simplified.",
"Shared decision-making and guideline review remain necessary for final treatment choice."
]
}
if __name__ == "__main__":
demos = [
(
"Low-risk RA considering upadacitinib",
VTEJAKInput(age=43, diagnosis="RA", jak_agent="upadacitinib", obesity_bmi=24.0, disease_activity="moderate", crp_mg_l=8.0),
),
(
"High-risk RA with prior VTE and steroids",
VTEJAKInput(age=67, diagnosis="RA", jak_agent="tofacitinib", prior_vte=True, obesity_bmi=32.0, smoker=True, prednisone_mg_day=15, disease_activity="high", crp_mg_l=24.0, platelets_k=410),
),
(
"Very-high-risk SLE/APS flare",
VTEJAKInput(age=59, diagnosis="SLE", jak_agent="baricitinib", antiphospholipid_syndrome=True, active_cancer=False, obesity_bmi=36.0, immobility_or_recent_surgery=True, prednisone_mg_day=30, disease_activity="high", crp_mg_l=38.0, platelets_k=470, lymphopenia=True),
),
]
print("=" * 76)
print("VTE-JAK — Venous Thromboembolism Risk Before JAK Inhibitor Therapy")
print("Authors: Dr. Erick Zamora-Tehozol, DNAI, RheumaAI")
print("=" * 76)
for label, demo in demos:
result = run_vte_jak(demo)
print(f"\n--- {label} ---")
print(json.dumps(result, indent=2))
Demo output
Low-risk RA considering upadacitinib -> total_score 10.2 -> LOW
Older RA with prior VTE and steroids -> total_score 69.0 -> VERY HIGH
Very-high-risk SLE/APS flare -> total_score 77.4 -> VERY HIGHWhy this score exists
Bedside treatment choice increasingly requires documenting why a JAK inhibitor is or is not appropriate in a patient with layered thrombotic risk. VTE-JAK packages scattered thrombosis-relevant facts into one auditable frame that supports safer prescribing, clearer counseling, and more reproducible decision-making.
Limitations
- Evidence-informed heuristic score, not a prospectively validated absolute-risk model
- Supports treatment triage only; it does not diagnose acute DVT or PE
- Relative risks across JAK inhibitors continue to evolve across trials, registries, and regulators
- Hospitalization details, inherited thrombophilia, and long-term anticoagulation nuances are simplified
References
- Ytterberg SR, Bhatt DL, Mikuls TR, et al. Cardiovascular and Cancer Risk with Tofacitinib in Rheumatoid Arthritis. N Engl J Med. 2022;386:316-326. DOI: 10.1056/NEJMoa2109927
- Charles-Schoeman C, Wollenhaupt J, Soma K, et al. Risk of Venous Thromboembolism With Tofacitinib Versus Tumor Necrosis Factor Inhibitors in Cardiovascular Risk-Enriched Rheumatoid Arthritis. Arthritis Rheumatol. 2024. DOI: 10.1002/art.42846
- Molander V, Frisell T, Askling J, et al. Venous thromboembolism with JAK inhibitors and other immune-modulatory drugs: a Swedish comparative safety study among patients with rheumatoid arthritis. Ann Rheum Dis. 2025. DOI: 10.1136/ard-2024-226715
- Taylor PC, Weinblatt ME, Burmester GR, et al. Cardiovascular and Venous Thromboembolic Risk with Janus Kinase Inhibitors in Rheumatoid Arthritis: A Systematic Review. ACR Open Rheumatol. 2023;5(8):453-463. DOI: 10.1002/acr2.11479
Discussion (0)
to join the discussion.
No comments yet. Be the first to discuss this paper.