3.73 million Canadians don't have Internet access at all, while 15% of rural households don't have access to broadband (Statistics Canada). In remote regions of Canada, Internet access is usually of poor quality and extremely expensive. Knowing that the Internet is such a crucial tool for many people in assessing non-emergent medical conditions (e.g. WebMD, Mayo Clinic), we decided to create a tool that allow people to access these same resources, but solely through SMS.
What it does
Patients use SMS to send information such as their age, sex, and symptoms to TextMD, which returns to them several possible medical conditions they may have, ranked by likelihood. It also provides them a measure of accuracy for each of the diagnoses, in order to prevent unnecessary distress in patients. Additionally, TextMD uses the patient's address to retrieve information about doctors specializing in their illnesses and operating their vicinity and presents to the patient the doctors' names, operating hours, ratings, and addresses.
How we built it
Patient data is collected through SMS by using the Twilio API. The messages are handled by a route built with Python on the Flask framework. We obtained ApiMedic symptoms, grouped them based on affected anatomy and inserted them in a MongoDB database. In processing the patient raw data, we query the database to obtain an array of ApiMedic symptom IDs. This data is then used in an API call to ApiMedic Diagnosis, which returns the ranked conditions, diagnosis accuracies, and suggested specialists. Location data is then converted to latitude and longitude through the Google Geocoding API, which is then used in a call to the Google Places API to return specific information about doctors near the patient.
Challenges we ran into
We were unsure how to have maintain persisting data between different calls to the /sms Flask route, which is necessary to implement the differing logic that handles each piece of patient data. We were also new to using Twilio to call other APIs, and we had some bumps along the way when learning how to integrate our functions.
Accomplishments that we're proud of
We worked exclusively in Python, a relatively new language for all of us, without much trouble. We're pretty proud that we had a vision and a goal in mind to make social change, and created a project that makes a step toward a better world.
What we learned
We learned how to use Flask tools to maintain persisting variables between calls.
What's next for TextMD
We would like to explore using voice to obtain patient data and use machine learning to better process text.