Wiki Spaces


Get Help from Others

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


Page tree
Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Next »


The heart of any institution is its people and the OpenHMIS project is creating tools to enable that "heart" to run more smoothly. Providing quality medical services is a challenge and OpenMRS is a great help to meet 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.

The OpenHMIS Inventory Module is a simple inventory management system that runs within OpenMRS. As the name implies, it is a tool to help with inventory management and is at the center of many other institutional services such as Billing, Pharmacy, and Lab. This module specifically targets small-mid sized institutions that need a simple inventory management system and thus does not (currently) provide all the features that a more full-fledged inventory management system has. The main features include:

  • Item Management
  • Stockroom Management
  • Stock Operation Tracking

Future versions may include support for:

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



Version History

VersionReleasedRelease Notes


REST Web Services

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

  1. On the OpenMRS Administration page, click on the REST Web Services - Settings link.  
  2. 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'.

Global Options

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

Inventory Auto Generate Operation Number: Whether or not to generate an operation number when a new stock operation is created.

Inventory Operation Number Identifier Source Id The ID of the Idgen module identifier source. Instructions for finding this ID can be found here.

Module Administration

Once the module has been installed, an OpenHMIS Inventory Module section will appear on the administration page with the following screens:

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.
Manage ItemsAdd, edit, retire, and purge the items (that is, the products and services) that are used by your institution.  
Manage DepartmentsAdd, edit, retire, and purge the item departments.
Manage InstitutionsAdd, edit, retire, and purge the external institutions that item stock can be distributed to.
Manage Stockrooms

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

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

Inventory Module Concepts

To effectively use the inventory module, it is important to understand the different objects and how they relate.

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. Receipt: Item stock that are added into the inventory system from an outside provider
  5. Return: Item stock that are returned to the system after being distributed
  6. 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.

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.

Operation Type Status Processing

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
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

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:

The Inventory Dashboard Link Location

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

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

The stok 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 New Operation link will display a form to create a new stock operation:

To create a new operation:

  1. Select the Operation Type
  2. Select the Source and/or Destination Stockroom. These dropdown's will be enabled/disabled based on the select Operation Type
  3. Enter any Attributes defined for the specified Operation Type.
  4. Add the Item Stock for the operation, along with the Quantity and an optional Expiration
  5. Click the Create Operation button

Adding Item Stock works in much the same way as adding items to a bill in the Cashier Module. To search, simply start typing the name of the item you want to add and a list will display the items found:

With the autocomplete list displayed, either use the arrow keys or mouse to select the desired item and press the <Tab> or <Enter> key to add the item:

You can now enter the item stock quantity and, if the item is expirable, the expiration. Depending on the operation type, the expiration will either be a dropdown or a date entry area. Stock operations with no source stockroom (at the time of writing that is just the Receipt operation type) require the entry of the expiration for all expirable items. If a default expiration period has been defined for the item (in days), the expiration will default to that number of days from the current date.

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

  • No labels