openElis Laboratory information System.

We are software developers team and we have developed the customize application for clinic on top of openMRS…We are looking for laboratory information system and we found openElis is the best available resource and the good thing is that bahmni using it with openMrs.I gone through how Bahmni sync the openElis and openMrs through atomfeed module. I’m having a simple question what are the work involved to run the openElis customize by Bahmni to use with our customize application.I asked this question and we didn’t find any concrete solution.Can you please give us some time and help us to acheive this synchronization @angshuonline Thanks

there was another relevant discussion thread here.

Can you be more specific? In the other thread, I have already given the broad level ideas. If you follow the code, that I have pointed, in the other thread, you should get the idea.

If you want to find out how the tests and panels are synchornized to OpenELIS then, this is the code that you take cues from.

Thanks @angshuonline I appreciate your time and you always provide great idea.There are two things in my head right now.

1:What if we use the bahmni-openmrs server as backend for our customize Angular application.Will the openElis will run without taking too much time. a)Is is it possible If yes then please provide some detail for it. 2:The second thing is that how we will run the openElis as standalone application(Bahmni version) and then used atomfeed to reference application and do the configuration to make it run.

What’s the best approach to follow,Kindly provide some insight on this.

  1. Easiest would to use Bahmni (OpenMRS + OpenELIS)
  • if you want only your app to provide the interface, then just block all bahmni interface access. A little bit of access restriction on URL (or patterns) on apache should do the trick. Very crudely (and don’t take the literal example), something like -

<Location /bahmni>

Deny from all

Allow from [IP Address of your admin machine]

</Location>

  1. Making OpenELIS (from Bahmni repo) working with Ref-app is little more work but is doable.
  • Get “OpenMRS-AtomFeed” and put it as a module in ref-app. You might need to put the other dependencies as well.
  • Or alternatively, use the atomfeed core libraries directly in a custom “OMOD” of yours. You can just use the “atomfeed-server” library. Check nexus sonatype for atomfeed core libraries (or even openmrs-atomfeed) . Actually to think of it, this might be the simplest and gives you absolute control of how you want to raise events. OpenMRS-Atomfeed OMOD does make it little simpler, but the codebase is not much, and you can just duplicate the code needed.
  • first and foremost, you need to get the metadata synced first to OpenELIS. By that I mean - department, sampletypes, tests & panels and their associations to department and sample types. You can check check Bahmni core of how the events are raised. Follow this code here and here to get ideas on how the events are raised. Obviously this suggests that you need to define an Advice to the ConceptService. Check here for example
  • Once you have been able to do the above, and can see the events raised against URLs, thats significant progress.

https://your.domain/openmrs/ws/atomfeed/lab/recent

e.g. try https://your.domain/openmrs/ws/atomfeed/lab/recent, you will see that it provides a feed of all lab relevant concepts.

  • Next of course is to make sure that the lab orders are raised similar way (advising either OrderService or EncounterService). Check this code for some idea

  • Next is the integration side on ELIS - try to handle the MRS => ELIS integration setup first. If you raise the events and expose the APIs and data as ELIS expects, then other than configuration, you wouldn’t need to do anything (if you have Bahmni running). But if you are working on plain vanila Ref-App, then you can follow the code from here for metadata sync, and this code for actual order processing

Hope the above helps.

Looking to the time restriction.If we choose the option1 and decide to run our application on Bahmni version.Does the vagrant version of Bahmni will work for us,or we need to shift to centOS for deploying the Bahmni versoin?

Thanks for the previous reply.

That depends on how you want to deploy. There are few instances I know that people have used Vagrant on production (and docker). I prefer a dedicated machine with OS especially if you don’t have expertise on VM based solutions.

For development purpose Vagrant should be enough.

1 Like