Student Feature Case Study: How to Build a Telemedicine App with Video Call – HealthCloud by Roshan Kadasani

Roshan recently finished a telemedicine application ‘HealthCloud‘ he built for his Master’s project. To do this, he used the BetterDoctor API to pull up doctor profiles. We invited him to talk about his 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 their clear and well-thought-out JSON set up. 

HealthCloud stack


Back End




Real-time Communication




Cloud Platform


Version Control


Continuous Integration


Front End

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.

You can see the architecture diagram for the video call feature below.

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 software project, let us know. To get your hands on BetterDoctor’s provider data, sign up for the free API key.



WebRTC – Video Call
Node.js Authentication