Inspiration

Cardiovascular disease is a leading cause of death worldwide, yet most risk tools output a bare percentage. A number doesn't tell a clinician or patient where the problem is. We wanted a "mirror of the heart" (Hridya Darpan: hridya = heart, darpan = mirror) that shows risk directly on the anatomy, artery by artery, and explains why.

What it does

You can just add the ECG report or lab report and our image gateway AI feature will feed the data in placeholders from there Hridya Darpan predicts overall Coronary Artery Disease (CAD) and stenosis status of the three major coronary vessels (LAD, LCX, RCA) from a patient's clinical, lab, ECG and echo data.

  • Renders an interactive 3D heart; each artery recolors live (green → yellow → red) based on its predicted stenosis probability
  • Users can rotate, zoom, and click any artery to inspect vessel-specific risk
  • A clinical dashboard shows overall CAD status, per-vessel probabilities, SHAP-based explanations, and each physiological measurement's contribution to the prediction
  • A visible disclaimer states it is for decision support/education only, not a substitute for diagnostic imaging

How we built it

  • Data: Z-Alizadeh Sani extended dataset (303 patients). LAD, LCX, RCA and Cath were excluded from inputs to prevent target leakage.
  • ML: Four binary classifiers (CAD, LAD, LCX, RCA). Compared Logistic Regression, Random Forest and gradient boosting, selected per target by cross-validated ROC-AUC. Used stratified CV, a held-out test set, class-imbalance handling and probability calibration.
  • Explainability: SHAP for per-patient and global feature attribution.
  • Backend: FastAPI serving /predict, /schema, /metrics, /global-importance.
  • Frontend: React + React Three Fiber + Tailwind. Low-poly 3D heart with LAD/LCX/RCA as separate meshes, built to run smoothly without a dedicated GPU.
  • Architecture: Vessel names, IDs and mesh mappings live in a single config, so new features, models or anatomical structures need no redesign.

Challenges we ran into

  • Small dataset (303 records): risk of overfitting and unstable metrics, so we relied on repeated stratified CV and calibration rather than a single split.
  • Target leakage: the dataset contains columns that directly encode the answer; we had to strictly separate them from inputs.
  • Consistency between model and visuals: ensuring each prediction maps to the correct artery mesh every time.
  • Performance without a GPU: keeping the 3D scene responsive meant low-poly geometry and no heavy post-processing.
  • Honest explanation: clinical features like RWMA are not anatomical lesion maps, so we had to present risk spatially without implying patient-specific imaging.

Accomplishments that we're proud of

  • End-to-end working system: trained models → API → live 3D visualization → explainable dashboard
  • Reached on with leakage-free validation
  • Arteries update in real time as inputs change
  • A modular, config-driven design that is easy to extend
  • Clear, per-vessel explanations a non-ML person can read

What we learned

  • Leakage prevention and validation design matter more than model choice on small clinical datasets
  • Calibrated probabilities are essential when colors encode risk
  • Explainability (SHAP) changes how trustworthy a prediction feels
  • Designing for responsible communication (disclaimers, limitations) is part of building clinical tools
  • Integrating ML outputs with real-time 3D rendering requires a clean, shared data contract

What's next for Hridya Darpan

  • Validate on larger, multi-center datasets
  • Use higher-fidelity anatomical meshes (e.g. BodyParts3D) with segment-level coronary branches
  • Add more clinical features and models (e.g. multimodal inputs such as ECG signals or imaging)
  • Patient-friendly mode with plain-language explanations, plus multilingual support (Hindi and regional languages)
  • Uncertainty estimates and clinician feedback loops
  • Pursue clinical review and regulatory-aware validation before any real-world use
Share this project:

Updates

Submission history