GoGaRuCo '09 – Using ruby to fight AIDS – Jacqui Maher

April 18, 2009 David Stevenson

Using ruby to fight AIDS – Jacqui Maher


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

GoGaRuCo '09 - Jacqui Maher

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?

GoGaRuCo '09 - Jacqui Maher

  • 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.


  • 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


  • enter a new patient data
  • generate national id bar code
  • scan an existing bar code


  • interactions with patients
  • forms


  • diagnoses
  • disease progression
  • vital stats
  • patience compliance
  • regimen progress


  • 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?

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


  • 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


  • 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!


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


GoGaRuCo '09 – Lightning Talks
GoGaRuCo '09 – Lightning Talks

Lightning Talks Bosco is introducing the speakers. Come to the ruby meetup! Jeff Smick - Blather Simpl...

GoGaRuCo '09 – Using Shoes to create better iPhone apps – Tim Elliott
GoGaRuCo '09 – Using Shoes to create better iPhone apps – Tim Elliott

Using Shoes to Have Fun - Tim Elliott Intro He rode his bicycle from Chico. He works at Trevidia, and is...

SpringOne 2021

Register Now