Dear all:
We are all very grateful that you have spent so much time and given this question your valuable consideration. The messages posted to the group this week have been truly illuminating and helpful, at least to me, and serve as a great example of how discussions can really help a collaboration.
We do need to make a decision and move forward now. To take a step back, our motivation in this is to:-
1. Design Raxa to be a point-of-care system that is extensible and scalable
- work for other providers with similar needs to those at JSS
- be easily extensible by people wishing to customize and enhance the system for their own different needs
- serve as a potential platform for public health initiatives with large data
2. Design a system that would be able to withstand unreliable power and network availability (please see attached network diagram)
- work on server and clients in the few acres at JSS
- sync to a cloud server using an unreliable connection
- connect the cloud with devices at remote community health locations using less reliable wireless networks
but perhaps most importantly,
3. Actually create a system!
- our volunteer development model is good for evolution, not great for revolution
- we need to create a working system soon that we can iterate on
- We are biting off a lot as it is and it is important that we reign in aspirations until we have created something
Given these considerations, here is a 2-phase approach. Initially, we use the relational databases in OpenMRS and build out functionality in the backend to accomplish some of the (non-trivial) syncing that will allow us to deal with the unreliablility in the system. Subsequently (v2 for Matt), we add in functionality like CouchDB and CouchApps to make the application scalable, fault-tolerant and elegant.
Shuro