Wiki Spaces

Documentation
Projects
Resources

Get Help from Others

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

Documentation

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

Contacts: Rafal Korytkowski, Darius Jazayeri, Piotr Bryk

Overview

The Metadata Sharing Module allows all kinds of metadata (concepts, htmlforms, locations, roles, programs, etc.) to be exchanged between different OpenMRS installations. It supports metadata defined in the core as well as in modules provided appropriate handlers are registered. Conflicts between local and incoming metadata can be identified and resolved. The module can be used both through an API and a web interface.

Any dependent metadata will be packaged along with the selected item. For example, if you select a concept which has coded answers, it will package the initial concept along with all the coded answer concepts, class and datatype. If you select an htmlform, it will package the form along with the encounter type, all concepts used on that form, etc.

Release Notes

See release notes in JIRA.

1.2
  • Added support for OpenMRS Platform 2.0
  • Dropped support for OpenMRS 1.8.x and below
  • Bug fixes
1.1.9
  • Bug fixes
1.1.8
  • Bug fixes around sharing Concepts
1.1.2
  • Added support for the Facility Data module
  • Added support for Tomcat 7
1.1.1
  • META-297: Unable to import metadata sharing package with Role
1.1
  • Support for Publishing/Subscribing Dictionary modules
  • Extracted mapping functionality to the Metadata Mapping module (required module)
  • Bug fixes around importing/exporting concepts
1.0.10
  • Converting concepts between OpenMRS 1.9 and earlier versions
1.0.9
  • Bug fixes related to importing/exporting concepts with mappings in OpenMRS 1.9
1.0.8
  • Added support for concepts in OpenMRS 1.9 (note you need to upgrade to 1.9.1 rev:28634)
  • Improved support for OpenMRS 1.9 in general
1.0.7
1.0.6
  • IMPORTANT UPDATE: Fixes OpenMRS auditing (date_changed, changed_by, etc., did not get updated) and incompatibility with the sync module, which was broken for versions 1.0.3, 1.0.4, 1.0.5. Please update as soon as possible.
1.0
  • Sharing Concepts between OpenMRS 1.6 and 1.7/1.8
  • Preserving IDs if possible and requested
  • Custom import modes
  • Subpackages for 1000 items and more
  • Exporting packages on-the-fly
  • Improved search (searching by ids, enhanced performance)
  • Disabling mapping incoming Concepts to local Concepts upon import
  • Finding matching Concepts based on Concept mappings.
0.10
  • Creating new versions of metadata packages
  • Publishing/Subscribing to metadata packages through RESTful web services
  • Automatic notifications about package updates
0.9
  • Adding mappings of a chosen Concept Source to Concepts upon export 
  • Mapping incoming Concepts to local Concepts upon import
  • Overwriting local metadata with incoming metadata
  • Replacing incoming metadata included in a package with local metadata
  • Validating existing metadata upon export
  • Validating existing and incoming metadata upon import
0.8

Planned features:

type key votes priority summary status

Data cannot be retrieved due to an unexpected error.

View these issues in Jira

If you would like to request a new feature which is not listed above, please create an issue in JIRA. Click here (You need to be logged in with your OpenMRS ID).

Installation

Download and install the latest version (v1.3).

The module is under heavy development and it is best to use the latest available version with all bug fixes.

Download older versions from the module repository.

Requirements

1.x

This version to work correctly requires OpenMRS 1.9.1, 1.8.4, 1.7.4 or 1.6.6. Packages exported with this version are not backwards compatible. Packages exported with previous versions cannot be imported with this version.

0.10.x

This version will work correctly with the same OpenMRS versions as version 0.9.x. Packages exported with this version are entirely compatible with 0.9.x.

0.9.x

For the module to work correctly you need to run OpenMRS in either of the following versions: 1.6.4 Build 21295+, 1.7.3 Build 21294+, 1.8.1 Build 21293+.

As of the 0.9 version of the module to import/export HtmlForms you need HtmlForm Entry Module in version 1.8 or later.

0.8.x

OpenMRS 1.6.3+ (1.7.x and later were not tested)

In order to import/export HtmlForms you need HtmlForm Entry Module in version 1.7.2.

Troubleshooting

  1. MySQL error ‘Packet too large’ – set MySQL variable max_allowed_packet=16M details
  2. Import fails with ConcurrentModificationException and the following stack trace:

    SEVERE: Servlet.service() for servlet openmrs threw exception
    java.util.ConcurrentModificationException
    	at java.util.HashMap$HashIterator.nextEntry(HashMap.java:793)
    	at java.util.HashMap$KeyIterator.next(HashMap.java:828)
    	at org.openmrs.api.handler.ConceptNameSaveHandler.handle(ConceptNameSaveHandler.java:55)
    	at org.openmrs.api.handler.ConceptNameSaveHandler.handle(ConceptNameSaveHandler.java:37)

    It is a known bug in OpenMRS (TRUNK-2428). You need to update OpenMRS and use one of recommended versions (see #Requirements).

  3. Import fails with Column 'concept_name_id' cannot be null:

    Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException: Column 'concept_name_id' cannot be null
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:39)
    	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:27)
    	at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
    	at com.mysql.jdbc.Util.handleNewInstance(Util.java:406)
    	at com.mysql.jdbc.Util.getInstance(Util.java:381)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:1015)
    	at com.mysql.jdbc.SQLError.createSQLException(SQLError.java:956)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3515)
    	at com.mysql.jdbc.MysqlIO.checkErrorPacket(MysqlIO.java:3447)
    	at com.mysql.jdbc.MysqlIO.sendCommand(MysqlIO.java:1951)
    	at com.mysql.jdbc.MysqlIO.sqlQueryDirect(MysqlIO.java:2101)
    	at com.mysql.jdbc.ConnectionImpl.execSQL(ConnectionImpl.java:2554)
    	at com.mysql.jdbc.PreparedStatement.executeInternal(PreparedStatement.java:1761)
    	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:2046)
    	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1964)
    	at com.mysql.jdbc.PreparedStatement.executeUpdate(PreparedStatement.java:1949)
    	at com.mchange.v2.c3p0.impl.NewProxyPreparedStatement.executeUpdate(NewProxyPreparedStatement.java:105)
    	at org.hibernate.id.IdentityGenerator$GetGeneratedKeysDelegate.executeAndExtract(IdentityGenerator.java:73)
    	at org.hibernate.id.insert.AbstractReturningDelegate.performInsert(AbstractReturningDelegate.java:33)
    	... 121 more
    
    	at org.openmrs.module.metadatasharing.reflection.OpenmrsClassScanner.invokeServiceSaveItem(OpenmrsClassScanner.java:265)
    	at org.openmrs.module.metadatasharing.reflection.OpenmrsClassScanner.serviceSaveItem(OpenmrsClassScanner.java:174)
    	at org.openmrs.module.metadatasharing.handler.impl.OpenmrsObjectHandler.saveItem(OpenmrsObjectHandler.java:107)
    	... 53 more

    You need to upgrade OpenMRS to 1.9.1 rev:28634, 1.8.4 rev:28650, 1.7.4 rev:28651, 1.6.6 rev:28652. See TRUNK-3626.

  4. Other known issues which have not been fixed yet:

    type key votes priority summary status

    Data cannot be retrieved due to an unexpected error.

    View these issues in Jira

    If you found a bug which is not listed above, please report it in JIRA. Click here (You need to be logged in with your OpenMRS ID).

User's Guide

User's Guide for Metadata Sharing Module

Technical Details

Technical Details for Metadata Sharing Module

Other Resources

  • No labels

4 Comments

  1. Can someone please add a few paragraphs on how to use this module.  Thanks.

  2. Rafal, great job getting lots of documentation up here. I would suggest breaking this up into several pages:

    1. Overview
    2. Users Guide
    3. Technical details
  3. Can you start a release notes section that you keep up with the different changes in each version? See the formentry or sync module pages for examples.

  4. user-db8b0

    Should it be mentioned under the "Requirements" section that the Metadata Mapping module first needs to be installed and running before the Metadata Sharing module can run?