APS-DOAC: Transparent DOAC Suitability Risk-Context Stratification in Antiphospholipid Syndrome
APS-DOAC: Transparent DOAC Suitability Risk-Context Stratification in Antiphospholipid Syndrome
Abstract
Anticoagulation in antiphospholipid syndrome (APS) remains clinically contentious because the convenience of direct oral anticoagulants (DOACs) is not matched by uniform safety across APS phenotypes. The central bedside problem is not whether DOACs are ever usable, but whether a given patient sits in a high-risk phenotype where DOAC exposure is especially unfavorable. APS-DOAC is an executable Python skill that converts that clinical reasoning into a transparent weighted framework. The model emphasizes triple-positive antiphospholipid antibody status, arterial thrombosis history, recurrent thrombosis despite anticoagulation, small-vessel or valvular APS phenotype, pregnancy context, severe kidney disease, mechanical heart valves, and adherence barriers, while also accounting for circumstances that sometimes motivate discussion of alternatives to vitamin K antagonists, such as poor warfarin control or unreliable INR access. It returns a 0-100 concern score, a concern band, explicit reasons against DOAC use, reasons supporting selective consideration, and a recommendation summary. In demonstration scenarios, the model identifies a lower-risk first venous APS setting with warfarin-access barriers as a selective-use context, classifies triple-positive venous APS as high concern, and classifies arterial recurrent APS with pregnancy planning as contraindicated or very high concern. The tool is deliberately heuristic, dependency-free, and reviewer-runnable. It is not a validated prediction model and is intended only as transparent decision support for guideline-aligned anticoagulation discussion.
Clinical methodology
Problem being solved
APS anticoagulation decisions are often presented as binary statements even though real-world risk varies sharply by phenotype. Triple-positive and arterial APS are not equivalent to isolated first venous APS with poor access to INR monitoring. A transparent skill helps make that distinction auditable.
Design principles
- Phenotype outranks convenience. Triple positivity, arterial thrombosis, recurrent thrombosis, and valvular or small-vessel APS heavily increase concern against DOAC use.
- Pregnancy matters. Pregnancy or pregnancy planning strongly shifts practice toward heparin-based approaches rather than DOAC exposure.
- Practical barriers still matter. Poor warfarin time in therapeutic range, intolerance, or lack of INR access can support discussion of alternatives in lower-risk venous APS, but these factors should not erase high-risk APS features.
- Transparency matters. The tool exposes every reason that pushes the recommendation rather than hiding the logic in a black box.
Output interpretation
APS-DOAC does not decide anticoagulation autonomously. It stratifies the situation into:
- LOWER CONCERN / SELECTIVE USE CONTEXT
- INTERMEDIATE CONCERN
- HIGH CONCERN
- CONTRAINDICATED / VERY HIGH CONCERN
The output is designed to support, not replace, specialist and guideline-based discussion.
Why this score exists
Clinicians need a concise and defensible way to explain why many APS patients should remain on vitamin K antagonist therapy despite the appeal of DOAC convenience. A transparent score also helps identify the narrower circumstances where individualized DOAC discussion may still arise because VKA delivery is failing in practice.
Demo output
Running python3 skills/aps-doac/aps_doac.py prints three scenarios:
- Lower-risk venous APS with warfarin access problems → score 0, band LOWER CONCERN / SELECTIVE USE CONTEXT
- Triple-positive venous APS → score 48, band HIGH CONCERN
- Arterial recurrent APS with pregnancy planning → score 100, band CONTRAINDICATED / VERY HIGH CONCERN
Limitations
- Not prospectively or externally validated.
- Does not replace APS specialist judgement, pregnancy anticoagulation pathways, or formal guideline interpretation.
- Does not explicitly compute bleeding-risk scores, INR intervention strategies, or anticoagulant dosing details.
- Evidence against DOACs is strongest in triple-positive and arterial APS; lower-risk venous APS remains an area of residual uncertainty rather than proof of safety.
Authors
Dr. Erick Zamora-Tehozol (ORCID: 0000-0002-7888-3961), DNAI, RheumaAI
References
- Pengo V, Denas G, Zoppellaro G, et al. Rivaroxaban vs warfarin in high-risk patients with antiphospholipid syndrome. Blood. 2018;132(13):1365-1371. DOI: 10.1182/blood-2018-04-848333
- Tektonidou MG, Andreoli L, Limper M, et al. EULAR recommendations for the management of antiphospholipid syndrome in adults. Ann Rheum Dis. 2019;78(10):1296-1304. DOI: 10.1136/annrheumdis-2019-215213
- Cohen H, Hunt BJ, Efthymiou M, et al. Rivaroxaban versus warfarin to treat patients with thrombotic antiphospholipid syndrome, with or without SLE (RAPS): a randomised, controlled, open-label, phase 2/3, non-inferiority trial. Lancet Haematol. 2016;3(9):e426-e436. DOI: 10.1016/S2352-3026(16)30079-5
- Ortel TL, Neumann I, Ageno W, et al. American Society of Hematology 2020 guidelines for management of venous thromboembolism: treatment of deep vein thrombosis and pulmonary embolism. Blood Adv. 2020;4(19):4693-4738. DOI: 10.1182/bloodadvances.2020001830
- Keeling D, Mackie I, Moore GW, et al. British Society for Haematology guidelines on the investigation and management of antiphospholipid syndrome. Br J Haematol. 2012;157(1):47-58. DOI: 10.1111/j.1365-2141.2012.09037.x
Reproducibility: Skill File
Use this skill file to reproduce the research with an AI agent.
#!/usr/bin/env python3
"""
APS-DOAC — transparent DOAC suitability risk-context stratification in antiphospholipid syndrome.
Authors: Dr. Erick Zamora-Tehozol (ORCID: 0000-0002-7888-3961), DNAI, RheumaAI
License: MIT
"""
from dataclasses import dataclass, asdict
from typing import Dict, Any, List
import json
@dataclass
class APSDOACInput:
triple_positive: bool
arterial_thrombosis_history: bool
recurrent_thrombosis_on_anticoagulation: bool
small_vessel_or_valvular_aps: bool
pregnancy_or_pregnancy_planning: bool
severe_ckd_or_dialysis: bool
mechanical_heart_valve: bool
poor_warfarin_control_ttr_below_60: bool
warfarin_intolerance_or_unavailable_inr_monitoring: bool
first_venous_event_only: bool
adherence_concern: bool
major_bleeding_history: bool
def clamp(value: float, lo: float = 0.0, hi: float = 100.0) -> float:
return max(lo, min(hi, value))
def score_aps_doac(case: APSDOACInput) -> Dict[str, Any]:
score = 0.0
reasons_against: List[str] = []
reasons_for: List[str] = []
if case.triple_positive:
score += 48
reasons_against.append("triple-positive aPL profile")
if case.arterial_thrombosis_history:
score += 24
reasons_against.append("arterial thrombosis history")
if case.recurrent_thrombosis_on_anticoagulation:
score += 20
reasons_against.append("recurrent thrombosis despite anticoagulation")
if case.small_vessel_or_valvular_aps:
score += 14
reasons_against.append("small-vessel or valvular APS phenotype")
if case.pregnancy_or_pregnancy_planning:
score += 18
reasons_against.append("pregnancy or pregnancy planning")
if case.severe_ckd_or_dialysis:
score += 10
reasons_against.append("severe CKD or dialysis")
if case.mechanical_heart_valve:
score += 30
reasons_against.append("mechanical heart valve")
if case.adherence_concern:
score += 8
reasons_against.append("adherence concern for short-half-life DOAC")
if case.poor_warfarin_control_ttr_below_60:
score -= 8
reasons_for.append("poor warfarin control despite management")
if case.warfarin_intolerance_or_unavailable_inr_monitoring:
score -= 10
reasons_for.append("warfarin intolerance or unreliable INR access")
if case.first_venous_event_only and not case.triple_positive and not case.arterial_thrombosis_history:
score -= 12
reasons_for.append("first venous event only without high-risk APS phenotype")
if case.major_bleeding_history:
score -= 6
reasons_for.append("major bleeding history may favor individualized anticoagulant selection")
score = clamp(score)
if case.mechanical_heart_valve or score >= 70:
band = "CONTRAINDICATED / VERY HIGH CONCERN"
stance = "Prefer warfarin/VKA-based strategy unless a specialist identifies an exceptional circumstance."
elif score >= 45:
band = "HIGH CONCERN"
stance = "DOAC generally unfavorable; specialist review should strongly favor VKA-based management."
elif score >= 20:
band = "INTERMEDIATE CONCERN"
stance = "DOAC requires individualized risk-benefit review; VKA usually remains default."
else:
band = "LOWER CONCERN / SELECTIVE USE CONTEXT"
stance = "If APS is limited to a first venous event without high-risk features, DOAC may be discussable when VKA is impractical."
recommendation_parts = []
if case.triple_positive or case.arterial_thrombosis_history:
recommendation_parts.append("High-risk APS phenotype present — avoid routine DOAC use.")
if case.pregnancy_or_pregnancy_planning:
recommendation_parts.append("Pregnancy context favors heparin-based strategies rather than DOAC exposure.")
if case.poor_warfarin_control_ttr_below_60 or case.warfarin_intolerance_or_unavailable_inr_monitoring:
recommendation_parts.append("Address VKA barriers explicitly before any off-guideline DOAC decision.")
if not recommendation_parts:
recommendation_parts.append("Confirm aPL profile, thrombosis phenotype, and patient-specific practical barriers before final anticoagulant choice.")
return {
"input": asdict(case),
"score": round(score, 1),
"band": band,
"stance": stance,
"reasons_against_doac": reasons_against,
"reasons_supporting_possible_doac_consideration": reasons_for,
"recommendation": " ".join(recommendation_parts),
"limitations": [
"Heuristic transparent framework, not a validated prediction model.",
"Does not replace APS specialist judgement or guideline-based anticoagulation decisions.",
"Does not calculate bleeding risk scores or INR-management interventions in detail.",
"Evidence is strongest against DOACs in triple-positive and arterial APS; lower-risk venous APS remains less certain.",
],
}
if __name__ == "__main__":
demos = [
(
"Lower-risk venous APS with warfarin access problems",
APSDOACInput(
triple_positive=False,
arterial_thrombosis_history=False,
recurrent_thrombosis_on_anticoagulation=False,
small_vessel_or_valvular_aps=False,
pregnancy_or_pregnancy_planning=False,
severe_ckd_or_dialysis=False,
mechanical_heart_valve=False,
poor_warfarin_control_ttr_below_60=True,
warfarin_intolerance_or_unavailable_inr_monitoring=True,
first_venous_event_only=True,
adherence_concern=False,
major_bleeding_history=False,
),
),
(
"Triple-positive venous APS",
APSDOACInput(
triple_positive=True,
arterial_thrombosis_history=False,
recurrent_thrombosis_on_anticoagulation=False,
small_vessel_or_valvular_aps=False,
pregnancy_or_pregnancy_planning=False,
severe_ckd_or_dialysis=False,
mechanical_heart_valve=False,
poor_warfarin_control_ttr_below_60=False,
warfarin_intolerance_or_unavailable_inr_monitoring=False,
first_venous_event_only=True,
adherence_concern=False,
major_bleeding_history=False,
),
),
(
"Arterial recurrent APS with pregnancy planning",
APSDOACInput(
triple_positive=True,
arterial_thrombosis_history=True,
recurrent_thrombosis_on_anticoagulation=True,
small_vessel_or_valvular_aps=True,
pregnancy_or_pregnancy_planning=True,
severe_ckd_or_dialysis=False,
mechanical_heart_valve=False,
poor_warfarin_control_ttr_below_60=False,
warfarin_intolerance_or_unavailable_inr_monitoring=False,
first_venous_event_only=False,
adherence_concern=True,
major_bleeding_history=False,
),
),
]
print("=" * 80)
print("APS-DOAC — Transparent DOAC Suitability Risk-Context Stratification in APS")
print("Authors: Dr. Erick Zamora-Tehozol, DNAI, RheumaAI")
print("=" * 80)
for name, case in demos:
print(f"\n--- {name} ---")
print(json.dumps(score_aps_doac(case), indent=2))
Discussion (0)
to join the discussion.
No comments yet. Be the first to discuss this paper.