Sunday, May 11, 2008

AndroMed and Google's Android Developer Challenge

I have briefly mentioned Google's Android Developer Challenge in one of my previous posts. The idea behind this challenge is to have developers work on mobile applications that run on the Android platform with the chance of winning a fair amount of money. Together with my soon-to-be-wife Mirela (which wrote the application server side), we have developed AndroMed, a mashup application that combines data, from the Unified Medical Language System Knowledge Source Server (UMLSKS) and Google Maps, together with the services described below, into a single integrated application. Here are the main features of our system:
  • Search and display descriptions for medical terms or drugs.
  • Provide location information in form of maps and addresses of hospitals/pharmacies using user’s current location and the medical term/drug searched for.
  • Display driving directions from user’s current location to the chosen hospital or pharmacy.
  • Open web site for found hospitals/pharmacies
  • Make a call to found hospitals/pharmacies
  • Send email with description of medical terms or drugs using your own GMail account.
  • Upload your own comments/notes regarding the term you have searched for.
  • View comments/notes written by other users regarding the term you have searched for.
The area of focus was divided between:
  • Humanitarian benefits. In Africa for example, where access to medical information, such as term descriptions, drugs, treatments and treatment facilities, is scarce, AndroMed will have an impact. Diseases like Malaria, Ebola Virus, AIDS are well spread in third world countries, but people there have little, if any, information about them. They could benefit either directly (although this is a little of a stretch considering that there are specific medical words used that have almost no meaning for an untrained person) from using the application, or indirectly from others using it (i.e. Non Government Organizations like “Doctors without Borders” that usually work in such places of the world). The “Future work” section of this document also mentions ways to improve the application for people with disabilities.
  • Use of mash-up functionality. AndroMed aggregates data from different sources (such as UMLS Knowledge Source Server and Google Maps) into one integrated application. For medical organizations that do not stay stationary for long (like the one mentioned above), we could get a schedule of were and when they will be, either directly or through their website.
  • Use of location-based services. Based on the user’s locality, we provide hospitals/pharmacies location information and directions.
Here are some screenshots of the application together with some positive and negative comments:

The reason why I provided a login screen is because we had to identify somehow each user if they wanted to write some comments/notes regarding the medical term or drug they were interested in; in addition, when reading the comments, we would use the name of the user to separate each one (as you will see in a screenshot shortly below). This login step might be discouraging for first time users because they would need to create a new account, thus going through an additional hurdle to get to the core functionality of our application. Of course for the challenge, we have created a test user so that the judges can skip the registration part. At this moment I wonder if we could have omitted the login process altogether are rethink the comments part.

Searching for a medical term or drug is simple and straight forward: just type in the term and click a button.

First of all, reading through this medical term description, you can notice that for a non-medical person, it is hard to understand. Terms such as "carcinoma", "epithelium", "bronchogenic carcinomas", "adenocarcinomas", etc, have (almost) no meaning for an individual that has no medical background. This is where the field of use for our application has narrowed considerably. For the Android challenge, your application should have a much (much much) wider audience.
Second of all, text buttons should have been replaced with icons. This is true for our entire application, not only for this particular screen. It has been noticed that people have responded better to images than to text (I'm sorry I don't have any references for this).

The concept of the comments screen is similar to a list example that comes bundled with the android sdk. Each user's comment is identified by the user's name. One user can have more than one comment, and his name will appear as many times as the number of comments he has. To be honest, I don't quite know how I could have designed this differently. I wanted to be able to highlight links, email addresses, phone numbers (make them 'actionable' - if this is a word), but even though I succeeded, there were some (focus) bugs when moving from one comment to another, so removed the highlighting part. More work would have been necessary, but in the time frame we had, I decided to add more features to the application instead of improving existing ones (bad decision on my part).

Based on the specific term searched for, the user has the option to find hospitals (or pharmacies) near to his own current location. We have used the default location provider that comes with the sdk. The blue ovals represent the hospitals, while the single red oval represents user's location. I was not happy with the way I designed this; if you take a look at how similar features are implemented by Google, you can conclude that our map screen falls behind.

Displaying the addresses and phone numbers of each hospital in a separate screen was a decision made after we had switched to the m5 sdk version, where I could not find a way to display the name of the location.

After choosing a hospital, one can either make a call to that hospital, open its website (both done through the phone's menu option), or find direction starting from the user's current location.

When implementing the map screen, location addresses and directions, I always new that they would fail in comparison with the current map solution offered by Google. I should have invested more time in making it better.

Below is some future work for our AndroMed application:
  • Add other languages to the application.
  • Add, when available, text-to-voice translations and voice recognition for people with disabilities.
  • Add icons instead of text buttons where possible since people tend to respond better and find applications that use icons easier to use and understand (people who cannot read).
  • Add a “Help” options menu to each screen of the application.
  • Find specific treatments for the medical term searched for.
  • Find clinical trials for the medical term searched for.
  • Replace Google Maps search with a more specific search from a medical database.
  • Cache on the Application Server results for frequently searched terms.
We do believe that our idea is unique in the sense that there is no current mobile solution that offers what we have implemented. There are dedicated websites (such as WebMD) but the browser experience on a mobile phone has still a long way to go; in addition, such websites are not optimized for the mobile experience, which makes them harder to navigate through.

Overall, working with Android has been a great experience. Without any doubt, it will have a big impact on the mobile platform front.

UPDATE: The quartile score results were emailed today. AndroMed is ranked in the top 25 to 50 percentile of all applications submitted. As expected, the effective use of the Android platform and the overall polish of the application lagged behind. The indispensability and originality were the features that closed the gap a little.

No comments: