Using ruby to fight AIDS – Jacqui Maher
Links:
- Github: baobabhealth
- Twitter: baobabhealth
- IRC: irc://irc.freenode.net/baobab
- Website: http://baobabhealth.org/
- Blog: http://www.baobabhealth.org/feed/
Baobab Health
Malawi based non-profit organization founded in 2000.
Baobab is a tree found throughout Africa and Australia. Local legend says the hyena that was given the baobab tree during the creation time planted it upside-down.
Baobab presented at RailsConf Europe in 2007. They knew of her interest in epidemiology, programming, Africa. She subsequently flew to africa, and visited the Kamuzu central hospital in Malawi.
She got to know the guys working there and what they do. Jeff Rafter was the main contact.
The main focus of Baobab is AIDS
AIDS in Africa
- 6.7 million
- 33 million 2 millions AIDS related deaths last year
- 1.5 million AIDS related deaths last year
- 1.9 mill new HIV infections last year
- 5% of adults
What does that mean? Africa post-colonial was on the upswing, but the AIDS epidemic took a giant toll, lowering the life expectancy from about 60 to almost 40 years old!
AIDS Impact:
- Lowered life expectancy
- Children orphaned
- Economic impacts
Malawi is a land-locked country in sub-Saharan Africa, with the 2nd fastest growing economy in Africa.
In 2002 a major famine, a major contributing factor to the deaths was AIDS.
- population 14 million
- 84000 deaths per year
- 250 new inffections daily
- 8 people die per hour from AIDS, leaving 1.5 million children orphaned.
- 280 doctors only
- 3500 HIV patients per doctor!
- long lines
- people leave
- complex registration form
- incorrect or missing data
- incorrect treatment
What can be done?
- more verifiable data
- accssible data (faster/shared)
Solution: Digitize important data:
- portable hardware
- touch screen laptops
- software: easy to use, validation, treatment protocols
- network connectivity: between clinics & the internet
- power: power outages happen often (several times per day), some places have generators/batteries
- collaboration: between clinics and organizations
- authority: your solution must be recognized, trusted, and respected
Baobab’s Solution
- save lives by improving patient treatment
- computerized data entry + retrieval
- portable work stations
- system based treatment protocols
Hardware (known as the I-Opener) is portable tablets with 56k modem. It bombed in US and Europe, but they got a bunch, and have hacked them to have Ethernet, Power-over-ethernet, Touchscreen, and a Bar code scanner.
Government has instituted a national health id as a barcode to help facilitate treatement. If you plug in a bar code scanner, you can read their data without even typing their name.
Bought I-Openers off of Ebay from the USA, the owner of which eventually donated 2000 units. Set up a wireless mesh network, which is ad-hoc node-base routing. It’s also self healing – if one of the nodes is down, you just skip right over it (very good for frequent and sporadic power outages). Power was provided by rechargeable batteries which can be used when the power goes out.
Software
- Ubuntu Linux servers
- Ruby On Rails
- MySQL
- Custom systems monitoring library
BART: Baobab Anti-Retroviral Treatment
- Data model: OpenMRS (Medical Research System)
- Templating using ERB
- Applcation calls via AJAX
- Testing with Rspec
- Reporting
The data model was complex.
The system as a whole accomplishes the following goals:
- Patient registration
- Encounters
- Observations
- Perscriptions
Registration
- enter a new patient data
- generate national id bar code
- scan an existing bar code
Encounters
- interactions with patients
- forms
Observations
- diagnoses
- disease progression
- vital stats
- patience compliance
- regimen progress
Perscriptions
- Drugs
- Drug ingredients
- Dosage and formulas
- Inventory
- Orders
When you are making $2 per day, you cannot afford a pill that costs $100.
Cool, so we’re done, right?
- working on refactoring for reliability
- Lots of tests in Rspec, but they are fighting on many fronts.
Barries to contribution
Presented at RailsConf in berlin, but there was not response, because they were not set up for people around the world to contribute:
- No public repository (SVN)
- No reliable internet access
- Patient data security
- Feature & Infrastructure development schedule
What did they do?
- Github – baobabhealth
- IRC – irc://irc.freenode.net/baobab
- Twitter – baobabhealth
- Employee Blogs – http://www.baobabhealth.org/feed/
- Website – http://baobabhealth.org/
Benefits of using
- More people see doctors
- Application contraints
- validation
- workflow guidance
- Easy to use interface: More people can help
- Gem the Janitor even learned to register patients (system is so easy to learn)
- Data collection enables extensive reporting
- International agencies can make decisions stategically based on this data
- Comparative Oberservations
Results
- experiment was a success
-
electronic patient administration is possible even in the developing world
-
and it’s better than the typical first world paper records
- and you can accomplish it using new state-of-the-art technology
Impact locally:
- creates a local development community
- inspire kids to program
- training in associated technologies
Ruby Community
- community consensus on best practices
- actively contribute to OSS
- accessible info on full stack
- superb interactive tutorials (like peepcode)
Why ruby?
- Elegant & readable
- Easier to learn offline
- Self contained documentation
- ActiveRecord: complex data models easier
- Execute SQL directory for more complex queries
Innovation
- urgent need for solutions
- old-school patient admin doesn’t work amidst an epidemic
- no existing infrastructure
- getting basic tools often requires thinking ouside the box
- alternative: death & disorder
If you have no existing infrastructure, you might as well start with the latest and greatest thing!
Questions
Q: Is the mesh network the same as the OLPC mesh network?
A: As far as I know, no. It is local to Malawi. It is an infrastructure mesh, not laptop to laptop.
Q: How widely is it deployed? Of the 280 doctors?
A: About 265 of them, so almost all. It has plans to go outside Malawi.
Q: How is Baobab involved with education and prevention of AIDS?
A: Baobab’s main focus is to deal with doctors and patients, not directly involved in prevention and education which is done by other groups.
Q: How are the african engineers learning about ruby and rails?
A: Some of them had no programming experience whatsoever, others knew .NET or PHP. They learned everything from scratch with peepcode and other tutorials. One of the best contributions we can make is to publish information on these best practices.
About the Author