From Zack, RJ, Boyuan and Clark:
*This is what the system can currently do:
1) Load a doctor-defined form and run it. We call these forms “procedures.” Procedures can prompt using various entry techniques (check boxes, radio buttons, text entry, etc.) and they can acquire various types of data (currently pictures and sound)
2) If pictures are acquired, multiple pictures can be taken and reviewed. In the review dialog, health workers can zoom in and pan across the photo. They can then select which photo(s) they want to send back.
3) The procedures fully support branching. This means that questions can be set up to be displayed depending on the answers to previous questions. For example, if a question asks “where is the pain?” and the person answers “chest” then a series of specific chest pain questions can follow.
4) The health worker can see the current progress of the procedure at all times via a progress bar in the title.
5) The acquired data is sent back in a packetized format. We are still working on packetization and off-line synchronization, but we are currently able to do some rudimentary upload packetization.
6) The filled-out form along with pictures, sounds, etc. is sent to the MoCa Dispatch Server, a program that communicates with the mobile phone app, does the data packetization/integrity checking, and sends the data to OpenMRS. The MoCa Dispatch Server currently uses an OpenMRS “plugin” we wrote. This means that we can write other plugins for the dispatch server so that, in the future, we can support other records systems if we please.
7) OpenMRS receives the picture and question/answer pairs. This information is tagged to a patient and can be accessed via the “medical images” tab in OpenMRS.
A queue running on OpenMRS lines up all pending diagnoses awaiting physician review. Clicking on one of the records brings up the question/answers and the image. The image is pan/zoom-able.
9) The physician can annotate the image with his/her diagnosis. Upon making this annotation, it will be immediately sent to the phone that acquired the data. The physician can see the phone number of the phone that sent the data, so he/she can call the health worker too.
10) As soon as this annotation is made and sent to the phone (via SMS because it is cheaper and more reliable than GPRS) the phone gets a pop-up saying that a diagnosis has been received for the particular patient number. The health worker has the option of bringing up a window to see the full annotation sent back from the physician, or he/she can dismiss the pop-up and look at it later.
As you can see, we have a complete end-to-end solution in place. While there is still a good deal of work ahead, we now have something that works. I’ll send out screenshots once I get a chance to grab some.
I registered a SourceForge Open Source project and it was approved today. They will host the code and allow others to contribute to the project. I have also set up a Documentation Wiki at http://www.mocamobile.org/development/. There currently isn’t anything on the Wiki, so in the coming few weeks we will want to start documenting the system.