Professional Documents
Culture Documents
OpenMRS is applicable in situations where you are working for an NGO or a non-profit
organization because OpenMRS is open source. Many other EMRs cost money, more than many
NGOs or clinics and hospitals in developing nations can afford. OpenMRS is extremely useful in
developing nations because it provides an EMR system that can meet the needs a clinic or hospital
in a place like Nigeria. OpenMRS is relatively easy to set up and use, which makes a good option
for resource poor clinics or hospitals.
Capabilities:
OpenMRS allows users to record and store information in a way that makes the information easy
to summarize and analyze. Users can create custom forms to fit the needs of that particular
hospital or clinic. OpenMRS can run on a basic computer and does not require internet access.
The concept dictionary can store all possible information and answers to questions that users will
need. This makes the system relatively easy to use. Modules allow users to install modifications
to OpenMRS to customize the program based on the different needs of each clinic/hospital.
Constraints
One major constraint of OpenMRS is that information cannot be shared between multiple systems.
Information stored on the program can only be accessed by specific users and cannot be
transferred between multiple sites. If a patient visits multiple clinics, there is no way to sync the
patient information each clinic records. OpenMRS also does not have system to facilitate drug
ordering and drug stock monitoring.
Hospital Set-up
Low-power laptop (2): $800
Smart Phone (2): $500 $2,000
Network Equipment: $200
Solar Suitcase: $500
Primary Health Care Center
Low-power laptop (1): $400
$1,150
Smart Phone (1): $250
Solar Suitcase: $500
How to implement OpenMRS on a Small-Scale vs. Large-Scale Basis
(Equipment and Energy Requirements)
Small-Scale Implementation
One case study, a small maternal clinic in Kaduna, Nigeria sees approximately 100 patients per
day. This clinic, like many in Nigeria, has rather unreliable power, and relies on a generator for
most of its electricity. There are two record-keepers, and there is no wi-fi or internet readily
available.
What we used:
• 1 Netbook (Asus Eee PC 1008HA; 1.66GHz Intel processor, 1 GB memory, 160 GB hard-
drive) – Runs all software (no specified “server”)
Large-Scale Implementation
For broad directions on larger-scale implementation (as described on the OpenMRS Wiki here:
[http://openmrs.org/wiki/OpenMRS_from_Scratch#Power_Infrastructure]),
consider a hospital in Kano, Nigeria that sees upwards of 300 patients per day, and has several
wards for various methods of patient care. There are approximately x record keepers, and no wi-fi
or internet readily available.
*Long battery life is a requirement for areas without reliable electricity. The energy requirements
should be relatively low for a small-scale implementation, and more demanding for larger-scale
implementation (though, in many areas, if possible, pairing energy implementation with
technology may be very beneficial to quality of healthcare).
** Emphasis on LOW-POWER netbook or desktop computer for many developing regions. The
biggest problem with computers and other technology in Nigeria, or other rugged areas, is the
fan. Dust storms plague the region, and fans bring dust into the computer, reducing the
computer's life drastically. The unreliable and unpredictable power availability is another factor
that should be considered when working on rural and developing areas.
Section 3: Equipment Set-up
How to set-up OpenMRS
First, know which operating system the computers that you will be using runs on. For Linux,
Ubuntu and Mac users, the process is much simpler, for Windows, it is necessary to install a
partition that runs off one of the above mentioned.
Here is a good instructional guide to installing an Unbuntu partition with VirtualBox if you have
Windows XP: http://www.psychocats.net/ubuntu/virtualbox
Items to Download:
-Sun VirtualBox
-OpenMRS software
Here is a guide on the OpenMRS wiki that describes how to both install the partition and
OpenMRS:http://openmrs.org/wiki/Building_a_Virtual_Ubuntu_Server_for_OpenMR
S
It is recommended that you download a WAR file for the program first, which can be found here:
http://openmrs.org/wiki/Downloads
Once downloaded, you can begin with the installation of the OpenMRS software.
Installing OpenMRS
1. Login and type the following to create the OpenMRS runtime directory:
" sudo mkdir /usr/share/tomcat6/.OpenMRS
sudo chown -R tomcat6:root /usr/share/tomcat6/.OpenMRS "
2. On the host, browse to http://localhost:8090/manager/html (or
http://ubuntu_server_ip:8080/manager/html if using Host Interface) to access the Tomcat
Managment webapp.
3. Under the heading Deploy > WAR file to deploy, browse to a copy of the OpenMRS 1.5
WAR file, and then press "Deploy".
4. Tomcat should report that the deployment succeeded.
5. Browse to http://localhost:8090/openmrs/ (or
http://ubuntu_server_ip:8080/openmrs/ if using Host Interface) to begin the step-by-step
installation of OpenMRS.
• Step 1: Select No under Do you currently have an OpenMRS database... and then
enter the MySQL root password. Press Continue.
• Step 2:
• Select Yes under Do you want to add demo data... (assuming you want
common concepts and some sample patients)
• Select No under Do you currently have a database user... and again enter
the MySQL root password. Press Continue.
• Step 3: Leave default values, and press Continue.
• Step 4: Specify a suitable admin password, and press Continue.
• Step 5: Leave values blank, and press Continue.
• Step 6: Press Finish to start the OpenMRS installation process, which will take a few
minutes.
You will need to have decent computer knowledge and some HTML knowledge to customize forms
for specific clinics or hospitals. W3 schools website is a good resource for learning some basic
code: http://www.w3schools.com/html/
There will be more instruction on the HTML forms in OpenMRS later in this manual.
How to Network Multiple Computers
In a hospital that sees many patients, it may be necessary to have a single server and several
other working computers connected to it.
Recommended Routers:
• Ubiquity Networks: low-power, rugged
• Green Wifi: battery-powered, low power, rugged (meant to be outside)
At the Kano installation, a WRT54g(L) router was used, but it has to be kept wrapped in plastic to
avoid being destroyed by constant exposure to dust. For areas, like Nigeria, where there are harsh
climate conditions, it is better to have weather-proof routers
Be conscious of power-use. Even with wi-fi capabilities, it is better if the computers are connected
to the router with cords.
1. Plug in the router and set it up according to instruction manual. Plug it into other
computers.
2. Find the address of the server computer. (ex: 192.160.13:8090 ). Save the server's
address as the "home-page" on a web browser for any other computers.
3. You will need to make sure that the address of the server stays the same. to do this, use
"address reservation".
4. DO NOT HAVE TWO COMPUTERS ON A NETWORK WITH THE SAME ADDRESS. To prevent
this assign a static address to the server, and assign a range of addresses to the other
computers being used.
For areas larger than a 150ft (45 m) radius, you will need another router. A router will usually
travel 150ft (45 m) indoors, and 300ft (90 m) outdoors. For very, very large areas, it may be
necessary to use a directional beam
Diagrams of how layout works at both the small-scale installation at FHU and the hospital in
Minjibir:
The initial assessment of a clinic should focus on aspects related to the clinic itself, the staff, the
patients, and how data management is being performed. Within these four categories, certain
data points should be assessed as follows:
Though data collection methods will depend largely on the context of the clinic (region, culture,
health services offered) and implementation staff, three valuable assessment tools allow for a
majority of clinical assessment to be administered:
• Participant Observation (PO): A observational methodology involving being around and
close to a group of individuals in order to better understand their methods and practices. In
this instance, PO is used to facilitate the evaluation of non-quantifiable measurements,
such as determining methods for data collection or evaluating unstated protocols a doctor
or staff member may use. Within a clinical assessment an implementer will ideally shadow
a staff member around and observe their daily duties, asking questions when relevant and
taking notes of their actions and methods related to how they do their job.
• Surveys & Questionnaires: Surveys and questionnaires are instruments used in the
majority of patient and general staff evaluation. They consist of a series of questions
requiring written responses making them ideal for collecting information of large groups,
such as a sample patient base. Furthermore they contain a large amount of standardized
answers which are significantly easier to quantify and differentiate in a post-
implementation setting.
• Workplace Visualizations: Workpalce visuals consist of detailed diagrams depicting where
and how information flows within the clinic. These are usually done over a schematic
rendering of the clinic or health center to allow for more accurate and location-based
representation.
As stated, each specific data collection method has its own place and purpose towards
aggregating a basic data set to aid in project implementation.
Collect forms
During the clinic evaluation collecting existing data log books and forms filled out by
patients is necessary to get an idea of which information is asked about patients and kept by the
clinic in terms of data management. In the context of openMRS, these forms will need to be
duplicated within the system to allow for the same data to be collected and avoid discrepancies in
patient data through a new MRS system.
One way to get people in a clinic/hospital to buy into OpenMRS to involve everyone at the clinic
and make them feel that they have a stake in the program. This will make get staff members
personally involved in OpenMRS and make them want the program to succeed. You should make
using and learning about OpenMRS a positive thing for everyone at the clinic.
You also should show staff members how OpenMRS will help them do their job. This could be
done by showing them how easy it is to find information about a patient or how much time
OpenMRS saves them.
How to teach staff members
A good way to approach training staff members is to train a few, key staff members and have
them then help train others. This helps people learn by teaching others and will help people who
do not speak English learn.
To interest staff members in training, you can offer to combine basic computer skills training with
OpenMRS training. Many people want to learn computer skills and this will provide people with an
incentive to learn OpenMRS. Any staff member can be trained to use OpenMRS, not just the
existing data entry clerk and anyone who wants to learn the program should be taught how.
Implementers should use step by step training, beginning with basic computer skills training, such
as typing, using the mouse pad, and scrolling down a page. This should be adapted based on
students’ needs and skills. Step-by-step training of OpenMRS should follow. This should include
hands-on teaching about how to add new patients, how to add data and how to search patients.
You could also teach a staff member to generate reports.
A concept dictionary is a collection of coded, unique concepts used to generate forms and
encode data within the system. In our concept dictionary, just about every medical concept we
use is defined within the dictionary. This is done in lieu of hardcoding concepts into tables.
For example, consider the following format of data:
Date Patient Sodium Creatinine Urine Color
Monday Smith 1.5 yellow
Wednesday Jones 142 0.7
This is easy to understand, but what happens when you decide to store glucose levels? You must
change the structure of your table. And -- heaven forbid -- what if the lab starts reporting
creatinines with a new reference range? Do you throw the new creatinine values in the same
column and worry about it later? Or do you end up a second creatinine column for the new
values?
Now consider the same data in the following format:
This format is slightly hard to grasp at first. Now there is one row per value instead of one per
patient. Rather than being text, the various observations are actually referenced from a
central concept dictionary. If the lab starts reporting a new type of creatinine, you no longer
have to change the structure of the table. You simple add a concept for the new creatinine into
your concept dictionary and you are done.
· Click “Add new Concept” link (located below the search box)
o You should open up a page titled “Creating New Concept”
Primary Name
The name should begin be completely specific. It is HEPATITIS B IMMUNIZATION,
not IMMUNIZIATION, HEPATITIS B.
Use all CAPITALS
Use only alphanumeric characters! (If this was a concept, there would be no
exclamation point.)
NO ACRONYMS – Abbreviations and acronyms are only used as synonyms!!
When necessary, always refer to the generic form, e.g. Ibuprofen, not Advil ©
When creating a term, use the full name. Example: Use the term HUMAN
IMMUNODEFICIENCY VIRUS, not HIV
To create a name:
· In the box titled “Name”, type in the name of the concept you are
creating
o Example: If creating a concept for diptheria tetanus and pertussis
vaccination, type “Diptheria tetanus and pertussis vaccination” in the
box
Short Name
Be smart – only use alphanumeric characters, avoid long phrases, and acronyms
that may have several meanings
To create a short name:
· In the box titled “Short Name”, type in the abbreviation (if one exists)
for your concept
o Example: For diptheria tetanus and pertussis vaccination, type
“DTAP” in the box
Synonym
Again, be smart! Use any other phrases or acronyms that people within your
organization may search for when attempting to use this concept. If you’re at a loss,
conduct a survey of possible end users.
To create a synonym:
· If concept has a synonym, click the “Add synonym” box next. A text
box should appear. Type the name of the synonym in the box.
Description
Without question, at the end of reading this statement, a you should have a good
understanding of the meaning of the concept
· In the box labeled description, type a brief description of your concept
Class
Is it a set?
If you answered yes to either question 2, 3, or 4 above, check this box! Otherwise
you won’t be getting much functionality out of the concept.
Datatype
Version
This is completely up to you.
Use any method you think works for you.
Use a method that will be easily recognized and utilized by all other OpenMRS users.
Be consistent with your method across all concepts.
The following breakdown shows this branched process, with the Patient and Baby being separate
patient entries, but utilizing the VITAL SIGNS concept group, containing Blood Pressure, Weight,
and Height. In the concept dictionary, weight and height are individual concepts that are used on
a per patient basis, as opposed to having an individual concept for PATIENT WEIGHT and BABY
WEIGHT.
· PATIENT
o VITAL SIGNS
§ Blood pressure (Concept number 1)
§ Weight (Concept number 2)
§ Height (Concept number 3)
· BABY
o VITAL SIGNS
§ Blood Pressure (Concept number 1)
§ Weight (Concept number 2)
§ Height (Concept number 3)
1. Download the “html form entry module” through the “manage modules” link under Modules in
the administration menu. You can also download it at
http://modules.openmrs.org/modules/view.jsp?module=htmlformentry
2. Once the module is downloaded you will see it in the administration menu on the left as HTML
Form Entry.
3. Now that the module is up and running you will be able to edit existing forms with HTML as well
as create new forms. First we will discuss how to create a new form.
4. The first step to create a new form is to click on manage forms under Forms in the
administration window.
5. Once you are in the Manage Forms menu you can either Add Form or Choose form an existing
form. We are going to make a new form so you can choose between two different actions
• One, is clicking Add Form which will bring you to a window with blank
Name,Description, Version, Published, etc.
• The other is by selecting the duplicate drop down which will give you the selection
of basic form. This will be a template of a form.
6. Once you select either, you must give the name of the form, and a description.
7. After you name the new form you must create the Schema.
• The Schema is basically going to be the basic design of the form, and will be
almost and outline for your HTML form creation.
8. To make a schema you must identify the key concepts on the form and list them in a similar
order of the hard copy or of what you plan the digital form to look like
9. Once the Schema is created you can create or edit the HTML code for that particular form.
10. To do this go back to the administration, go under HTML Form Entry, and select Manage HTML
Forms.
11. Manage HTML Forms will bring you to a list of all of your HTML forms. Here you can select
your new form or any existing form in the list to edit.
12. Example of existing HTML code from a form:
<htmlform>
<style>
table th {text-align: left;}
span.sectionHeader {font-weight: bold; text-decoration: underline;}
td {vertical-align:top;}
tr {padding-bottom:2em;}
</style>
<macros>
lightgrey=#e0e0e0
lightblue=#e0e0ff
</macros>
<section headerLabel="VISIT">
<table>
<tr>
<th>Date</th><td><encounterDate default="today"/></td>
</tr>
<tr>
<th>Clinic</th><td><encounterLocation default="2"/></td>
</tr>
<tr>
<th>Provider</th><td><encounterProvider/></td>
</tr>
</table>
</section>
<br/>
<section headerLabel="DEMOGRAPHICS">
<table>
<tr>
<th>Patient Name</th><td><lookup expression="patient.personName"/></td>
</tr>
<tr>
<th>Date of Birth</th><td><lookup expression="patient.birthdate"/></td>
</tr>
<tr>
<th>Patient Number</th><td><lookup class="value"
complexExpression="#foreach( $patId in $patientIdentifiers ) $!patId #end"/></td>
</tr>
<tr>
<th>Mother's Name</th><td><lookup class="value"
expression="personAttributes.get("Mother's")"/></td>
</tr>
<tr>
<th>Father's Name</th><td><lookup class="value"
expression="personAttributes.get("Father's")"/></td>
</tr>
</table>
</section>
<br/>
<section headerLabel="Client History">
<br/>
<table>
<tr>
<td><b>Level of Education</b><br/>
<obs conceptId="6125" answerConceptId="6124"
answerLabel="None"/><br/>
<obs conceptId="6125" answerConceptId="6120" answerLabel="Some
Primary"/><br/>
<obs conceptId="6125" answerConceptId="6121" answerLabel="Primary
Completed"/><br/>
<obs conceptId="6125" answerConceptId="6122" answerLabel="Some
Secondary"/><br/>
<obs conceptId="6125" answerConceptId="6123"
answerLabel="Secondary Completed or More"/>
</td>
<td><b>How did you learn about this family planning service?</b><br/>
<obs conceptId="6134" answerConceptId="6126"
answerLabel="Clinic Personnel"/><br/>
<obs conceptId="6134" answerConceptId="6127" answerLabel="Outreach
Personnel"/><br/>
<obs conceptId="6134" answerConceptId="6128" answerLabel="Radio"/><br/>
<obs conceptId="6134" answerConceptId="6129"
answerLabel="TV"/><br/>
<obs conceptId="6134" answerConceptId="6130" answerLabel="Print
Media"/><br/>
<obs conceptId="6134" answerConceptId="5618"
answerLabel="Friend/Relative"/><br/>
<obs conceptId="6134" answerConceptId="6131" answerLabel="Other
Clinic"/><br/>
<obs conceptId="6134" answerConceptId="6132"
answerLabel="Community Health Worker"/><br/>
<obs conceptId="6134" answerConceptId="6133"
answerLabel="Other"/><br/>
<br/>
</td>
</tr>
While this code is just a selection from a possible existing form you can see how the form is
generally organized.
14. Once you think you are finished with your code, you should preview it at the bottom of the
editing page to see if the format is how you wish.
15. Finally, when you have finished coding and previewed the new HTML form you can save it,
and it officially becomes a new HTML form within your OpenMRS database.
1. From your OpenMRS home page click on the "Cohort Builder" tab in
the upper right.
2. From the Cohort Builder page, you begin searches by either selecting observations
or defining patient attributes. For this example, we need to do two searches; one for "still
births" (the observation), and one for "females age 15-25" (the patient attributes). Then
we need to combine them to determine the overlap.
3. First, type the concept/observation "still birth" into the search box. As you type possible
results will appear below that you can select from. Select the desired observation.
4. Select a date range, then hit "search". This search will then appear your search history
and can be used in combination with others or saved for use in Cohort Reports.
5. Next, do a patient attribute search for females age 15-25.
6.
4) Manage Templates:
• Allows an admin to edit what the cards look like
• Requires the "Manage Id Card Templates" privilege
• Global property settings
• idcards.generateMin
• The lower bound number used when "Printing Empty Id Cards"
• idcards.generateMax
• The upper bound number used when "Printing Empty Id Cards"
• idcards.enableIdentifierGeneration
• Hides / displays all UI elements which do identifier generation
in the idcards module
• idcards.enablePrintingUploadedIdentifiers
• Hides / displays a new form for printing identifiers that are
uploaded from a file
Mobile Applications
Systems are evaluated under the basis of whether they accomplished their goals outlined in their
original proposal. Through this we are provided with a basis for evaluation, and seek to determine
whether and how effectively those goals have been accomplished. In general, most
implementations of an OpenMRS system attempt to accomplish the following, and are evaluated
therein:
One of the most substantial observations when paper-based record systems are upgraded to
digitized versions is the substantial cut in time needed to gather and report relevant data.
National reports that would normally take a number of weeks to gather, and which were often
accurate, could be generated near instantaneously and retained accuracy. An OpenMRS system
can be easily evaluated by the difference in time needed to generate those reports and gather
data, as previous data has already been collected during the initial assessment.
Depending on the location, sustainability can be a large factor in determining the impact of an
OpenMRS system. In regions where power is inconsistent, OpenMRS systems can be hindered
without alternate means of electricity. Evaluating an OpenMRS system on how well it remains
operational is important, since once implemented it becomes a necessary functioning part of a
clinic as a whole.
• Improvement of data accuracy
Considering the chaotic nature of paper based records, data accuracy is a key focus point for
evaluating clinics. Inaccurate data skews diagnoses on a local level as well as skew regional
statistics, so an OpenMRS system should be observed and evaluated on the terms of how much
better data integrity is preserved.
As successful clinical systems deal with an immense amount of data on a daily basis, improving
the capacity to transfer, input, and query data saves both money and time within the clinic. As
doctors, for example, are spending less and less time gathering patient data, they are spending
more time doing their job: being doctors. The clinic is then not only saving money, but improving
the capacity of staff members to do their job.
Conclusion
So here are the essentials for implementing OpenMRS, specifically in developing and rural areas.
We hope that this manual can be a comprehensive guide to serve for the needs of your project
regarding OpenMRS. More information can, of course, be found in the OpenMRS wiki, located
here: http://openmrs.org/wiki/OpenMRS_Overview
*** The GIIP installments of OpenMRS are for retrospective data entry, not point-of-care. There
are some differences between these two methods.