We are implementing an MNCH project in rural Myanmar : community health
workers and midwives are provided a smartphone with a diagnosis helper /
patient registry / medical files application. CommCare is our framework,
mainly thanks to its case sharing feature.
This mHealth project is a part of a bigger initiative that aims to build
capacity and support these CHW. Our main activity consists of monthly
We operate in Dala, a peri-urban zone very close to Rangoon. We’ll scale
the pilot project up to the Kayin (Karen) State at the end of the year,
a much more rural and politically sensitive region.
We are facing a connectivity problem. In the villages, connections are
unreliable at best and often unusable most of the time. My guess is the
network backbone doesn’t support the increased traffic incurred by the
mobile phone boom of the last 2/3 years. You can actually connect to the
mobile network, but the backbone seems so congested it becomes unusable.
We are talking pings to 18.104.22.168 > 30000ms here (no typo).
However, during the monthly refresher training meetings, we can sync the
phones using the ADSL connexion of our Dala office. It is slow, painful
and unreliable, but at least we can update and sync the devices. To give
you an idea, last time it took me an entire day to update 18 phones…
Obviously the situation will be much worse in Kayin State. We do hope
that the state of network connexions will improve in Myanmar with the
arrival of two new operators (Ooredoo from Qatar and Telenor from
Norway), either by building new networks or by forcing the current
operator MPT to invest and upgrade its current systems. However for the
time being connecting to a CommCare server over the internet will prove
to be a little complicated.
I was thinking about deploying our local installs of CommCare servers.
Each base would have a small, portable server coupled with a WIFI access
point (a laptop / small computer like a BeagleBone or Raspberry Pi and a
WIFI dongle configured as Infrastructure Access Point should do it).
During the monthly trainings, this server would be carried to the
training location. Users will directly connect through the LAN WIFI and
update / sync their devices. Back at the base, M&E staff could get their
reports directly from the server on the LAN. This portable server could
also be carried during the field visits that our monitors do on a
regular basis, hence syncing the devices more often.
With these portable CommCare servers, we wouldn’t rely on dodgy Internet
connexions, everything would be done over LANs.
In fact, local proxies
Apart from the obvious extra cost of buying / installing / maintaining /
backuping these servers, the main issue will be to keep all these
CommCare instances in sync in term of forms / users management /
application building. The last thing I’d want would be to manually
manage a cluster of unrelated CommCare installations : users connecting
to a local, LAN server should have access to the same data as if they
were connecting to a unique central instance. The distributed nature of
this architecture should be hidden from the user (granted, minus sync
delays between servers).
With this configuration, local servers would initiate connections and
sync to a central server overnight when connexion are more reliable.
They would push their forms gathered form the field and pull application
/ users / configuration / forms updates.
So I was wondering :
Am I over-engineering this stuff ? Is a simpler, more straightforward
workflow possible ?
Did someone already implement such an infrastructure ? How did it go ?
Does CommCare support such a feature already : local proxies ?
As a first step, even if the users management was totally
decentralized and not consolidated between servers, at least I’d like to
have reports and applications updated to local proxies on a nightly
basis. I see a cron job running a python script getting reports /
applications through the API from a central server then pushing these to
a local instance. Do you think it could work ?
My apologies for this long email…