Maintaining our health is a primary goal in many of our lives, yet sometimes, we just don't have the means to do so. Whether it is due to high expenses or low accessibility, such circumstances aren't fair to those who want to preserve their wellbeing.
In times such as these, where COVID-19 interrupts our daily lives with no foreseeable end, it is important now more than ever to preserve our health and wellbeing in any way that we can. Students and adults have already transferred their work over to remote communication, so wouldn't it only make sense to do the same for all aspects of life?
Good thing there is a viable and inexpensive way to now achieve this for our personal health: dokanda.
Dokanda is a easy to use mobile responsive web app which allows for doctors and patients to meet one on one in video calls with a real-time chat room for diagnoses or questions. Along with this, dokanda features a self-diagnostic page based on symptoms, enabling users to get information instantly.
Parts of Indonesia are rampant with poverty and diseases but still deal with a lack of access to medical services. With the ability to improve life with technology, we seek to play our part to support health care workers on the front lines.
Providing easy access to the ever-changing healthcare system is one of our primary goals, as not only is our technology easy to use, but is also tailored specifically for doctors to speed up their diagnostic process.
Even though not all of us are medical professionals, we have access to the internet which hosts a ton of useful information regarding personal health. That said, the biggest issue about this is finding reliable information, which is now not an issue, since dokanda does the heavy lifting for you!
Common Health/Healthcare Problems in Indonesia
Many of the hospitals across Indonesia are centralized in populous areas such as Jakarta. With the lower amounts of hospitals compared to other countries, getting healthcare is one of the toughest jobs in the regions. Even during modern times with COVID 19 around, many of the hospitals are having trouble maintaining large amounts of people. With overcrowding in many of these hospitals, hospitals have become much more unsanitary in Indonesia which is an important health concern.
That's where dokanda comes in. Dokanda is there for you wherever you are and whenever you want. We try to stop your health doubts and issues before relying on a hospital. With dokanda, we can prevent you from having to go to such crowded and maybe unsanitary places with potential health risks.
Hospitals in Indonesia are very limited on resources. As a result, they are mainly located in the most populous areas such as Jakarta. Remote regions of Indonesia find it difficult to find public health care. Even with remote health care, aid can get quite expensive. The Indonesian government has been funding Indonesia is very vast and we find it necessary that the entire country gets access to the best and most convenient healthcare possible.
Therefore, dokanda is here to be accessible entirely online. If there's ever a prescription sent by a doctor, doctors can send prescription details remotely from a remote location to your convenient/preferred location all with the click of a button.
One of the major problems seen across Indonesia is the low literacy rates. Compared to Malaysia, Singapre, Thailand, and other neighboring southeast Asian countries, Indonesia is known to have the lowest. This makes communication especially harder for foreigners within the country. Additionally, one of the largest skills that many healthcare companies and private hospitals advertise to their clients is English compatibility. This, however, puts more strain on the Indonesian job force while somewhat helping patients.
Dokanda revolutionizes the med tech industry because it takes language barrier into account. It automatically converts English into Indonesia if asked.
How we built it
Express.js & Node.JS - We utilized express as our server server side framework in order to make API calls and manage requests to our API. Node.js was used to construct our API and execute queries to our database.
Socket.IO & WebRTC - In order to enable real-time communication for both the video and chat rooms, we used a socket architecture to handle the relation between doctors and patients in a chatroom. We also used peer.js to connect each individual to a local server.
React.JS - We used react.js to create our frontend and structure our content in a dynamic way. We found this to be incredibly efficient when having multiple moving parts such as text in a chatroom or videos that need to be added or removed from a room.
Python - To retrieve diseases and their respective symptoms, we utilized webscraping in python using the beautiful soup library. This automation saved us a ton of time as manually retrieving the information would've been too tedious and time-consuming.
PostgreSQL - This was our first time using PostgreSQL, but we found it to be the perfect database structure for our needs, as we needed a solid and defined structure but more a larger list of data types compared to vanilla SQL. Heroku provides PostgreSQL as a cloud service, and we communicated with it using pyscopg2 in python and pg in node.js.
Challenges we ran into
Socket.IO and Peer Communication
Using a socket-based architecture with peer connections proved to be difficult to manage, especially on the video side. This was our first time using the technology, which meant we had to learn on the go. We ran into issues with sending broadcasts from the server back to the client, and with managing react states from inteferering with the live video chat.
Captcha While Webscraping
Due to the fact that we had to web scrape hundreds of diseases and their symptoms, google's captcha system stopped us from executing all the searches in one go. Instead, we had to bypass this issue by adding time intervals to our code using a sleep function, to avoid sending a high amount of traffic in a short time span. This was time-consuming since intervals had to be a few seconds each, which added up in the long run. This also meant that we had to store our data simultaneously as we web scraped to avoid losing information in case the captcha blocked us.
Site Wide Translation
Our web app provides the ability to change language at any time, which means all our content has to be dynamically added based on the current selected language. This includes all frontend text, meaning that it has to be passed through a translation function. Even though this directly isn't an issue, it creates lots of dependencies between files, which can be difficult to work with.
Accomplishments that we're proud of
1. Live Video and Chat Room
Using sockets was quite difficult but we managed to figure out the communication and got a fully functioning live video stream of both the doctor and patient on the screen with little to no latency. Sending users and doctors to a single room is completely automated and requires the users to do minimal work on their end.
2. Reliable Information and Data
The information we deliver to users on the self-diagnostic tool is clean and concise, which makes it easy to use. The data was web scraped from reliable sources, making the data credible and easy to understand. The data we scrape is also stored in a database, which means it is a one-time thing, allowing our web app to be free of major dependencies.
3. Clean User Interface
Even though we had to integrate many technologies, we ended up with a clean and simplistic UI which makes the web app easy to use. Medical information is already confusing enough, so no need to be confused on how to navigate or use the web app.
What we learned
This was the first time that any of us used socket-based communication so it was a nice learning experience. We learned the optimal ways to communicate from the client to the server and vice versa, along with linking users together for socket communication using rooms.
Having the web app be dynamically rendered allowed for us to easily change between languages based on user selection. It also forced us to have clean and organized code since files were heavily dependent on one another for receiving information. It also taught us to be careful with states since it initially caused conflicts with our socket communication.
What's next for dokanda
Medical Records with Encryption
We want the patients and doctors to have easy access to any records. If there is ever a necessity, the files are safely stored online with 256 bit encryption on the MEGA cloud service. Doctors can only access the files with the patient's permission.
Medical Authorization Requests From Doctor to Patient
Safety and comfort are our number one priorities. We want the patient to feel they are in control of the application. If they feel uncomfortable, they may leave the call, cancel their video, reschedule their appointment, and much more. Furthermore the doctor is required to send authorization requests to get access to more sensitive features such as body examinations, special documents, and other information.
Medical Form Fill out Service
To speed up the process and consult with more patients, a form fill option will be added. Patients can electronically fill out forms before hand, so they can be ready, decreasing the time it takes for an appointment. This can also be used for patients to give the doctor an idea of the issue beforehand so the doctor can come prepared with the right advice/ treatments.
Appointment/Call History and Thread
Every time an appointment is made a new thread is made. In this thread you have chat history and call history as well as documents that you can always visit or continue if an issue or condition persists.
Doctors can prescribe medicine for the patients through the app and submit it to their default pharmacy. This should ease the flow for patients who are unsure of the medical process.
username: email@example.com password: a
username: firstname.lastname@example.org password: doc