Bahmni EMR Backend (OpenMRS + Bahmni Omods)

Action Plan:

  1. Use OpenMRS base image and MySQL image to just run Clean OpenMRS DONE

  2. Add legacy ui omod and validate if we can login to openmrs DONE

  3. Build dependent repo codebases locally. NEEDS ASSISTANCE

  4. Create database images

    1. Fresh Database image DoNE

    2. Demo Database image DONE

  5. Create Bahmni OpenMRS image

    1. Initially volume mount modules and test functionality DONE

    2. Bake Bahmni Module OMODS in the docker image DONe

    3. Override OpenMRS start script to perform migrations, postinstall, configuration DONE

      1. Have a look at bahmni-emr-ansible templates

  6. Include bahmni-lab-connect OMOD and its RPM scripts DONE

    1. Lab Connect OMOD comes with bahmni distro, so skipping it .

    2. Only liquibase migrations for Atomfeed client has been done using custom script

  7. Validate atomfeed sync between different services

    1. Validate for fresh instances of databases DONE

    2. Validate for demo instances of databases IN PROGRESS

      1. When using demo dumps from emr-functional-tests repository there seems to be a mismatch with master data between ELIS and MRS. But sync between EMR and Odoo happens. The following exception is thrown by OpenMRS.

        1 2 3 4 5 6 7 ERROR - BaseRestController.handleException(115) |2021-10-06 08:37:45,455| No panel concept found with uuid 12f404d7-7615-412d-abb8-9273608c12e5 org.openmrs.module.emrapi.encounter.exception.ConceptNotFoundException: No panel concept found with uuid 12f404d7-7615-412d-abb8-9273608c12e5 at org.bahmni.module.referencedata.web.controller.PanelController.getPanel(PanelController.java:33) at sun.reflect.GeneratedMethodAccessor538.invoke(Unknown Source) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) at java.lang.reflect.Method.invoke(Method.java:498) at org.springframework.web.bind.annotation.support.HandlerMethodInvoker.invokeHandlerMethod(HandlerMethodInvoker.java:177)
      2. Demo backups from bahmni-scripts repository should be used and tested. DONE (Needs a bug to be fixed) (https://bahmni.atlassian.net/browse/BAH-1261 )

  8. Volume mount required folders DONE

  9. Implementer Provisions to add new modules DONE

  10. Developer Provisions to add/update Bahmni modules DONE

  11. Update Documentation at README.md DONE

  12. Configure Github Actions for Image build and publish

  13. Compare EMR functional tests DB backups with bahmni-scripts DB backups DOne

  14. Try with MySQL 8.0 LATER

 

Dependent Repos to Look :

Repo Name

Use Case

How is it included in dockerization

Repo Name

Use Case

How is it included in dockerization

bahmni-core

Provides Bahmni Core OMODs

 

openmrs-distro-bahmni

Provides all bahmni-distro.zip

 

emr-functional-tests

Replace bahmni-package/bahmni-emr/resources/demo-dump from here

Used by build script while building DB docker image

bahmni-package

RPM config and Build scripts

Config files has been templated and replaced at runtime using envsubst

 

Known Issues:

  1. Logout returns 404.
    Analysis: This happens only when bahmni database dumps are used. When started against a fresh mysql:5.7 instance, seems to work good.
    Temporary Fix : When openmrs is restarted once, logout feature works fine.

    1. However need to find the root cause for the problem when it is started.

  2. Index Rebuild Required
    Analysis: When bahmni is started with demo databases, some concepts fails to load and bahmni ui seems to be broken
    Temporary Fix: After OpenMRS starts, navigate to Administartion → Maintanence → Search Index and then click on Rebuild Search Index

    1. Need to find a way to automate this step by invoking some api.