The module is developed for patient registration, and is able to create new patients including recording of relevant demographics and a standard national address hierarchy, identify previous patients, create barcode with unique ID, scan barcode, record patient vital signs, scan national ID and record which service the patient is attending.

The patient registration runs as a touch screen application. The module uses Baobab Touchscreen Toolkit to simplify the development of touch-friendly user interfaces without requiring each page to be individually and consistently customized for touchscreens. See http://github.com/baobab/touchscreentoolkit.

The touch-screen computers will be configured to start OpenMRS using this form .../openmrs/module/rwandaprimarycare/login/login.form

User guide

See Rwanda Primary Care User Guide



Get the latest version from the OpenMRS module repository

Setup instructions

Module configuration

  1. Download the module from the repository and install it.  This module depends on the idgen, addresshierarchyrwanda, and namephonetics modules, so these must be downloaded and installed prior to installing primary care.  The idgen module provides an architecture for assigning ID numbers to patients during registration.  The addresshierarchyrwanda module contains the entire address structure for the country of Rwanda, and provides an architecture for structured and unstructured addresses.  The addresshierarchyrwanda module (since version 1.2.3) provides an htmlformentry custom tag that essentially renders its AJAX-style rwanda address fields and then records the user-selected values to the database.   Finally, the namephonetics module ensures that searches by name are smart about common phonemes in the Kinyarwanda language.
  2. Go through settings (formerly Global Properties from platform1.8 downwards) and save all registration properties, in particular registration.serviceRequestedConcept, registration.rwandaLocationCodes and registration.primaryIdentifierType -- the Rwanda location code is expected to be the three-digit code assigned to each health center by the Rwanda Ministry of Health. For example, the three-digit code for Rwinkwavu Health Center is 416.  The primaryIdentifierType should be the identifier type that you just created for primary care registration IDs.   If there is the possibility of receiving transfer patients from other health centers where they may have received a barcode, setup the setting (formerly Global Property from platform1.8 downwards): registration.rwandaLocationCodes.  These are pipe delimited pairs of Health Centers by name, and Health Center MoH three-digit location code.  For example, a valid entry would be "Rwinkwavu Health Center:416|Kirehe Health Center:477|Rusumo Health Center|412".  (please verify your location codes before going live).
  3. Then, to prepare primary care-issued IDs, first make sure all idgen tables are empty, if migrating from a test database.
  4. Create a Primary Care ID Type – choose the Rwandan ID validator.
  5. Go into the idgen module administration pages, choose the primary care ID type you just created, and Local Identifier Generator
  6. Here's the base character set: 0123456789ACEFHJKMNPUWXY, First identifier base is: 00000001, and the length is 10.
  7. Click 'view', and test by exporting a couple of identifiers.
  8. Check the relationship type used during registration to record a patient's mothers and father's name (settings (formerly Global Properties from platform1.8 downwards) registration.parentChildRelationshipTypeId). If this settings (formerly Global Properties from platform1.8 downwards) is empty, check the database to determine the ID of the parent to child relationship type (or create one).
  9. You may need to add the core openmrs settings (formerly Global Properties from platform1.8 downwards) concept.temperature.
  10. You may need to add two privileges to the default user role – Manage Identifier Sources, and Generate Batch of Identifiers.
  11. In the name phonetics "Generate Phonetics for All Patients" page, select Double Metaphone for Given Name, and Kinyarwanda Soundex for Family Name and save properties.
  12. Generate name phonetics on this same page. (NOTE: this can run for a couple of hours, if you have thousands of names in your database).
  13. In Rinkwavu, we have overwritten a couple of core openmrs text properties.  To do this, in your OpenMRS runtime properties file, add the following line:   custom.messages=<<path>>/custom_messages.properties, where you set the <<path>> to wherever you want to create a custom_messages.properties file.  Then in the custom_messages file, add the following lines:

    PersonName.givenName=Christian Name
    PersonName.familyName=Kinyarwanda Name
    Person.name=Name (Christian name, KINYARWANDA name)

Firefox Kiosk

(Note:  this section already assumes that you have installed Ubuntu on your touchscreen, and that the touchscreen drivers are working correctly.  These do not have to be powerful machines in the least -- all the touchscreen has to do is run Firefox or Chrome.  In Rwinkwavu, we're using J2 touchscreens, which are heavy-duty, and suitable for outdoor use.)

1) Configure Firefox for the touchscreen user:

  1. At the terminal, run firefox -ProfileManager to open the profile management dialog
  2. Create a profile called Registration, set this to automatic
  3. Set firefox homepage to be touchscreen registration openmrs page 
  4. Disable all automatic updates (Edit > Preferences > Advanced)
  5. Install the _rkiosk _firefox add-on from the internet
  6. Find the Firefox profile folder in ~/.mozilla/firefox
  7. (optional) edit the pref.js file and the following line (this can also be set from about:config through the firefox interface):
    user_pref("rkiosk.navbar", true);
  8. Download _http://github.com/baobab/firefox-daemon/blob/master/default.profile/chrome/userContent.css and save it the _chrome _folder
  9. Find the folder for the rkiosk extension, and open chrome.manifest
  10. Remove the last line 'overlay chrome://mozapps/content/downloads/unknownContentType.xul .....' (barcode printing doesn't work otherwise)
  11. (added Feb 9, 2011)  We've run into a problem where the browser sometimes opens in offline mode if the internet is down, and then stays stuck in offline mode when the internet comes back.  To fix this, open the page about:config in firefox, and then change the value of 'browser.offline-apps.notify' to false.  This should prevent firefox from opening in offline mode, even if there is no internet.

2) Lock-down Ubuntu into a Firefox kiosk

  1. Go to System > Preferences > Startup Applications 
  2. Add a new startup program called Patient registration_ _and specify /usr/bin/firefox -P "Registration" as the command
  3. Uncheck the following programs: Check for new hardware drivers, Disk notifications, Update notifier
  4. Open gconf-editor and browse to /apps/update-notifier, and uncheck the the auto_launch option
  5. Open the file /etc/update-manager/release-upgrades as root and change the value of Prompt to never
  6. (optional) Add a shortcut to Firefox on the desktop, and also a shortcut to Firefox in safe mode (i.e. firefox -safe-mode)

3) Configure automatic login

  1. Go to System > Administration > Login Screen
  2. Click on Security, select "Enable Automatic Login", and select the name of your user in the box below it

7)  it is also recommended that once a firefox profile is established that works correctly in touchscreen mode, and prints barcodes correctly, that a tar file is created of the firefox profile, and that this tar file overwrites the existing firefox profile at startup.  We have seen several instances where the barcode file that is downloaded becomes linked to the wrong application, or the firefox homepage gets reset to something other than the touchscreen interface page in OpenMRS.  By restoring the firefox profile at startup, these errors can be fixed with a simple reboot.   

to create your tar file:  

1. go to touchscreen <<user's home directory>>/.mozilla/firefox

2. read the profiles.ini file to determine the profile folder used by the user when accessing the OpenMRS registration module.  This should be the profile that has the kiosk setup.  Mine was called i2c33y1i.Registration.

3. create the tar file with the command:  tar -cvf /home/<<username>> ./<<firefox profile folder>>.  For me this was tar -cvf /home/user ./i2c33y1i.Registration

4. chmod 777 on the newly created tar file in the user's home directory

5. now sudo to root and create an init.d script, referred to in these instructions as <<firefox reset script name>>, to unpack the tar file and overwrite the firefox profile at startup.  To do this create a text file with a name like 'firefox-reset' in /etc/init.d and chmod 755 on this file.

6. here are the file contents (fill this in with your local settings):

#! /bin/sh -e

tar -xvf /home/<<username>>/<<tarfile name>> --overwrite --absolute-names --preserve-permissions --directory /home/<<username>>/.mozilla/firefox

exit 0 

7. finally, to add the init.d script you've just created to the right run levels, type:   update-rc.d <<firefox reset script name>> defaults

That's it.

If the script doesn't work, or you want to stop running this script at startup, just type update-rc.d -f <<firefox reset script name>> remove

And, note, update-rc.d doesn't expect the path to your firefox reset script.  Just type the name of the file.  update-rc.d already knows to look in /etc/init.d.  

Barcode scanner

Configure scanner for pdf417, and code128

Need to download the manual and print relevant configuration codes; maybe we can make the beep less obnoxious

Barcode printer

See Barcode Printing for details of how to setup the barcode printers using CUPS.

Release Notes

  • 2.0.3
    • RPC-44 -Duplicates of parents should not be saved
    • RPC-43 - Handle MoH FOSA codes with less than 3 digits correctly
    • RPC-39 - NumberFormatException is thrown if age contains floating points
    • RPC-38 - Print ID Barcodes For Offline Use prints <spring:message code= ...
    • RPC-37 - Display only patient names in autocomplete name list
    • RPC-36 - set MIME type EPL in JSP
  • 2.0.2