Inspiration

This project started with something that happened to me. I went to A&E with an allergic reaction to penicillin, was told to wait in the waiting room and sat there with nothing monitoring me. No one was tracking my heart rate or oxygen levels. While I was waiting, the reaction became severe and I briefly stopped breathing.

What stayed with me afterwards wasn't the wait itself. It was that my body was showing warning signs and nothing was there to notice them. Once a patient leaves triage they're often unmonitored until they're called and a lot can change in that time.

That's the gap we wanted to close. Our project is a wearable that keeps tracking vital signs while patients wait, so changes like a falling oxygen level or a rising heart rate can be flagged for staff to check, instead of going unseen until it's too late.

What it does

Pulse (Wristband) connects three parts:

  • A wristband prototype built on an ESP32 with heart rate, temperature sensors and a LiPo battery.
  • A web dashboard built with Flask that shows patient readings, charts and a unified chat, backed by an Oracle database through a protected read-only ORDS API.
  • AI models trained on a dataset we created due to patient data being classified that:
    • estimate how long a patient's ED stay is likely to last,
    • estimate initial triage acuity from vital signs at arrival,
    • flag statistically unusual heart-rate and SpO₂ patterns for staff to review.

How we built it

  • Hardware: ESP32-WROOM-32 with sensors and battery.
  • Backend & data: Oracle Database and Oracle APEX, exposed through a read-only ORDS API so the website can't modify patient records.
  • Website: Python, Flask and Jinja2 templates, with HTML/CSS and SVG charts.
  • AI: We trained in Google Colab using pandas, NumPy and scikit-learn with a synthetic dataset. We used Random Forest models for stay-length prediction and acuity classification, and an Isolation Forest for anomaly detection on sensor-style readings.
  • Quality: pytest, Playwright browser tests, Ruff linting and GitHub Actions for CI.

Challenges we ran into

  • Connecting the hardware and getting accurate readings.
  • Sending real-time readings from the EPS32 to the database
  • Access to real patient datasets is classified.

Accomplishments that we're proud of

  • We built everything we set out to build. The wristband prototype, the database, the website and the AI models all work and connect together as one system.
  • Real wearable data on the dashboard. Alongside our own wristband, we integrated readings from a Garmin device into the website. That shows the wristband can work with wearables people already own, not just our custom hardware.
  • Security from the start. The website reads patient data through a protected, read-only API, so it can't change or delete records.

What we learned

  • How to build a secure, read-only API layer between a database and a web app.
  • How to train a model using Random Forest machine learning model using a synthetic patient dataset
  • How to build a fully functioning wristband that collects real-time data.

Responsible use

  • This is a demonstration prototype, not a medical device. The anomaly flags show statistically unusual readings, not clinical urgency and every output is meant to support staff judgement, never replace it.

What's next for Pulse

  • Train the AI on real patient data once receiving ethical approval.
  • Improve the accuracy of hardware readings.
  • Implementing 3rd party services such as Apple, Whoop and FitBit within our system.

Built With

Share this project:

Updates

Submission history