Wiki Spaces


Get Help from Others

Q&A: Ask OpenMRS
Discussion: OpenMRS Talk
Real-Time: IRC Chat | Slack


Page tree

Versions Compared


  • This line was added.
  • This line was removed.
  • Formatting was changed.
Comment: Update link to go to OpenMRS Add-ons index instead

Table of Contents


The heart of any institution is its people and , the OpenHMIS project is creating tools to enable help that "heart" to run beat more smoothly. Providing quality medical services is a challenge and, while OpenMRS is a great help to meet toward meeting that challenge, but it does not directly address the administrative needs of a medical institution. This is where the OpenHMIS modules come in: we are creating OpenMRS modules that provide the tools to help institutions run more effectively.


  • Stock Operation Requests
  • Automatic Item Stock Replenishment
  • Supplier Management
  • Support for External Inventory Systems




VersionReleasedRelease Notes
1.0Soon! 24-Sept-2014 

1.1 Notes

1.315-Dec-20141.3 Notes
1.413-Feb-20151.4 Notes
1.519-Mar-20151.5 Notes
1.6 - 2.029-Apr-20151.6 - 2.0 Notes
2.110-Dec-20152.1 Notes
2.2.112-Apr-20162.2.1 Notes
2.3.331-Aug-20162.3.3 Notes
2.4.002-Nov-20172.4.0 Notes



The REST Web Services module must first be configured if this has not already been done.  

  • On the OpenMRS Administration page, click on the REST Web Services - Settings link


  • :
System Administration buttonAdvanced System Administration buttonRest Web Services Link
Image AddedImage AddedImage Added
  • Update the Rest Web Services URI Prefix setting according to your OpenMRS server URI.  For example, if clients connect to the server with the following URI '' then the prefix should be '/openmrs'.

Image Added


Module Settings

The configuration for the Inventory Module is done through global options which can be accessed via the AdministrationSettings page.  Inventory the Inventory Settings page:

Click on Inventory ButtonClick on Manage Inventory ModuleInventory Settings
Image AddedImage AddedImage Added


There are three settings that can be configured:

  • Auto Generate Operation Number:


  • Set whether or not to generate an operation number when a new stock operation is created.


  • Identifier Source


  • : The


  • Idgen module identifier source


Module Administration


  • used to generate the operation number.
  • Auto Complete Operations: Set where a stock operation is automatically completed and moved to the completed state or left at the pending state once creating awaiting completion.

The Settings page also includes Reports that a user can select from pre-entered Jaspers Reports.

Image Added

Module Administration

Before the OpenMRS 2.0 release, an OpenHMIS Inventory Module section will appear on the administration page with the following screensappears at the far right corner of the home page after installation of the inventory module.

Image Added    

With the current OpenMRS version, OpenHMIS  presents the user with a more friendly user interface. After logging into the system, you will be led to the Home page with the various icons representing the different applications on OpenHMIS.  The Inventory application can be accessed using the Inventory icon as shown below.

Image Added

Click on the Inventory module to access the Inventory Task page. The inventory task page allows the user to either perform inventory task operations or manage the inventory task module. To manage the inventory module, click on the Manage Inventory Module icon.

Image Added

 This will redirect you to the Manage Inventory Module page.  The manage inventory module page allows the user to either create Inventory Role, Manage Items, Manage Item Attribute Types, Manage Departments, Manage Institutions, Manage Stockrooms, Manage Operation Types, View Stock Operations, Generate Item Mappings or manage Inventory Settings.

Image Added

For the previous OpenMRS versions before the Reference application e.g OpenMRS version 1.9.9, the Inventory module management can only be done on the Admin page:

Image Added

Below is a table showing all the inventory module management features and a brief description of what each is responsible for:

Inventory Role CreationAdd or remove the required privileges to use the inventory module to/from a role or create a new role with those privileges.Image Added
Manage ItemsAdd, edit, retire, and purge the items (that is, the products and services) that are used by your institution.  Image Added
Manage DepartmentsAdd, edit, retire, and purge the item departments.Image Added
Manage InstitutionsAdd, edit, retire, and purge the external institutions that item stock can be distributed to.Image Added
Manage Stockrooms

Add, edit, retire, and purge the stockrooms and view stockroom details.

Image Added
Manage Operation TypesAdd, edit and retire the stock operation types.
View Stock OperationsView and process stock operations.
Image Added
Generate Item MappingsGenerate item to concept mappings.Image Added

Inventory Module Concepts


ItemThe information about a product or service that can be purchased or tracked at an institution.
Item StockA physical item that is located in a stockroom or distributed to an external institution or patient. This includes a quantity and an optional expiration date. Item stock can only be created for items that are marked as having physical inventory.
StockroomA location where item stock is stored.
Stock Operation Type

The kind of stock operation to be performed. The module currently includes six stock operation types:

  1. Adjustment: Item stock quantities that do not match the current system quantity
  2. Disposed: Item stock that have expired and must be removed from circulation
  3. Distribution: Item stock that are distributed to a patient or external institution
  4. Initial: Item stock that is already in stockrooms when the system initially started
  5. Receipt: Item stock that are added into the inventory system from an outside provider
  6. Return: Item stock that are returned to the system after being distributed
  7. Transfer: Item stock that are transferred from one stockroom to another.
Stock OperationMoves one or more item stock into, within, or out from the institution, as defined by the Stock Operation Type.
TransactionRecords the individual changes in item stock in a given stockroom. For example, if a single item stock is transferred from the Main stockroom to the Pharmacy stockroom, two transactions would be created; one for the item stock deduction from Main and another for the item stock addition to Pharmacy.
Batch OperationRefers to the Stock Operation when a given quantity of Item Stock was added into the system.

Operation Status

Stock operations have a status which determines the current state:

NewThe operation has been created but not yet processed by the system.
PendingThe operation has been started and is currently in progress.
CompletedThe operation has been finished.
CanceledThe operation was canceled and any processing that was done while pending is reversed.

To check the operation status, click on Inventory > Inventory Tasks > Pending Operations.

Image Added

You can filter your search by either the status of the operation, operation type or the stockroom.

Operation Type Status Processing

To create an inventory operation, click  Create Inventory Operation. This will direct you to the create inventory operation page.

Image Added

To do any stock operations;

  1. Click on the Operation Type drop down button and select the type of operation you want to perform. The operation type can either be an Adjustment, Disposed, Distribution, Receipt, Return or a Transfer.
  2. Check the operation date. If the stock operation was done on a different date than the current date, click on Change Date and choose the correct date of the stock operation.
  3. Select the source and destination for the item stock.
  4. Type the item stock and quantity and select the expiration date for items with an expiry date.
  5. Finally, click the Create Operation button.

As the status of the stock operation changes, the requested item stock changes are applied to the source and/or destination stockrooms as defined by the stock operation type.

Operation TypePendingCompletedCanceled
AdjustmentItem stock changes negated and applied to sourceNothingItem stock changes reversed
DisposedItem stock changes applied to sourceNothingItem stock changes reversed
DistributionItem stock changes negated and applied to sourceNothingItem stock changes reversed
InitialNothingItem stock changes applied to destinationNothing
ReceiptNothingItem stock changes applied to destinationNothing
ReturnNothingItem stock changes applied to destinationNothing
TransferItem stock changes negated and applied to sourceItem stock changes applied to destinationSource item stock changes reversed

Stockrooms and Item Stock

Much of inventory management revolves around stockrooms and item stock. The following section explains how the Inventory Module tracks changes to item stock and how to resolve data issues.

Negative Item Stock Quantities

The OpenHMIS Inventory Module is a permissive inventory system and will allow negative item stock quantities in a stockroom.

Image Added

This is allowed so that the system does not get in the way of work that needs to be done. However, it is important to note that if this is allowed to go unchecked it will result in data that is meaningless. If the inventory system indicates a different item stock quantity than actually exists, there are two ways to correct this:

  1. An adjustment operation can be created to update the system quantites to match the actual quantities.
  2. The missing operations can be created to bring the item stock quantities to the expected values. This assumes that there was not some extra-system reason why the quantities are different (ie, theft or a typo).
titleBest Practice
The second of these options is almost always preferable as it reflects what actually occurred rather than just adjusting the quantities to "magically" match. A future version of the inventory module will support creating historical stock operation that can be applied so that all subsequent stock operations get updated appropriately.

With the new version of OpenHMIS, resolving this issue has been made easy by using the Stock Take page. The stock take page gives an overview of item stock available in different stock rooms, the item stock expiration date where applicable and the quantity of each item stock. The stock take page also provides an Actual Quantity column that allows users to do stock adjustments.

Image Added

Use the drop down button to select the stockroom that you want to do a stock take on. The quantity in the system should always match the Actual quantity in the stockroom. If for any reason the system's quantity does not match the actual quantity, type the actual quantity of the item stock in the Actual Quantity text field and click on Save Stock Take. This will adjust your system quantity with the actual quantity that you have input.

Item Stock Detail

The item stock quantities that can be viewed on the stockroom detail page can be a little deceptive. The item stock quantity is actually broken down by both the item stock expiration date (if there is one) and the originating operation (called the Batch Operation), we call the the Item Stock Detail. These details are not currently visible on the Stockroom page where only the cumulative total for each item stock is visible, but the item stock details will be added in a future version.

When transferring or distributing item stock it is assumed that item stock from the oldest batch operation are moved first and then, if there is still any remaining quantity to move, the next oldest item stock batch operation is used and so on. The same logic applies for item stock with an expiration, except that the item stock that will expire the soonest is automatically chosen unless the user selects expiration when creating a new stock operation.

Image Added

When Auto is selected rather than a specific expiration the system will satisfy the item stock request from the closest expiration first, then the next closest, and so on until the requested quantity has been met.

titleBest Practice
Unless there is some specific reason that the closest to expire item stock is not being transfered or distributed, the Auto option should be selected. This allows the system to self correct in the situation where the quantity becomes negative and the missing operations are then created.

When viewing a stock operation with item stock details that were automatically selected the details will not show the specific batch or expiration, instead they will be listed as (Auto).

Image Added

Step By Step Setup

Once you understand the various concepts, then you need to setup the various components so as to get a working prototype.

Rest Web Services

First setup the rest web services URI as explained in the configurations description above.

Create an Inventory Number Generator (optional)

You need to have installed the idgen module in order to use this functionality.


On the OpenMRS Administration page, click on the Manage Identifier Types – Patients link:

Image Added


Then you will click on Add Patient Identifier Type link as shown:

Image Added



Add the Name, description (optional) and the Number format in this example (0123456789)

and the Save Identifier Type:

Image Added

After Saving the Identifier type above, you will get this page. Add Base Character set,

First Identifier set which will be the first operation number. Then add a prefix,

min and max length all optional and then Save

Image Added

Navigate to the Inventory Settings page where you will check the "Auto Generate

Operation Number" check box and then choose the Inventory Generator as seen shown.

Please remember to click Save Settings to effect changes.

Image Added

Create a department

Items from Pharmacy, those from Lab, Surgery and so on can be grouped under departments. So for example to create items from Pharmacy create a pharmacy department and then associate items to be created later under this department.

From Manage Inventory Module,

click on Manage Departments

Click on New DepartmentEnter a name and optional descriptionSave Changes
Image AddedImage AddedImage AddedImage Added

Create Items

Create items and services.

From Manage Inventory Module,

click on Manage Items

Click on New Item

Item Name, Department, Price and

Default price are required

Save Changes
Image AddedImage AddedImage AddedImage Added

Create a Stockroom

Below is how to create a stockroom:

From Manage Inventory Module,

click on Manage Stockroom

Click on New StockroomEnter a name and optional locationSave Changes
Image AddedImage AddedImage AddedImage Added

Perform Inventory Operation

Now that you have created a department, item and stockroom, you are ready to start performing inventory stock operations.

Ideally the first stock operation should be a receipt or initial operation. This will put item stock that is a quantity and expiration to your item(s)

Click on Inventory TasksImage Added
Then Click on create operationImage Added

This is the Inventory operation page from which you'll change the Operation Type

stockroom and enter the line items

Image Added

Change the Operation Type to Initial and the Destination Stockroom to Main Pharmacy.

This means that you are creation an operation to be effected in Main Pharmacy for the

item that you will choose below

Image Added

Search for the line item in the Operation Items section then enter a quantity and

expiration for the item

Image Added
Then save the operationImage Added

Since the "Autocomplete Operation" check box in the inventory settings is off, then

the Status of the Operation is pending awaiting completion.

Click on the Operation in order to complete it

Image Added

Click on the Button on the Top right hand of the page and you will see a complete

operation button

Image Added
Click on Complete Operation to complete itImage Added
The status now changes to COMPLETEDImage Added


Inventory Dashboard

The Inventory Dashboard is the landing page to perform inventory-related activities. From this dashboard users can view and process their stock operations as well as create new stock operations. The dashboard is accessed from the Inventory link on the right side of the OpenMRS header:. For the new version, the Inventory module is accessed from the home page using the Inventory application.

The Inventory Dashboard Link Location

Upon opening, the The dashboard displays a list of the Pending stock operations for current user:


Clicking on a stock operation item will display the operation details:

Image RemovedImage Added    Image Added

The stok stock operation details section will appear below the list. In it you can view all the operation information, the item stock that is part of the operation, and process (that is, Complete or Cancel) the operation.


Clicking on the Create Operation button will save the operation and set the status to Pending.

Inventory Reports

Inventory can be tracked using inventory reports. Inventory reports can be accessed from the Inventory Task page under Inventory Reports.

Image Added

Stock TakeIt gives an inventory stock take for a single stockroom
Stock CardIt gives a report for a single item across all stockrooms within a specified date.
Stockroom Stock OperationsIt gives a report on individual stockroom stock operations within a specified date.
StockroomIt gives an inventory stockroom report of an individual stockroom within a specified date.
Expiring StockIt gives a report of items that expire by a specified date.