Student Feature Case Study: How to build a telemedicine app with video call – HealthCloud by Roshan Kadasani

Roshan recently finished his “HealthCloud” healthcare application he built for his Master’s project. In this interview we’ve invited him to talk about his web app development journey.

BetterDoctor (BD): Roshan, tell us about yourself and your idea about HealthCloud.

Roshan: I have just graduated in Computer Science from California State University, Fullerton. For my final Master’s project I had to build an app and I wanted to focus on healthcare, as I believe technology will solve many problems in that field. Everyone has experienced long waiting times at a doctor’s visit. I even found out in a survey that the average appointment wait time to see a family physician can range up to 66 days! I wanted to fix this by building HealthCloud, a web app that enables patients to stay connected to medical professionals through features like video call and chat.

BD: How would you describe the developing process?

R: Like any software project, Google became my best friend. I searched for best practices and tools to build a provider directory that enables scheduling appointments and making real-time video calls. I think the whole process took about 480 hours, out of which the video call feature took maybe 190 hours. For the provider directory, I used medical professional data from BetterDoctor as my base data. It was relatively easy to implement thanks to the live documentation and the code samples, which helped to figure out the proper request. I also liked the clear and well thought JSON set up.

Here’s the full stack used in HealthCloud:

Back End
Database
Real-time Communication
API
Cloud Platform
Version Control
Continuous Integration
Front End
Detailed architecture diagram for HealthCloud

 

BD: You said that building the video call feature was the hardest part. Tell us how you did it.

R: For the video call I used WebRTC that leverages RTCPeerConnection to send stream data between browser also known as peers. I used socket.io to be able to send control messages in rooms. This signaling process exchanges session control messages, network configuration and media capabilities. It has to be successful before RTCPeerConnection establishes.

First, patient and doctor share network information, such as network interfaces and ports using Interactive Connectivity Establishment (ICE) framework. Next, local and remote media configurations are exchanged by an offer and an answer using Session Description Protocol (SDP). This architecture is known as JavaScript Session Establishment Protocol. Once this signaling process is successful, data can be streamed directly peer-to-peer between the caller and callee, in other words, between the patient and the doctor.

Architecture diagram for the video call feature

 

BD: Now that the first version is out, how are you going to take the app further? Any new features coming up?

R: Sure! In the next versions I hope to include an AI bot that can recommend solutions to the patient and send reminders about the appointments. I’m planning to improve security for Electronic Health Records by implementing Multi Factor Authentication (MFA). It would also be great to add real-time health data from the patient’s tracking devices, such as Apple watch or Fitbit.

BD: You have recently graduated – congratulations! What are your plans next and with regards to HealthCloud?

R: Thank you. At first, I’d like to work as a software developer and gain as much knowledge as possible. I would love to expand HealthCloud and make it available to public sometime in the future.

 

Have more questions for Roshan? Connect with him on LinkedIn or follow him on GitHub.

If you would like to share your project,  let us know.

To get your hands on BetterDoctor’s provider data, sign up for the free API key.

 

Resources:
WebRTC – Video Call
Chat
Node.js Authentication

Pauliina

My name is Pauliina Alanen and I take care of our developer community. I want to discover new ways tech can improve healthcare, together with our developers. My passions lie in working with people and bringing transparency to things that lack it. You can find me in our meetups, hackathons and on Twitter @palan3n or @betterdoctor.