Bahmni's Atom Feed module in the OpenMRS module repo?

@frankhuster - we use this module, primarily handled by @angshuonline. It can definitely be moved to modules.openmrs.org.

How do we go ahead?

1 Like

@frankhuster: the actual openmrs atomfeed repo is what Vinay posted. @vinay It can be moved to openmrs modules, but there are few dependencies (e.g. EMR API), I would like to resolve.

1 Like

I downloaded the Openmrs-atomfeed-master folder which contains the omod folder as well. My atom-feed on Bahmni-Openmrs 0.80 is not working currently that is. “http://192.168.1.26:8080/openmrs/module/atomfeed/manage.form” is blank atm. So i would like to install the atomfeed module through this file.

Can you please guide me to do so, usually the omod is a file like *.omod which i can paste in the /opt/openmrs/modules folder , but this time the omod is itself a folder alongside other folders.

Kindly guide me to install this atom-feed module.

I have taken screenshots of my openmrs admin page, this shows two atom feeds, one probably created by Bahmni and the other i downloaded from openmrs modules and put in the modules folder.

--------------------------------------------

I am guessing if any one of them works, then the integration of OpenElis and OpenMRS will be successful ( as of now it is not working).

The first ONE is blank as mentioned in my previous post, while the second ONE is asking for a username\password. “IMPORTANT! You must configure the username and password of a READONLY user for the atom feed to use

Can someone tell me what username and password to give?

If you are talking about this module from the module repository, you do not want this, and it may interfere with Bahmni. This was released in 2012, and has not been maintained or used in recent years.

Yes I was talking about that, I shall remove it from the modules directory then and work on the other one(bahmni default) . Thank you for the info.

I removed the old atom-feed module and downloaded the Bahmni version. “https://github.com/ict4h/openmrs-atomfeed

But it is a folder named openmrs_atomfeed_master with folders openmrs-atomfeed-api,openmrs-atomfeed-common and openmrs-atomfeed-omod.

Can someone tell me where do i put these folders exactly in Bahmni so that the atomfeed starts to work

Normally you would get all the omod files when you install the bahmni-emr rpm.

I think your options are:

  1. do a normal Bahmni install, then get the atomfeed omod from it
  2. do mvn install of the code that you got from github, which will build the omod

I did the mvn install but openmrs and openelis still not talking

"" Results :

Tests run: 0, Failures: 0, Errors: 0, Skipped: 0

**[INFO] ** [INFO] — maven-jar-plugin:2.3.2:jar (default-jar) @ openmrs-atomfeed-omod — [INFO] Building jar: /root/Downloads/openmrs-atomfeed-master/openmrs-atomfeed-omod/target/openmrs-atomfeed-2.5.3-SNAPSHOT.jar **[INFO] ** [INFO] — maven-openmrs-plugin:1.0.1:package-module (pack) @ openmrs-atomfeed-omod — [INFO] Packaging OpenMRS module [INFO] Building jar: /root/Downloads/openmrs-atomfeed-master/openmrs-atomfeed-omod/target/openmrs-atomfeed-2.5.3-SNAPSHOT.omod **[INFO] ** [INFO] — maven-install-plugin:2.3.1:install (default-install) @ openmrs-atomfeed-omod — [INFO] Installing /root/Downloads/openmrs-atomfeed-master/openmrs-atomfeed-omod/target/openmrs-atomfeed-2.5.3-SNAPSHOT.omod to /root/.m2/repository/org/ict4h/openmrs/openmrs-atomfeed-omod/2.5.3-SNAPSHOT/openmrs-atomfeed-omod-2.5.3-SNAPSHOT.jar [INFO] Installing /root/Downloads/openmrs-atomfeed-master/openmrs-atomfeed-omod/pom.xml to /root/.m2/repository/org/ict4h/openmrs/openmrs-atomfeed-omod/2.5.3-SNAPSHOT/openmrs-atomfeed-omod-2.5.3-SNAPSHOT.pom [INFO] ------------------------------------------------------------------------ [INFO] Reactor Summary: **[INFO] ** [INFO] AtomFeed Module … SUCCESS [46.309s] [INFO] Atomfeed Common … SUCCESS [1:51.400s] [INFO] AtomFeed Module API … SUCCESS [1:49.061s] [INFO] AtomFeed Module OMOD … SUCCESS [54.246s] [INFO] ------------------------------------------------------------------------ [INFO] BUILD SUCCESS [INFO] ------------------------------------------------------------------------ [INFO] Total time: 6:06.423s [INFO] Finished at: Tue May 24 11:49:13 IST 2016 [INFO] Final Memory: 45M/86M [INFO] ------------------------------------------------------------------------ [2]+ Killed gedit README.txt (wd: /usr/local/apache-maven-3.0.5) (wd now: ~/Downloads/openmrs-atomfeed-master) [root@localhost openmrs-atomfeed-master]# service openmrs status

""

I had the atom-feed module in the Downloads directory, i went into it and then used “mvn install”. Now i get this .

Unable to start OpenMRS. Error thrown was: org.openmrs.module.MandatoryModuleException: The following modules are marked as ‘mandatory’ but were unable to start: atomfeed . How can i change the mandatory start to non mandatory start? Or How do i reset OpenMRS the settings for atomfeed module to take NotStartByDefault.

@darius made changes that removed the dependency on EMRAPI as well as allowing this module to work with MySQL 5.5 (Duplicate default CURRENT_TIMESTAMP were in a single table)

Here’s a link to the diff on GitHub

@vinay @angshuonline Can we integrate these changes to master?

not sure if these can be merged straight way.

  • the advice is now on core openmrs encounter service, instead of emr api encounter service. this would break Bahmni and other implementations in Bangladesh.
  • the group id is now “opensrp”, this should not be so.
  • the event raised has a new content pointing to a different endpoint. Again this will break clients that were consuming and expecting a different endpoint and contract/wire-format.

The main problem is that ICT4H openmrs atom feed wants to intercept EMR EncounterService while OpenSRP wants the core EncounterService. Maybe we should have 2 advices, intercepting and raising events separately based on a property!

@darius: thoughts?

@angshuonline would it help if you pick only the fixes that @craigappl is looking for? :slight_smile:

The changes I made were part of working with @maimoonak to make a fork of this module that would work for OpenSRP. They weren’t intended to be merged back. (The specific change for making things run on MySQL 5.5 should be merged though.)

Can someone please give me the bigger context for this conversation? E.g. what’s the driver to remove the EMRAPI dependency from the Bahmni Atom Feed module, when Bahmni deeply relies on the EMRAPI module?

We have a partner in Mozambique that’s setting up a demo on platform 1.11.6 platform and ran into a number of problems when trying to install the module and want to improve the process for others. I’d like to clean up the wiki doc and figure out a generic module to upload to modules.openmrs.org. I saw the numerous forks and figured Darius’ changes were appropriate for more general consumption because it relied on the REST WebServices API directly, not knowing that Bahmni relied so much on EMRAPI.

@darius Were these changes a proof of concept or are you planning on releasing a version from OpenSRP? If releasing, could you upload it to the modules repo?

I can only take in the fix for the default date value so that its compatible with MySQL 5.5.

@craigappl: The feed implementation of the module from ICT4H repo is different from openmrs atomfeed which requires the event module. While in terms of wire-format of the feed itself, they maybe compliant, but its not a generic module to raise any sorts of events for any resource in openmrs. IMO, a generic module itself shouldn’t have any specific intercepts (encounterservice or emrencounterservice). For example, what if you want to raise events for any concept that is created? So it is not a 1-1 replacement for openmrs-atomfeed module.

If we want to make the ICT4H module generic, it is going to take additional work. I am not sure if we can make it absolutely generic, if the intention is to let the publisher decide what content to push out as part of the event.

One can take out the advices on the encounter service and patient service from the module, but then its as good as using the core libraries.

We could make it much more configurable and for that we should decide what resources do we want to raise events for and what would be the contents for such events.

Also note, the ICT4H atomfeed module actually is intended to establish a communication protocol, which is detailed here.

I need some time to think through your recommendations and learn more about the existing atom-feed module. In the mean time, there are a few things:

  1. Note: The original atomfeed module doesn’t look like it was migrated from svn to GitHub.

  2. I created this Pull Request to update the liquibase migration to work with MySQL 5.5

  3. There’s another liquibase error due to blank chunking that was identified by Daniel (link to Daniel’s commit). Would you accept a PR for that too?

This was a spike / proof of concept. @maimoonak is now in charge of that work, and she can comment on what she expects OpenSRP to release, and on what timeline.

Hi ,

We are working on OpenSRP to make sure that

    • Bahmni/OpenSRP works with vanilla rest api (Works well. Though for Bahmni specific operations on patient data one needs to make sure that all corresponding ret services are called if patient/encounter is created directly)
    • The Bahmni module id was changed and it is supposed to work inline with original module. i.e. Both modules keep doing their work and OpenSRP only listens to atomfeeds it is interested in. We So for ex: Bahmni creates a feed with url to Bahmni-rest-service but we want to change it to plain openmrs rest call without impacting Bahmni-module. So we would change category name and our beneficary service would filter hat out when pulling data. (working on it)
    • The module should also generate feed for any changes in patient-relationships (not started yet).

Current code is here and based on Bahmni`s atomefeed which I guess is very different from openmrs-atomfeed.

Rightnow our focus had been a little bit out because of another project but from mid next week we would start working on it again. The deadline for above is 2 weeks.

Your suggestions are welcome.

@craigappl: I am afraid your changes will probably throw liquibase error on databases on which it has already run. Can you fix it with the “validCheckSum” for the changeset?

regarding the default entry in ‘chunking_history’ table, I have done that already on master.

@maimoonak: if you are going to be publishing the library under “org.opensrp” groupid in a mvn repo, then you can do that with your current fork. If you rather have the code, at a single place and merged and maintained by ict4h, then I suggest the following approach:

  • add the additional advice over core EncounterService
  • add to the config.xml. now we will have advices over both the encounter serivces (core & emrapi)
  • as long as the categories for the event in the 2 encounter advices are different (currently it is not), then it will be fine. other than additional records in the event table!
  • alternatively, if you want only one event raised for encounter, then use a global property like “atomfeedEncounterInterceptClass”, which you can check in the “afterReturning” intercept method and selectively raise event.
  • or if you think EmrEncounterService advice suites your requirements and you only need to override the event content path to point to core encounter rest resource, then use a global property to externalize the “ENCOUNTER_REST_URL”, keeping the default as it is.
  • another option would be, write both the advices, but don’t configure advices in “config.xml”. Use the ModuleActivator.started() method to wire up the encounter advice based on a global property.

Note, all the above, will still not make the module generic. Only patient and encounter events will be raised.