Everyone knows the situation. You need to visit a doctor. They give you an appointment and you need to come in person, which involves travelling and extensive time spent in waiting rooms. For the record, people who suffer from arrhythmia are a specific example of this issue. They need to wear a specific monitoring device - Holter, often 24/7. The data from Holter must be manually extracted at the doctor's office, making the patient visit them multiple times a week. This makes for an unpleasant experience for patients, especially when they have to travel over long distances (e.g. rural areas).
We came up with a solution which can save time for both patients and doctors by connecting them virtually.
What it does
Medique gathers various vital medical data in real time using mobile platform APIs or different medical-based IoT devices, such as a smart thermometer or as mentioned earlier, a digital Holter.
The gathered data is then sent to Medique's backend cloud server, where it is stored securely for each patient. With the help of AI/ML, Medique's Intelligent Medical Assistant known as IMA constantly analyzes each patient's data and builds up professional medical reports via anonymous user profiling.
The patient is able to directly communicate with a doctor within a live chat, where they are able to share (with strict permisssions) their generated medical reports. This virtual meeting allows to save time for both. The doctor can analyze the detailed report and reply accordingly.
How we built it
Medique is an extended system consisting of multiple smaller modules, namely:
- Mobile app built in React Native responsible for data gathering and overall patient UI
- Backend cloud system built in Nest.js(Node.js) responsible for managing the whole system state and providing communication channels between respondents
- IMA machine learning service built in Python responsible for data analysis, user profiling and chat bot functionality
- PostgreSQL database for data storage
- Azure cloud for providing infrastructure solution necessary to run the whole system
- Web app (currently not implemented) providing extended UI for doctors
Challenges we ran into
To run such a robust system, we needed to come up with a special architecture and infrastructure. We chose Azure which fits perfectly for our needs. Since none of us has ever experienced creating and managing cloud infrastructure, it was fairly challenging to get it up and running correctly. Ultimately, we managed to set up the needed infrastructure within Azure services.
Another challenge for us was the implementation of Websockets to provide real time data gathering and communication channels. Due to multiple possible adapters of the Websockets standard, we needed to pick the suitable one for us. Finally, we decided to stick with Socket.io implementation, which was fairly new for all of us, therefore challenging to implement.
Accomplishments that we're proud of
Since we barely knew each other before the beginning of Hackathon, we weren't coordinated too well at first. Eventually, we got to know each other and learnt how to work together. Also we managed to successfully structure and deploy such a complex system infrastructure.
What we learned
- Mobile app development in React Native
- Real time data management and communication
- Cloud infrastructure development and administration
- How to properly pronounce Medique
What's next for Medique
Medique's architecture is completely modular. This allows the system to be expanded further in many different areas. To name a few:
- Implement a web application to provide UI for doctors
- Improve machine learning algorithms for IMA service
- Expand the communication network between multiple types of doctors where they can share your medical reports (with your permission) and automate the process of medical diagnostic assessment
- Vertical/Horizontal scaling