STI mediHelper
Student Project
Android App Proof of Concept
Team Members: Zenson Lim, Kevin Heng, Samuel Chee
Overview
STI MediHelper is an app I developed with a team of 3 as part of my Technical Design Methods module. It uses a series of questions and a simple Artificial Intelligence along with a KNN classification algorithm in order to help the user determine their likelihood of having an Sexually Transmitted Illness (STI) along with what it could possibly be.
Problem
A common adage is to never trust the internet for medical advice as it is difficult for search engines to process the symptoms and generate results. It is also difficult for patients to understand what symptoms they have that indicate something, and to make things worse, usually multiple diagnoses are displayed, which patients have no idea which to pick from.
Additionally, going for medical checkups may be costly and takes quite a bit of waiting time. Some companies do not provide thorough yearly medical checkups for their employees, leaving them to take care of their health themselves. And if something occurs, not only do these individuals need to be burdened with the cost, but also leave their job if conditions arise.
When it comes to STIs there is also the additional barrier of social stigma. Many people might feel embarrassed to see a doctor when it is related to STIs as they do not want to share their sexual history or other confidential information, this can lead to serious consequences. If they were to use an app instead, it would lower the social barrier to almost nothing, after all who cares what a robot thinks? Thus, the person might be encouraged to see a doctor if they have a serious condition.
Inspiration
This idea of using Artificial Intelligence (AI) for medical diagnosis is partially inspired by the Akinator app. Wherein the player thinks of a character, fictional or otherwise, and is asked a series of questions by an AI which allows it to eventually narrow it down to a single character. The first time I used this app it felt like magic to me, I was thinking of a random actor and as the questions went on, they got more and more specific, almost as if the AI was reading my mind.
This was many years ago, AI and Machine Learning has since advanced by leaps and bounds. What was once an interesting distraction could now possibly be applied to more serious and useful applications, perhaps an AI that was trained on the methodology used by doctors when performing diagnosis. If an AI is provided a large dataset of patients, symptoms, medical conditions and medical history, it could provide probabilistic results on what could be ailing patients.
The patient would enter their information, age, sex, medical history and other relevant data along with any symptoms they’ve noticed. The AI could then process this data, and ask questions that would eliminate or reduce the chances of certain diagnosis. We decided to narrow the scope of the app down to just STIs to reduce the complexity of the questions and algorithms required, and it also seemed to be the most needed as it had the highest social stigma attached.
Implementation
This project was run over the course of 3 months alongside with my larger scale project, Mind Over Matter, along with several other school modules at the same time. Fortunately, it was meant as more of a proof of concept, and was not meant to be polished. We were also permitted to use Unity instead of making a custom engine as we often have to do for other projects. It was a great experience familiarising myself with unity, especially the mobile app development side as I did not have much experience with it before this.
We realised that our app would never be perfect and would be more focused on probabilistic estimation of STIs rather than an extremely accurate diagnosis. Thus, we researched on the various contributing factors to various STIs, using information pulled from organisations like the WHO. We then came up with a series of questions that would increase or decrease the probability of the user having an STI, and a list of common symptoms.
Machine learning
I was unsatisfied with the basic AI we were using however, and set about implementing a simple K-nearest neighbours classification algorithm, using the symptoms as various points and the final diagnosis as the test result. One of the challenges was implementing the algorithm in C# as I had always used python for my machine learning coding, thus I became much more familiar with the usage of C# and its various libraries. My idea was to use medical data with a list of symptoms and diagnosis as the test set, in order to determine the STI. Unfortunately, it is extremely difficult to obtain medical data as a student, as such I used dummy generated data and the algorithm is mostly a proof of concept.
Closing Thoughts
This project was very interesting as it was quite different from my regular projects which all involve game development. It was made with the idea to be sold to companies as a traditional app and shifted my focus in a new direction. Working with my team was also a great blessing and I enjoyed my time together a lot. I gained much greater familiarity with Unity, C# and mobile app development, along with time management skills key to juggling multiple projects and milestones at once. A huge thank you to both my teammates Zenson and Samuel.