What if patients didn’t have to wait in uncertainty, and clinics could prioritize care automatically based on symptoms? That's where MedQT comes in. This platform provides AI-driven triage, real-time queue management, and personalized wait-time prediction using a distributed microservice design. With a transparent audit log and clean patient–doctor interface, it makes walk-in care faster, safer, and more efficient.
Service DockerHub Link
- API https://hub.docker.com/r/ct04/medqueue-api
- ML Predictor https://hub.docker.com/r/ct04/medqueue-ml
| Name | GitHub |
|---|---|
| Conor Tiernan | ct-04 |
| Sean Tang | plant445 |
| Jaylon McDuffie | treejitsu |
| Howard Appel | hna2019 |
| Sam Murshed | SamMurshed |
- MedQT consists of 3 interconnected microservices:
-
Hosts patient and doctor dashboards
-
Implements triage logic
-
Communicates with the ML predictor
-
Sends audit events to the Logger
-
Stores data in MongoDB
-
Flask service hosting a trained regression model
-
Predicts estimated wait times
-
Used by API for patient ETA calculations
- Mongo DB database hosted by the droplet
- This project is containerised, so the simplest and recommended way to run everything (API, ML service, MongoDB, seed data) is with Docker Compose.
-
Install:
-
Git
-
Docker
-
Windows/macOS: install Docker Desktop
-
Linux: install docker and the Compose plugin (docker compose)
-
Python 3.11+ (only needed if you want to run services without Docker)
Verify:
git --version
docker --version
docker compose version- git clone https://github.com/swe-students-fall2025/5-final-js4j.git
- cd 5-final-js4j
-
Sent in private chat with submission
-
Then edit .env and update any passwords or secrets as described in the section “Secret configuration files (.env and env.example)” below.
From the project root:
docker compose up --buildThis will start:
-
MongoDB (with initial collections and seed data from database/init)
-
API service (FastAPI)
-
ML service (wait-time predictor)
Once the containers are healthy, visit:
-
API & web UI (local Dev): http://localhost:8000/
-
The deployed project is available at:
-
Production URL: http://104.131.184.246:8000/
The following secrets must be configured in the GitHub repository:
DOCKERHUB_USERNAME– My DockerHub account usernameDOCKERHUB_TOKEN– A DockerHub Personal Access Token with write permissionDO_SSH_KEY– The private key used by CI/CD to deploy to the dropletD0_SSH_HOST– The IP address of the dropletD0_SSH_USER– The SSH username (usually "root")D0_SSH_PORT– Port required
These must be added under:
- GitHub → Settings → Secrets and variables → Actions → New Repository Secret
An exercise to put to practice software development teamwork, subsystem communication, containers, deployment, and CI/CD pipelines. See instructions for details.
# Navigate to the API service
cd api_service
# Install dependencies (including dev requirements)
pip install -r requirements.txt
# Format all Python code
black .
# Lint Python files using pylint
pylint app/**/*.py
# Run API service tests with coverage enforcement
pytest \
--cov=app \
--cov=models \
--cov-fail-under=80
# Navigate to the Machine Learning service
cd ../ml_service
# Install dependencies
pip install -r requirements.txt
# Format all Python code
black .
# Lint Python files using pylint
pylint app --ignore=tests
# Run ML tests with coverage enforcement
pytest \
--cov=. \
--cov-report=term-missing \
--cov-fail-under=80 \
--import-mode=importlib \
app