Open Data Kit and Other Technologies Use of Java in the Third World
description
Transcript of Open Data Kit and Other Technologies Use of Java in the Third World
Open Data Kit and Other Technologies
Use of Java in the Third World
Steven M. Lewis PhD
Computation and the Third World
Information technology has changed our lives
That technology has not penetrated the third world to the extent that if penetrates out lives
The constraints of developing for the third world are different
Challenges for the Third World
Connectivity cannot be assumed.
Power cannot be assumed
Services cannot be assumed
Money is a huge issue
Literacy cannot be assumed
Connectivity cannot be assumed
Many Villages are not wired
Wireless may be the only communications
Even this may be unreliable
Power cannot be assumed
Power may not be available
Even when available it may not be reliable
Services Cannot Be Assumed
Systems placed in villages will not be maintained
Parts will not be available
The knowledge to repair any issues cannot be assumed
Money is a huge issue
The cost of a laptop is more than the average yearly income in many countries
In India a cell phone can be bought for $12
A village might have a single cell phone
Literacy Cannot be assumed
What Device is going to have Impact in the third world?
???
Cell Phone Advantages
Very Portable
Cheap and getting cheaper
Solves problems with intermittent and rarely available power
Automatically solve the problem of connectivity
Is sealed, self contained, rugged and very reliable
Moral -
Today we talk about mobile devices as the wave of the future.
In the third world they are the only widely available computing platform
Effective solutions today need to consider the cell phone as the primary platform.
Problem – Matching Fish to Markets on the India Coast
Problem – Fishermen in India can deliver their fish to one of several markets
If a market has more fisherman than buyers, the price for fish will be very low
If there are few fisherman and many then the price will be high
Spread of Cell Phones
Effect of Cell Phones on Fish Prices
Moving Away from Paper
Community Health Workers17 Must bring health care to people
First line of defense
Routine, regular home visits
Know their community
Eyes and ears for local health
Provide education for best practices
Current methods18
Little, if any, supervision
Paper-based forms – ad hoc design
Long time-lag to usable data
No historical data
Our Goals19 Standardization of data
Rapid data aggregation and
analysis
Supervision of CHWs
Connection to health records (OpenMRS)
CHW + phone => Flexible, efficient platform for:Better home care (checklists, protocols, etc)
New outreach programs
Outbreak detection
Improved disease surveillance
Open Data Kit
Open-source data collection tool kit Collaboration between Google & UWashingtonForms + GPS + Picture + Barcode + Audio + Video …
Initially targeted at public health applicationsCurrent deployments in Uganda and Kenya http://code.google.com/p/open-data-kit
20
Open Data Kit Toolset
Collect – Android client for data entry
Aggregate – App Engine server for data collection
Submit – multi-transport layer async data transfer
Manage – remote management tools for config
Tasks – assignment of tasks to specific workers
DB – connect forms to existing DBs for browse/update
Viz – visualization of data on graphs/maps
Super – supervisory dashboard for mobile supervisors
Planner – day planning tools for workers
SMS – communication/notification with community
21
Open Standards –in JavaXforms – W3C
Same data collection forms can run on any platform
Standard HTTP client/server APIs
Allows for different server implementations
Android
Open source platform with multiple implementations by different vendors (HTC, Samsung, …)
Example: DataDyne/Episurveyor & Open Data Kit
Same forms (but different capabilities)
Data can be submitted to either server
Allows deployments to use mix of platforms
22
ODK Collect
A tool build on top of XForms
Using JavaRosa (XForms for Mobile Devices) for data collection and submission on the Android
What is XForms
XForms is an XML standard developed by W3C for specifying Forms in XML
Example
Oberon forms
JavaRosa: XForms on Mobile Devices
JavaRosa
Supports a supports a subset of the xform standard
Questions are asked one per screen
Supports many phones
Written in Java ME
Open Data Kit- ODK Collect
Android library written to support JavaRosa Forms.
Supports Standard Types – text, number date, select, multiselect
Supports Bar Code, Picture, GPS inputs
Supports upload to a server running ODK Aggregate
A Little About The Android
Android should be on Java Developer's Radar
Its native language is Java
It supports full JDK 1.6
The platform is open source
Well known tools such as Eclipse and IntelliJ have Android plug-ins
Application distribution is much less controlled
Build it and they will come!
ODK Form demonstration
Form Elements
Language SectionDefine Keys for all Supported Languages
Instance SectionDefine Structure of the data
Binding SectionAnnotate requirements
Define Conditions
Input SectionDefine Controls
Language Section <itext>
<translation lang="english" >
<text id="Male" ><value>Male</value></text>
<text id="Female" ><value>Female</value></text>
<text id="Sex" ><value>Sex</value></text>
</translation>
<translation lang="german" >
<text id="Male" ><value>M�nnlich</value></text>
<text id="Female" ><value>Weiblich</value></text>
<text id="Sex" ><value>Sex</value></text>
</translation>
</itext>
An Aside on Translation
Google has a very nice API for translation
Machine translation is good for a first cut
Is also good for field use where a translation is needed and not translator is available
Automatic tools to add needed entries to multiple language bundles are easy and worthwhile.
My tools build the language section from language bundles
Translate Code
import com.google.api.translate.Translate;
import com.google.api.translate.Language;
public static final String WEB_SITE = "http://code.google.com/p/i18n-translator/";
public String[] translate(String[] input, Language from, Language to) throws Exception
{
Translate.setHttpReferrer(WEB_SITE );
System.setProperty("http.proxyHost", "proxy");
System.setProperty("http.proxyPort", "8080");
return Translate.execute(input, from, to);
}
Instance Section <instance>
<Student2_Registration><Name/><Sex/>
<FemaleQuestions> <StartedMenstruating/> <Pregnant/> <StartMensesAge/> <Child jr:template=""> <Name/> <Sex/> <Age/> </Child> </FemaleQuestions> <MaleQuestions> <Circumcised/> <MasterbationRate/> </MaleQuestions>
...
Binding Section
<bind nodeset="/Student2_Registration/Name" type="string" required="true()" />
<bind nodeset="/Student2_Registration/Sex" type="select1" required="true()" />
<bind nodeset="/Student2_Registration/FemaleQuestions" relevant="selected(/Student2_Registration/Sex, 'Female')" />
<bind nodeset="/Student2_Registration/MaleQuestions" relevant="selected(/Student2_Registration/Sex, 'Male')" />
<bind nodeset="/Student2_Registration/Birthday" type="date" required="true()" />
Input Section <input ref="/Student2_Registration/Name" >
<label ref="jr:itext('What_isYourName')" />
</input>
<select1 ref="/Student2_Registration/Sex" >
<label ref="jr:itext('What_isYourSex')" />
<item>
<value>Male</value>
<label ref="jr:itext('Male')" />
</item>
<item>
<value>Female</value>
<label ref="jr:itext('Female')" />
</item>
</select1>
...
Tools
PurcForms a GWT based tool for editing XForms
ODK Forms Designer a GWT tool specifically targetted to ODK
Annotation Based Generator
ODK Aggregate
Infrastructure for Storing results
Build on top of Google App Engine
Demo http://lordjoedev.appspot.com/
Deployments44 Kenya
HIV,300
CHWs
Tanzania e-IMCI, 5 clinicians
Sample Applications
Sample Applications
Sample Applications
Crisis Management - Haiti
Person Finder Demo
http://haiticrisis.appspot.com/
Person Finder Results
Other Applications
Open MRS
Patient Search
Open MRS
Demo
I-TechI-Tech (International Training and Education Center for Health
Health Workforce Development
Operations Research and Evaluation
Prevention, Care, and Treatment of Infectious Diseases
Health Systems Strengthening
http://www.go2itech.org/what-we-do
Where is the Java?
MRS and LIMS
“In every country where I-TECH works, health needs and program goals are best met when local laboratories and services are reliable, consistent, and readily available.”
Electronic Medical Record Systems (MRS)
Laboratory Information Management Systems (LIMS)
[ http://www.go2itech.org/what-we-do/heath-systems-strengthening/laboratory-systems-strengthening/laboratory-systems-strengthening ]
Summary
In the first world the cell phone is the wave of the future
In the third world the cell phone is currently the main line computing device.
Cell phones can make a huge difference in the absence of viable alternatives.
The University of Washington has a very active program in this area
Getting Involved
Work with the CHANGE group at the University of Washington
Subscribe to the developers mailing lists for ODK and JavaRosa
Contribute time and code.
Project Links
Open Data Kit
Open MRS
University of Washington Change Center
Crisis Mappers
ODK Use
Demo
http://demo.openmrs.org/