|By Rich Sands, April 2006|
This month our focus is on mobility. Fabiane Bizinella Nardon is a Java Champion and represented Duke's Choice award winner, the City of São Paulo Integrated Patient Scheduling System at last year's JavaOne conference. Fabiane and her team have been hard at work on a ground breaking application that uses J2ME technology to link patients to their caregivers through their cell phones. This application combines an ingenious user interface with a sophisticated client-server architecture, and when deployed will help improve the health and well-being of Brazil's population, one patient at a time. Lets check in with Fabiane and see what she's been up to, and get her perspective on the real-world use of J2ME technology, the state of tools for developing Java mobile applications, and the Java Champions program.
Fabiane, can you tell us a little about your organization, VIDATIS - Sistemas de Informação em Saúde? You're the CTO, correct?
Yes, I'm the CTO. VIDATIS is a start up that was created by the Atech Foundation to create innovative solutions for healthcare. In the past years we created information systems for public healthcare, electronic patient records, hospital information systems and other solutions that make use of advanced technology to provide software that will improve the quality of the care.
So what is this mobile application you've been working on?
We've been working on a mobile application to monitor the health of patients using the cell phone. The software is a virtual creature - like those Japanese Tamagotchi virtual pets - that lives inside the cell phone and interacts with the owner from time to time asking simple questions. When the patient does not interact with the virtual pet for a certain time, the cell phone sends a SMS message to a care-giver and/or a member of the family alerting them that the patient is not responding and may need care. It also provides the geographic location of the person, thanks to the Java Location API. The software also alert the patients when they should take their medication and asks if the patient took the medication correctly. This application is useful for patients with diseases like diabetes, for example, that need to have someone constantly checking if they are ok, or for monitoring aged people that want to live an independent life, but also need constant monitoring.
We integrated this solution to our healthcare information systems, so when a patient receives a prescription from the doctor, the doctor can send the prescription to the cell phone and then the virtual pet will alert the patient when it is time to take the medication. We believe that this can improve the efficiency of the treatment, since it is very common for patients to forget to take the medication at the right time. AIDS patients, for example, have to take several drugs per day and taking them at the right time is very important. We submitted this application to the SIMagine Contest this year and we received the Special Jury Award, what was very important to us. Now that we have finished the development phase, we are at the point where we have to decide the best way to deliver this application to the largest number of patients. There are lots of people interested in using this application, both doctors and patients. Well, anyone that has to take medication on a regular basis knows how a virtual pet like this could help them.
Virtual pets! I do remember Tamagotchis - they were very popular! Do patients get to choose their pet? What was it like to design and implement the Virtual Pet interface using J2ME?
Yes, the patients can choose their pet and tell how they want the pet to behave. The patient can give the pet a name, tell the pet the interaction time interval, when the pet should sleep, etc. We tried to make a simple interface that would look good on many cell phones. J2ME was a good tool to develop this interface and we didn't have many problems on this part.
How has the cross-device compatibility of J2ME worked out in practice for you? Are you able to deploy Virtual Health Pet on anyone's phone that supports J2ME? What are the minimum requirements?
Actually, there is still room for improvement in the cross-device compatibility of J2ME. What works on the Sun Wireless Toolkit simulator doesn't always work on all the devices and what works on one device, doesn't necessarily work on others. This means that the applications have to be tested on a large number of devices before the deployment, which increases the cost of development. I would like to see in J2ME the same level of compatibility we have in J2SE. The virtual pet needs a MIDP 2.0 enabled phone because we need the Push Registry API to start up the application at the required time. A MIDP 2.0 compatible device is the minimum requirement.
Can you give us a little more detail on how you used the J2ME Push Registry API? Any problems you had to overcome or tips you'd like to share on what worked and what didn't?
The Push Registry API is used to wake up the application when it is time to alert the patient about medication times and also to wake up the application when it is time to interact with the patient. Actually, we didn't have big problems with the Push Registry API, but we had to struggle a little with timezones. Since we used time based schedules, it was important to schedule the alarm at the right time and only the GMT timezone is required to be supported by all mobile phones. So, we had to come up with an alternative solution for that.
In a previous email exchange with you, you'd mentioned that you wanted to use Java Card capabilities but this feature is not yet widely available. What additional capabilities will JSR 177 the Security and Trust Services API for J2ME make possible, once this JSR is deployed on more phones?
JSR 177 allows a J2ME application to communicate with a Java Card application. For us, this opens the possibility of having the medical data stored in the Java Card instead of storing it on the record store. This makes the application more secure and also allows patients to take the data with them when they change cell phones.
You're one of the JavaTools Community leaders on java.net. Tell us a little about the state of mobile Java tools, and what you used to build Virtual Health Pet.
There are some good open source tools available for J2ME development. J2ME Polish, for example, is a very good tool to build J2ME applications. The new NetBeans Mobility Pack is probably the best IDE available for J2ME development. There are some other useful tools also, such as mDevInf that gives you a searchable mobile device information database. Unfortunately, there are some key tools still missing, specially for Java Card applications. The Sun Java Card Development Kit is a free tool that allows you to develop and simulate JavaCard applications, but if you want to develop applications for SIM Cards, you will probably have to buy a tool for it, since we don't have good open source tools for SIM Card application development. I think that if we had good open source development tools for the Java Card platform, the power of this technology could be better explored. In the Virtual Health Pet we used both NetBeans and the Eclipse ME plugin. We also used the Sun Java Wireless Toolkit 2.3 and the Axalto Views tool to develop a version of the Virtual Health Pet that uses JSR 177 to store the patient data on the SIM Card.
What tools would you recommend for a J2ME newbie?
To learn I would recommend to start with the Sun Java Wireless Toolkit 2.3 and follow the tutorials. It is the best way to learn how J2ME applications work before moving to more powerful tools. Then, choose your favorite IDE and start your development.
Now that you're a Java Champion, what have you found most exciting about being part of the program?
It has been fascinating to be part of this program. What I found most exciting is to have access to the technical discussion lists where you can talk to other champions and exchange ideas with Java experts. I am very honored to be part of this program.
Fabiane, it is always fascinating to find out from you how Java technology is advancing the cutting edge of health care IT. Any new projects you are working on that you can share with SDN developers?
Healthcare is a fascinating field. Not only because it has many complex problems to be solved, which always demand good development skills, but also because when you develop a solution for healthcare, this can have a positive impact on the life of many people. Now, for example, we are working on new software that will implement the new Brazilian standard to exchange information between hospitals and HMOs, PPOs, etc. This will lower claim processing costs as well as guarantee the patient privacy and confidentiality. I am also working on my favorite project that is new software that uses a medical knowledge base and a semantic network to allow physicians to build personalized clinical forms to represent specific medical content, all in a flexible Ajax based web interface. This will improve the accuracy and the quality of the medical information and will allow for the exchange of electronic medical information in the network of healthcare providers. There are many technical challenges on this field and we hope the work we are doing now will help people to have better quality of care in the future.
RS: Thank you, and good luck with Virtual Health Pet!