Server Setup For Connect

Requirements on Server for communicating with the Bahmni Connect App

This guide is currently In-Progress. Over the next few months, content will be added to it. 

If you have any suggestions or would like to add pages which talk about the functionality of Bahmni, please feel free to add them.

Hardware Requirements

A normal Bahmni server is required with system requirements as specified here. Additionally, an extra omod (bahmni-offline-sync) and a service (Bahmni-event-log-service) is required for the Bahmni Connect App.

Bahmni Connect App Components on the Server

  • Needs Bahmni-offline-sync omod. To install, run the following command:

    yum install bahmni-offline

    This will get the corresponding omod and places it in /opt/openmrs/modules . 

  •  Needs bahmni-event-log-service. To install, run the following command:

    yum install bahmni-event-log-service

    Alternate way of Installation

    We can also install the above mentioned components using bahmni install command line. For achieving that, one has to edit the inventory file by specifying the IP address in the inventory file under bahmni-offline and bahmni-event-log-service


    run the install command with appropriate inventory file name.
    bahmni - i <inventory-file-name> install

    The above mentioned changes to inventory file should be done before running the install command

Server Configurations

Setup Sync Strategy

Setup Bahmni Connect Sync strategy under OpenMRS global settings. Connect ships with 2 such strategies and you may even develop and plugin your custom strategy. The strategies packaged are

  • Identifier based Sync Strategy: This is useful if you use an identifier prefix and consistent with the locations where you operation. For example, in the demo environment - we have subcenters defined as Subcenter 1 and Subcenter 2 which represent two locations Bahmni and Semariya with BAM and SEM prefix respectively. Any patients with identifiers prefixed with BAM or SEM will sync to the Connect depending on your login location.  You can do this, by setting the following Global Property to IDBasedSyncStrategy


bahmniOfflineSync.strategy = org.bahmni.module.bahmniOfflineSync.strategy.IDBasedSyncStrategy


  • Location Based Sync Strategy: This is useful when you have catchment areas defined in terms of geographical hierarchy. The synchronization of the patient information happens based on the patient's address and its relevance to a catchment area. 


bahmniOfflineSync.strategy = org.bahmni.module.bahmniOfflineSync.strategy.LocationBasedSyncStrategy


  • Configure the classpath for the strategy for filter evaluation in OpenMRS global properties for the key  'bahmniOfflineSync.strategy' as mentioned here. For example, the screenshot below shows the setup of LocationBasedSyncStrategy. 

          


Generate Concatenated Configs for download

  • As part of initial sync, the offline app pulls the concatenated version of the configs in bahmni_config. To concatenate the configs, run the following command.

    bahmni -i <inventory_file> concat-configs

    Note

    We highly recommend you to add separate offline config folder for Bahmni Connect as Connect supports only Clinical and Registration modules. One can download the offline folder from default-config repo and place it in /var/www/bahmni_config folder. Run the above concat-configs command after adding the offline folder.

Generate Artefacts for Initial Sync Improvements

  • From release v0.89, as part of initial sync the offline app syncs all the patients belonging to the LoginLocation/Filter at once instead of syncing one after the other. This is done to reduce the initial sync time. For this to happen, there is a scheduler which runs every night which creates one zip file per filter containing all the patients data for that filter. You can also trigger the job for creating the zip files manually by running the following command.


    bahmni -i <inventory_file> create-connect-artifacts
  • All the zip files created as part of the scheduler will be stored in the directory '/home/bahmni/init_sync/'. This can be configured using the global property 'bahmniconnect.initsync.directory'. 

    If implementer does not run the above command ( create-connect-artifacts ) command, then any patient data will not sync as part of initial sync.

Offline Concepts Setup

All concepts and terminologies relevant will be synced. Essentially all concepts that deemed as Offline Available Concepts will be downloaded. For this to happen, 

You must have a concept named "Offline Concepts" defined in OpenMRS Concept dictionary. This concept is of class 'ConvSet', Is a set, and datatype specified as N/A. All concepts which are members of this concepts will be synchronized to Connect. 

  • If you are creating concepts and want them to be available for usages (e.g. in forms), then you must add the concepts as members of the 'Offline Concepts'


There is an utility script available  which will inspect all templates defined under 'All Observation Templates' and add all relevant concepts as members of 'Offline Concepts'. Please refer for more details in Installation Steps - Connect Server for the utility script 'copyOfflineConcepts.py'

  • The script does not inspect concepts used in 'Forms 2.0' defined forms
  • The script also does not inspect concepts used in registration second page forms.