Documentation for installation from source code

Application Name: Bahmni Version Number: 0.92

Question: I am trying to make some changes to Bahmni v0.92. Please correct me if i am wrong but i see that the only way to run the app is to use Virtual box and vagrant.Is there any documentation or installation guide to run it on external servers like tomcat and apache. I mean a more manual process where developer is in control of the code and deplyment. where we can craete the war file using the ide we like and deploy it on Tomcat or any app server. similarly for UI install it on apache or nginx etc. It would be helpful if somebody can point me or guide if similar documentataion exists.

Along the same lines i would like to know if we know what modules are involved in a particular release . The Bahmni git repository contains a lot of modules which makes it difficult to know which modules are related to which version. appreciate your help.

Moved to the bahmni category.

  • You don’t need virtual box or vagrant to run Bahmni. We generally use that for development purpose.
  • Bahmni installer scripts provisions everything for you. So thats one way to create an environment.
  • Bahmni components are built as layers

lowest level, they are wars, jars, zips, js etc etc

  • it is possible to get everything up and running from scratch, but probably not worth it unless automated! we don’t have it automated yet.
  • in some cases, it is possible to run components independently, but some require additional dependencies. for example Appointments can be just run from simple webserver, as long as you use the APIs mocked or some real servers (or using webpack proxy)

above them are rpm packages

  • most of java services are run as “runnable” executables with embedded tomcat. You might want to check with @mksrom who are working in such manner. Don’t know how much of it is for development purpose. He can guide you best.

above them are entire provision-able installers

  • this you already know

If you are trying to get to work from individual components, help us to improve the documents.

Thank you Angshuman for the response. I am documenting as i am trying to understand the deployment architecture. and i am happy to share as i am learning myself. I am right now compiling individual projects to generate the lower level wars, jars, zips, js etc etc

as far as i understand the following are the rpm’s : 1)bahmni-web-rpm 2)openmrs-rpm 3)bahmni reports rpm 4)bahmni lab connect rpm 5)bahmni lab rpm 6)bahmni pacs rpm 7)bahmni erp connect rpm 8)bahmni erp rpm(python)(including bahmni addons)

currently this is my understanding:

The centos installation steps mentioned at (https://bahmni.atlassian.net/wiki/spaces/BAH/pages/32604585/Setting+up+Bahmni+Dev+Environment) mentions about 4 git cloning commands.

  1. git clone https://github.com/Bahmni/openmrs-module-bahmniapps.git - this is the EMR UI built using angular. it can be compiled using nodejs.
  2. git clone https://github.com/Bahmni/bahmni-core.git - this is server side code written mainly in java. can be compiled using maven
  3. git clone https://github.com/Bahmni/default-config.git - this contains offline,openmrs and openelis. These look to be static files mostly used for configuring the bahmni installation. 4)git clone https://github.com/Bahmni/bahmni-java-utils.git - these are java based projects can be compiles using maven 5)curl -s https://raw.githubusercontent.com/Bahmni/utilities/master/dev/clone-bahmni-repos.sh > /tmp/clone-bahmni-repos.sh this contains all the projects including the one mentioned above.

bahmni apps can be run on webservers like apache,ngnix etc… the default-config,although there is nothing to be compiled also can be run on webservers.

all other rpm’s except the python can be run on tomcat or similar j2ee application servers

I have attached a pdf file (generated from excel file) based on (https://bahmni.atlassian.net/wiki/spaces/BAH/pages/1867786/List+of+Repositories+needed+for+Development+on+Bahmni) In this i am trying to map all the projects which are in scope for 0.92/0.93 release of bahmni to corresponding rpm’s and services. once we have this list then i think we can create individual deployments and run it on server.

Need help from @mksrom or somebody in getting answers to the following questions.

  1. which project(s)/folder(s) maps to which rpm? i dont have any documentation which maps these low level individual deployment artifacts to rpms.

2)how can i create RPM’s and how i can create installer from these RPM’s.

  1. one question i got from reading your response is about “Bahmni installer” scripts - which project/folder contains these scripts or how can they be created?

  2. what is python runtime environment and how to build and run python. any pointers to the documentation will be helpful

  3. Do we need nagios to enable email functionality or can we configure our own email server?

  4. if java servcies are run as "runnable” executables with embedded tomcat then how the port conflicts are taken care?

  5. where are the DB scripts to create new database and sample test data exists

  6. where are the openmrs-module-idgen and openmrs-module-addresshierarchy repos exists? I am not able to find them. they seem to be part of bahmni-openmrs.noarch rpm.Bahmni_Project_Mappings.pdf (41.7 KB)

i am continuing work on compiling different low level jar ,war and zip files. here is my update. i hope somebody can help me get answer to some of the questions. I have compiled the following modules which i am thinking are required to run Bahmni similar to environment which comes with Vagrant

I do have question on some of the modules where i am facing issues.
I am trying to build it using java 1.8.241 oracle jdk, Apache Maven 3.3.3 and ant 1.10.7, and run it on jre 1.8.241, apache 2.4, tomcat 8.5 , postgres 12 and my sql v8 om mac

  1. “default-config” this module seems to be pretty static nothing to compile. Should we just copy it to under apache after renaming it to “bahmni-config”. or do we need to do anything else?

  2. “Bahmni Playbooks” what is this module about?

3)“emr-functional-tests” do we need to run the scripts in this module? is this for OpemMRS or Bahmni part of EMR

4)I have replace bahmni-offline module with bahmni-connect. Do we need to deploy bahmni-offline-sync as well?

5)OpenElis =- i am assuming this is the code base of Openelis. I am having trouble compiling the version i got from “https://github.com/bahmni/openerp-modules.git”. Can we latest from “https://github.com/I-TECH-UW/OpenELIS-Global-2/” ?

  1. where is the code for “bahmni-lab-connect.noarch” which i am assuming to be the connector for Openelis.

  2. not able to run git clone for “reference-data”. do i need to request access to it?

8)do we need openerp-modules or odoo-modules or both

  1. “openerp-atomfeed-service” I am getting the following error. Failed to execute goal org.liquibase:liquibase-maven-plugin:2.0.1:update (run-postgres-change-sets) on project openerp-atomfeed-service: Error setting up or running Liquibase: org.postgresql.util.PSQLException: FATAL: password authentication failed for user “postgres”. where can we specify the value

  2. where is the code for “openelis-atomfeed-client-0.92-SNAPSHOT.omod” and/or “openelis-atomfeed-client.omod”

  1. Yes. just drop it on reachable URL as https:///bahmni_config/
  2. Its for automated provisioning using ansible.
  3. Bahmni.
  4. Do you need bahmni-connect? if not, ignore
  5. you got the wrong codebase. thats for ERP. the right repo is https://github.com/bahmni/openelis
  6. yes.
  7. nope. Bahmni-core module is enough.
  8. depends. Bahmni 0.92 requires odoo-modules.
  9. check the mvn pom file
  10. within bahmni core repo.

May I ask what are you trying to accomplish? Please note that Bahmni codebases is “AGPL”, meaning any derivation (distributed or hosted) must also be AGPL compliant. Meaning, you have to make your source code public.

i am continuing work on compiling different low level jar ,war and zip files. here is my update. i hope somebody can help me get answer to some of the questions. I have compiled the following modules which i am thinking are required to run Bahmni similar to environment which comes with Vagrant

I do have question on some of the modules where i am facing issues.
I am trying to build it using java 1.8.241 oracle jdk, Apache Maven 3.3.3 and ant 1.10.7, and run it on jre 1.8.241, apache 2.4, tomcat 8.5 , postgres 12 and my sql v8 om mac

  1. “default-config” this module seems to be pretty static nothing to compile. Should we just copy it to under apache after renaming it to “bahmni-config”. or do we need to do anything else?

  2. “Bahmni Playbooks” what is this module about?

3)“emr-functional-tests” do we need to run the scripts in this module? is this for OpemMRS or Bahmni part of EMR

4)I have replace bahmni-offline module with bahmni-connect. Do we need to deploy bahmni-offline-sync as well?

5)OpenElis =- i am assuming this is the code base of Openelis. I am having trouble compiling the version i got from “https://github.com/bahmni/openerp-modules.git”. Can we latest from “https://github.com/I-TECH-UW/OpenELIS-Global-2/” ?

  1. where is the code for “bahmni-lab-connect.noarch” which i am assuming to be the connector for Openelis.

  2. not able to run git clone for “reference-data”. do i need to request access to it?

8)do we need openerp-modules or odoo-modules or both

  1. “openerp-atomfeed-service” I am getting the following error. Failed to execute goal org.liquibase:liquibase-maven-plugin:2.0.1:update (run-postgres-change-sets) on project openerp-atomfeed-service: Error setting up or running Liquibase: org.postgresql.util.PSQLException: FATAL: password authentication failed for user “postgres”. where can we specify the value

  2. where is the code for “openelis-atomfeed-client-0.92-SNAPSHOT.omod” and/or “openelis-atomfeed-client.omod”

@angshuonline thank you for clearing my doubts. i am trying to build the applications from source and deploy it on standalone servers . I am also about the license model of Bahmni but thank you for bringing it up. right now i am trying to build in on my own laptop.