How to run OpenElis from source code?

Dear Team,

I want to run openelis from source and want to give a try of my own. I have couple of questions
First of all which branch should I run ? ( that includes latest stable sources). I have found source from here

and here

Second looking for basic guideline for developer on how to start?

like which IDE/tools to use?
What are the steps need to follow to run the code?
Any technical documentation on source like technology involved what goes where?
Source files to feature mapping?
Description of configuration involved (if any)?
Any prerequisite or important steps required which might have dependency?
Description of database?
and so on.

I am not sure this is right place for this discussion and if this is not please ignore my messages.

Thank you for posting.

The OE Global 2 is the correct repo:

I’m working on updating the read the docs, but here are guides on how to set up your dev env.

They also refer back to the Wiki: https://github.com/openelisglobal/openelisglobal-core/wiki for some of the basics.

I hope these help!

Best,
Casey

1 Like

@caseyi thanks you very much. These are really helpful and life saver :slight_smile:

Thanks,
Sohel

@caseyi,

I can run maven clean and maven install with success, which also creates OpenELIS.war in target but could not run it in tomcat. I am trying tomcat in eclipse. My tomcat version is 9 and eclipse version is 2019-09. I am not getting an option of select OpenELIS-Global-2 and add into server. Can you please help me with suggestion which steps I may missed?

@sohel If you right click on the tomcat server in the “server” tab is there an option for “add and remove”? If that button exists and OpenELIS doesn’t exist as an “add” option then in it, then that makes me think that the project somehow got misconfigured on eclipse’s auto-import. It may be fixed by trying to recreate the project.

Did you run the maven clean install through eclipse or using maven command line utility?
Are there any errors detected in the project?

1 Like

@calebslane,

Thanks for your quick and details reply. You were correct I mis-configured on eclipse auto-import . That I have fixed by recreation of the project. Now tomcat is running from eclipse and trying to deploy OpenELIS.war that I have created through running “mvn clean” and “mvn clean install” from eclipse. But still I am getting the following error,

19:05:24.905 [localhost-startStop-1] ERROR org.hibernate.tuple.entity.PojoEntityTuplizer - HHH000243: Setters of lazy classes cannot be final: org.openelisglobal.observationhistory.valueholder.ObservationHistory.value
19:05:24.957 [localhost-startStop-1] ERROR org.hibernate.tuple.entity.PojoEntityTuplizer - HHH000243: Setters of lazy classes cannot be final: org.openelisglobal.observationhistory.valueholder.ObservationHistory.valueType
19:05:32.639 [localhost-startStop-1] ERROR org.hibernate.engine.jdbc.spi.SqlExceptionHelper - ERROR: column siteinform0_.description_key does not exist
Position: 536
19:05:32.997 [localhost-startStop-1] ERROR org.openelisglobal.common.log.LogEvent - Class: org.hibernate.internal.ExceptionConverterImpl, Method: convert, Error: javax.persistence.PersistenceException: org.hibernate.exception.SQLGrammarException: could not extract ResultSet
Dec 22, 2019 7:05:33 PM org.apache.catalina.core.StandardContext listenerStart

I have created clinlims database, given all priviliges to clinlims user and created password for clinlims user that used in VM arguments.

Once I tried with importing backup file in newly crated database and once I have not import any db backup file in my newly created database both cases found the same error. Can you please guide me what I am missing?

Thanks in advance for your help.

–Sohel

For your trace I have only error in my project is,

/OpenELIS-Global-2-develop/src/main/webapp/pages/resultLimits/resultLimitsMenu.jsp file where it is complaining about “org.openelisglobal.resultlimits.form” import can not be resolved. But this did not stop me build and install of the project.

Thanks,
Sohel

Hi team!

While following the guide shared above, I run into the following error for which I created an issue on github.

[ERROR] Failed to execute goal on project openelisglobal: Could not resolve dependencies for project org.openelisglobal:openelisglobal:war:1.0.0.0: Could not find artifact org.itech:dataexport-api:jar:0.0.0.1.

Has anyone faced this and how can I resolve it? Thanks all.

Hi team, I finally managed to build the OpenELIS Global project after installing the dataexport artifact locally. I’m however experiencing issues when firing up the docker containers with below error:

Pulling fhir.openelis.org (hapi-fhir-jpaserver-starter:)...
ERROR: The image for the service you're trying to recreate has been removed. If you continue, volume data could be lost. Consider backing up your data before continuing.

Continue with the new image? [yN]n
ERROR: pull access denied for hapi-fhir-jpaserver-starter, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

I couldn’t substitute hapi-fhir-jpaserver-starter with images from other repositories and would therefore assume there is a specific version that closely couples with the OpenELIS Global. Could I be missing something before doing a docker-compose up?

1 Like

Hi @ruhanga,

The hapi-fhir-jpaserver-starter image is unfortunately not listed on any docker repos, but it is included as a submodule inside the OpenELIS-Global project. If you are able to pull the submodules, you should be able to build the hapi-fhir-jpaserver-starter image by running mvn clean install dockerfile:build while you are located in the hapi-fhir-jpaserver-starter directory.

Hopefully this fixes your issue!

Caleb

2 Likes

Thanks @calebslane. The above suggestion doesn’t work either. I was trying to find out how the hapi-fhir-jpaserver-starter image is constructed and configured, but failed to figure out the connecting dot (involved artifacts) for hapi-fhir-jpaserver-starter docker image. I’m resorting to the standard approach for now since I’d like to have a running instance for a couple of test runs.

@calebslane, could you share any documentation for the OpenELIS Global 2 api documentation? I’m most interested in the fhir component of the api so I can make reference to it. Thank you.

@ruhanga the fhir api server we used has some of their documentation located at https://hapifhir.io/hapi-fhir/docs/server_jpa/configuration.html. Is there any other components you require documentation for?

Hi @ruhanga, how did you achieve that?

Hi @mksrom, I simply ran mvn clean install on a cloned dataexport project with a minimum of java 11.

1 Like

Thanks @calebslane, I had wanted and would still like to know the possible api calls I could make when requesting resources/querying OpenELIS Global 2 with FHIR. My understanding is there are a few operations between FHIR and OpenELIS Global 2 that are supported and relevant to the later. Is there any documentation on these for further developments upon? I’m specifically interested in the handling of bundled FHIR resources, say for instance creation of a Patient and ServiceRequest in one bundled request.

1 Like

Hi @ruhanga,

I don’t think we have any formal documentation currently on how OpenELIS interacts with Fhir. However, the main workflow that uses it was documented by a team that we were interfacing with located at https://wiki.openmrs.org/display/projects/Lab+Integration+Workflow. The class that deals with this workflow on our side is FhirApiWorkFlowServiceImpl.java. One correction I would make to that document is that the remote application does not initiate the sending of resources to OE. As you can see in FhirApiWorkFlowServiceImpl.java, OE polls for remote tasks from the remote application and searches for Tasks that OE is the “owner” of. It then also grabs any attached Service Requests and Patients before proceeding.

Currently the way OpenELIS operates is that there are 2 servers running: OpenELIS-Global and Hapi-Fhir-Jpaserver. When OE creates an OE patient, it also contacts the jpaserver and tells it to create a FHIR patient. When a patient is created directly in the JPAserver, OE doesn’t do anything to process it. Because of this, all fhir resources are expected to be created by/through OE.

Search/read functionality should work completely through solely the JPA Server and is well documented at https://www.hl7.org/fhir/search.html. Our copy of the JPA Server is currently configured to require clientauth so if you are interacting with it you will need to make sure you have a client cert that is in its truststore or disable the clientauth.

So there seem to be 2 places where patients are saved: the OE database and the HAPI-FHIR database.

Isn’t the HAPI-FHIR back-end sufficient to store patients?

@mksrom That is correct.

Yes, ideally we would just use the FHIR patient for persistence, and in fact use FHIR concepts for all our entities. However, since OpenELIS had it’s own data model prior to starting the FHIR integration and because we had limited time/resources before the FHIR compliance was needed, we weren’t able to map our concepts to FHIR ones.

1 Like

My goal is to customize the patient registration page.
Followed this thread to do local workspace setup and running into a different error -
The dataexportservice doesn’t have the method. What am I missing here?

 openelisglobal: Compilation failure
[ERROR] /Users/arun/Projects/OpenELIS-Global-2/src/main/java/org/openelisglobal/dataexchange/fhir/controller/FhirExportController.java:[26,30] cannot find symbol
[ERROR]   symbol:   method exportNewDataFromLocalToRemote(org.itech.fhir.dataexport.core.model.DataExportTask)
[ERROR]   location: variable dataExportService of type org.itech.fhir.dataexport.api.service.DataExportService