This page captures issues relating to the design of an interface between OpenMRS and OpenERP or other logistics systems. It consolidates discussions in meetings and the listserv. Interested persons are encouraged to edit this page.
Assuring that medications, lab testing supplies and medical supplies are available when and where needed has proven to be difficult problem in low-resource countries. There may be multiple supply chains and logistics systems supported by the national health service, local procurements, foreign aid programs and non-governmental organizations. Logistics management is a subset of the capabilities of Enterprise Resource Planning (ERP) systems. OpenERP is one open source ERP system in which a number of projects have expressed interest. The goal of this project is to define an interface with OpenERP (and perhaps other systems) which can be implemented as an OpenMRS module and/or an extension to OpenERP.
About OpenERP and other logistics systems
See OpenERP documentation http://doc.openerp.com/v7.0/contents.html especially the inventory section http://doc.openerp.com/v7.0/book/5/5_14_Stock/index.html and the system admin section http://doc.openerp.com/v7.0/book/8/index.html.
OpenHMIS Cashier/Inventory Module
AMPATH Inventory Module
Existing or In-Progress Integrations
from Jonathan Galingan
I've just built an OpenERP module to push patient demographic data
from OpenERP to OpenMRS so that they would have a singular entity
between them. From here, you could capture medical data using OpenMRS
and use OpenERP to track financial and resource allocation per
Here's the source: https://github.com/ban8an/openmrs-openerp-connector
Because OpenMRS is more flexible to changes and more types of demographic data and identifiers, it would be advisable for it to be the main patient registry.
But in my master-slave setup, the master is OpenERP. All patients that need to be monitored for resource allocation must be encoded in OpenERP.
from Wesley Brown
My team actually toyed around with a similar idea to interact with OpenERP for inventory management. We have already created a cashier module which includes a simple inventory system within OpenMRS and are currently extending that inventory system to be broader in scope and more generalized. We see this new inventory module as a stepping stone to full, two-way, connections with real ERP systems from OpenMRS. It's nice to know that others see the same need!
from Praveen Chandrasekharan
I am part of the ThoughtWorks team doing the implementation for JSS hospital in Bilaspur, India. We are using OpenERP as the billing and inventory management solution. And we are doing the integration between OpenMRS and OpenERP the other way around. Basically the patient gets registered in OpenMRS and triggers the creation of a customer in OpenERP using OpenERP's XML RPC services. The OpenMRS "patientId" is passed as a reference so that it gets saved in OpenERP.
You can have a peek at a java service which does the integration here - https://github.com/jss-emr/jss-openerp-integration. (Note: This is a temporary location and may be migrated to
a different place soon.) This service is planned to be called from a wrapper (OpenMRS)module, which calls the OpenMRS core for patient creation and the OpenERP service for
We are also doing customisation of some of the OpenERP modules for sale and inventory management according to JSS requirements
Use cases and requirements
Inventory plus Pharmacy Dispensing
Deployment model and data exchange
Documents and links
While this discussion is focused on OpenMRS-OpenERP interactions, we believe that it is important to create a solution which also supports interacting with other ERP systems. We suggest that it would be helpful to create a generalized Inventory Module which provides the service interfaces and inventory classes that other OpenMRS modules interact with. This Inventory module would act as a facade, forwarding requests on to the underlying inventory system; that system could be OpenERP or another ERP system. This could be achieved with a service provider model where a module is created for each supported ERP system, as needed.