Materials and Methods

Dependent Technologies

OpenMRS
OpenMRS is a platform to allow customized medical record systems to be built in developing countries and serve as a data model to be used and extended to serve as Raxa’s own. All of the data on the CHW application will be backed up with the OpenMRS server, including all registration of families, patients, and illnesses as well as all actions of visits and pill disposals.
 
Sencha Touch
A combination of HTML5 and Javascript, Sencha Touch 2 is a framework that allows the creation of applications that are suitable for iOS, Android, BlackBerry, Kindle Fire, and more. Easily customizable user interfaces will allow for more logical user experience to help account for low literacy and technology literacy. The ease of conversion to native applications for specific devices will also help facilitate offline syncing.
 
The Project
 
Demo
The working demonstration version of the application can be accessed at http://alok-sharma.github.com/Raxa-JSS/src/chw. Login credentials are user: admin/ password: Hello123. You can run it on a Webkit enabled browser (Chrome, Safari, etc). Or, to simulate the usage of a phone, enter the address on the emulator at http://www.testiphone.com. 
 
Code
The code for this project can be found at http://www.github.com/Alok-Sharma/Raxa-JSS. 
 

Functionality

Login
 

  • Change language between Hindi and English based on a global variable. All text strings are stored .properties files for their respective languages in the view folder.
  • Login to current OpenMRS server if connected. If not connected, compare entered username and password hash to stored BasicAuthHeaders.
    • Limitation: Must have connection the first time logging in to authenticate stored hash and only one person can log into the application without connection.
    • Also need to notify the village coordinator
  • Logout only sets the global variable of USER.name and USER.type

 
Organization of Patients
 

  • Navigate to patients based on family/household or illness/symptoms in basic tab panel.
  • Add a family based on “family” model (name, text location, description, and stored image) to “families” store. Famiy ID is generated by increasing global variable counter.
    • Decrease reliance on stored images and allow utilization of Ext.Camera and PhoneGap
    • Mark geographical coordinates of family using Google Maps API/GPS and calculate distance from CHWBase. Still need to create a way to calculate or mark CHWBase.
    • All of this information needs to be sent to the OpenMRS server as some sort of organizational feature, such as a cohort.
    • In addition to adding a family, the CHW should also be able to edit or delete the information about a family, with all the necessary syncing
  • Add a patient based on “patient” model linked to a family by a family id with name, age/birthday, gender, and stored image to “patients” store in local variable. Patient ID is generated by increasing global variable counter. This displays in the members tab of the family details.
    • Same problem with the Camera.
    • Send information to OpenMRS server as person and as patient. The OpenMRS server needs to be configured to include all other information (such as patient image)
  • Associate an illness that is hardcoded with model “illness” and store “illnesses” with a patient based on the “patientIllness” model (start/date in the “patientIllnesses” store. This displays in the history tab of patient details.
    • Decrease reliance on hard coded illnesses and fetch information for “illnesses” store from the list of illnesses on OpenMRS server. Make sure this includes all necessary information, such as illness image.
    • Possibly create an ID for this specific illness incident, so that this ID can be referred to in the visit records, etc.
    • Send information to OpenMRS server as an encounter.

 
Structure and Communication of Visits 
 

  • After navigating to the family details page, the CHW can press the green button to start the visit. Current is directed to a visit details page with task buttons generated based on selective list of various parts of the “visits” store.
    • Eventually create a wizard with deterministic answers based on the user story or general process of the CHW. For example, start with “Is anyone in the house sick” and continue based on a series of YES/NO questions. This will involve a lot of planning. Some features include figuring out based on the stores which families have sick patients and asking the CHW to monitor the existing illnesses before continuing with the regular check up visit.
    • Next step is to extend functionality and allow a village coordinator to assign specific tasks to the CHW for family. This will come in handy if the village coordinator receives any reports of emergency or abnormal illnesses.
    • After that, automated system logic will determine the schedule of visits and tasks at each visit based on the appointment schedule a CHW enrolls a patient in. For example, a CHW can enroll a patient in antenatal care and the visits and tasks will be scheduled based on practices. Eventually, both the CHW and the patient will be notified of this schedule. Need to figure out where this logic will be internalized--within the phone application or with the hospital--and how this information will be communicated.
    • Later, a notification system will be created in conjunction with the patient facing module that will inform patients of scheduled appointments, follow up summaries on visits, and reminders for continuing medication, treatment, or procedures. More about which service for SMS and how exactly this will happen needs to be investigated.
  • History of the visits is not included in the application at the moment, but eventually, a summary of all the visits that have occurred for a family should be recorded for the CHW but also reported to the hospital (village coordinator). Hopefully, this will also be available to the patients in the future as well through the patient facing module.

 
Inventory of current supplies 
 

  • Displays list of all drugs with image and amount based on the “pill” model and “pills” store. The color of the text for amount can be hard coded into the store as red.
    • Need to figure out how to embed the logic for determining if pill levels are extremely low into either the list or the view. Or else figure out how to update the hard coded pill color most efficiently. Also, the hospital should be notified when pill levels are low.
    • The information from the pill store should be synced from the hospital database. Should the CHW be allowed to add a different type of pill or should this just be synced from the hospital database? NOTE: Are we just creating an inventory of pills or also of other things (injections, mosquito nets, etc)?
  • After disclosing the pill from the list, more information about the pill can be found. There is a +/- button for decreasing the amount of pills but the functionality is not necessarily there.
    • More information about the pill should include charts and tables used by the CHW for dosage and other prescription information. Maybe this can be internalized into logic that will create a prescription based on various characteristics.
    • The +/- should not be necessary.
      • To add medicines, the hospital should just send a notification that more medicines are being sent toward the CHW and the CHW should just confirm when the supplies are received.
      • To decrease medicines, the CHW should just write prescriptions (or prescriptions are calculated) and assigned to the patients, with the amount of drug decreased accordingly. A record of this distribution transaction should be recorded for the CHW and also reported to the hospital (village coordinator and lab coordinator).
    • The question as to whether or not this will become like a mini lab or something similar should be figured out with more research.

 
Resources for education
 

  • CHW can see a list of of video, audio, and visual resources arranged alphabetically.
    • Probably need to figure out a more effective means of arranging the resources.
      • One step is to put some resources when the list of illnesses on the main page is disclosed. That way the resources are organized by illness and the CHW can refer to the audio/visual resources if necessary. This will be good for an introduction and basic information about the illness as well.
      • Next step is to arrange by type of resource--whether it is audio or visual or video
    • Is there enough room to keep all of the resources? What are the most optimal file types that will optimize for size and performance in application?
    • Would it be feasible to also give the CHW the ability to add, edit, delete resources? 

Planning  

Additional Questions
 

  • How reliable is the internet connectivity? How does this reliability differ for SMS? If both are similarly reliable, what means of communication would be used in the case of emergency and both data and SMS are not working?
  • What is the best way to implement offline sync? Should it be constantly trying to find the network and doing the sync? Should there be a manual sync? How much information is necessary to be synced at one time? If there is a manual sync, should the CHW be allowed to pick which aspects should be synced?
  • How reliable is the electricity? How long can we stretch the usage of the phone if there is no reliable source of power to charge the phone all the time?

 
Next steps
 

  • DESIGN: Try to figure out as much as possible about the CHW work flow from visiting JSS to see if the current functionality will mesh well or disrupt.
  • FRONT-END IMPLEMENTATION: Continue to flesh out some of the ideas that are presented in the document, if they are feasible and follow the CHW work flow.
  • BACK-END IMPLEMENTATION: Build the necessary resources for:
    • Add and sync families (names, image, location: gps/address) -- possibly cohort
    • Add and sync patients to families (names, image, location, bday/age, gender)
    • Add and sync illnesses to patients (location, start/end, treatment, notes)
    • Add and sync visits to families (and to patients?) (type, time, wizard/tasks)
    • Add and sync supplies (name, amount left/danger level)
    • Add and sync distribution (patient, illness, amount)