Git Product home page Git Product logo

openshr's Introduction

OpenSHR

The OpenSHR is a shared health record (SHR) that allows clinical data to be stored in a central location within a health information exchange (HIE).

OpenSHR implements the IHE XDS.b profile for receiving and retrieving clinical documents about a particular patient.

Some of the important features include:

  • Supports storage of data discretely of supported CDA documents
  • Supports on-demand documents
  • Extensible CDA documents support

Setting up the OpenSHR on Ubuntu from a PPA (14.04 Trusty)

sudo add-apt-repository ppa:webupd8team/java
sudo add-apt-repository ppa:openhie/release
sudo apt-get update
sudo apt-get install openshr

After the installation is complete the following endpoints will be available:

Also, the OpenMRS user inferface which can be used to configure the XDS.b repository can be found here at http://localhost:8080/openmrs The login is admin:OpenSHR#123 (change this on a production system!)

To configure the OpenSHR, here are the places you may want to look:

  • For the XDS.b repository, look for the settings labled 'SHR' here: http://localhost:8080/openmrs/admin/maintenance/settings.list
  • For the XDS.b registry, you will need to edit the files under /usr/share/opennshr/openxds/conf/. In particular you may want to edit the supported codes in XdsCodes.xml and the sourceIds and identity domain in XdsRegistryConnections.xml.

To stop, start or restart the registry and reppository services use:

  • Registry: sudo service openshr-reg [start|stop|restart]
  • Repository: sudo service openshr-rep [start|stop|restart]

Setting up the OpenSHR with vagrant and puppet

See the https://github.com/jembi/openmrs-shr-infrastructure repository. Getting up and running is really simple:

git clone https://github.com/jembi/openmrs-shr-infrastructure.git
cd openmrs-shr-infrastructure
vagrant up

After launching, the SHR will be available on http://localhost:8082/openmrs. The default login is admin using the password OpenMRS123.

Setting up the OpenSHR without vagrant

We are currently working on bundling a lot of the different components of the OpenSHR together to make it simpler to install. Right now these are the steps you have to go through to get it up and running.

  1. To install the OpenSHR you will need to first install OpenMRS v1.11.x. You can find details about how to do that here.
  2. Once you get to the OpenMRS configuration web app, you will need to first load in a pre-configured OpenMRS database before continuing. The database dump can be found at https://s3.amazonaws.com/openshr/openmrs.sql.gz and you can load it using the following command: mysql -u root -p -e "create database openmrs" && mysql openmrs -u root -p < openmrs.sql. This will setup the database for you with some sane defaults. This is what will be setup for you in this database dump:
  • The OpenMRS database structure with no default data
  • The CIEL dictionary
  • Sane defaults for the SHR module global properties (Set EPID, ECID root global properties and change update existing GP to true so that we can use the same document over and over for testing)
  • Global properties that improve performance
  1. Load the SHR openmrs modules in the following order:
  2. shr-atna-x.x.x.omod
  3. shr-contenthandler-x.x.x.omod
  4. xds-b-repository-x.x.x.omod
  5. shr-cdahandler-x.x.x.omod
  6. shr-odd-x.x.x.omod
  7. Ensure there are no errors in the logs when loading concepts via liquibase when the cda-handler module starts, if there are you may need to start again...
  8. The SHR should be up and running. The default login is set to admin with password OpenSHR#123. You will now need to set some global properties to get the OpenSHR to function correctly:
  • In the XDS-repository module settings, set the ws username and password to an admin user name and password
  1. You will then need to install OpenXDS using the Jembi OpenXDS fork: https://github.com/jembi/openxds/

Repositories that make up the OpenSHR project

The source code repositories that make up the OpenSHR project can be found here:

CDA implementation documentation

For a comprehensive explanation of how CDA document are submitted and processed by the SHR please see [the documentation here](Clinical Document Architecture Support for OpenSHR.pdf).

There is also a spreadsheet describing terminology references, templates (document, section and entry). Those in green are level 3 import, those in orange are level 2 only. [See here](Templates and RMIMs.xlsx).

Performance tweaks

To get the best performance out of the OpenSHR you may have to make some adjustments to your installation. A list of these can be found here. Many of the global properties are already applied when using the database dump above.

In order of biggest difference noticed:

  1. Set GP search.caseSensitiveDatabaseStringComparison to false
  2. Ensure hibernate batch options are enabled in OpenMRS (see PR openmrs/openmrs-core#1508). In hibernate.default.properties file set:
  • hibernate.jdbc.batch_size=50
  • hibernate.order_inserts=true
  • hibernate.order_updates=true
  1. Disable OpenMRS validation GP (see PR openmrs/openmrs-core#1503).
  • Set validation.disable to true
  1. Set the following GPs:
  • shr-cdahandler.validation.cda set to false
  • shr-cdahandler.validation.conceptStructure set to false
  • patient.nameValidationRegex clear value
  1. Tune InnoDB by following this guide: https://www.percona.com/blog/2007/11/01/innodb-performance-optimization-basics/

Resources

Next steps for performance

  • Try get rid of the CIEL concepts we don't need and see if that makes a difference - no difference
  • Try one big transaction
  • Try MariaDB - no difference
  • Try MariaDB using the TokuDB engine - no difference
  • Build something better
  • Eventually consistent is ok
  • Try upgrade mysql to v5.6 - no difference (actually seems slightly worse...)

openshr's People

Contributors

rcrichton avatar hnnesv avatar

Watchers

James Cloos avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.