:warning: This project is no longer being supported. It has been superceded by a new and improved tool that is written using Node.js. It is now much simpler to configure routes dynamically and it should have some nice performance improvements. You can find the new project here: https://github.com/jembi/openhim-core-js. There is also an advanced administration console that is used to configure the server. This can be found here: https://github.com/jembi/openhim-console.
OpenHIM is an open source Health Information Mediator built to facilitate interoperability between disparate Health Information Systems.
It was developed for the Rwandan Health Infromation Exchange however, it was designed and intended to be used in re-used other settings. For more details about how the OpenHIM is used in the Rwandan Health Information exchange, see https://jembiprojects.jira.com/wiki/pages/viewpage.action?pageId=10289633
For additional information and documentation please see the OpenHIM wiki pages.
The HIM is developed as a Mule ESB application so we need MuleStudio to work with the project. You can download it here: http://www.mulesoft.org/download-mule-esb-community-edition. If you are new to MuleStudio I would suggest going over some of the getting started documentation and do some of the tutorials: http://www.mulesoft.org/documentation/display/MULE3START/Home.
Next, you will want to import this git repo into MuleStudio. There is some good documentation on how to accomblish this on the Mule wiki: http://www.mulesoft.org/documentation/display/33X/Using+Git+with+Studio, but use this repository instead: http://download.eclipse.org/releases/juno/
Once, you have the application imported you will need to configure 2 things for the HIM to function.
$apt-get install mysql-server
$mysql -u root -p"<root_pwd>" < create_database.sql
$mysql -u -p"<root_pwd>"
grant all on interoperability_layer.* to 'himuser'@localhost identified by '<user_pwd>';
See https://help.ubuntu.com/12.04/serverguide/openldap-server.html for the source of alot of this material.
$cp hosts hosts.bak
$hostname
$sudo apt-get install slapd ldap-utils
$cp hosts.bak hosts
$ldapsearch -x -LLL -H ldap:/// -b dc=moh,dc=gov,dc=rw dn
You should see the following 2 line:
dn: dc=moh,dc=gov,dc=rw
dn: cn=admin,dc=moh,dc=gov,dc=rw
If you see this the database was setup correctly!$ldapadd -c -x -D cn=admin,dc=moh,dc=gov,dc=rw -W -f ldap-auth-pre-prod.ldif
$ldapsearch -x -LLL -b dc=moh,dc=gov,dc=rw 'uid=test'
. If the result of the search shows up positive you are set to go!Note: when creating your own ldap database of users have to be in OrganizationalUnit called himusers
How to change a users password: $ldappasswd -D "cn=admin,dc=moh,dc=gov,dc=rw" -W -S "uid=test,ou=himusers,dc=moh,dc=gov,dc=rw"
The OpenHIM can be built using maven. This will run the unit tests and also ouput a zip package that you can load into a standalone mule server.
mvn clean install
Ok, so the OpenHIM doesn't do much without services to orchestration. The current OpenHIM is setup to work with the services in the Rwandan Health Information Exchange. However, we have also created some mock services that the OpenHIM setup to use by default. These can be found here: https://github.com/jembi/rhea-mock-services. These services are also built as a mule app an can be imported and run the same way.
To test the RHEA HIM implementation you can use SOAP UI (http://www.soapui.org/)
A soapUI project that is setup for testing the API calls for the HIM can be found here: https://github.com/jembi/rhea-api-tests
By default the OpenHIM run on port 5000 so make sure to set the endpoint in soapUI to point to https://localhost:5000. You must supply a HTTP basic auth username and password to connect to the OpenHIM. the details must be equal to one of the user in the LDAP databse. If you used the ldif provied you can use the following details: