Bumrungrad International Hospital is one of Asia’s leading healthcare institutions, offering highly digitalized services for patient care and hospital management. A significant operational challenge was managing real-time communication between hospital staff and patients during doctor visits, particularly in high-volume outpatient scenarios.
Patients often have to wait for their turn after check-in, but prefer to leave the waiting area to attend to other tasks. Previously, staff were required to manually call thousands of patients each day to alert them when their turn approached—a process that was costly, inefficient, and error-prone due to the reliance on traditional cellular voice calls.
To solve this, I helped design and implement a scalable, event-driven text and VoIP-based notification system, significantly reducing operational overhead and improving the patient communication experience.
Goals
- Eliminate the need for manual cellular phone calls to patients
- Introduce a cost-effective and automated VoIP-based notification system
- Ensure real-time, reliable message delivery with fallback options
- Design a scalable architecture capable of handling thousands of events per day
My Contributions
Event-Driven Architecture Design
I designed the entire backend system around an event-driven architecture using Azure Event Hubs. This allowed hospital systems to emit structured notification events that could be processed asynchronously and at scale. The architecture ensured high reliability and flexibility, even under heavy traffic.
Backend Implementation
Using Node.js, I implemented the backend logic to:
- Listen for events from hospital admin dashboard and patient queues
- Trigger the notification sequence based on patient turn data and acknowledgements
- Manage message queues, timing intervals, and fallback procedures
To deliver in-app push notifications, I implemented Azure Functions that interfaced with both Firebase Cloud Messaging (FCM) and Apple Push Notification service (APNs). These serverless functions allowed us to send real-time alerts to patients’ devices reliably and with low latency, without overloading backend services.
Notification Flow Implementation
The notification system followed a multi-step, intelligent escalation model:
- Send an in-app text message via push notification
- If no response is received within a configurable time window, trigger an automated VoIP voice call using Twilio API
- If the VoIP call is unanswered, escalate to a manual cellular phone call by hospital staff
This staged approach ensured patient communication while keeping costs low. In practice, fewer than 1% of cases required manual phone calls.
Scalable Storage and Auditing
All event logs, notification statuses, and patient communication records were stored securely using Azure Storage Accounts and MongoDB, enabling real-time monitoring and audit trails for compliance and analytics.
Outcome
- Over 99% of notifications were successfully delivered via in-app or VoIP channels
- Reduced the hospital’s telecom costs by more than 90%
- Staff were able to initiate notifications with a single click, improving operational efficiency
- The system proved to be scalable and fault-tolerant, handling thousands of daily events without downtime
- Patient experience improved by allowing more flexibility during the wait period while ensuring they didn’t miss their turn
Key Takeaways
- Event-driven architecture is ideal for scalable and responsive real-time systems
- Twilio VoIP and push notifications significantly reduce communication costs
- Azure Functions enable lightweight, scalable execution of real-time push alerts
- A layered fallback communication model ensures message delivery without human intervention in most cases
Tools & Technologies
- Node.js for backend services
- Azure Event Hubs for message orchestration
- Azure Functions for serverless push notification dispatch
- Firebase Cloud Messaging (FCM) and APNs for in-app messaging
- Azure Blob Storage for event logs and archival
- MongoDB for transactional data and status tracking
- Twilio Programmable Voice & Messaging API