MediCare – AI-Powered Clinic Queue & Appointment Management System
Overview
Clinics running on paper-based or fixed-slot scheduling systems face chronic inefficiencies — patients endure unpredictable wait times, receptionists struggle to manage walk-ins alongside pre-booked appointments, and no-shows leave gaps that waste doctor time. The core pain: static 15-minute time slots don't reflect real-world consultation variance. A first-time patient with a complex condition takes far longer than a routine follow-up, yet the system treats them identically — causing cascading delays that frustrate both patients and staff across every appointment that follows. Process I started by identifying a major problem in clinics: patients wait for long hours without knowing their turn, while receptionists manage everything manually. I designed MediCare as an appointment-aware queue system where appointments are prioritized and walk-ins are assigned the next available slot. I built the frontend using React and Vite, the backend using Node.js, Express, and MongoDB, and added Socket.IO for real-time updates. For wait-time prediction, I initially explored fixed averages and Linear Regression, but later adopted Random Forest for better accuracy across different patient profiles. The system also stores actual consultation durations, enabling future retraining and continuous improvement of prediction accuracy. Results The ML model successfully predicts consultation durations dynamically, replacing rigid fixed-slot scheduling with intelligent time estimates based on patient age, visit type, and day/time patterns. The receptionist dashboard provides a centralized view of the live queue, reducing manual coordination overhead. Real-time WebSocket updates eliminated the need for page refreshes, giving patients and staff instant queue visibility. The continuous retraining loop allows the model to improve as it accumulates real consultation data over time, making predictions more accurate with usage. Reflection If I built MediCare again, I would first try to collect more real clinic data instead of depending mostly on synthetic data, as real consultation patterns are more accurate. I would also implement user roles and permissions earlier in development. On the frontend, I would create a consistent design system before building pages to avoid UI differences. Finally, I would add automated testing from the beginning to catch bugs early and improve the overall quality of the application.