Release Notes

Bahmni LITE 1.0.0 is the latest version of Bahmni, released on 15-June-2023. Bahmni LITE is preconfigured for use in clinics and small hospitals. Please use this version for production. More details about Bahmni Lite are here. To use the docker version of Bahmni see this: Running Bahmni on Docker. For larger hospitals, one can consider using Bahmni LITE, if its feature set fits the use-cases, otherwise check out Bahmni V0.93 which was released on 13-June-2022.

Bahmni LITE Release 1.0 (15 June 2023)

Explore Bahmni Lite 1.0.0

 Enhancements
  1. Dockerized: Fully dockerized version of Bahmni, to install and run Bahmni easily on an OS (Linux/Windows/Mac).
  2. Cloud Ready: AWS & Kubernetes ready, with terraform automation to deploy Bahmni Lite v1.0.0 on the cloud, in a secure fashion. Read more here.
  3. Security: Significant security upgrades and fixes! Also see the new Security Guide.
  4. Lightweight: Contains Bahmni EMR (running on OpenMRS latest version 2.5.9), Reports, and Crater for billing & invoicing.
  5. Pre-configured: Pre-configured with CIEL dictionary containing 50,000+ medical terms with SNOMED, LOINC and ICD-10 mappings, Clinical forms, India Essential Drug List and Reports, so that it is ready out-of-the-box for demos and requires minimal configuration to roll out.
  6. Mobile Responsive: Bahmni EMR UI is now mobile responsive for the Clinical module, so clinicians on the move can use Bahmni from their mobile/tablets.
  7. Lab Report Upload Module: Comprises a new Lab Report upload module (written in React). See screenshot here.
  8. FHIR Support: Provides FHIR APIs to pull data from Bahmni / OpenMRS. Read more about Bahmni Interop support for Global standards here.
  9. Tele-consultation support using Jitsi.
  10. SMS / Whatsapp / Email support for sending prescriptions or informing patients about Appointments, etc.
  11. Metabase: Comes out-of-box with Metabase analytics / reporting tool connected to OpenMRS DB and Mart DB (for easier report creation). Read more and see demo video here: Bahmni Metabase / Mart
 Pre-requisites

Docker and docker compose needs to be installed for bahmni lite setup.  

For installing docker, docker compose and other docker commands please refer to Running Bahmni on Docker wiki page.

 Installing

Installing Bahmni Lite using docker

git clone https://github.com/Bahmni/bahmni-docker.git && cd bahmni-docker
git checkout tags/1.0.0-lite
cd bahmni-lite
# Using docker compose
docker compose --profile bahmni-lite up -d
# Or use the bash script
./run-bahmni.sh


As Bahmni docker ships with default credentials, make sure that these are changed to ensure Bahmni setup is safe. Refer to the steps involved here.

To be noted that Bahmni comes with an out-of-the-box demo database. The demo database contains a location (Bahmni Clinic) and with some users created for login. One can also perform an installation with a fresh schema. Refer to this document. Also you can run your own version of Bahmni-Config by following the steps mentioned here.

 List of JIRA tickets fixed
For a full list of all Jira issues fixed in this release, see Jira tickets tagged with Bahmni Lite 1.0.
 List of Known Issues

S.No

Issue Description

JIRA ID / Comments

1.

Print on patient dashboard should not print hyperlinks

BAH-2952 - Getting issue details... STATUS

2.

Dose field in medication can be skipped if the doctor clicks on 'add button' quickly after adding medication name

BAH-2954 - Getting issue details... STATUS

3.

If Patient summary print is spread across multiple pages then, page breaks are not proper.

BAH-2915 - Getting issue details... STATUS
4.

If patient documents is viewed in patient dashboard, on clicking BROWSER back button, the document modal remains

BAH-2956 - Getting issue details... STATUS
5.

Unable to save the Diabetic Intake Form when values are entered for “Diagnosis Certainty” field.

BAH-2958 - Getting issue details... STATUS
6.

If Tele Con Appointment status is not equal to scheduled then Join Tele Consultation button is missing on the Patient dashboard

BAH-2959 - Getting issue details... STATUS
7.

Appointment time in email is different from the actual time set

BAH-3063 - Getting issue details... STATUS

8.

Details are not aligned properly in referral letter

BAH-3064 - Getting issue details... STATUS
Release 0.93.2 (13 June 2022)

 Bahmni version: 0.93-219

 Early Preview

This release includes fixing the vulnerabilities with struts-core.jar dependency

 All Enhancements


BAH-1872

Release Activities for 0.93.2 Bahmni Release

BAH-1603

Investigate on upgradation of struts2-core in OpenElis

BAH-1693

Investigate on upgradation of struts2-core in on openmrs-core

BAH-1688

"All" Tab search: Unable to get all the patients using %

BAH-1687

"All Tab search" : Unable to search the patient using name (Fully or partially)

BAH-1864

Fix deletion of macrotemplate in Bahmni-reports

 Pre-requisites
Operating System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.93

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
  • MySQL admin password: From 0.92, we are using a stricter password policy and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.
  • MySQL version configuration: Default MySQL version supported is 5.6A new configuration parameter mysql_version has been introduced to override MySQL version, which you can configure in setup.yml before running the install command. eg. mysql_version=5.7.30

Briefly:

Install

# install dependencies
> yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm

> yum install -y epel-release

> pip install --upgrade pip

> pip install babel==v1.0 python-stdnum urllib3==1.21.1 idna==2.5 chardet==3.0.2 certifi==2017.4.17 qrcode pyserial pypdf python-chart psycogreen passlib ofxparse requests


# install bahmni command line installer
> yum install -y https://repo.mybahmni.org/releases/bahmni-installer-0.93-219.noarch.rpm


# download the postgres repo rpm. 
> rm -f /opt/pgdg-redhat-repo-*

> cd /opt && wget https://yum.postgresql.org/common/redhat/rhel-7-x86_64/pgdg-redhat-repo-42.0-23.noarch.rpm --no-check-certificate

# if the filee /etc/bahmni-installer/setup.yml is not there, you can get a sample
> curl -L https://tinyurl.com/yyoj98df >> /etc/bahmni-installer/setup.yml

# configure your implementation specific settings, set repo URL
> vi /etc/bahmni-installer/setup.yml

# configure components you require
> vi /etc/bahmni-installer/local

# run the installer
> bahmni -i local install
 Upgrade/Post Installation Instructions
  1. Rebuild Search Index: It's required to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index.
  2. Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This was fixed as part of Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.
    select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;

    If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

  3. Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.
  4. Oviyam Viewer URL : You may need to update the configuration for Oviyam DICOM viewer URL in app config for clinical dashboard, if you are migrating from older version. Please edit file /var/www/bahmni_config/openmrs/apps/clinical/dashboard.json for the “pacsImageUrl” attribute like in the example here.
  5. Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide. 
  6. Odoo - Undefined period error during quotation confirmation : While confirming a quotation, if there is no period defined an error is thrown "There is no Period defined". While this has been fixed for 2018 with the default ERP database, if you are going to be installing in 2021, you may still face this error. 
    Workaround:  Please follow the steps as mentioned in this page -  OpenERP error "There is no period defined" while confirming a sale quotation 
  7. Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)


 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information

Can not start opnmrs service using "systemctl": 

  • Openmrs service fails to start with “systemctl start openmrs” after the usage of “service openmrs start”: 
    1. mv /opt/openmrs/log /opt/openmrs/log-backup
    2. rm /var/log/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    3. rm /var/run/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    4. mkdir /opt/openmrs/log
    5. chown bahmni:bahmni /opt/openmrs/log
    6. ln -s /opt/openmrs/log /var/log/openmrs
    7. chown -R bahmni:bahmni /var/log/openmrs


Redirecting service commands to systemctl:

  • With the release of Bahmni version 0.92, Bahmni’s services uses systemd unit files as opposed to the older init.d files. Using service commands to start/stop Bahmni services are not supported and only systemcl commands are advised. To prevent use of “service” command, we can run the optional step below that sets up a “service” function to redirect service command to call “systemctl” instead:

    1. vi ~/.bash_profile
    2. Add the following line:
    
    service() { local first=$1; local second=$2; echo “Redirecting to systemctl from Bahmni, to unset this run ‘unset -f service’“; systemctl $second $first;}
    
    3. Save and close the file
    4. source ~/.bash_profile

    To remove the above function, modify the same file and remove the service function.

 Known issues...
Known Issues
  • Use in different locale other than the default/main  - While we have improved localization support in registration and clinical modules, and searching concepts by name in logged in locale is possible, there are places in the clinical module where it is not done so - eg. medication orders. In such cases, the concepts are still being displayed in the main locale set for the implementation.
  • Performance issues with MySQL 5.7:  we have noticed certain queries taking a lot of time with MySQL 5.7 version. This release defaults MySQL version to 5.6. If you are using MySQL 5.7 and are migrating from older version of Bahmni, please set the MySQL version to 5.7 in the setup.yml
  • Beds Count mismatch on new Bed Management app: We have seen that earlier way of adding bed by sql insertions/deletions have created some dangling beds which might result in Beds count mismatch on new Bed Management app. This can also result in unpredictable exceptions on new Bed Admin UI while managing beds. You can verify if there is such issue in your database using below query and fix it instead of failing at liquibase migrations during installation.

    > select * from bed_location_map where bed_id is null;
    > select * from bed_location_map where bed_id not in (select distinct bed_id from bed);
    
    

    The first SQL returning more than zero records, is perfectly alright. If you have defined a layout but not assigned a bed for each of the locations in the layout of a ward/room, this is likely to happen. From "Ward Management" Console, you can assign a bed to that position. The second SQL will identify the invalid “bed” allocation in a ward. Invalid here means - allocation to a “bed” in a ward, which is referring to a not existent “bed” record in the “bed” table. Before running the upgrade, you need to ensure that such bed allocations are removed (remove the record) or updated with bed_id being NULL. 

  • Radiology orders are not synching unless we restart services. (pacs-integration, dcm4chee, httpd)

  • Encountered an Error saying "Feed does not exist" on openmrs logs
> update bed_location_map set bed_id = null where bed_location_map_id = <bed_location_map_id from the above query>;
Release 0.93.1 (6 April 2022)

 Bahmni version: 0.93-215

 Features
  1. Patient Identifier Extension : registration module now allows for lookup and association of other system identifiers (eg Interacing with a National ID system) by means of custom extension.
 Early Preview

This release includes an up-gradation of the log4j version to the latest (2.17.1) to overcome the vulnerabilities, please refer to the below talk thread for more details, https://talk.openmrs.org/t/log4j-security-vulnerability-impact-on-bahmni-cve-2021-44228/35367

 All Enhancements


BAH-1318

Upgraded log4j version to 2.12.4, web-clients version to 0.94.2, atomfeed version to 1.9.5, openmrs version to 2.1.6

BAH-1327

Upgraded log4j version to 2.17.1, java-utils-version to 0.94.2, openmrs-atomfeed version to 2.6.1, atomfeed version 1.10.1,openmrs version to 2.1.6,  adds liquibase migration to support column change

BAH-1330

Upgraded log4j version to 2.17.1, java-utils-version to 0.94.2, openmrs version to 2.1.6

BAH-1331

Upgraded log4j version to 2.17.1, atomfeed version to 1.10.1, openmrs-atomfeed version to 2.6.1, bahmni i.e apps version to 1.2.0-SNAPSHOT, openmrs-webservices version to 2.17, emr-api-omod version to 1.22.1

BAH-1332

Upgraded log4j version to 2.17.1, web-clients version to 0.94.2, quartz version to 2.3.2, sprint-boot-starter-parent version to 1.5.1.RELEASE

BAH-1333

Upgraded log4j version to 2.17.1, Deprecated email appender, 

BAH-1334

Upgraded log4j version to 2.17.1, atomfeed version to 1.10.1, web-clients version to 0.94.2, quartz version to 2.3.2, jackson version to 2.13.1

BAH-1345

Upgraded log4j2 property files

BAH-1346

Upgraded log4j2 property files

BAH-1354

Upgraded log4j version to 2.17.1, quartz version to 2.3.2, web-clients version to 0.94.2

BAH-1355

Upgraded log4j version to 2.17.1

BAH-1356

Upgraded log4j version to 2.17.1

BAH-1362

Upgraded log4j version to 2.17.1, removed joda time dependency

BAH-1372

Upgraded log4j version to 2.17.1

BAH-1373

Upgraded log4j version to 2.17.1, atomfeed version to 1.10.1, removed joda time dependency

BAH-1378

Upgrades web-clients version to 0.94.2

BAH-1419

Upgraded openmrs version to 2.1.6, atomfeed version to 1.10.1, openmrs-atomfeed version to 2.6.1, removed joda-time dependency

BAH-1431

Upgraded atomfeed version to 1.10.1, openmrs atomfeed version to 2.6.1, removed joda time dependency

BAH-1499

Upgraded log4j version to 2.17.1, atomfeed version to 1.10.1, openmrs-atomfeed version to 2.6.1, removed joda time dependency

BAH-1397

Generic Implementation of Extension Point for Identifier linking. 

BAH-1527

Postgres repo URL is deprecated causing an error during Bahmni installation

 Pre-requisites
Operating System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.93

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
  • MySQL admin password: From 0.92, we are using a stricter password policy and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.
  • MySQL version configuration: Default MySQL version supported is 5.6A new configuration parameter mysql_version has been introduced to override MySQL version, which you can configure in setup.yml before running the install command. eg. mysql_version=5.7.30

Briefly:

Install

# install dependencies
> yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm

> yum install -y epel-release


# install bahmni command line installer
yum install -y https://repo.mybahmni.org/releases/bahmni-installer-0.93-215.noarch.rpm



# download the postgres repo rpm. 
> rm -f /opt/pgdg-redhat-repo-latest.noarch.rpm
> rm -f /opt/pgdg-redhat-repo-42.0-23.noarch.rpm
> cd /opt && wget https://yum.postgresql.org/common/redhat/rhel-7-x86_64/pgdg-redhat-repo-42.0-23.noarch.rpm --no-check-certificate

# if the filee /etc/bahmni-installer/setup.yml is not there, you can get a sample
> curl -L https://tinyurl.com/yyoj98df >> /etc/bahmni-installer/setup.yml

# configure your implementation specific settings, set repo URL
> vi /etc/bahmni-installer/setup.yml

# configure components you require
> vi /etc/bahmni-installer/local

# run the installer
> bahmni -i local install
 Upgrade/Post Installation Instructions
  1. Rebuild Search Index: It's required to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index.
  2. Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This was fixed as part of Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.
    select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;

    If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

  3. Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.
  4. Oviyam Viewer URL : You may need to update the configuration for Oviyam DICOM viewer URL in app config for clinical dashboard, if you are migrating from older version. Please edit file /var/www/bahmni_config/openmrs/apps/clinical/dashboard.json for the “pacsImageUrl” attribute like in the example here.
  5. Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide. 
  6. Odoo - Undefined period error during quotation confirmation : While confirming a quotation, if there is no period defined an error is thrown "There is no Period defined". While this has been fixed for 2018 with the default ERP database, if you are going to be installing in 2021, you may still face this error. 
    Workaround:  Please follow the steps as mentioned in this page -  OpenERP error "There is no period defined" while confirming a sale quotation 
  7. Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)


 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information

Can not start opnmrs service using "systemctl": 

  • Openmrs service fails to start with “systemctl start openmrs” after the usage of “service openmrs start”: 
    1. mv /opt/openmrs/log /opt/openmrs/log-backup
    2. rm /var/log/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    3. rm /var/run/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    4. mkdir /opt/openmrs/log
    5. chown bahmni:bahmni /opt/openmrs/log
    6. ln -s /opt/openmrs/log /var/log/openmrs
    7. chown -R bahmni:bahmni /var/log/openmrs


Redirecting service commands to systemctl:

  • With the release of Bahmni version 0.92, Bahmni’s services uses systemd unit files as opposed to the older init.d files. Using service commands to start/stop Bahmni services are not supported and only systemcl commands are advised. To prevent use of “service” command, we can run the optional step below that sets up a “service” function to redirect service command to call “systemctl” instead:

    1. vi ~/.bash_profile
    2. Add the following line:
    
    service() { local first=$1; local second=$2; echo “Redirecting to systemctl from Bahmni, to unset this run ‘unset -f service’“; systemctl $second $first;}
    
    3. Save and close the file
    4. source ~/.bash_profile

    To remove the above function, modify the same file and remove the service function.

 Known issues...
Known Issues
  • Use in different locale other than the default/main  - While we have improved localization support in registration and clinical modules, and searching concepts by name in logged in locale is possible, there are places in the clinical module where it is not done so - eg. medication orders. In such cases, the concepts are still being displayed in the main locale set for the implementation.
  • Performance issues with MySQL 5.7:  we have noticed certain queries taking a lot of time with MySQL 5.7 version. This release defaults MySQL version to 5.6. If you are using MySQL 5.7 and are migrating from older version of Bahmni, please set the MySQL version to 5.7 in the setup.yml
  • Beds Count mismatch on new Bed Management app: We have seen that earlier way of adding bed by sql insertions/deletions have created some dangling beds which might result in Beds count mismatch on new Bed Management app. This can also result in unpredictable exceptions on new Bed Admin UI while managing beds. You can verify if there is such issue in your database using below query and fix it instead of failing at liquibase migrations during installation.

    > select * from bed_location_map where bed_id is null;
    > select * from bed_location_map where bed_id not in (select distinct bed_id from bed);
    
    

    The first SQL returning more than zero records, is perfectly alright. If you have defined a layout but not assigned a bed for each of the locations in the layout of a ward/room, this is likely to happen. From "Ward Management" Console, you can assign a bed to that position. The second SQL will identify the invalid “bed” allocation in a ward. Invalid here means - allocation to a “bed” in a ward, which is referring to a not existent “bed” record in the “bed” table. Before running the upgrade, you need to ensure that such bed allocations are removed (remove the record) or updated with bed_id being NULL. 

  • Radiology orders are not synching unless we restart services. (pacs-integration, dcm4chee, httpd)

  • Encountered an Error saying "Feed does not exist" on openmrs logs
> update bed_location_map set bed_id = null where bed_location_map_id = <bed_location_map_id from the above query>;
Release 0.93 (25 Oct 2021)

 Bahmni version: 0.93-197

 Features
  1. Localization - While Bahmni was designed for internationalization, there remain certain gaps and challenges towards completely localizing a specific Bahmni implementation. In this release, gaps primarily in Registration and Clinical modules have been fixed. For concepts, if you have the metadata properly set up for other languages, it would reflect so once you have logged on to a specific locale.
  2. Appointment modulenew features include ability to schedule for multiple providers for an appointment, conflict management for patients and services, ability to schedule recurring appointments etc
  3. Forms 2Forms now have additional events like onSave which allows you to do validation at form level. Form builder UI now provides a JavaScript editor with basic validations, help etc. It also provides a “preview” mode to test out your form and its behavior. Also a new table control has been introduced.
  4. Access ControlReports and forms can now be made accessible to users with specified privileges.
  5. OT Scheduling - Weekly view is now provided for OT schedules.
  6. Additional orderables -  you may mark a concept as “sellable” and configure such concepts in the orders tab, so that on order they appear on Odoo quotations. For example - procedures, counselling, physiotherapy etc
  7. Lab Improvements - result entry for referred out tests can be marked as done, test status configuration, test method management, sample printout with barcode,  
  8. Security Improvements - security enhancements towards XSS, CSRF, Domain whitelisting, Injections Attacks etc
  9. Teleconsultation(Preview feature only) - It's also possible to schedule a tele consultation appointment, built on top of Jitsi, allowing Doctor-patient interactions over video. Note, while the teleconsultation feature is fully functional, there are some missing features you should be aware of before using on production.
  10. Oviyam Viewer Upgrade - Oviyam Dicom Viewer has been upgraded to v.2.8.1.


 Early Preview

This release includes a preview of a new feature that we expect to officially include in the Bahmni 0.94 release. There is no official support for these previews, and no guarantee that configurations created now will be compatible with the official release.

Teleconsultation: With this release, it's possible to schedule a tele consultation appointment. Note, while the teleconsultation feature is fully functional, there are some missing features you should be aware of before using on production.

 Add-ons
  1. Bahmni-mart : A simplified database used for analytics wherein hierarchical structures have been flattened and pivoted and many other entities denormalized. You may plugin data visualization tools Metabase, Superset etc on top of this database. NOTE: Bahmni-mart is not part of the default distribution and packaging of Bahmni 0.93. Please follow the steps here if you would like to try this out. 
  2. Integration with OpenMRS Reporting : This Open Web App (OWA) is useful to execute Reports defined in the OpenMRS reporting module.  Please see here for documentation
 All Enhancements

BAH-551

Add new concept reference term map for pre-existing concept by CSV upload

BAH-1171

The timeslot of appointments displayed in appointment display control is not in local timezone but in server timezone

BAH-1136

Change query to get provider from patient appointment provider table

BAH-1123

Patient ID as configurable hyperlink on Appointments List View

BAH-923

Appointments: Allow saving Speciality entities

BAH-913

Reset Appointment Status

BAH-675

Show Language of the patient in List View, Appointments module

BAH-624

Auto refresh of Appointments

BAH-623

Multiple provider assignment for an appointment

BAH-1222

Address Translation gaps in the Clinical, IPD, OT, Document Upload and Appointment modules

BAH-1176

Diagnosis search from clinical module should be done in user language

BAH-1173

Diagnosis Search should be done in user locale

BAH-1060

Weekly view for OT

BAH-1017

Preview the form2 form before publishing in Implementer interface

BAH-1008

Validate and format form condition

BAH-988

Clinical Module - Internationalization of Patient Dashboard

BAH-973

Print the List View in Bed Management module

BAH-1041

Patient dashboard trends display control - Localise field names of patient attributes

BAH-972

Import of Forms 2.0 in Implementer Interface

BAH-790

Role/Privilege based access to Forms

BAH-1007

Vertical scroll - Implementation for ObstoObs flowsheet

BAH-1006

Display drugs in drug-o-gram in the "latest first" order

BAH-990

Localise the label texts of the patient attribute fields

BAH-663

Weekly View in the Appointments Calendar

BAH-968

Saving Data for obs which are selected and later hidden

BAH-930

frontend to use names field and display the FSN in user specified locale

BAH-766

Able to view and edit forms on the patient dashboard

BAH-1169

Support syncing order units between OpenMRS and Odoo

BAH-965

Bug - Refund of discounted invoice does not consider the discount

BAH-883

Bahmni Odoo addon module to support "sellable" products/services

BAH-1032

Forms getValue for MultiSelect Observation

BAH-1018

Use form UUID as translation file and form file name

BAH-1016

UI enhancements for Form Builder

BAH-1010

Create an event editor on implementer interface to provide onSave event handler

BAH-1009

Introduce onFormSave Event when form save is clicked in consultation page

BAH-1005

UI Enhancements forms 2.0

BAH-1001

Checks and inherits privileges for different versions of the form.

BAH-912

Export multiple(One and more) form builder forms in implementer-interface

BAH-866

[Form builder] Copy the translations of form (2.0) from one version to next version in implementer-interface

BAH-748

Create and render a table inside form

BAH-690

API to display form builder forms(forms 2.0) for a patient in dashboard

BAH-969

Support Translations for Bed Management Pop-up

BAH-1246

OpenELIS lab samples grid does not show the print button

BAH-1207

non-conformity page not opening in OpenElis

BAH-1078

Mark as done for result entry for referred out tests

BAH-1077

Disable modification of orders in Bahmni after editing the sample in ELIS during sample collection.

BAH-981

Lab - Type of test status configuration, allow user to select test status on results entry

BAH-1076

Free text reference range information for lab tests

BAH-1075

Test method management

BAH-1074

Sample label printout with barcode.

BAH-1073

New accession number generation logic

BAH-1188

Apply filters dynamically on the Calendar/List view of OT Scheduling module

BAH-1059

Custom surgical attributes in OT

BAH-1087

Making the "Address information" section label dynamic in the registration page

BAH-1040

Customise display order of First name, Last name and Middle name in Patient registration in EMR

BAH-987

Localise the coded concepts in patient attribute fields

BAH-927

Registration module - Create Patient should display localised string of coded concepts

BAH-1249

Patient Attribute, of type concept, should display answers in user locale

BAH-395

ROLE based access to reports

BAH-755

API - Search Provider by attribute

BAH-1082

New appointments endpoint to search patients by name/identifier relying on ORM

BAH-1208

Update Bahmni front end dependencies

BAH-763

bahmni-erp-connect application properties not getting overridden by system or env properties

BAH-1149

Bahmni-Reports- upgrade tomcat version

BAH-1178

Ship MysQL v5.6 as default in Bahmni for avoiding performance issues

BAH-1175

Update Bahmni openmrs distro dependency to include EMR API 1.24.8 release version

BAH-929

Get Concept by fullyspecifiedName API, to support the existing contract while modifying the response to include the result in user specified locale

 Bug Fixes

BAH-1029

Encounter CSV upload not working for concept names having a dot or decimal point

BAH-679

Issue with CSV upload for person attributes of coded data type

BAH-677

CSV upload failing for person attribute of 'Date' being empty

BAH-1013

Recurring Appointment details are not captured in the mart as events are not raised.

BAH-966

Error in Appointment scheduling in multiple tabs when logged out

BAH-960

Tab switch list view to calender view in Appointment scheduling

BAH-689

Appointment still shows under provider name in calendar view even after removing the provider from the appointment

BAH-688

Sorting is not working for provider column on Appointment's List view

BAH-687

Provider name does not show on calendar view popup

BAH-1240

Oviyam viewer launched does not show the correct study for patient and accession

BAH-1226

DICOM Viewer: OVIYAM2 not working on latest Chrome, Firefox browsers

BAH-1220

Events not generated when bacteriology obs is edited from patient dashboard

BAH-1148

File uploaded while entering the results for referred out tests is not saved until and unless the "Mark as Done" flag is checked before saving it.

BAH-1088

Doc Upload - Label for visit "to" is shown garbled

BAH-1056

Bahmni-core liquibase migration failing

BAH-1019

Obs are saved even if the form is deleted before save

BAH-1012

Cannot read property 'map' of undefined' error on dashboard display controls

BAH-970

ADT module shows an error message on load in the latest code on master

BAH-951

Missing "/" when trying to load Groovy scripts

BAH-928

Concept fetching by FSN should be driven by the default locale- Clinical App

BAH-696

Clinical app does not open on ipad 2

BAH-195

"More than one encounter matches the criteria" on opening patient dashboard

BAH-992

Bahmni Offline Sync omod results in failed openmrs service loading

BAH-950

filter column in event_log table is not updated to correct value in Bahmni Connect

BAH-640

Can not identify latest Form (2.0) version on Android

BAH-1243

Odoo startup fails because of missing python dependency of xlswriter

BAH-1212

Deserialization error processing orders for Odoo

BAH-1135

OpenMRS not syncing with OpenERP/Odoo due to missing property aleable.feed.generator.uri

BAH-1126

None type does not remove previously added discount in the quotation.

BAH-1124

Odoo login screen distorted.

BAH-958

Bug - ODOO Receipt printing of Partial Payment

BAH-1151

[Implementer Interface] Form2 Form Translations are not saved correctly in some cases

BAH-1150

[Implementer Interface] Form2 form condition of one form where overlapping with form conditions of other form.

BAH-1138

Not able to add .json files while importing a forms in implementer interface

BAH-1130

[Display Control] Text is getting truncated in Form Display Control and Visit Display Control when tried to add lengthy text in any of the text field

BAH-1128

Importing a form and saving it without a form privilege is failing.

BAH-1089

Form2 Forms are not rendering on Registration Second(Visits Page) Page

BAH-1011

Importing a published form is creating version 1 and not the next version

BAH-980

CSS breaking for notes in table control

BAH-976

Obs to Obs Flow Sheet formating issue for add more forms

BAH-937

Translation file names not matching form names

BAH-886

Issues with the Forms 2.0

BAH-874

Form Conditions with Table

BAH-831

Form Builder - Dragging a section inside an inner section causes the entire section to vanish

BAH-513

Deleted Form should be enabled in "Add New Obs Forms" list

BAH-141

Form builder - deleting one controls in a row deletes another

BAH-133

Do not allow to drag and drop controls to obsGroup

BAH-1247

Forms 1 shows FSN for the locale, and not Short Name

BAH-1244

python-psycopg2 installation fails due to GPG key isssue

BAH-1227

Postgres Installation fails on 0.93, due to missing yum repo for postgres 9.6

BAH-1216

Client side logging module throws error

BAH-1179

postgres version still retained as pgdg-centos96-9.6-3.noarch.rpm in /roles/postgres/defaults/main.yml

BAH-1116

Bahmni installation fails due to Click python lib dependency - Click 7.0 to be installed

BAH-935

Bahmni installer updates postgres.conf file when trying to backup postgres database

BAH-828

Unable to apply Bahmni Liquibase changes on a 'fresh' OpenMRS database.

BAH-1217

Update Ansible RPM location in Bahmni installer

BAH-1189

[Bed Management] Multiple clicks while Admitting, Transferring and Discharging patient having multiple entries in database

BAH-956

Ward list layout is not seen in In-Patient module

BAH-938

Bed Management UI layout issues

BAH-867

[Bed management] beds layout not being displayed correctly

BAH-661

Not possible to create Bed Layout without mentioning all bed details

BAH-553

Do not allow a bed type or bed tag to be deleted if it is in use with a bed

BAH-1242

Organisation page in OpenElis Administration menu displays an empty page.

BAH-1241

Unable to save sample data in OpenElis

BAH-1211

OpenELIS Reset password feature does not work

BAH-1147

Null' getting printed in sample label print for collection date

BAH-1127

OpenElis data not syncing to OpenMRS in 0.93 due to dependency discrepency

BAH-1118

LAB - error at startup, due to Hibernate mapping Test.referenceInfo column

BAH-1084

Startup of bahmni-lab fails to start due to missing property

BAH-1079

Fix for referred out test counts on the dashboard

BAH-1170

[OT] Issues with surgical block created across multiple days

BAH-1218

Formbuilder reports not working

BAH-649

Audit-log - fix bean definitions and dependency injections

BAH-648

Atomfeed Console api is compromised

 Pre-requisites
Operation System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.93

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
  • MySQL admin password: From 0.92, we are using a stricter password policy and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.
  • MySQL version configuration: Default MySQL version supported is 5.6A new configuration parameter mysql_version has been introduced to override MySQL version, which you can configure in setup.yml before running the install command. eg. mysql_version=5.7.30

Briefly:

Install

# install dependencies
> yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm

> yum install -y epel-release


# install bahmni command line installer
yum install -y https://repo.mybahmni.org/releases/bahmni-installer-0.93-197.noarch.rpm



# download the postgres repo rpm. 
> rm -f /opt/pgdg-redhat-repo-latest.noarch.rpm
> curl https://download.postgresql.org/pub/repos/yum/reporpms/EL-7-x86_64/pgdg-redhat-repo-latest.noarch.rpm --output /opt/pgdg-redhat-repo-latest.noarch.rpm


# if the filee /etc/bahmni-installer/setup.yml is not there, you can get a sample
> curl -L https://tinyurl.com/yyoj98df >> /etc/bahmni-installer/setup.yml

# configure your implementation specific settings, set repo URL
> vi /etc/bahmni-installer/setup.yml

# configure components you require
> vi /etc/bahmni-installer/local

# run the installer
> bahmni -i local install
 Upgrade/Post Installation Instructions
  1. Rebuild Search Index: It's required to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index.
  2. Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This was fixed as part of Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.
    select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;

    If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

  3. Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.
  4. Oviyam Viewer URL : You may need to update the configuration for Oviyam DICOM viewer URL in app config for clinical dashboard, if you are migrating from older version. Please edit file /var/www/bahmni_config/openmrs/apps/clinical/dashboard.json for the “pacsImageUrl” attribute like in the example here.
  5. Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide. 
  6. Odoo - Undefined period error during quotation confirmation : While confirming a quotation, if there is no period defined an error is thrown "There is no Period defined". While this has been fixed for 2018 with the default ERP database, if you are going to be installing in 2021, you may still face this error. 
    Workaround:  Please follow the steps as mentioned in this page -  OpenERP error "There is no period defined" while confirming a sale quotation 
  7. Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)


 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information

Can not start opnmrs service using "systemctl": 

  • Openmrs service fails to start with “systemctl start openmrs” after the usage of “service openmrs start”: 
    1. mv /opt/openmrs/log /opt/openmrs/log-backup
    2. rm /var/log/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    3. rm /var/run/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    4. mkdir /opt/openmrs/log
    5. chown bahmni:bahmni /opt/openmrs/log
    6. ln -s /opt/openmrs/log /var/log/openmrs
    7. chown -R bahmni:bahmni /var/log/openmrs


Redirecting service commands to systemctl:

  • With the release of Bahmni version 0.92, Bahmni’s services uses systemd unit files as opposed to the older init.d files. Using service commands to start/stop Bahmni services are not supported and only systemcl commands are advised. To prevent use of “service” command, we can run the optional step below that sets up a “service” function to redirect service command to call “systemctl” instead:

    1. vi ~/.bash_profile
    2. Add the following line:
    
    service() { local first=$1; local second=$2; echo “Redirecting to systemctl from Bahmni, to unset this run ‘unset -f service’“; systemctl $second $first;}
    
    3. Save and close the file
    4. source ~/.bash_profile

    To remove the above function, modify the same file and remove the service function.

 Known issues...
Known Issues
  • Use in different locale other than the default/main  - While we have improved localization support in registration and clinical modules, and searching concepts by name in logged in locale is possible, there are places in the clinical module where it is not done so - eg. medication orders. In such cases, the concepts are still being displayed in the main locale set for the implementation.
  • Performance issues with MySQL 5.7:  we have noticed certain queries taking a lot of time with MySQL 5.7 version. This release defaults MySQL version to 5.6. If you are using MySQL 5.7 and are migrating from older version of Bahmni, please set the MySQL version to 5.7 in the setup.yml
  • Beds Count mismatch on new Bed Management app: We have seen that earlier way of adding bed by sql insertions/deletions have created some dangling beds which might result in Beds count mismatch on new Bed Management app. This can also result in unpredictable exceptions on new Bed Admin UI while managing beds. You can verify if there is such issue in your database using below query and fix it instead of failing at liquibase migrations during installation.

    > select * from bed_location_map where bed_id is null;
    > select * from bed_location_map where bed_id not in (select distinct bed_id from bed);
    
    

    The first SQL returning more than zero records, is perfectly alright. If you have defined a layout but not assigned a bed for each of the locations in the layout of a ward/room, this is likely to happen. From "Ward Management" Console, you can assign a bed to that position. The second SQL will identify the invalid “bed” allocation in a ward. Invalid here means - allocation to a “bed” in a ward, which is referring to a not existent “bed” record in the “bed” table. Before running the upgrade, you need to ensure that such bed allocations are removed (remove the record) or updated with bed_id being NULL. 

> update bed_location_map set bed_id = null where bed_location_map_id = <bed_location_map_id from the above query>;
Release 0.92 (June 2020)

 Bahmni version: 0.92-155

 Pre-requisites
Operation System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
$ sudo yum install epel-release
$ sudo yum install python-pip
$ sudo pip install pip==v19.0
$ sudo uninstall click
$ sudo pip install click==v7.0
$ sudo pip install pyusb
$ sudo pip install babel==v0.9.6
$ sudo pip install decorator==v3.4.0
$ sudo pip install beautifulsoup4
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.92

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.


Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide.


Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)

MySQL admin password: From 0.92, we are using MySQL version 5.7, and the password policy is stricter and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.

Ansible preferred version: Default ansible version supported is 2.4.6. Bahmni command line option -aru has been reintroduced to enable users to provide repo-url of ansible package (incase of non availability of ansible package) while installing Bahmni.

MySQL version configuration: Default MySQL version supported is 5.7.30A new configuration parameter mysql_version has been introduced to override MySQL version.


 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information
 Known issues...
Known Issues
  • Same as August 2019 release of v0.92
  • Redirecting service commands to systemctl:
    • With the release of Bahmni version 0.92-147, Bahmni’s service files are now systemd unit files as opposed to the older init.d files. Using service commands to start/stop Bahmni services are not supported and only systemcl commands are advised. To prevent use of “service” command, we can run the optional step below that sets up a “service” function to redirect service command to call “systemctl” instead:
      1. vi ~/.bash_profile
      2. Add the following line:
      
      service() { local first=$1; local second=$2; echo “Redirecting to systemctl from Bahmni, to unset this run ‘unset -f service’“; systemctl $second $first;}
      
      3. Save and close the file
      4. source ~/.bash_profile
    • To remove the above function, modify the same file and remove the service function.
  • Openmrs service fails to start with “systemctl start openmrs” after the usage of “service openmrs start”: 
    1. mv /opt/openmrs/log /opt/openmrs/log-backup
    2. rm /var/log/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    3. rm /var/run/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    4. mkdir /opt/openmrs/log
    5. chown bahmni:bahmni /opt/openmrs/log
    6. ln -s /opt/openmrs/log /var/log/openmrs
    7. chown -R bahmni:bahmni /var/log/openmrs
  • Replace Offline sync omod: 
    • If you are going to use “bahmni connect”, you would have chosen “bahmni-offline”. You will need to replace the following file
      • /opt/openmrs/modules/bahmniOfflineSync-0.91-SNAPSHOT.omod 

                       with “bahmniOfflineSync-0.92-SNAPSHOT.omod” file, which can be downloaded from 

                       https://github.com/Bahmni/bahmni-offline-sync/releases/tag/0.92-SNAPSHOT

                       - click the assets link in the above page, to list out the files.            

    • Once you have placed the file in /opt/openmrs/modules/ directory, make sure that you change the permission for the file
          > chown bahmni:bahmni /opt/openmrs/modules/bahmniOfflineSync-0.92-SNAPSHOT.omod 
Release 0.92 (June 2020)

 Bahmni version: 0.92-155

 Pre-requisites
Operation System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
$ sudo yum install epel-release
$ sudo yum install python-pip
$ sudo pip install pip==v19.0
$ sudo uninstall click
$ sudo pip install click==v7.0
$ sudo pip install pyusb
$ sudo pip install babel==v0.9.6
$ sudo pip install decorator==v3.4.0
$ sudo pip install beautifulsoup4
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.92

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.


Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide.


Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)

MySQL admin password: From 0.92, we are using MySQL version 5.7, and the password policy is stricter and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.

Ansible preferred version: Default ansible version supported is 2.4.6. Bahmni command line option -aru has been reintroduced to enable users to provide repo-url of ansible package (incase of non availability of ansible package) while installing Bahmni.

MySQL version configuration: Default MySQL version supported is 5.7.30A new configuration parameter mysql_version has been introduced to override MySQL version.


 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information
 Known issues...
Known Issues
  • Same as August 2019 release of v0.92
  • Redirecting service commands to systemctl:
    • With the release of Bahmni version 0.92-147, Bahmni’s service files are now systemd unit files as opposed to the older init.d files. Using service commands to start/stop Bahmni services are not supported and only systemcl commands are advised. To prevent use of “service” command, we can run the optional step below that sets up a “service” function to redirect service command to call “systemctl” instead:
      1. vi ~/.bash_profile
      2. Add the following line:
      
      service() { local first=$1; local second=$2; echo “Redirecting to systemctl from Bahmni, to unset this run ‘unset -f service’“; systemctl $second $first;}
      
      3. Save and close the file
      4. source ~/.bash_profile
    • To remove the above function, modify the same file and remove the service function.
  • Openmrs service fails to start with “systemctl start openmrs” after the usage of “service openmrs start”: 
    1. mv /opt/openmrs/log /opt/openmrs/log-backup
    2. rm /var/log/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    3. rm /var/run/openmrs (without ‘/’ at the end, we want to remove only the symlink)
    4. mkdir /opt/openmrs/log
    5. chown bahmni:bahmni /opt/openmrs/log
    6. ln -s /opt/openmrs/log /var/log/openmrs
    7. chown -R bahmni:bahmni /var/log/openmrs
  • Replace Offline sync omod: 
    • If you are going to use “bahmni connect”, you would have chosen “bahmni-offline”. You will need to replace the following file
      • /opt/openmrs/modules/bahmniOfflineSync-0.91-SNAPSHOT.omod 

                       with “bahmniOfflineSync-0.92-SNAPSHOT.omod” file, which can be downloaded from 

                       https://github.com/Bahmni/bahmni-offline-sync/releases/tag/0.92-SNAPSHOT

                       - click the assets link in the above page, to list out the files.            

    • Once you have placed the file in /opt/openmrs/modules/ directory, make sure that you change the permission for the file
          > chown bahmni:bahmni /opt/openmrs/modules/bahmniOfflineSync-0.92-SNAPSHOT.omod 
Release 0.92 (Feb 2020)

 Bahmni version: 0.92-147

 Pre-requisites

Operation System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.92

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.


Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide.


Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)

MySQL admin password: From 0.92, we are using MySQL version 5.7, and the password policy is stricter and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.

 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information
 Known Issues...
Known Issues
  • Same as August 2019 release of v0.92
  • Replace Offline sync omod: 
    • If you are going to use “bahmni connect”, you would have chosen “bahmni-offline”. You will need to replace the following file
      • /opt/openmrs/modules/bahmniOfflineSync-0.91-SNAPSHOT.omod 

                       with “bahmniOfflineSync-0.92-SNAPSHOT.omod” file, which can be downloaded from 

                       https://github.com/Bahmni/bahmni-offline-sync/releases/tag/0.92-SNAPSHOT

                       - click the assets link in the above page, to list out the files.            

    • Once you have placed the file in /opt/openmrs/modules/ directory, make sure that you change the permission for the file
          > chown bahmni:bahmni /opt/openmrs/modules/bahmniOfflineSync-0.92-SNAPSHOT.omod 
Release 0.92 (Aug 2019)
Features

BAH-487 - Upgrade Bahmni Platform OS and infrastructure components

BAH-742 - Upgrade from OpenERP to Odoo 10, System Integration with Odoo

 Enhancements

BAH-772 - Enhancement of Patient Queues/List

BAH-705 - Validate backup and restore mechanism on Centos 7

BAH-840 - Upgrade implementer-interface dependencies

BAH-847 - "Default" implementation installation shows an existing customer and an order associated 

BAH-487/BAH-632 - Upgrade Apache Httpd to v2.4

BAH-487/BAH-633 - Upgrade Postgresql to v9.6

BAH-487/BAH-630 - Upgrade MySQL to 5.7

BAH-736 - Update API url for 2FA plugin bahmni-sms-plugin 

BAH-775 - Patient document - Viewing patient images requires scrolling

 Fixes to Known Issues

BAH-763 - “bahmni-erp-connect” application properties not getting overridden by system or env properties. 

BAH-738 - Camera not working after chrome upgrade

BAH-661 - Not possible to create Bed Layout without mentioning all bed details

 Other fixes

BAH-844 - Bahmni-erp-connect: Integration between MRS-ERP fails if Lab Component is not installed

BAH-648 - Atomfeed Console API leaks out internal system credentials 

BAH-780 - Pip upgrade during bahmni-installer re-run fails

BAH-726 - Auto upgrade Bahmni emr

BAH-383 - Bahmni Installer needs python “ez_setup” dependency to be installed first

BAH-626 - Ward Management Admin Console does not work if there are too many locations to load    

BAH-774 - bahmni install-certs command failing because of the old agreement file

BAH-664 - Missing privileges for Bed Management

BAH-814 - Non-default configuration install results in missing scheduler entries

BAH-845 - Liquibase precondition fails for openerp-atomfeed-service because of missing table "event_records”

BAH-851 - Lab Results do not appear on Bahmni Clinical (e.g. Dashboards) against the order 

BAH-870 - Change URL for Radiology in Bahmni Landing Page

 Pre-requisites

Operation System - CentOS 7.5, 7.6. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/18.fc30/x86_64/zlib-1.2.11-18.fc30.x86_64.rpm
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.92

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions

 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.


Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide.


Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)

MySQL admin password: From 0.92, we are using MySQL version 5.7, and the password policy is stricter and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.

 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> service bahmni-erp-connect restart

> service bahmni-lab restart


service or systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343

 Known issues ...
Known Issues

The following are currently known / open issues in this release of Bahmni. Please read these before performing an upgrade.

 Beds Count mismatch on new Bed Management app

We have seen that earlier way of adding bed by sql insertions/deletions have created some dangling beds which might result in Beds count mismatch on new Bed Management app. This can also result in unpredictable exceptions on new Bed Admin UI while managing beds. You can verify if there is such issue in your database using below query and fix it instead of failing at liquibase migrations during installation.


select * from bed_location_map where bed_id is null; 

select * from bed_location_map where bed_id not in (select distinct bed_id from bed);

The first SQL returning more than zero records, is perfectly alright. If you have defined a layout but not assigned a bed for each of the locations in the layout of a ward/room, this is likely to happen. From "Ward Management" Console, you can assign a bed to that position. 

The second SQL will identify the invalid “bed” allocation in a ward. Invalid here means - allocation to a “bed” in a ward, which is referring to a not existent “bed” record in the “bed” table. Before running the upgrade, you need to ensure that such bed allocations are removed (remove the record) or updated with bed_id being NULL.

update bed_location_map set bed_id = null where bed_location_map_id = <bed_location_map_id from the above query>;
 Use in different locale other than the default/main

BAH-329, BAH-338 - Login with different locale other than the main, effects searches like concepts/diagnosis etc, as the searches are done against the default/main locale. 

Early Preview

The following features are still considered early-preview, which we expect to officially include in future releases. There is no official support for these previews, and no guarantee that configurations created now will be compatible with the official release.

 Bahmni-mart

Is a simplified database used for analytics wherein hierarchical structures have been flattened and pivoted and many other entities denormalized. You may plugin data visualization tools Metabase, Superset etc on top of this database.

Bahmni-mart is not part of default distribution and packaging of Bahmni 0.91. Please follow the steps here if you would like to try this out.

 Integration with OpenMRS Reporting

This Open Web App (OWA) is useful to execute Reports defined in OpenMRS reporting module.  Please see here for documentation

Security Alert

There's been a security advisory from OpenMRS for webservices.rest module. As part of security Advisory, who ever planning to install Bahmni or already have installed Bahmni of versions 0.89, v0.90, v0.91 those have to replace existing webservices.rest module with 2.24.0 version module. 

 Steps to replace webservices.rest module


#Go to openmrs modules path on Bahmni server
sudo cd /opt/openmrs/modules

# Stop openmrs service
sudo service openmrs stop

# Take a backup of existing webservice.rest module (Eg for Bahmni v0.91)
sudo mv webservices.rest-2.20.0.omod webservices.rest-2.20.0.omod.backup
 
# Download webservices.rest-2.24.0.omod using below command 
sudo wget http://repo.mybahmni.org/packages/libraries/webservices.rest-2.24.0.omod

# Give ownership to bahmni user
sudo chown bahmni:bahmni webservices.rest-2.24.0.omod
  
# Start Openmrs service 
sudo service openmrs start

For more details on security advisory, please refer to below talk threads

https://talk.openmrs.org/t/critical-security-advisory-cve-2018-19276-2019-02-04/21607

https://talk.openmrs.org/t/update-for-cve-2018-19276-2019-02-04/21682

Patch Release 0.91 (May 2019)
 Enhancements

BAH-772 Enhancing Performance of Program queues with debouncing.

 Fixes to Known Issues

BAH-661 - Unable to set a layout in ward management admin console

BAH-738 - Camera is not working on the registration page with latest Chrome browser

 Other fixes

BAH 763 -  bahmni-erp-connect application properties not getting overridden by system or env properties

BAH-578 -  [0.91 bug bash] Do not mandate to enter "0" in the "Age" field when "month" or "days" field has data

BAH-758 -  Upgrade WebServices REST Module to 2.24

BAH-771 -  [Appt. Scheduling] Appointment Times Problem

BAH-775 -  Patient document - Viewing patient images requires scrolling

BAH-626 -  Ward Management Admin Console does not work if the number of locations are a lot

BAH-648 -  Atomfeed Console api is compromised

BAH-664 -  Add missing privileges for Bed Management

BAH-785 -  Implementer interface, bahmniapps has latest bahmni-form-controls npm version

BAH-787 -  Change the java version from jre1.8.0_101 to jre1.8.0_131 in Bahmni-Package

 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.91

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions

 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.


Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.

Release 0.91 (Sept 2018)
Features
 Operation Theatre Scheduling

Operating Theatre (OT) scheduling tries to solve management aspects of several operating rooms and assignment of care providers and patients. See here for more information

 New Bed Management module

This is a new Bed Management module. The older ADT module is also packaged. This is done so that the existing implementation have opportunity to understand, assess and transition to the new feature, and provide feedback to the product management. Going forward, the older IPD module will be deprecated. This is intended to be done in Release 0.93 or so, when we achieve feature parity.

 Ward Management Admin Console

A new Admin Console has been created to do typical administrative tasks like creation of beds, Locations, layouts and Bed tags. 

Early Preview
 Bahmni-mart

Is a simplified database used for analytics wherein hierarchical structures have been flattened and pivoted and many other entities denormalized. You may plugin data visualization tools Metabase, Superset etc on top of this database.

Bahmni-mart is not part of default distribution and packaging of Bahmni 0.91. Please follow the steps here if you would like to try this out.

 Integration with OpenMRS Reporting

This Open Web App (OWA) is useful to execute Reports defined in OpenMRS reporting module.  Please see here for documentation

 Enhancements

BAH-310 - Enhancements to Diagnosis Search. You can search Diagnosis by a code if you have mapped your diagnosis concepts to a coding system like ICD10 or SNOMED. See here for details.

BAH-399 - Ability to search patient relationship by name

BAH-404 - Only providers marked for “Available for Appointments” should be listed  while creating appointment.

BAH-491 - Display of Units for lab tests in Investigation chart, Lab Results details

BAH-497 - Prompt while navigating away from Patient Registration

BAH-511 - Navigation configuration for “Go to IPD Dashboard”

BAH-414 - Display section names in OpenELIS dashboards for “Samples to collect” and  “Samples collected” queue for “Today” and “Backlog”

BAH-567 - Bahmni Reports Integration with Bahmni-mart

BAH-608 - Enable concatenated reports for Bahmni-mart reports

BAH-598 - Feed Events for BM tags

BAH-314 - Enable Bahmni Apps Reports app to handle 'date range' reports from the Reporting module

BAH-403 - Ability to upload Concepts in CSV files with specified UUID

BAH-447 - Hide empty empty rows and columns in obs-to-obs-flow-sheet control

BAH-385 - internationalization gaps in modules - admin, adt, appointments, clinical, messages, Forms 1.0, display controls, patient search, registration, document upload, home screen, orders, reports

 Fixes to Known Issues

BAH-387 - Inpatient report with diagnosis - Diagnosis made during course of admission, should show up in inpatient report

BAH-341 - Unable to stop/discontinue a drug with current date as the stop date for a drug started in past encounter.

 Other fixes

BAH-398 - Unexpected token in JSON when login is done from login screen for an invalidated user session.

BAH-311 - internationalization gaps have been fixed in “Observation Graph”, Diagnosis tab, treatment tab, drug order history, registration page.

BAH-376 - Patient Identifier prefix with NULL should not be shown in registration

BAH-382 - Audit Log tables headers are hardcoded to english

BAH-407 - Bottom banner shrinks on responsive screens

BAH-415, BAH-490 - Forms 1.0, conceptSetUI based forms with mandatory boolean concepts throw error on save.

BAH-426 - Appointments List View should wrap texts to display texts appropriately

BAH-435 - Date picker date in appointment list/calendar view can be cleared with the delete button

BAH-439 - Registration search page displays Attributes which are concepts as numbers

BAH-446 - Forms 1.0, conceptSetUI based forms with Image marked as mandatory throws error on save

BAH-451 - Patient assignment to bed fails for event errors

BAH-453 - During bahmni-connect installation, offline-config from default-config repo should be copied to bahmni_config folder.

BAH-456 - Truncate audit log on fresh install with default demo database

BAH-459 - Slow performance in Appointment Scheduling module

BAH-461 - Special characters (e.g è) are not shown property in reports

BAH-462 - Should not call API to fetch appointments while shifting views list ⇔ calendar

BAH-463 - Memory leak when uploading videos

BAH-465 - Patient Document Upload should allow specific file types

BAH-469 - Adding 2018 as accounting fiscal year in ERP default database.

BAH-470 - OpenELIS lab dashboard searches not working in ‘Samples to Collect => backlog’ for ‘Source’.

BAH-482 - Appropriate error message for date validation

BAH-498 - Order of tests in results page and validation page is different

BAH-510 - Program Context is being lost during navigation resulting the data captured not being in program context

BAH-512 - Disposition type dropdown shows empty lines when standard dispositions like 'Admit Patient', 'Discharge Patient', 'Transfer Disposition' are removed.

BAH-514 - Data captured through Forms2.0 in Bahmni Connect are lost if and when a form data is edited offline.

BAH-495 - Scroll issues in Lab Investigation chart

BAH-522 - Blocked Admin action to clear out ELIS database

BAH-523 - OpenELIS LoginList page shows the user's passwords in clear text

BAH-524 - Unable to view audit log messages even with required privileges

BAH-526 - Duplicate appointments while editing an appointment in operation theatre module

BAH-528, BAH-537 - Error is thrown when deselecting concepts in a form with multiple levels of form conditions

BAH-529 - Program state change throws error if date of enrollment is passed with time details

BAH-531 - Missing foreign key constraint in bed_location_map table

BAH-550 - Filter duplicates in patient relationship search

BAH-570 - Cancel/Postpone Surgical Block functionality in OT app is not working

BAH-571 - Inpatient report should not show inactive diagnosis

BAH-574 - Unique constraint for surgical appointment attribute types in OT scheduling

BAH-578 - Do not mandate value in year field when month and day fields have value

BAH-594 - Performance improvement for Observation Display Control

BAH-597 - Unable to show multiple images in obsToObsFlowSheet control

BAH-599 - Unable to move up appointments in OT schedule block

BAH-605 - Bahmni Connect sync fails during initial patient data download

BAH-485 - Show/Hide Visit start button based on configuration

BAH-639 - Installation with base Database fails due to migrations in OT and Appointments module

 Pre-requisites
Install EPEL repo

You may down the installer here. http://dl.fedoraproject.org/pub/epel/epel-release-latest-6.noarch.rpm


Data Quality for Bed Management

As mentioned in [Known Issues].1, there are a few not-Null, Foreign Key constraints added on Bed Management database tables to ensure data integrity. Please resolve the issues first, without which the feature behaviour may be impacted. 

 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.91

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions

 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.


Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.


Set 'bed_location_map.bed_id' columns as nullable in 'openmrs': This is required for the "Ward Management" admin console to create a bed layout. 

> mysql -uroot -p openmrs
> ALTER TABLE bed_location_map MODIFY bed_id INTEGER null;



 Troubleshooting
Setuptools error

During installation, If you get the following error:

ImportError: No module named importlib

warning: %post(bahmni-installer-0:0.90-291.noarch) scriptlet failed, exit status 1

Non-fatal POSTIN scriptlet failure in rpm package bahmni-installer-0.90-291.noarch


Please follow these steps

wget https://bitbucket.org/pypa/setuptools/raw/0.7.2/ez_setup.py

python ez_setup.py --user


Undefined period error during quotation confirmation in OpenERP

While confirming a quotation, if there is no period defined an error is thrown "There is no Period defined". While this has been fixed for the 2018 with the default ERP database, if you are going to be installing in 2019, you may still face this error.

Please follow the steps as mentioned in this page -  OpenERP error "There is no period defined" while confirming a sale quotation

 Known issues...
Known Issues

The following are currently known / open issues in this release of Bahmni. Please read these before performing an upgrade.


 Beds Count mismatch on new Bed Management app

We have seen that earlier way of adding bed by sql insertions/deletions have created some dangling beds which might result in Beds count mismatch on new Bed Management app. This can also result in unpredictable exceptions on new Bed Admin UI while managing beds. You can verify if there is such issue in your database using below query and fix it instead of failing at liquibase migrations during installation.


select * from bed_location_map where bed_id is null; 

select * from bed_location_map where bed_id not in (select distinct bed_id from bed);

The first SQL returning more than zero records, is perfectly alright. If you have defined a layout but not assigned a bed for each of the locations in the layout of a ward/room, this is likely to happen. From "Ward Management" Console, you can assign a bed to that position. 

The second SQL will identify the invalid “bed” allocation in a ward. Invalid here means - allocation to a “bed” in a ward, which is referring to a not existent “bed” record in the “bed” table. Before running the upgrade, you need to ensure that such bed allocations are removed (remove the record) or updated with bed_id being NULL.

update bed_location_map set bed_id = null where bed_location_map_id = <bed_location_map_id from the above query>;
 Use in different locale other than the default/main

BAH-329, BAH-338 - Login with different locale other than the main, effects searches like concepts/diagnosis etc, as the searches are done against the default/main locale. 

 Unable to set a layout in ward management admin console

BAH-661 - "bed_location_map.bed_id" should be a nullable column in the "bed_location_map". This prohibits the users from using the "ward management" admin console to setup a layout. 

 Camera is not working on the registration page with latest Chrome browser v71

BAH-738 - Please follow below commands to make camera work with Chrome Browser v71

1. Change directory to bahmni-web
	cd /opt/bahmni-web/etc/
2. Take backup of bahmniapp folder from location /opt/bahmni-web/etc/
    mv bahmniapps bahmniapps.bak
3. Download bahmniapps.zip file using below command
    wget http://repo.mybahmni.org/releases/bahmniapps.zip
4. Unzip bahmniapps.zip file
    unzip bahmniapps.zip 
5. Change permissions of bahmniapps folder
    chown -R bahmni:bahmni bahmniapps	

Release 0.90 (Nov 2017)

0.90 Patch Release (Feb 2018)

Bug Fixes

  1. [Form Builder] Passing Patient context in Form Builder for form conditions - Jira Card : #BAH 411
  2. [Form Builder] Problem while importing a form from another environment  - Jira Card : #BAH- 405 .
  3. “Enter on behalf” Provider is not captured when patient information is captured on behalf of another provider - Jira Card : #BAH-444  
  4. [Appt. Scheduling] Retired providers should not show up on Provider list - Jira Card : #BAH-437
  5. IPD canned report does not populate diagnosis column - Jira Card : #BAH-455
  6. Test results with coded answer CSV upload fails - Jira Card : #BAH- 410

Enhancements

  1. [Appt. Scheduling] Highlight appointments with different colours based on the status in the List View - Jira Card : #BAH-408
  2. Ability to mark a Lab order as High priority from the Orders Tab - Jira Card : #BAH-450
  3. [Appt. Scheduling] Make Patient search URL in Create appointment screen configurable (so that lucene API can be leveraged)- Jira Card : #BAH-445

Known Issues:

  1. "There is no Period defined" error while confirming a sales quotation. 
    1. Workaround:  If you face this error, please follow the steps as mentioned in this page
      1.  OpenERP error "There is no period defined" while confirming a sale quotation 
Features
 Appointment Scheduling

With 0.90 we introduce the Appointment scheduling feature. It is intended to provide the users the ability to schedule and manage appointments for patients in a typical hospital/clinical set up. With the help of this feature one will be able to:

  1. Set up services and specialities in a hospital
  2. Create and manage appointments for a patient against services
  3. View the appointments in a list, calendar and Summary view and also on the patient dashboard

You can find more information about using and configuring the appointment scheduling module here and here.

Also refer to the Upgrade instructions below.

Mingle Feature Card : #3497 (Documentation - User Guide , Implementer Guide )

  Form Builder

Form builder is part of the Implementer Interface toolset and can be used by the implementers to easily design forms via a User interface. This tool seeks to simplify the current process of creating a JSON configuration to control the behavior of concepts could be handled through the form builder.
We have added the following abilities to the form builder as a part of 0.90:

  1. Import/Export Forms
    Using import/export feature of Form Builder, a implementer can upload/download the form data as a JSON file
    JIRA Cards -  #BAH-93, #BAH-96
    Documentation : Implementer’s Guide

  2. Internationalization support of form builder Forms
    Form builder will now allow users to add translations to the various form elements (Concepts, Labels) for different locales using the implementers interface UI.
    JIRA Card -  #BAH-328,
    Documentation :
    Implementer’s Guide

  3. “Add more” Control Properties on forms
    The control will provide the ability to capture Additional observations for the same control/concept.
    JIRA Card -  #BAH-220,
    Documentation : Implementer’s Guide

  4. Support of form builder forms on
    Form builder forms now are supported on Bahmni connect and on the Registration second page.
      1. Bahmni Connect - #BAH-302, Documentation : Feature Guide
      2. Registration Second page - #BAH-304
  5. Support for new Controls
    1. Provider and Location Reference - Form builder now supports complex obs which will capture Provider & Location reference

      JIRA Card : #BAH-281, #BAH-282

    2. Form builder forms will also support Image and Video Upload
      JIRA Card : #BAH-202, #BAH-92

      Documentation : Implementer’s Guide

  6. Support for Observation Form Report 
    The users will now be able to extract one or more observation form builder forms information in a report.
    JIRA Card #BAH-49
    Documentation : Implementer’s Guide
 Audit Logs

Audit logs were introduced in Bahmni with the previous release of 0.89. In this release we have added a few more events that will be tracked as a part of the audit Logs.

  • Registration of patients - #BAH-62
  • Logging in and out of the EMR & Failed Login Attempts - #BAH-135
  • Opening/Closing Visit - #BAH-61
  • Admitting/Discharging a Patient - #BAH-60
  • Creating and Editing Encounters - #BAH-237
  • Generating & Printing reports etc - #BAH-59

Documentation : Feature Guide, Implementer Guide

 Bahmni Connect

In .89 we migrated to PWA as chrome app support was deprecated. In this release we have introduced the ability to delete PWA and added support to show forms created using form builder app in bahmni connect . You can find more find more information this in these links -  #BAH-110, Implementer Guide

NOTE

Implementer will have to run create-connect-artifacts command for initial Sync. Check this link for documentation

 Other Minor Enhancements

Following are minor product enhancements with their JIRA card Links: 

  1. Enhancements to CSV Imports
    1. Ability to read special characters in CSV Imports - #BAH-344
    2. Ability to Import Person Attribute of Type ‘Date’ - #BAH-365  
  2. Registration
    1. Upload an existing photograph as patient profile pic - #BAH-238
    2. Make Last name a Configuration and non Mandatory - #BAH-293
  3. White labelling
    1. Extending the config for a  bottom banner on the login page - #BAH287
  4. Order sets
    1. Order Sets Rules engine must take latest Height/Weight on calculations  - #BAH-247
  5. Conditions List
    1. Hide Conditions list from UI  - #BAH-236
  6. Programs
    1. Support obsIgnoreList in Programs Dashboard - #BAH-307
    2. Hide specific Program Attributes based on selected Program - #BAH-296
  7. Replace copy task with synchronize for implementation config - #BAH-297
  8. Pass the 'patient' object to formConditions - #BAH-276
  9. Capture thumbnail for videos on patient dashboard - #BAH-308
  10. Translate “location” on various screens in the app- #BAH-275
  11. Make delimiter in obsToObsFlowsheet configurable - #BAH131
 Fixes to 0.89 Known Issues
  1. Error is thrown when Orders are saved after collapsing the Lab or Radiology Tab #BAH-285
  2. Fixed missing mx dependency issue with ERP installation - #BAH-40
  3. "Privilege: Get Forms" is shown for registration and clinical pages- #BAH-54
 Other Defect Fixes
  • Remove Java 7 dependency for DCM4CHEE Installation -  #BAH-244
  • Adding patient attribute fields in openerp model fails by throwing error - #BAH-305
  • Incorrect address variable name in bahmni ui apps - #BAH-268
  • Unable to view patient's visit information in openMRS - #BAH-263
  • “PatientInformation” display control is not configured in General tab of visit.json- #BAH-352
  • Visit dates should not be mandated if encounter dates are provided for "Encounter csv" upload - #BAH-144
  • Encounter upload fails for login location with parenthesis  - #BAH-230
  • Link to Open uploaded Pdf in new tab is not visible -  #BAH-233
  • Patient Dashboard can be seen for provider without Clinical access - #BAH-239
  • Multiple Visits can be opened from the same location using Patient Doc Upload - #BAH-250
  • Timezone Mismatch warning doesn't work for timezones with spaces in their names - #BAH-289
  • Non-Date Range Reports throws exception on the UI - #BAH-65
 Upgrade Instructions
  • Post 0.90 upgrade, to support Lucene search it's essential to run search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept search won't work in openmrs and bahmni.

  Run the indexes: OpenMRS -> Navigate to Administration → Search Index and Run Rebuild Search Index.

  Related Bahmni talk thread for the same - https://talk.openmrs.org/t/help-us-test-the-bahmni-0-90-second-release-candidate/14124/3

  • Upgrade Instructions to access Appointment scheduling :

To start using Appointment scheduling, please add one or more of the following privileges to your user roles from OpenMRS Admin Console

  • Appointments:FullAccess
  • Appointments:ReadOnly
  • Appointments:ManageAppointments

You will find more information about user roles and privileges here.

 Pre-requisites
For Installing Bahmni v 0.90 on Centos, refer to the steps mentioned here
0.90 Known Issues

The following are currently known / open issues in this release of Bahmni. Please read these before performing an upgrade.

  1. If you get the following error:

ImportError: No module named importlib

warning: %post(bahmni-installer-0:0.90-302.noarch) scriptlet failed, exit status 1

Non-fatal POSTIN scriptlet failure in rpm package bahmni-installer-0.90-291.noarch

Please follow these steps:

wget https://bitbucket.org/pypa/setuptools/raw/0.7.2/ez_setup.py

python ez_setup.py 

Note: Do not install setuptools using pip. Latest version setuptools is not compatible for Bahmni-0.90

Release 0.89 (May 2017)

0.89 Patch Release

Patch Fixes:

1. Chrome Upgrade Print issue: https://bahmni.mingle.thoughtworks.com/projects/bahmni_emr/cards/3673

2. Hiding Sample source whom the active flag set to false in openELIS
https://bahmni.mingle.thoughtworks.com/projects/bahmni_emr/cards/3679

3. Chrome upgrade service worker issue in bahmni connect app:https://bahmni.atlassian.net/secure/RapidBoard.jspa?rapidView=9&view=detail&selectedIssue=BAH-270

 Bahmni Connect

Functional walk through of Bahmni Connect (Video)

Bahmni Connect on chrome is now a Progressive Web App (PWA):

PWA takes advantage of new features supported by modern browsers, including Service Workers and Web App Manifests and allows the users to work offline.

Also, Google will be discontinuing its support for Chrome Apps, so Bahmni Connect has been ported to a Progressive Web App and use Service Workers for offline support.

More details here - Bahmni Connect - Client

From v0.89 onwards, the PWA version of Bahmni Connect is the recommended way for people to use Bahmni Connect. The Chrome app has been deprecated. Android App is still supported. The Android app shares the same frontend code as the PWA app – but has differences in the service layers to store data locally.

With PWA, one just needs to open the connect app in the browser by entering the URL for the Connect App on the server. The Chrome browser then caches the files locally, and you can use Bahmni Connect from then on in offline mode. The "sync" button allows a client to sync two-way patient data with the server.

Read more about PWA here and the Bahmni Connect architecture here.


Faster Initial Sync :

Initial patient sync used to sync patients 'one at a time' and took more time if the no. of patients was huge. This initial sync is redesigned to sync all relevant patients at once, resulting in much faster initial sync on both Chrome and Android app. 

More details here - Initial Sync Improvements

 Form Builder

What is built:

Form builder shall be the tool using which the implementers shall design the forms for each implementation. The current processes will be changed in that there will not be a compulsory need to create a "concept set" and adding the set to a "concept set of sets" Also the current process of creating a JSON configuration to control the behaviour of concepts could be handled through the form builder.

In 0.88 release, form-builder alpha version was introduced which contained the ability to create new forms Label, ObsControl (text, boolean, coded and numeric obs concepts), Obs Group Control and sections which are visual groupings. Basic form control properties like mandatory and allow decimal (for numeric) had been introduced. The forms were available to be used in the consultation tab.

For more details, visit this page.

Now in 0.89 release, the following new features and enhancements have been introduced:

  • Refactor Architecture,for more details, please visit this Doc - Mingle Card #3296
  • Automated function test: To make sure form builder works well after refactoring, we setup automation function test to test functionality of form in Bahmni App which created by form builder and these tests are already added into implementer interface CI pipeline - Mingle Card #3297
  • Add more: user should be able to add "add more" for the concept and concept set. we add the "add more"control property for obs and obsGroup control in form builder, then implementer can decide to turn on or turn off "add more" when design form - Mingle Cards #3254, #3263, #3042, #2258
  • Removing a control from the form: when implementer design a form in form builder, they may put controls into form canvas by mistake, deleting control provide a way for implmenter to correct their design - Mingle Card #2296
  • Form Event Handling(form conditions): form builder provide this feature to enable user to capture "onValueChange", "onFormInitial" event, and get/set value of controls. By these basic event and get/set APIs, user can create their own logic freely.  - Mingle Cards #3407, #3406, #3402, #3405, #3152, #3154, #3397, #3129, #3404, #3153 ,#3398


 OpenMRS Upgrade

As part of this release, we upgraded OpenMRS to version 2.1. This was a minor release upgrade and there are not many new user visible features. The ability to implement Lucene indexing for patient search was one of the compelling reasons to upgrade to 2.1.

 Patient Identifier search using lucene

We have observed performance issues in patient search when the number of patient records is high. OpenMRS added Lucene index support for Patient and Patient Identifier. Leveraging this we have built implemented Lucene indexing for patient search in Bahmni, which has improved the search performance.

In 0.89, we have implemented Lucene only for Patient search by Identifier in the Registration app.

 Audit Logs

Audit logs are records of all the actions performed within an EMR system. In any EMR, it is vital that we know not only what data has been captured and the alterations made to the data, but also who is responsible for these.The function of audit logs is to essentially provide a timeline of all such actions.Audit trails are important from both regulatory and legal standpoints. They will make the EMR more reliable and discourage the misuse of confidential data. 

From 0.89 Bahmni has introduced Audit Logs. The audit log feature can be found inside the 'Admin' module on the home dashboard.For the current release we are tracking user navigations to different pages in the clinical app. We will be defining more such events to have a more comprehensive audit trail.

Mingle Card #3369. (Documentation)

 White Labelling of Bahmni

White labelling of Bahmni will provide the various implementations, the ability to brand Bahmni as applicable to them. The implementors will now be able to configure Logos and Text, specific to their implementations, on the landing page and the Bahmni login pages.

More information on White Labelling of Bahmni can be found here and here.

 Condition Lists

Conditions is the most important clinical information of a patient. Bahmni now provides the ability to capture and edit conditions for patients on the diagnoses tab inside clinical consultation. Clinicians can use this feature to capture conditions of patients and manage their old conditions. In the database these conditions can be mapped to ICD-10 codes for reporting purposes.

There is also an ability to associate encounters with one or more conditions to mark the purpose/reason of the visit as “Follow-up” to those conditions. (Documentation)

 Enhancements to Patient Image & Document Upload
  • Ability to Upload Multiple Documents - Mingle Card #3089
    • Multiple documents now can be uploaded at once.
    • This is supported in both Patient documents upload and Radiology Uploads module.
  • UX enhancement to the Patient image upload through Observation Forms - Mingle epic #3290
    • The UI of image upload through forms and their display on dashboard has been enhanced.

Bug Fix: The error message when unsupported formats are uploaded has been enhanced.

 Show/Hide Display Controls based on data

The implementers can Show/Hide display controls on the dashboard based on whether there is data in it or not. - Mingle Card #3092

When the dashboard contains a lot of information, it fails to display in a single page and requires the user to scroll through the page to get to the information they want to see. So hiding controls that have no data is convenient. However in some cases empty display controls may serve as reminders to users to enter data. In which case showing the display controls is more intuitive (Documentation).

 Second page of registration based on Visit type

Earlier if a single visit is configured, the registration second page can be configured to appear or not. From this release onwards, users can configure registration second page availability even when multiple visits are configured. (Documentation)

 Show/Hide fields in Observation forms

When large amount of information is captured, the forms grow in size, the user would need to do significant amount of scrolling to get to relevant fields where data is to be entered. It is now possible to show/hide fields in the form based on form conditions.  (Documentation)

 Languages in Locale dropdown

We have replaced the two letter codes for locales for which internationalisation is supported, with names of languages to make it more intuitive to the user. E.g français for 'fr'; Espanol for 'es'

Mingle Card #3422

 Show/Hide left Panel in Obserbvations Tab

It is now possible to show/hide the left navigation panel on the Observations tab. This has been introduced in devices like iPad to make data entry easier.

Mingle Card #3376

 Inventory file option in bahmni command

From this release onwards, users need not specify the inventory file each time we run bahmni command. Instead users can specify the file name in environment variable "BAHMNI_INVENTORY". (Documentation)

Mingle Card #2956

 openERP: MRP cannot be less than sales price

It was observed that there was a problem in syncing the drug orders to ERP because MRP of some drugs was less than the sales price. It was causing failed events and thus sync was failing. So we have put in checks to make sure that for new incoming batches of products, MRP is either equal to or more than sales price.

Mingle Card #3447

 Upgrade Instructions

Post the upgrade to 0.89 is done, to support Lucene search it's essential to run search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept search won't work in openmrs and bahmni.

Run the indexes: OpenMRS -> Navigate to Administration → Search Index and Run Rebuild Search Index.

Note: While indexes are running, there's an error on the UI. Ignore the error as it doesn't impact the index rebuilding.

To track the indexes are done, keep looking at the size of the index files here: /opt/openmrs/lucene/indexes. Indexing is considered done, when the size of the files are no more changing.


Bahmni v0.89 still uses Java 7 for PACS (Dcm4Che). If you intend to use PACS, you will need to download Java 7 (1.7.0_79) in advance. The default lookup location for Java 7 rpm is "/opt". You may also specify the file location using "java_file_url" variable in "setup.yml". If you do want to use higher versions of Java 7 (e.g java 1.7.0_80), then you will need to modify the startup script of Dcm4Che, (“/etc/init.d/dcm4chee”) for JAVA_HOME. Next version of Bahmni will use only Java 8.

KNOWN ISSUES

The following are currently known / open issues in this release of Bahmni. Please read these before performing an upgrade.

 Open Issues


Issue: After the Sample source enhancements to hide sources which are marked active as 'false', User won't see them on the ELIS sample source page. But, User cannot stop the lab order syncs from MRS to ELIS for hidden sample sources in ELIS. With which, orders will show up on the sample page but never get fulfilled from ELIS.

WorkAround: User has to explicitly mark the ELIS sample source mapped login location in MRS as non-login location. This way the orders will never be created from the hidden login location.


Issue: With the current change in the form builder, observed that privilege error "Privilege: Get Forms" is shown for registration and clinical pages for users where this privilege is not needed.

WorkAround: Provide privilege "Get Forms" explicit to the user role for which this error is observed. We have picked this up in the upcoming release and will be fixed.

Mingle Card #3562


Issue: Videos and Images are not supported in Connect forms as of now and thus, you might see failure while loading the Dashboard/Clinical Observation tab.

WorkAround: Do not configure Video and Images in observation forms which are being used on the connect instance. We have picked this up in the upcoming release to fix.

Mingle Card #3567


Issue

             Workaround: Restart reports service (service bahmni-reports restart)

  •     For some known issues/limitations on bahmni connect, please refer this page


Issue: Failed to install bahmni-erp RPM because of missing mx dependency in the epel repository.

WorkAround: Run the below command after installing bahmni-installer rpm. We have picked this up in the upcoming release to fix.

Mingle Card #3592

yum install -y ftp://195.220.108.108/linux/Mandriva/devel/cooker/x86_64/media/contrib/release/mx-1.4.5-1-mdv2012.0.x86_64.rpm


Issue: Error is thrown when Orders are saved after collapsing the Lab or Radiology Tab.

Workaround: The order gets synced inspite of the error. One can acknowledge the error and proceed. This bug will be fixed as a part of 0.90 release.

JIRA Card BAH-285




Release 0.88 (Feb 2017)

0.88 Patch Release


 Backup and Restore of Bahmni artifacts

Mingle Epic #2731 (Documentation)

Bahmni being an EMR has lot of important patient related information collected over a period of time. In addition there are lot of configurations and setup done customized to hospital needs where Bahmni is installed. In case of any untoward incidents (hardware failure/network issues/manual errors etc...) there is a need to set up an alternative machine or need to set up Bahmni again on the same machine. Hence Bahmni as a product should provide an unified mechanism to perform regular backup and restore the required artifacts so that business continues as usual at the earliest with minimal loss of any data.

In addition, thus far Bahmni only supported full DB backup/restore however starting this release incremental backup and point in time restore of DB’s is supported.

This backup mechanism takes care the following items.

  1. Patient images

  2. Document images

  3. Uploaded files

  4. Uploaded lab results

  5. PACS images

  6. Report module generated files by Queue feature

  7. MySQL databases

  8. Postgres databases

Implementations can configure the frequency at which backups needs to be taken. It's recommended that the backups be taken in some external devices like an external hard drive and stored securely (preferably outside the hospital premises). For more details on how to backup/restore artefacts, please refer the documentation.

 Support for sample source to location mapping in Elis

Mingle Card #2940

Until now, ELIS supported only one location to be configured & synced back to EMR. Starting this release, there is support for configuring sample source to location mapping & syncing this information back to EMR. This will ensure samples from different sample source are associated with the corresponding visits for that patient.

Sample source in ELIS will be used to map the source location (documentation)

1. ELIS to EMR sync:

  • Users have to manually select a sample source while adding sample details in ELIS  which will be used to sync the information to  a corresponding visit in EMR.

  • There is a configuration to set a default value for sample source in Administration tab under site information (documentation).  Users would also be able to select one from the list while while adding a sample in ELIS. Once a sample details is saved, the sample source can not be edited.

2. EMR to ELIS sync:

  • In Elis, sample source will automatically take the encounter location when lab orders are placed from EMR. This will be non editable while editing sample collection details in ELIS.


Known Issues:

  • When we login to OpenELIS and if we print the lab reports of the patient from Lab Dashboard its throwing “Failed to load PDF Document” error. It is an issue with the 0.88 version.
  • To solve this manually copy *.jasper files which are located in /opt/bahmni-lab/bahmni-lab/WEB-INF/reports from any previous versions of bahmni to this 0.88 version in the same path.
 Ability to change user password in Bahmni

 Mingle Card #2249 (Documentation)

 Bahmni now provides a way to change user password. Once logged in, user would be able to update her password. The restrictions on the strength of the password are read and displayed from the underlying OpenMRS system.
 Minor enhancements in Product

Mingle Epic #2962

        
  • Rename & change radiology order options configuration - Mingle card #2820
         a. As part of this story Urgency and Needs print options, played in earlier release, user could enable some of the radiology order options. Some cleanup has been done around this
             to have a better naming convention & an efficient way for users to provide only the needed configuration.
  • Improvements around pivot table display- Mingle card #2906
    • Some display controls like the Observation & disease template display control's can be configured to show data in a pivot table in the expanded view. The order of data displayed in this table is now in the ascending order instead of the earlier descending order. There is also an option for the user to quickly scroll to the extreme right of the table to view the latest results.

 Performance improvement in patient listing queues

Mingle card #2904

Few of the queries used in patient listing queues configured in diff apps like Clinical, ADT  have been optimized to enhance performance.

 Additional improvements on the new UX on Observations tab

As part of the previous release, we had UX changes on the observation tab. Few minor improvements have been done around this in this release. #2947 (Documentation).

Some of these include:

  1. Maintaining the order in which the forms are added on the left panel.

  2. Have the first form in the left panel auto expanded when users access the Obs tab for the first time.

  3. Keep the last selected form open after user saves information.
 Implementer Interface - Form Builder (Alpha Release)

Form builder is a tool using which the implementers can design the forms for each implementation. The current processes will be changed in that there will not be a compulsory need to create a "concept set" and adding the set to a "concept set of sets" Also the current process of creating a JSON configuration to control the behaviorb of concepts could be handled through the form builder.

With form builder, users will be able to create forms in Bahmni through a user interface by doing drag and drop of various components required by them on the form and changing the control properties. (Documentation)

The following controls are supported: (Documentation)

  • Obs Control

  • Obs Group Control

  • Label Control

  • Section Control

Following data types are supported for controls:

  • Boolean

  • Coded

  • Date

  • DateTime

  • Numeric

  • Text

The forms support “Form Status” and “Versioning”. The concept of "Form Status" means that the form will have "Draft" status till the form is WIP (working in progress) and user will be able to "Publish" the form after which it will start showing up on Bahmni apps and will be ready for use. Once the form is published, it will be given a version number. For details on Form Status and Versioning, please visit this documentation page on Wiki.

Some of the functionalities that are not yet supported:

  • Add more

  • Media data type is not supported yet

  • Form Conditions

  • Removing a control from the form

  • Form Preview before publishing


Please note that this is still in alpha stage. We are working on adding more features. Please do try out and provide feedback.


The installation steps for the form builder app can be found here.

 Bahmni Connect

In the earlier release of connect, Bahmni was only supporting one location per connect app. From this release onwards, Connect can be made configurable to support more than one location. This will make the connect application usable in scenarios where multiple locations are covered by a user in a single tour using a single Bahmni Connect application. Default behaviour will still be to support one location per Connect application.

The following features are NOT supported for now:

  1. Deleting a previously synced location

  2. Highlighting synced locations on Bahmni Connect

  3. Migration of existing application data

In addition, Bahmni Connect now validates a manually entered patient identifier on the client side in an offline setting and displays error incase of duplicate patient ID entry.

Please note that Bahmni Connect is still in alpha stage. We are working on some of the limitations and performance enhancements. Please do try out and provide feedback.


The installation steps for Bahmni Connect can be found here.

 Upgrade Instructions
  • As part of the multiple locations support for sample source in Elis, Mingle Card #2940,

    a. It is required that all values listed under sample source must be linked to a valid location in OpenMRS which in turn should be associated to a visit location in order to sync information to EMR. The information flow will fail if this setup is not proper.

    b. Lab Location field under site information in Administration tab in ELIS is removed and will no longer be used.

Known Issues:

             Workaround: Restart reports service (service bahmni-reports restart)

  •     For some known issues/limitations on bahmni connect, please refer this page
  • Error is thrown when Orders are saved after collapsing the Lab or Radiology Tab.

    Workaround: The order gets synced inspite of the error. One can acknowledge the error and proceed. This bug will be fixed as a part of 0.90 release.

    JIRA Card BAH-285

Release 0.87 (Dec 2016)

For quick reference on what's new in this release, please check out - Release v0.87 - Introduction Video


 OpenMRS Upgrade

As part of this release, we upgraded OpenMRS to version 2.0.2. While version 2.0.2 is a major upgrade in terms of features for core OpenMRS users, this is not much of a difference for existing Bahmni users.

Technically, Bahmni now runs on Java 8, and enjoys a 3x improvement in its throughput because of the upgrade. This means that users can experience a similar performance in Bahmni even if you triple the number of people using the system.

Some insight to the performance tests results can be found here

 UX changes on Observation tab

 Mingle Card #2798 (Documentation)

Bahmni has improved user experience on Observation tab as part of this release. Some of pain points and feedback's on the previous UI have been addressed in the new approach. Some enhancements & benefits include:

  • The work space is now divided into two panels. Left side panel will display all the added/selected forms and right side panel will display the expanded form. This helps users to focus on one form at a time without the need to scroll.
  • Form validation errors are clearly indicated on the left panel against the specific forms.
  • User can now search for a form to be added from the forms list.
  • Easy way to  ‘Add more’ of some forms for which the configuration is enabled. This will be useful in filling up multiple follow-up forms.
  • Forms shown enabled/disabled in the forms list, differentiates from those that can be added more than once.
  • Option to pin forms enables user to quickly access some of the most used forms as these are always displayed on the left panel.  User could choose to unpin at any point in time.
  • Delete form option can be used to remove a form that might have been either added by mistake or no longer needed for capturing data.
 Bahmni Connect

(Detailed documentation) (Installation Instructions for Bahmni Connect)

Bahmni connect client is specifically designed for CHWs (Community Health Workers) traveling to work in areas (satellite areas) where there is no internet connection. The offline application helps the CHWs to record ramped down medical information about patients. The information collected in the offline application gets synced with the Bahmni online server (mother location) when the device gets internet connectivity. This helps in two ways:

  1. Allows patient information from remote areas to reside at a central location to help in clinical decisions, epidemiology, etc.

  2. Makes the work of CHWs visible to the clinicians to help in better healthcare in remote and resource constrained areas


The below figure illustrates the user workflow supported by Bahmni Connect Client. Please note that Bahmni Connect is primarily designed as a single user application.

Features supported:

Bahmni Connect currently supports a subset of Bahmni online features. Some of these are

  • Works offline. Syncs two way data to server

  • Register Patient / Search Patient

  • View Patient dashboard and information related to

    • Observations

    • Visits

    • Treatments

    • Lab orders

    • Diagnosis

  • Capture observations in forms and enter consultation notes


Please note that this is still in alpha stage. We are working on some of the limitations and performance enhancements. Please do try out and provide feedback.

The installation steps for Bahmni Connect can be found here.

 Provide generic report solution for Observation Forms

Mingle Card #2643 (Documentation)

An implementer can configure different forms to capture observations. Bahmni now offers a report solution to extract data from the forms in the form of one row per encounter.
This also addresses the scenario wherein a concept/concept set is part of multiple forms and the need is to get a report based on data captured as part of specific forms.

There are different configuration options available to filter and/or include additional columns in the report.
Please refer the documentation for complete configuration details.

 Tech enhancements

Mingle Card #2724

  • Ansible version is now made available in bahmni repo. This would be default used during bahmni installation. In addition, user can also specify the ansible rpm url in the bahmni command during installation.


 Upgrade Instructions

OpenMRS Upgrade:

Some manual tasks to be taken care of before upgrading to Openmrs 2.0.2:

  • Since Openmrs 2.0, any of the child/leaf obs value which does not have a value cannot be persisted in database. Any reference to such obs would result in error.
    Implementations should take care of handling all such obs before the upgrade to prevent any errors that could occur due to this.

    The concepts corresponding to these obs will have to be looked at to understand the type of these & the value should be set accordingly.
    To get the count of such obs the following query can be used.

    Count of obs with null values
    select count(*) from obs parent where coalesce(value_coded,value_drug,value_coded_name_id,value_datetime,value_numeric,value_modifier,value_text,value_complex) is null and voided = 0 and (select count(*) from obs child where child.obs_group_id= parent.obs_id and voided = 0)=0;

     One approach to fix this is to "void" these obs. If obs is of value_text type, then you could also choose to set it to empty string.

  • Openmrs stores boolean obs values in ‘value_coded’ column of the table ‘obs’ since previous versions. In version 2.0, Openmrs removed the column ‘value_boolean’ from the table ‘obs’. If any of the custom views added for the implementation references the column ‘value_boolean’ in its view definition, it has to be fixed before starting the upgrade.

    One of the views that references the column ‘value_boolean’ is ‘obs_view’.
    Following sql should be executed before the upgrade to fix ‘obs_view’ :

    obs_view without value_boolean reference
    create or replace view obs_view as
    select
    concept_view.*,
    obs.obs_id as obs_id,
    obs.value_text as value_text,
    obs.value_datetime as value_datetime,
    obs.value_numeric as value_numeric,
    obs.value_coded as value_coded,
    obs.obs_group_id as obs_group_id,
    obs.person_id as person_id,
    obs.encounter_id as encounter_id,
    obs.obs_datetime as obs_datetime,
    obs.voided as voided
    from obs, concept_view
    where
    obs.concept_id = concept_view.concept_id;



  • Since Hibernate 4.x, error is thrown when ‘limit’ clause is used in HQL. If any of the groovy files in config uses limit clause, it has to replaced with usage of ‘setMaxResults’ as done in the following commit:
    https://github.com/Bahmni/default-config/commit/8dcd2fc7bb92b4d893340da7a2bd261bf7020005

Changes to Bahmni Command

Bahmni Connect

  • Some performance testing results can be found here.
  • There are some observations which were captured during the testing phase. Some of the limitations that are currently present are being worked on.
    Please refer to the Observations/recomendations sections to know more on these.

Known Issues:

             Workaround: Restart reports service (service bahmni-reports restart)

  •     For some known issues/limitations on bahmni connect, please refer this page
Release 0.86 (Nov 2016)
 Ability to print & scan Barcode (patient identifier) in registration

Mingle Card #2571 (Documentation)

  • For faster look up of patients in registration module, barcode could be generated during the patient registration process which can then be used during patient search.

    The card print template in Bahmni is configurable, one can add a barcode generation script to the print template. The barcode image can be generated using the patient identifier which is unique for each patient. During subsequent patient visits, the barcode on the card can be scanned directly without the need of manually entering the identifier on the screen.

 Better usability for clinicians to communicate Urgent and Print instructions for radiology orders

 Mingle Card #2284 (Documentation)

  • While ordering radiology orders during consultation, user can now add an urgency flag and provide instructions for printing which can be comunicated to the radiologist if Pacs integration is setup.
 Option to enable/disable Report Queue feature

(Documentation)

  • Report Queuing feature introduced in 0.85 release was useful in getting long running reports. All report requests would be sent to a queue which would then be available for download once the report is ready. 

    A feature toggle option has been introduced which lets implementations choose the way report generation happens..either run a report and have it downloaded immediately or switch to report queue option. By default, the report queue option is not enabled.
 Security Improvements

Mingle epic #2484

  • Provide ability to configure OpenERP to use https - Mingle Card #2493 (Documentation)
    If you have a domain name that can be mapped to the OpenERP server, drop the url to openerp_url in setup.yml, and start using OpenERP with https.
  • Add authentication for OpenELIS atom feed - Mingle Card #2374 (Documentation)
    The content urls in the atom feed of OpenElis has been brought behind authentication. A user (atomfeed) has been created in OpenElis for feeds to work. Please refer to documentation (openelis_username and openelis_password) to change the values.
 Cleanup of bahmni in-built roles
Mingle Card #2241 (Documentation)
  • Built-in roles within Bahmni have been cleaned up, giving proper naming conventions and ensuring all the required privileges for the new features/modules are part of a given role. This is to make it easier to create users with the right roles. Refer the documentation for more information.
 Report Enhancements

Mingle Epic #2541(Documentation)

  • Ability to sequence / configure the report columns - Mingle Card #2361
      1. Generic reports output contains default and optional columns for patient details, visit attributes, address etc. Implementers now have an ability to mention the sequence of columns to be displayed in the output as per the need.
  • Ability to sort columns in generic reports - Mingle Card #2357

 Tech enhancements

Mingle Epic #2477

  • Introduction of bahmni install-certs command. The install-certs command can be used to create certificates using letsencrypt, if you have a domain name. More documentation can be found at Documentation
  • Introduction of the new UI to visualize atom feed issues (atomfeed-console)
      1. Atomfeed-console can be enabled from your inventory file by adding the ip address of the machine to the [atomfeed-console] group. By default, it has 'localhost'. It can be accessed via the url <ip>/atomfeed-console. Consider adding a new app to the home page.

        Atom Feed Console
 Upgrade Instructions
  • Please use the command bahmni -i <inventory> -av 2.2.0.0 install to install bahmni. The available ansible version is 2.2.0.0.
  • Currently Bahmni uses Ansible 2.1.2.0. There is a known issue with epel repo that hosts Ansible rpms. They might remove the current rpm if they release a new rpm. For this reason, we have included an option to explicitly specify the version of Ansible to use. You can run the command bahmni -i <inventory> -av 2.3.4 install. -av is the short option for --ansible-version. To find out the latest available version of Ansible, visit https://dl.fedoraproject.org/pub/epel/6/x86_64/ and search for ansible.
  • As part of the story - Cleanup of bahmni in-built roles(Mingle Card #2241), there are new roles created. Some of the roles should not be assigned to users directly as it is only for internal use. Please refer the notes column here.
  • For any implementation, upgrading to this release or later
    1. New roles will be added and the existing roles will be unchanged. Existing users will not be affected and can continue using the system as is.
    2. If new roles are to be used, configs would have to be updated & and the roles have to be assigned to users accordingly, as there has been changes around some of the priveliges around tabs in clinical. Refer this table for details.
  • Please change password for the "atomfeed" user in bahmni-lab and update installation variables (/etc/bahmni-installer/setup.yml) to the new password.

Known Issues:

             Workaround: Restart reports service (service bahmni-reports restart)

Release 0.85 (Oct 2016)
 Ability to get results for long running reports

Mingle Epic #1686 (Documentation)

  • This feature gives the ability to get results on large data sets. Let's say, to get list of observations recorded for all patients in the past year or six months. This is a huge data set and surely you can't run it using instant reports. So, the approach for report running has been changed. Any report request will be queued and the user can go to 'My Reports' tab/page to see the status of the request and can download once the processing is complete. The running of report requests are moved as background jobs.

 Generic Report Enhancements

 Mingle Epic #2236 (Documentation)

    1. Observations

      1. Replaced ‘short’ with ‘shorNamePreferred’

      2. Replaced fully_specified with fullySpecifiedName (to make it consistence)

      1. An ability to apply date range by obsCreatedDate

      2. Replaced programDatetime with programDate (to make it consistence)

      3. Replaced obsDatetime with obsDate (to make it consistence)

      1. Changes in conceptNameDisplayFormat option

      2. Changes in applyDateRangeFor option

      3. New option conceptValuesToFilter has been added. This option gives ability to filter by values

    2. Visits

      1. An ability to filter records by ‘Date of Admission’ or ‘Date of Discharge’

      2. Column to indicate New patient visit

    3. Lab Results

      1. An ability to filter out ‘Referred Out’ tests. When showing lab results there will be column for Referred Out

      2. When file attached for lab results in OpenElis then there is a column to indicate whether file attached or not

 Miscellaneous enhancements

Mingle epic #2007

  • Delinking Action Buttons on Patient Dashboard From Display Controls - Mingle story #2330 & #2442
    As part of this feature, display of navigation links on the patient dashboard is made independent of the patient dashboard page load. Each display control in Bahmni now spins by itself and this allows the user to navigate away without having to wait for the complete page load. This is helpful esp incase user intends to access consultation quickly.
  • Performance improvements - Mingle story #2308
    Queries used for display of diagnosis on patient dashboard and visit pages have been optimized to improve performance.

  • Validation on Resend OTP - Mingle Story #2273 (Documentation)
    Bahmni provides Two Factor Authentication (2FA) feature which has a Resend OTP option. This story covers couple of more scenarios around handling multiple valid OTP’s at the time of user login.

  • Community - Some of the feature enhancements developed by community has also been merged in this release. Mingle epic #2319 
 Sanitize the default & the clean database provided by bahmni

Mingle epic #2328

As part of this epic, couple of scripts are provided which could be used over the default and the clean empty databases for proper data setup. 

  • Provide a way to delete all transactional data from the default database (Documentation)
    User can use this script to delete the demo/transactional data whichis provided as part of the default database.
  • Provide a way to add minimal data to a clean empty db to get bahmni working.(Documentation)
    Incase of a fresh bahmni installation a clean db is created for OpenMRS, OpenElis and Odoo. But the data in this is not good enough for Bahmni to start functioning. The script provided would help in setting up the basic necessary data/config so as to get the app up and running.
 Minor enhancements in Program, Prints and OpenERP
  • Void a patient program (Documentation)

    Users can now void a program enrollment. After voiding the program, it will be removed from the patient’s dashboard. But, there will be a database entry to keep an audit trail.

  • Ability to configure multiple prints on Patient Dashboard (Documentation)

    There is now an ability to configure multiple printouts (eg.- visit summary, discharge summary) from patient dashboard including latest visit summary. The prints will appear as a dropdown on the patient dashboard

  • Enhancements in OpenERP
      • Item category is now visible onPurchase Order print. It is displayed next to the item.





      • Receipt date is now displayed on GRN print






      • There is now an ability to mention discount on Supplier Invoice. The discount can be mentioned either in percentage or lump-sum cash discount

        Screen Shot 2016-10-14 at 12.22.09 PM.png


      • Display grand total of expenses in Purchase history

        Screen Shot 2016-10-14 at 12.30.38 PM.png

 Tech improvements
  • Mingle epic #2306 (Documentation)

    We have made improvements so that each of the components can be independently provisioned and deployed. This also solves an upgrade issue, where if one has skipped a specific component (e.g. Lab) during upgrade, the configuration (ssl and postgres) would get removed and thus rendering the component unusable.


 Upgrade Instructions

Known Issues:

This issue only happens if you install Bahmni using only RPMs (like https://github.com/Bahmni/bahmni-docker/blob/master/base.sh). You will not face this issue if you usebahmni-installer (ansible) to do the installation.

https://bahmni.mingle.thoughtworks.com/projects/bahmni_emr/cards/2633

Fix for the issue: Execute these steps before doing installation to solve the above mentioned issue

  1. Create the file "/etc/bahmni-installer/bahmni.conf"
  2. Add the following variables in the file

    OPENMRS_DB_SERVER=localhost
    OPENMRS_DB_USERNAME=openmrs-user
    OPENMRS_DB_PASSWORD=password
    REPORTS_DB_SERVER=localhost
    REPORTS_DB_PASSWORD=password
    REPORTS_DB_USERNAME=reports-user
Release 0.84 (Sep 2016)
 Additional Identifiers

Mingle epic #1601 (Documentation)

  • OpenMRS supports multiple identifiers for a patient. This means that we could capture different identifier types (eg: Hospital ID, National ID, Driving License etc) for a patient. Till now, Bahmni supported only one identifier type and other IDs were to be captured as person attributes. This new enhancement enables Bahmni to support multiple identifiers for a patient.

    Please make sure to change the prints in registration which includes patient identifier

    change patient.identifier to patient.primaryIdentifier.identifier



 Generic Report Enhancements

Mingle epic #1861 (Documentation)

  • Generic Lab Results Report
  • Ability to get aggregation by row group. The column group is made optional
  • Enhanced with age group support in the aggregation either in row group or in column group
  • Showing total in aggregation report added as an option. We can configure ‘Total’ column
  • Ability to exclude columns in a report
  • Obs Report Specific:
    • An option introduced to ignore empty obs values
    • Introduced different formats for concept name display
 Additional Enhancements

Mingle epic #1505

    • Ability to write specific rules for Order Sets in the Rules Engine - Mingle Story #1772 (Documentation)

       In certain diseases such as Diabetes, Tuberculosis, etc. paediatric dosing(weight based or BSA based) conflicts with adult dosing (block dosing based). Hence “Custom Rule” has been introduced in Order Sets whereby an implementation can specify rules and the order set will be populated accordingly in the medication tab for the patient so that the clinician’s drudgery is mitigated.

    • Ability to filter out display of specific lab test results in Bahmni - Mingle Story #1516 (Documentation).

      In cases such as cross panel orders, certain tests within the panel must be viewed in Bahmni and some must be filtered to be not viewed. These tests must be created in OpenELIS only, and must be accordingly mentioned in a groovy script so as not to be consumed by OpenMRS.

    • Address Hierarchy strict entry changes - Mingle Story #1865 (Documentation)

      Configuration has been introduced to make address level fields follow strict autocomplete from  certain address level in both top-down and bottom-up address hierarchies.
       

    • Displaying the Short-name of a Concept if Present in the Diagnosis Tab - Mingle Story #1514 (Documentation)

      Diagnosis tab has been enhanced to display the English short-name, if configured, as pointing to the fully specified name in the autocomplete list. Also if a short-name is configured, only it will be displayed against diagnosis across Bahmni.

    • Disabling Bacteriology Tab in Retrospective Mode - Mingle Story #1698 (Documentation)

      In retrospective mode bacteriology tab has been disabled. This is because Bacteriology is not used retrospectively

    • Remove Health Center from OpenELIS - Mingle Story ##1778 (Documentation)

      Health centre has been removed from OpenELIS. However existing features such as sync from OpenMRS to ELIS, patient creation in ELIS, ELIS reports and flow-back of lab results have not been interrupted and continue to function as such.
       

 Tech improvements

Resolved Issues:

  • #2002 During upgrade of Dcm4Che component, a variable ‘suid-prefix’ which is specific for an implementation would get reset. Now you can define a parameter ‘dcm4che_study_uid’ in ‘setup.yml’ can be set, which would ensure that the right variable is set in ‘orm2dcm_bahmni.xsl’.
  • #2117 Fixed Pacs integration startup error because of an conflicting library dependency.
 Upgrade Instructions
  • As part of this story:  Address Hierarchy strict entry changes - Mingle Story #1865 (Documentation),
    New config 'strictAutocompleteFromLevel' for configuring address fields is introduced. It is used to specify the level from which the address fields should have strictautocomplete.

    As part of this, we are decommissioning the older config 'freeTextAddressFields' (to make address fields accept freeText). From now on by default all address fields will accept free text and autocomplete for both 'topDown' and 'BottomUp' approach.

    All the implementations using 'freeTextAddressFields' config should change to new config 'strictAutocompleteFromLevel' and update the address data accordingly.


  • Using the feature - Support for additional identifiers, Mingle epic #1601 (Documentation)

Bahmni currently doesn't provide any specific migration to automatically convert the existing person attributes to multiple identifiers. If any implementation needs to convert then it has to be done so specific for that implementation.

Please make sure to change the prints in registration which includes patient identifier

change patient.identifier to patient.primaryIdentifier.identifier

Drop the indexes sample_lastupdated_idx, analysis_lastupdated_idx, patient_identity_patient_id_idx, if found in clinlims database before installation.

Make sure the username and password for reports-user is same in the openmrs and

/opt/bahmni-reports/etc/bahmni-reports.properties file.

If an implementation chooses to use the multiple identifiers feature, then custom SQL, Jasper Reports SQLs and any other global property SQLs has to be modified to filter out only based on the primary identifier. Else the result would show multiple rows per patient incase additional identifiers has been captured.

Known issue:

2374 -  Add authentication for OpenELIS atom feed

Workaround: Block external access to OpenElis using a firewall setting or some other method.

Release 0.83 (August 2016)
 Two-Factor Authentication

Mingle epic #1653 (Documentation)

      • 2FA is additional security mechanism to protect the user from fraudulent act. Bahmni using basic authentication (username, password) from OpenMRS so far. We are introducing 2FA in Bahmni to enhance the security. This feature only covers login through the Bahmni application. It doesn't apply to direct login through OpenMRS or OpenELIS or OpenERP. This feature is optional for an implementation. When this feature is enabled then user will be authenticated with username and password first and on success, the user will get SMS with OTP (One Time Password) in his/her registered mobile. The user has to authenticate with OTP before proceed to use the system.
 Generic Report Enhancements

Mingle epic #1628

      • Bahmni provides generic reports which will be used to extract data from the system so that implementer can apply macros to get different statistics. To further simplify that, we have enhanced the generic reports so that now an implementer can configure pivot/aggregate and get the desired result. This is available for Observation, Visits and Programs generic reports. (Documentation)
         

      • Since an implementer can apply macros on the output, we have enhanced the report module with concatenate reports so that one can configure more than one report in this report type and will get the output. This feature can be used in HMIS kind of report where multiple reports combined together. (Documentation)
         

      • The report module now can output the result in ODF (Open-Office) format as well.
 Visit Location Mapping

Mingle epic #1707 (Documentation)

      • Till v0.83, we were not persisting visit location, only encounter locations were stored. Now we also store location with visit. Now onwards visits will be associated with a location. We have also provided ability to have more than one visit open as long as they are associated with different locations. This is done so that in cases where facilities have multiple ‘visit locations’. This caters to scenarios like facilities looking at different departments like Cardiology or Dental as different visits, or for facilities having outreach programs having subcenters to be treated differently.
 Ability to specify primary identifier type

Mingle epic #1672 (Documentation)

      • Earlier, the primary identifier type was hard-coded in Bahmni. Now an implementation can select the primary identifier type they want to use for their implementation. It has been made configurable.
 Atomfeed Enhancements for integration of Bahmni and CommCare through Motech

Mingle epic #1976 (Documentation)

      • Atomfeed has been enhanced to:

        • Raise events in a program specific feed (from OpenMRS) for program enrollment

        • Update OpenMRS feed for create/update patient to include patient relationship info

A configuration has been added to switch on/off raising these events. (Documentation)

 Order sets enhancements

Mingle epic #1594

      • #1968 - Earlier when the drug dose was calculated based on BSA or weight, it used to show up in exact decimal points. Now, it is rounded off to the next whole number if decimals are .50 or above and if decimals are below .50, it is rounded off to the previous whole number.
         

      • #1842 - Earlier all the order sets that are configured in the implementation used to appear on the medication screen. Now an order set search box has been introduced on the medication screen. Users can now search for the order sets based on name and description.

        Screen Shot 2016-07-29 at 11.52.55 AM.png

      • #1618 - On the order sets authoring page, a new field has been added for “Additional Instructions”. This will provide the ability to have pre-written additional instructions in the order sets as well.

 Miscellaneous Enhancements

Mingle epic #1692

        • #1431 - Now, doctors can search active patients and navigate to their dashboard from the dashboard or consultation tab of current patient without going to the patient queues page.

          Screen Shot 2016-08-04 at 3.43.29 PM.png

      • #1557 - OpenELIS: Running the “Test status by patients” report, the report generated was sequenced by accession number which was making it difficult to search through it for report from a specific date. Now the report is sorted by ascending order of “date of order” making it easier to locate the report from a certain date.
         

      • #1608 - A Validation has been added for variable dosage on medication screen to make dose as a mandatory field.
         

      • #1688 - Observation and diagnosis display controls can now be configured on the prints on the patient registration page
         

      • #1783 - Bahmni now supports ability to select multiple values in autocomplete fields.

        Pasted image at 2016_08_04 05_00 PM.png

      • #1993 - Patient information is now displayed on the header on Radiology and Patient Document upload pages.

        Screen Shot 2016-08-04 at 5.02.29 PM.png

      • Community - Some of the feature enhancements developed by community has also been merged in this release.
        Mingle epic  - #1980

 Tech improvements
      • #1843 - Return codes for services

        service <name> status now returns 0 (program is running) or 1 (program is dead).

      • #1828 - Bahmni installer on other machines

        So far, we had bahmni installer was installed only on the control machine, where from the bahmni deployment is initialized. This installed ‘bahmni command line util’ - using which we can perform various tasks like taking a db backup. From now onwards, bahmni command line util is now available in other nodes as well. Note, this does not copy the ‘inventory’ file (which specifies what services and databases are installed in which machines) or the setup.yml file (which specifies users, password etc) - because the inventory and setup files are to be secured for installations. This means before running the bahmni utility commands, you will have to copy these files onto another node. This is only meant as a backup option in case the control machine crashed for unexpected reason.

      • #1791 - Individual database import during installation

        Till now, we could only import entire postgres dbms during installation, and not individual database dumps. We can now import individual OpenELIS database or OpenERP database dumps/backups.

      • #1788 - Bahmni Installed component versions

        Now you can find out installed service versions using bahmni command line utility.
        “bahmni --version”
        Also Bahmni homepage has a link which will display the installed service versions.

      • #1785 - Security enhancements

        All services runs with “bahmni” user, which has strictly a nologin user now. Shell access for “bahmni” is denied.
        Firewall rules have been tightened. Only essential ports like 80,443, 22 and 8069 (openerp) are open and all other incoming and forwarded ports are being dropped.
        Incorrect ssl conf in passive machine which used to point to active machines (in multi machine setup) has been fixed.

      • #1637 - Copy all implementation omods during installation from external directory

        While earlier version allowed installation of additional omod (each had to be specified), we now install installation of all omods present in external modules directory (/etc/bahmni-installer/deployment-artifacts/module).

      • #1638 - Select right version of the OMOD provided by implementation

        Bahmni deployment script is now smart enough to override an existing version of a module with an upgraded one. For example, in the omod directory, if you have “idgen-webservices-1.0.omod” & “idgen-webservices-1.1.omod”, the deployment script will pick the later version. For more information please refer to discussion on OpenMRS Talk.

 Upgrade Instructions

1.Visit Location

What is built:

Visit location feature is to associate every visit with the location which is tagged to 'Visit Location' tag. Location for visit is identified based on login location by traversing through location hierarchy. With this feature a patient can have more than one visit opened in different locations.

Prerequisites:

      1. Update location hierarchy to have atleast one location tagged as "Visit Location" that would be associated with login location as parent location or login location itself can be visit location.
      2. Update all older visits with visit location. if there are visits with location null then installation will fail.
      3. Update custom queries to incorporate the visit location where ever needed.
      4. Update location in openElis after deployment. Go to Administration→ Site Information. Add the uuid for "labLocation property. And in openmrs this lab location should either be tagged as visit location or the parent of which should be a visit location.

2.Changes to be done incase Two-Factor Authentication is enabled:

i.When Two-Factor Authentication is enabled, add role bypass2FA to reports-user.


Known issues:

      1. Selinux setup fails when policycoreutils-python rpm is not installed (https://bahmni.mingle.thoughtworks.com/projects/bahmni_emr/cards/2225)
        Workaround:

        Manually install policycoreutils-python rpm in the machine where the installation fails.

        `yum install policycoreutils-python`

      2. pacs-integration service fails to start. This issue is fixed in 0.84 release. To fix it in 0.83 follow the below steps.
        1. Delete file called persistence-api-1.0.2.jar.
        2. rm /opt/pacs-integration/pacs-integration/WEB-INF/lib/persistence-api-1.0.2.jar
        3. Update the checksum of a liquibase changeset.
        4. psql -Upostgres
        5. \c bahmni_pacs
        6. UPDATE databasechangelog SET md5sum='7:d64c93e5819c867f1ed2ba5cc17832f2' WHERE id='102';
Release 0.82 (June 2016)
 Consolidating Existing Canned Reports

 Mingle epic #490 (Documentation)

In addition to the existing canned reports, in this release, a completely generic reporting solution has been provided for the following-

      • Visits

      • Patient Programs

      • Observations

These generic reports contain comprehensive information about (Visits or Programs or Observations) and we can apply filters and macros on them to suit implementation specific needs.

 Ansible Updates

Mingle Epic #1440

#1786 - The deployment process now allows setup of dcm4chee application and database on two different systems.

#1651 - Provisioning of the downloadable vagrant box for the release now happens via Ansible. This ensures that all the subsystems are setup properly with the latest release and in sync with each other in the provisioned vagrant box.

#1646 - OpenMRS rpm versioning was previously done as "openmrs-<version>-<build_number>". However the build number (Go cd build number) is reset for every release. This can result in yum install command pulling in an older rpm. The rpm has been renamed to "bahmni-openmrs-<release_version>-<build_number>" (e.g. bahmni-openmrs-0.81-230)

#1604 - During deployment or upgrade, accessing any bahmni service will now result apache showing a "Down for maintenance" page.

 Component Upgrades

Mingle Epic #1232

#1249 - We have upgraded webservices.rest module to v2.14. Till v0.81 we were bundling a version that was forked from openmrs, so that we could work on REST resources for OrderSet during the test period. Since then OrderSet has been merged to master and hence upgrade to v2.14.

 Miscellaneous Improvements

 Mingle Epic #1285

#1334 - Earlier, registration encounter was created as soon as the visit was opened from the first page of registration. Now the registration encounter will be created when the registration desk user enters some observations (height, weight etc) in the second page of registration and saves them.

#1363 - In the referred out page of OpenELIS all the tests were sorted in descending order of date-time when they were referred out. Now, in addition to descending order, all the tests which have same accession ID will be grouped together and ordered in the same order as defined in the All Lab Tests set defined in OpenMRS.

#1286 - The application now remembers the tab which was active in the patient listing page when the user navigates to patient dashboard. And, when the user navigates back to the patient listing page after viewing details of the selected patient, the respective tab is made active.

#1186 - The columns shown in registration search results have been made configurable. There are few columns which are fixed (ID, name, age, gender, registration date). On top of this, up to five more columns (person and address attributes) have been made configurable.(Documentation)

#999 - All the options in the location widget are now tied to specific privileges for access (retrospective date, location selection, data entry on behalf of another user). Based on the privileges of the logged in user, corresponding options will be provided. (Documentation)

#113 - While uploading the csv, an extra validation has been added to prevent cycles in concept set definitions. This helps in preventing any looped concepts from getting uploaded.

#1487 - Allow decimal field for numeric concepts now works with concept creation through csv upload (Documentation)

#522 - In OpenELIS, when a patient is searched for and the the test results are asked for, the search query used to take 10-15+ secs to fetch results. A performance optimization fix has been done for this query.

 Features Under Development
Release 0.81 (May 2016)
 DrugOrder sets

Mingle epics #89 and #570 (Documentation)

Order sets provide the ability to create sets of orders on the orders page, that can be used to improve physician time for ordering, and reduce errors in ordering drug. Currently, order sets can be created by a hospital administrator and used by anyone who can access the Medications screen. Here is how we can define order sets.

 Bahmni rpm based installation

Mingle Epics #706, #572 (Documentation)

Installation and provisioning of Bahmni machines have changed. All installers are now packaged as rpms instead of the usual bin-shell style installers. For new installations of Bahmni, please follow this documentation, and for upgrades, please follow this migration document. There are also significant changes in the way Bahmni is setup. For example

      • All application logs are under /var/log

      • The usual tomcat installation under /home/bahmni has been replaced. Every application uses an embedded tomcat container, and runs as a different service under its own port

      • New bahmni_support user created that helps with installation

      • All executables are under /opt


The earlier bin-shell style installation has been deprecated. They will still be available in releases 0.81 and 0.82. However, this will not be tested as thoroughly as the new style. Please consider moving your installations to the new style as soon as you can.
 Miscellaneous improvements

Mingle Epic#506

      • Search for lab tests from your Orders tab during consultation

Screen Shot 2016-04-15 at 11.15.01 AM.png

 

      • Configuration to make the dose and dose units non-mandatory based on the route specified for a drug. (Documentation)

      • On Bacteriology tab, ability to add multiple samples at a time using the “Add Sample” button.

 

Screen Shot 2016-04-15 at 11.20.02 AM.png

 

      • Option to configure a field as dropdown on the registration page. (Documentation)

      • FreeTextAutoComplete control is now merged with AutoComplete. AutoComplete now supports both coded & non-coded answers. (Documentation)

      • In OpenERP, order-type to shop mapping is made non-mandatory. User can now configure the order types for which quotation needs to be created without having to map to any shop. In such case, the quotation is created against the first one from the list of available shops configured in ERP.

      • Program enrolment now has a separate role. Anyone user who has been assigned with this role only will have access to program enrolment page. (Documentation)

      • Ability to filter orders on the order fulfilment page to display only those ordered from within the facility. (Documentation)

 Drug dispensing

Mingle Epic #1129 (Documentation)

      • Provides mechanism to dispense drugs from doctor’s location or pharmacy and handle inventory management appropriately. In OpenERP, user has the option to configure the order type -> shop mapping to track the dispensed drugs separately.

      • There is also a configuration to automatically convert quotations to sale orders for drugs dispensed from a given location. The location information is also available in quotation and sale orders listing page.

 Reports

Mingle epic #1406 (Documentation)

There is now a configuration to specify a macro file for reports in custom excel format. Once a file has been specified for a particular report, when that report is run, the system picks up that file and generates the report accordingly.

 Treatment chart with drug frequency

Mingle epic #1458 (Documentation)

Using a custom display control it is possible to have the day wise drug intake indication on the treatment chart displayed based on the corresponding drug frequency . For ex:  If the user configures the drug frequency as say Monday, Wednesday, Friday and saves the drug order, the day wise indication (right tick marks)in the treatment chart can be configured to be shown only on those cells which correspond to Monday/Wednesday/Friday.

 Performance improvements

Mingle epic #614

Few of the queries used for selecting patient in Bahmni and displaying dashboard in OpenELIS have been optimized to enhance performance.

 Report enhancement in OpenERP

Mingle epic #1478

In OpenERP, couple of custom filters have been added to filter out Quotations/Sales based on duration.

 Upgrade instructions

Config changes:

      1. As part of this story - #1248Fix json configuration for display control configuration,
        The configs have been updated to maintain consistency in naming similar attributes used in display controls.
         
        1. The type of display control is called name on the dashboard and type on the visit page. They should both be called “type”. This change is required in openmrs/apps/clinical/dashboard.json and openmrs/apps/adt/app.json config file.
          E.g, In the below Lab results display control, refer the comments
          "labResults": {
          "translationKey":"DASHBOARD_TITLE_LAB_RESULTS_KEY",
          "name": "labOrders",(# No longer supported)
          "type": "labOrders",(# Use 'type' instead of name)
          "displayOrder": 10,
          "dashboardConfig": {
          "title": null,
          "numberOfVisits": 1,
          "showChart": false,
          "showTable": true,
          "showDetailsButton": false,
          "initialAccessionCount": 0,
          "latestAccessionCount": 1
           },
          "expandedViewConfig": {
          "numberOfVisits": 10
           }
          }
        2. We have a translationKey attribute that is used for internationalization. It can also be used for non-internationalized versions of a title.
          The "title" is redundant if there is a translation key specified and hence can be removed in such case. But if there is no translationKey specified, then title is required. This change is required in openmrs/apps/clinical/dashboard.json and openmrs/apps/adt/app.json.
          E.g: In the below observation display control, refer comments
          "gynaecology": {
          "title":"Gynaecology",(# If translationKey is specified then the 'title' will not be considered, this can be removed)
          "translationKey":"DASHBOARD_TITLE_GYNAECOLOGY_KEY",
          "type": "gynaecology",
          "isObservation": true,
          "displayOrder": 15,
          "dashboardConfig": {
          "conceptNames": [
          "Gynaecology"
           ],
          "numberOfVisits": 2
           },
          "expandedViewConfig": {
          "conceptNames": [
          "Gynaecology"
           ],
          "numberOfVisits": 2,
          "showDetailsButton": true,
          "pivotTable": {}
          }
          },


        3. On the dashboard, we have the ability to view the all details page of a display control, by clicking on the header.  The convention which was used was "dashboardParams" for simple view and  allLabDetails, allDetailsParams etc. for expanded view/all details page view.
          Instead, this has been updated to use “dashboardConfig” and “expandedViewConfig” resp.
          The "dashboardParams" needs to be replaced with "dashboardConfig” and config like allLabDetails, allDetailsParams etc. with "expandedViewConfig". These changes are required in openmrs/apps/clinical/dashboard.json and openmrs/apps/adt/app.json.

          E.g, in the below mentioned display controls, the bacteriology display control does not have an expanded view configured whereas the labresults display control has one. 
          "bacteriologyResults":{
          "translationKey": "DASHBOARD_TITLE_BACTERIOLOGY_RESULTS_KEY",
          "type": "bacteriologyResultsControl",
          "scope": "All",
          "orderType": "",
          "dashboardConfig": {
          "conceptNames": [
          "BACTERIOLOGY CONCEPT SET"
           ]

          }
          },
          "labResults": {
          "translationKey":"DASHBOARD_TITLE_LAB_RESULTS_KEY",
          "type": "labOrders",
          "displayOrder": 10,
          "dashboardConfig": {
          "title": null,
          "numberOfVisits": 1,
          "showChart": false,
          "showTable": true,
          "showDetailsButton": false,
          "initialAccessionCount": 0,
          "latestAccessionCount": 1
           },
          "expandedViewConfig": {
          "numberOfVisits": 10
           }
          }


      2. As a part of the story #1115, Short names of a concept is not supported in the config:

        Any and every concept to be used in the config JSONs throughout the app has to be Fully Specified. Otherwise it will not reflected in the UI.

Release 0.80 (Mar 2016)
 Program Enrolment Improvements
Mingle Epic #106 
      • Program Display Control is enhanced to display Program specific information (Documentation).

      • Search functionality on the Registration app is enhanced to support searching patients by Program Attributes (Documentation).

      • Program enrollment page has a redesigned UI.

 Screen Shot 2016-03-02 at 3.15.53 PM.png

      • There is now an ability to edit the start date of active programs.

      • Program attributes now supports coded concepts and numeric values as data-types (Documentation).

 Improvement to Export

Mingle Epic #989

      • Improved data export for Program Enrollments that displays all the Program Attributes for enrollments over a specified time-range. (Documentation)

 Ansible and RPM updates
Mingle Epic #1106
      • Bahmni now does not get affected by pre-installed Java versions on a computer. A compatible version of Java is installed automatically when Bahmni is installed on a machine.

 Miscellaneous Fixes

Mingle Epics #1123, #940 and #662

        • Provider name now syncs to OpenERP and is saved on the quotation. This can also be used in the bill printout.

        • “Tax” column is displayed in the sale order line items in OpenERP and tax is calculated automatically and added to the total sales amount.

        • In OpenERP, following validations have been added (Documentation)

        • Validation to check if batch number added is correct.

        • Price in the sale order cannot exceed the MRP of the product.

      • Column size for identity_data in OpenELIS is increased to 255 characters from 50 characters.

      • Currently user credentials (username and password) for the reports module is stored in the reports properties file. Any implementation where this user is not created will not able to run reports from the system. Hence a migration script has been added to create an OpenMRS user for reports during implementations where this user is not created.

      • A check has been added in install script to avoid errors. The script checks if BAHMNI_VERSION variable is not set. If yes, then the install script gives an appropriate error message, and fails immediately, to notify the implementer of the need to set the variable. 

      • Bahmni now has an ability to treat multiple versions of the same form as individual forms if they are saved in the same encounter.

      • Support to have an "Add More" button for a form (Documentation).

Screen Shot 2016-03-14 at 11.55.13 AM.png

      • Implementers can now specify the report formats to be used by the implementation. (Documentation).

      • Custom display controls can now be configured on Patient Dashboard. (Documentation)

      • Displaying the “Abnormal” button is now configurable. (Documentation)

      • Patient summary now shows the current month of treatment as calculated from treatment start date (Documentation)

      • On the Medication page, there are improvements to: (Documentation)

        • Enable deletion of a drug order.

        • Internationalization support for headers of the columns in the custom control to display drug history.

        • The Drug Name and Refill and action buttons are fixed and displayed at all times. The rest of the columns can be made scrollable, if required.

Screen Shot 2016-03-02 at 3.44.41 PM.png

      • Form header is now fixed at the top of the layover screen when editing a form. It does not scroll with the form

Screen Shot 2016-03-02 at 3.41.37 PM.png

      • Patient information is displayed on top of the page while in consultation (Documentation)

      • Configuration for the forms display to show obs date time or only date for each form (Documentation)

      • A new view button for each form on the forms display control. It opens the form in a view-only mode.

Screen Shot 2016-03-02 at 3.38.22 PM.png

      • Multiple forms display controls can now be configured on the patient dashboard. This helps in displaying logically grouped forms separately in different display controls. (Documentation)

      • Implementers can specify reference terms for concepts in OpenMRS which can be configured to be displayed in display controls (Documentation)

      • Display controls can now be configured to take 25%, 50%, 75% and 100% as the page width. (Documentation)

 Program Specific Patient Dashboard

Mingle epic #1051

      • Episodes of Care is introduced to link all the encounters related to a program.

      • Following display controls are enhanced to display program specific information

        • Drug order details display control

        • Chronic treatment chart

        • Obs vs obs display control

        • Obs display control

        • Bacteriology display

        • Forms display control

        • Drug order section display control on the Treatment tab

        • Month calculation files have also been updated to pick program specific data

      • There is a new Program Specific Drug Order Report that will only consider the active programs within a date range, for drug orders and export all data for the active programs. (Documentation)

      • A new Program Specific ObsTemplate report that will only consider the ACTIVE programs within a date range, for an obs group (form) and export all data for the ACTIVE programs. (Documentation)

      • Delete patient data script has been updated to take care of Episodes of Care

      • A migration script is available for creating episodes for existing implementations that use programs.
Release 0.79 (Feb 2016)
 Additional Medications Tab Configurations

Mingle Epics #455 and #711

      • Configure drug ordering to use free text. This is helpful when non-generic drugs have to be prescribed. It can be disabled if required. (Documentation)

      • Bahmni can now be configured to display different tabs for medication order entry with different forms configured for different types of drugs. This eases data entry especially for facilities predominantly dealing with specific disease programs. (Documentation

      • Create multiple sections on the treatment page to show drug orders based on filters defined in its section configuration. Sections can be configured to filter drug orders based on drug. For example, this allows for visibility of active and inactive TB drugs. (Documentation)

      • Configure the values in units, dosing instructions, routes and frequency drop-downs per list of drugs. The user is also alerted to conflicting drug orders with a pop-up that offers action options based on the drug. (Documentation)

      • Configure the columns on the medication tab. By default, the following columns are always displayed – Drug name, dose, frequency, route and start date for a drug order. (Documentation)

      • Configure which action buttons to show on the display control. For example, the implementer can now hide the refill button on the TB drugs and display it on the non TB drugs section. Change duration button in the Medication staging area is also configurable. (Documentation)

      • Medication configuration now has its own json file for ease of use. It has been moved from app.json to medication.json. (Documentation)

 Simplified Drug Ordering and Scheduling with an Improved User Interface
      • For ease of viewing, the drug order form is now presented as a vertical form in the UI. The new prescription section which is displayed below the drug order form has moved to the right side in the two column layout of the Medications tab. The layout change is also due to the fact that we are working on supporting ordering of Drug Order sets from the same page.
        Screen Shot 2016-02-03 at 11.14.00 AM.png









      • Better support for drug order history with labels for Start and Stop dates and provisions to record the reason for stopping a drug. (Documentation)
      • When a particular Medication is stopped, the Stop section auto-expands, and the user can enter the Stop Date, Reason and Notes.
        Screen Shot 2016-02-03 at 3.34.24 PM.png






      • Treatment Details Display Control in Medication Tab now shows all drugs chronologically. (Mingle Epic #398)
      • Medication start date can now be configured to not be defaulted as “Today”. This will help reduce errors in data entry. (Mingle Epic #398)

      • A new dropdown field next to the dose field on the treatment tab is added which contains fractions as values. This was done in response to requests from Bahmni setups where users are not very familiar with decimals and understand fractions better. The availability of this dropdown field is configurable. (Documentation) (Mingle Epic #105)

 Improved Management of Hospital Programs with Program Attributes

 (Epic #629)

      • Bahmni now supports configurable program attributes. For example, Program ID, Program facility, location, etc. Program attributes can be made mandatory, and can be configured to be displayed/hidden on the Patient Dashboard. (Documentation)

      • Data entry for programs is now simplified with enhancements to the Program enrolment page such as local language support, ability to capture and edit program attributes for active programs and support to select a past date for Program enrolment. (Documentation)

 Customize Reporting with enhanced Exporting capabilities

(Epic #92 and Epic #727)

      • All the data in the context of programs including Program Attributes, Bacteriology results and Drug Order can now be exported in CSV format. This helps with creation of custom filters/reports using spreadsheet programs of one’s choice. (Documentation)

      • Concepts which are flagged as unknown in observation forms can now be published as Unknown while exporting them.

      • Previously, on export, “coded answers” were replaced with generic numbers. They can now be replaced with user-defined Concept Source Terms. (Documentation)

      • Location tags have been introduced in the canned reports to filter the data from a particular hospital. This is particularly useful for facilities similar to the ones in Bangladesh, where data from other hospitals in the same catchment are synced. (Documentation)

      • Bahmni reports are now available in CSV format too. (Epic #507)

 Standalone Components with Upgraded Packaging

 (Epic #719) (Epic #720)

      • Bahmni components now run as standalone services instead of web-apps on a Tomcat server. This means that each component will run on its own port and can be started, stopped and reasoned with separately. Each service can be started using standard centos6 service inits - service start <component>, service stop <component>, service restart <component>.

      • The packaging of Bahmni components such as Bahmni Web, Bahmni Lab Connect, Bahmni Reports, Bahmni EMR, OpenMRS, OpenELIS, OpenERP, etc. is now done using standard yum packaging (RPMS) with Netflix's Nebula gradle plugin. Doing so allows us to leverage the following benefits of using RPMS:

        • Support for versioning - all client machines will be able to use the standard Yum package versioning.

        • Ability to release components only when needed.

        • Standard packaging and distribution (we are already leveraging a fast third party RPM host - bintray).

      • The Atomfeed library is upgraded to 2.5.1.

 Improved Provisioning of Bahmni using Ansible

(Epic #175)

Bahmni Installation on CentOS is now simplified and easy to use. We chose Ansible because:

      • Ansible scripts are standard yaml files and file organization is easy to reason with. We found that the learning curve is not as steep as for Puppet.

      • No agent is required for multi machine setup

      • Default order of execution is how it is written - top-to-bottom (as against our earlier Puppet setup where ordering of resources run is not how it is written).

      • Ansible is basically a thin-wrapper for executing commands over SSH, and hence is easier to debug.

 Security Fixes

 (Epic #80)

A focus area for Bahmni is to ensure we follow strict security guidelines, thus protecting access to patient data from malicious parties. Please note that the features below are in Beta release and are available only for the Bahmni implementations that are using Ansible.

      • The previously unsecured Bahmni Reports application has now been made accessible to OpenMRS users who have a certain role.

      • All Bahmni components will run under a no-login, non-root user, and all the configuration files will be accessible to this user (apart from the root user).

      • Furthermore, configuration files that contain passwords - app, db etc., are now going to be Ansible template files. Our next steps would be to allow users to configure the installation process with passwords that they create.

 Improvements to OpenELIS and OpenERP Integrations
      •  A test attribute has been added to OpenELIS to allow for tests that cannot be performed in the hospital to be auto-referred. This saves the manual effort of the lab technician to refer the patient to another laboratory. (Epic #105)
      • To fix problems of OpenELIS and OpenERP creating accessions and invoices for orders given in other hospitals, OpenMRS atom-feed has been modified to not create encounters for orders that are downloaded automatically. This was done to accommodate facilities like those in Bangladesh, where data from other hospitals in the same catchment are automatically synced, thus resulting in the creation of redundant encounters. Now, accessions and invoices for orders will only be automatically created for orders within the hospital. (Epic #105)

      • Cost price in OpenERP now includes the tax paid to the vendor. (Epic #507)

 UI Enhancements to Patient Registration

 Screen Shot 2016-02-03 at 2.23.13 PM.png

      • Sections on the registration page can now be configured to be displayed in a particular order. (Epic #507) (Documentation)

      • Implementers can now configure Date of Birth as a mandatory field on the Registration page. (Epic #398) (Documentation)

      • Enhancements have been made to autocomplete in address hierarchy on the Registration page. (Epic #105)

      • Search results UI on the registration page have been improved for better usability and the search results hyperlink is removed from the patient name. (Epic #105)

      • Patient is now searchable by partial Patient ID on registration page (Documentation). (Epic #105)

 Miscellaneous Fixes
      • Numeric fields generally have a normal upper and/or lower range, which help in validating if the numeric data entered is correct or wrong. Now, wherever numeric data is entered or viewed and has normal ranges configured, the ranges would be displayed to visually aid the User to enter/view the correct value. This has been implemented across Bahmni. (Epic #398)

      • Support for user-defined sample types when "other" is selected in the Bacteriology sample. (Epic #398)

      • Sort order on drop downs is now based on data setup and is not alphabetical. The Date-Picker can be configured to show the dropdown for only Month and Year. (Documentation) (Epic #398)

      • On the Patient Dashboard, Drug--gram does not display "Stop" in the cell when the drug is stopped and restarted the same day or the next. (Documentation) (Epic #398)

      • A new configuration is introduced in the Treatment Details Display Control on Patient Dashboard to show only Active Medication. (Documentation) (Epic #398)

      • Concept Reference terms can now be configured to be displayed as headers in ObsToObs Display Control (Documentation) (Epic #398)

      • Support to edit data in the Obs Vs Obs Flowsheet. (Documentation)(Epic #398)

      • Support to flag a field in a form as Unknown. For example, often times, the treatment start date value is not known and needs to be flagged as such to indicate that the treatment was started on an unknown date. (Documentation) (Epic #398)

      • Synonym search is now enhanced to display search results to show synonym and fully specified name. (Epic #105)

      • Fields with errors will now show relevant error message instead of a generic error message. (Epic #105)

      • Patient is now searchable by partial Patient ID on the Clinical page. (Documentation). (Epic #105)

      • On the In-Patient Management dashboard, Patient Movement type is not defaulted to "Transfer Patient”. (Epic #105)

      • Bahmni now supports mapping of login locations to encounter types which sets the encounter type based on the user’s login location. (Epic #105) (Documentation)

      • On the Consultation page, a pop-up Message is now displayed to Save when navigating away from the Patient or when closing the browser/webpage. (Documentation) (Epic #637)

      • On the Bacteriology page, Additional Attributes and Core Fields Section are now merged. (Epic #637)

        Screen Shot 2016-02-03 at 3.08.30 PM.png

        • The Visits display control had been modified to show the forms that have been filled in each visit. This is now reverted back to show visits and forms are displayed in their own control. (Epic #507)

        • Support to show/hide provider information in all displays containing treatment tables. This includes discharge summary, patient summary, patient dashboard, etc. Based on the configuration it will be shown/hidden in the respective printouts. (Epic #507)

        • On the Patient Dashboard, implementers can specify which links they want to show on the display control instead of URLs. (Documentation) (Epic #513)

        • Performance improvements to Patient Select query and Bed Select query. (Epic #532)



Release 0.78 (28th Dec 2015)

Clinical

Reports / Exports

OpenERP

      • Care setting information is synced to OpenERP
Release 0.77 (27th Nov 2015)

OpenERP

      • OpenERP can be setup to generate automatic Purchase Orders based on stock levels
      • Total quantity will now be synced as as -1 instead of 1 to a quotation when the total quantity cannot be calculated
      • In sales quotation, items not in stock will be shown as highlighted to help pharmacist to modify quantity
      • Option to round-off total amounts is now configurable
      • Total quantity units is now available as a dropdown

Clinical

      • Last assigned bed details in a visit can be configured to be used in custom prints such as a discharge summary even after a patient has been discharged
      • PACS integration - Functionality to integrate Bahmni with digital radiology machines (Bahmni PACS setup - Implementers' Guide)
      • Bacteriology - (Configure Bacteriology Tab - Implementers' Guide)
        • A new bacteriology tab can be configured in clinical module where samples and test results can be saved
        • A display control has been built for configuring bacteriology test results which can be setup on patient dashboard
      • Doctors can order drugs which are not items in the inventory (free text drug orders)
      • An implementer can specify a default value for a coded concept field
      • Users can edit forms that were filled in a previous encounter
      • Default roles have been packaged to be provided with the registration and clinical modules of Bahmni (In Built roles for remaining apps - Feature Guide)
      • If there are specific configurations present for individual implementations, those will now be picked up and used (Overriding Config - Implementer's Guide)
      • Orders can now be setup to be filtered and viewed based on Location
      • Dates can be setup as fields in person attributes
      • Blood group of patients can be configured to be displayed on patient dashboard
      • Provider information is displayed below the drug order prescription
      • Sections in patient registration page are now configurable (Patient Registration - Feature Guide)
      • Doctor's name is displayed in drug order print out
      • Patient registration screen works on 7 inch screens
      • A flow sheet display control has been built to be used on dashboard pages (Flow Sheet Display Controls - Implementer's Guide)
      • An observation group list display control has been built to be displayed in a tabular format (ObsToObsFlowSheet - Implementer's Guide)
      • Some usability improvements have been put in place, including - 
        • Shortcut for Dashboard button in Consultation page. (accesskey="D")
        • Shortcut for Consultation link in dashboard. (accesskey="C")
        • Shortcut for Home backlinks in all the apps. (accesskey="h")

Exports / Reports

Known issues:

https://trello.com/c/IYl1E4FB/3393-openmrs-startup-issue

Workaround: Do not hit the URL soon and access the server  after about 5-10mins. Delete the tomcat temp, work directory & restart tomcat, if issue comes up.

Tech Notes

1)  There has been a change on the registration page to pick concept short names instead of fully specified names, as part of this https://trello.com/c/1B9yZt7z/3025-app-displays-the-fully-specified-name-of-the-concept-answers-in-a-dropdown-instead-of-the-short-name.For this change to work consistently, need execute the following  script once which will copy fully specified names to short name for concepts of person attribute types. 

SET @concept_ids = NULL;
select group_concat(distinct(foreign_key)) into @concept_ids
from person_attribute_type where format='org.openmrs.Concept'
group by format;
update concept_name as c1,concept_name as c2
set c1.name=c2.name
where c1.concept_id=c2.concept_id and c1.concept_name_type='SHORT' and
 c1.concept_id in (select answer_concept from concept_answer
where find_in_set(concept_id, @concept_ids)) and c2.concept_name_type='FULLY_SPECIFIED' and c1.locale=c2.locale;

Link to the above script on bahmni-environment: https://github.com/Bhamni/bahmni-environment/blob/master/scripts/db/update_shortname_to_fullyspecifiedname_for_person_attribute_type_concepts.sql

2) For implementations using the feature:  Display of patient blood group on dashboard,

As part of this story (https://trello.com/c/YjzkEgnJ/3010-jss-show-blood-group-of-existing-patients-on-patient-dashboard), need to run the below script. 

https://github.com/Bhamni/bahmni-environment/blob/master/scripts/db/update_blood_group_for_existing_patients.sql

Release 0.76

Clinical

      • Diagnosis "Ruled Out" option has been made configurable. The implementation can choose whether to have this as an option on the Diagnosis tab.
      • Instead of "Ruled Out", an implementation can now mark a diagnosis as "Inactive"
      • Internationalization - Multiple language support available for Registration and Clinical modules. Selecting a locale loads the relevant language translations in the registration and clinical modules
      • Clinical module retains all changes made when switching between dashboard, active consultation and past encounter edits
      • To reduce clutter on the Diagnosis display control, a configuration is made available which can be used to display only the active diagnoses on the patient dashboard and hide the rest. All diagnoses will still be displayed in the All Details page
      • Consistent behavior of the application in retrospective and edit encounter modes
      • Enhancements to Visit display control including listing forms which have been filled in encounters
      • Conditional Forms - Implementations can now specify if some fields in forms can be enabled or disabled based on a selection of a form field
      • Export Patient data - All patient registration data can be exported to be used for analysis
      • For patients above a particular age (configurable), the age information will be displayed only in years instead of years, months and days
      • In retrospective mode and edit encounter mode, order and disposition tabs will be disabled
      • Drug order page - Calculation of total quantity will be done for tablets and capsules. For all other dose units, calculation of total quantity is configurable
      • Implementer has the option to display/hide total quantity and total quantity units on the treatment page and on display controls
      • Custom print enhancements

Reports

      • Admin can now disable reporting for users by revoking the privilege "app:reports"

Billing and Inventory (OpenERP)

      • Manufacturer name and price are now displayed at supplier level for the products, and will automatically show in the Purchase Order

      • In a Purchase Order, the application will display the 'Amount Due' and 'Total Amount' same as the invoice amount

      • Patient attributes and address details are now synced from OpenMRS to OpenERP to aid in reporting

      • Report of Drugs not used in last 3 months

      • Changes to sync of the total quantity and total quantity units to OpenERP based on the changes on the treatment page

Registration

      • Based on the location, address hierarchy values can be auto-populated

Programs

      • Minor user experience related enhancements to Program Management page

Lab (OpenELIS)

      • Changed the hardcoded 'JSS' organisation in OpenELIS to 'Bahmni'

Tech Notes

OpenERP:

      • As part of  migration story #2823 we are changing the structure of existing table "res_partner_attributes" to have each attribute as a column name instead of saving the value in a key value pair.
      • The below script will be rename the existing "res_partner_attributes"  table to "res_partner_attributes_old" and the data will be migrated to newly created table "res_partner_attributes". 
      • Run migrate_res_partner_attributes.sh  from  /bahmni-environment/scripts/openerp

OpenMRS:

      • After deployment, need to update the search index. Navigate to OpenMRS admin UI ->Administration -> Advanced Settings ->Search Index (in the header)
      • Click on "Rebuild Search Index"

Clinical:

 1. You need to rename extension-DEFAULT.json to extension.json and then the following config change required in extension.json.

      • "forwardUrl": "#/patient/{{patientUuid}}/dashboard" should change to 
      • "forwardUrl": "#/default/patient/{{patientUuid}}/dashboard?encounterUuid=active"
      • Note: 'default' is added as part of the url. This change has to be done in all the forwardUrl property. We have already taken care for the following implementations (possible, banyan, gudalur, jss, lokbiradri,default, bdshr, bd-hospital, bd-uhc, endtb) master branch. If it is missed in any other implementation, please go ahead and correct it.
      • ?encounterUuid=active is needed for retaining changes between dashboard and consultation to work properly.

2. You need to rename extension-PROGRAMS.json to extension-programs.json (If the file is present)

Registration:

      1. The following config change required in extension.json
      • "forwardUrl": "#/patient/{{patientUuid}}/dashboard" should change to "forwardUrl": "#/default/patient/{{patientUuid}}/dashboard?encounterUuid=active"
      • Note: 'default' is added as part of the url. This change has to be done in all the forwardUrl property. We have already taken care for the following implementations (possible, banyan, gudalur, jss, lokbiradri, default, bdshr, bd-hospital, bd-uhc, endtb) master branch. If it is missed in any other implementation, please go ahead and correct it.
      • ?encounterUuid=active is needed for retaining changes between dashboard and consultation to work properly.
Release 0.75

Clinical

      • Access Program Dashboard from Application Dashboard
      • Setup and select drugs from forms (configure drugs as answers for a concept in observation templates)
      • Navigate to Consultation from any of the "All Details" pages
      • Configure sections on the patient dashboard to be displayed in one or two column layout
      • Visits list section on Patient Dashboard enhanced to show encounter, order types and observations captured
      • Programs - Specify forms which will be used to capture information per program
      • Display blood group of patient on the patient dashboard
      • Allow consultation even when there is no visit open (create a new visit automatically)
      • Display the patient states on Patient Dashboard
      • Enable or disable fields based on data entered by the user in a form
      • Custom prints in clinical dashboard
      •  You need to rename extension-DEFAULT.json to extension.json and then the following config change required in extension.json.
        • "forwardUrl": "#/patient/{{patientUuid}}/dashboard" should change to 
        • "forwardUrl": "#/default/patient/{{patientUuid}}/dashboard"
        • Note: 'default' is added as part of the url. This change has to be done in all the forwardUrl property. We have already taken care for the following implementations (possible, banyan, gudalur, jss, lokbiradri and default)
      • You need to rename extension-PROGRAMS.json to extension-programs.json (If the file is present)

Registration

      • Capture time of birth in registration
      • Capture if the DOB entered is estimated or not
      • Ability to make patient attribute fields non-editable
      • The following config change required in extension.json
        • "forwardUrl": "#/patient/{{patientUuid}}/dashboard" should change to 
        • "forwardUrl": "#/default/patient/{{patientUuid}}/dashboard"
        • Note: 'default' is added as part of the url. This change has to be done in all the forwardUrl property. We have already taken care for the following implementations (possible, banyan, gudalur, jss, lokbiradri and default)

OpenERP

      • Sync all orders to OpenERP for creating quotations
      • Display expiry date of drugs on bills
      • Measure turn around time for patient
      • Set the product price to the latest batch's selling price

Reports

      • Enhancements to certain patient reports to include patient attributes
      • Canned report for Orders
      • Canned Report for Visit Aggregate counts
      • Canned Report - List of patients in a program
      • Canned Report - Number of Patients entering a state of a program in a given date range
      • Canned Report - Count of patients in a program undergoing a state change

Tech Notes

      • Update the Search Index 
      • Updating entity_mapping table
        • entity_mapping_type table will be populated during liquibase migration. This table contains the entity pair (entity1_type, entity2_type) for a given mapping. Using these entity values we can populate the entity_mapping table as below
        • insert into entity_mapping (uuid,entity_mapping_type_id,entity1_uuid,entity2_uuid,date_created) values (uuid(),1,'91392f50-b1e5-4076-9c01-d7ca97b0b2a7','746818ac-65a0-4d74-9609-ddb2c330a31b',now()); where entity1_uuid, entity2_uuid will be the actual uuid of the entity mentioned in entity_mapping_type table.
Release 0.74

Program

      • Create program management page
      • Enroll patient in a program
      • Add state of workflow of program at time of patient enrolment
      • Edit program workflow state
      • Program display control enhanced to show state transitions
      • End a patient's enrollment in a Program
      • Access Program from application dashboard 

Appointments

Relationships

      • Add relationship on Patient Registration page
      • Search for a relationship
      • Delete a relationship
      • Patient Information Display control enhanced

Order Fulfillment

      • Add notes to orders
      • Display notes entered for non-lab orders in Fulfillment module
      • Option to configure order display control on the All details page
      • Display notes entered for lab orders in OpenELIS
      • Disallow comments to be added after order has been saved
      • Display tests as selected when panel is selected on Orders Page

Reports

      • ObsCount reports config simplification - single config file
      • Simplifying the output excel format canned report
      • Drugs not used in last three months
      • IPD canned report

OpenERP

      • Show quotation creation time of on OpenERP Receipt
      • Use batch while creating quotation when syncing drug order from OpenMRS

Registration

      • Non editable patient attribute fields
      • Specify a script that validates patient fields

Clinical

      • High risk patient list enhancements
      • Display control for navigation links
      • Ability to attach PDFs to patient records
      • Highlight in dashboard if a patient is detected with resistance to particular drugs
      • Graphs with Configurable Reference Curves
Release 0.73

 Order - Fulfillment

      • New section (tab) in clinical module for ordering lab tests and other orders (configurable order types, for example - procedures, x-rays etc.)
      • New module in Bahmni dashboard to fulfill orders
      • Ability to configure templates for fulfillment page
      • New section on Lab dashboard to display orders from clinical module
      • Automatically populating sample collection page based on clinician's lab order
      • OpenELIS - Option for user to save his preference to default to a specific tab
      • New display control for orders (to be used on patient dashboard and visit pages)

Line Graphs
      • Growth charts
      • Display of normal ranges in graphs

Reports
      • Malaria test count
      • X-Ray count
      • Patient list for abnormal results
      • TB patients with follow-up dates

Other (Support requests, small enhancements)
      • Discharge Summary - display weight at admission
      • Visual indicator for patients admitted
      • List of high risk patients
      • Mark calculated observations abnormal
      • 1 step way to change duration of all refilled medicines/ computed medicines
      • Ability to configure List View of patients
      • On behalf of data entry
      • Sync Lab Test results as coded answers from OpenELIS to OpenMRS
      • Bed Management supports logical ward with multiple physical spaces
      • OpenELIS - Moved ability to mention institution sent to from Referred out page to Result Entry page
      • CA Breast cancer compute - enhancement of logic
      • Delete diagnosis as a privilege
      • Registration Search - configurable "Search by" fields
      • Prescription print improvements
      • Maintaining sequence when prescription is edited
      • Billing data segregated by IPD and OPD
Release 0.72


      • Line Graphs for numeric observations

      • Drug dispensing by pharmacist

      • Computed observations are displayed in the Observations tab as read-only

      • Quick link to Consultation from Registration page (Bangladesh)

      • Patient queues (list) can be configured to be tile view or icon view

      • Treatments Tab - Show quantity information with drug details

      • View Bed Layout from Ward List page

      • Close Visits from Registration module

      • Define validations for fields on the Registration page through configuration (Bangladesh)

      • Navigate to dashboard of the previously opened patients

      • "10 Jan 15" as the uniform date format across the application

      • Numeric controls can be configured as stepper control (recommended to be configured only when the numbers would be small like number of children, pregnancies etc.)

      • Display all tab headers by default on visit page

      • Display error based on 'Absolute High Value' and 'Absolute Low Value' for numeric fields and warning for values outside "Normal High" and "Normal Low"

      • Export all values that are filled in an observation template as an in-built report

      • Capture IPD, OPD, Emergency status in visit attribute for ease of reporting

      • Improvements in display control to be more printer friendly

Go-live tasks:

      1.  Run bahmni-environment/scripts/db/procedure_to_migrate_visit_status_attribute.sql
      2.  Remove BMI/BMI Status concepts from the "Nutritional value" concept set. (for JSS )
Release 0.71 (10/03/15)
      • IPD dashboard and Bed management (Possible, perhaps JSS)

      • Retrospective data entry (JSS -- Village Program & Drug Order entry for in-patients)

      • GoCD as production environment management and distributed build/deployment tool (Possible – Production Environment)

      • Small encounter import improvements (JSS – Data Import)

      • DynamicReports spike (All Implementations - Can it be used for canned report solution where dynamic reports helps in configuring these canned reports at the implementation level)

      • Creation of canned reports (Possible now, All Implementations)

      • Clear issues faced when setting up an environment from scratch (Bangladesh, New Implementations)



persistence-api-1.0.2 jar


Release 0.92 (Feb 2020)

 

Bahmni version: 0.92-155

 Pre-requisites

Operation System - CentOS 7.5, 7.6 and 7.7. We would advise starting with a "minimal" distro. 

Please see system requirements here

Before you go through the installation process, please upgrade "zlib" packages. 

$ yum install -y https://kojipkgs.fedoraproject.org//packages/zlib/1.2.11/19.fc30/x86_64/zlib-1.2.11-19.fc30.x86_64.rpm
 Installation

Please refer to the documentation on Installation, Upgrade and/or Advanced Installation for version 0.92

Please also refer Installing and Configuring Bahmni Connect for Bahmni Connect Setup

You can refer to All Releases page for further details on RPM versions


Note

  • Henceforth, please do not use the “service” command to start/stop/restart a service. 
  • Only use the “systemctl start/stop/restart <bahmni-service-name>” command. 
  • Ensure that you don’t have a directory “/var/run/<bahmni-service-name>”.  Such directories are henceforth created and removed as part of “systemctl” execution. Hence if you are updating an existing Bahmni installation, ensure /var/run/<bahmni-service-name> directory is not present before install command gets triggered.
 Upgrade/Post Installation Instructions

Rebuild Search Index: It's mandatory to rebuild search indexes from the OpenMRS UI. Without this, Patient, Drug and Concept searches won't work in Bahmni or OpenMRS. Please rebuild the indexes post install/upgrade: OpenMRS => Navigate to Administration => Search Index => Run Rebuild Search Index. 


Duplicate Scheduler Tasks: We have noticed that there are sometimes duplicate schedulers for OpenElis Patient Atom Feed Task and OpenMRS event publisher Task running. Having such duplicate entries relevant to Feed and Events can result in unforeseen and unpredictable synchronization issues between components of Bahmni. This is fixed as part of latest Bahmni-0.91 release for the default demo and clean databases. However, existing installations trying to upgrade Bahmni should manually delete the entries from database. You can do this either from OpenMRS Administration console or updating database directly. You can verify by running this SQL on mysql “openmrs” database.


select schedulable_class, count(*) from scheduler_task_config group by schedulable_class;


If any of the rows, show as more than 1, then you should delete the duplicate entries to ensure only one scheduler job exists and is being run.

Tag a Location with ‘Operation Theatre’ : To create a surgical block in OT scheduling module, we should have at least one location tagged as "Operation Theatre". If you are not using default config, or have forked from default config previously, you must tag your OT location with ‘Operation Theatre’ tag. Without this setup, OT scheduling app will throw an error.


Odoo Setup: If you are going to use Billing/Pharmacy/Inventory functions from ERP, you need to configure Odoo for your requirements appropriately. Please see WIKI documentation for guide.


Change default passwords: You should change the user passwords for OpenMRS (superman, admin), OpenELIS (admin), Odoo (admin),  Dcm4Chee (admin)

MySQL admin password: From 0.92, we are using MySQL version 5.7, and the password policy is stricter and set to MEDIUM, which is a combination of “Length; numeric, lowercase/uppercase, and special characters”. If you are changing the admin user (root) password, you need to set password appropriately. Check MySQL documentation here for more information.

 Troubleshooting

Information don’t sync to Odoo, or published lab results don’t sync to OpenMRS: We have noticed that sometimes post installation (with bahmi-lab, bahmni-erp-connect services running) information don’t sync to Odoo (from OpenMRS) or to OpenMRS (from lab), while the front end applications seem to be working fine. If you would check the log files, you will probably see connection lost, or C3PO connection pool errors. Restarting the services seem to resolve the errors. 

> systemctl restart bahmni-erp-connect

> systemctl restart bahmni-lab


systemctl commands throwing error: 

Authorization not available. Check if polkit service is running or see debug message for more information. Failed to restart odoo.service: Connection timed out
See system logs and ‘systemctl status odoo.service’ for details.

We have noticed this error coming up infrequently. Follow the instructions provided below for resolution

https://access.redhat.com/solutions/1543343


running services in debug mode:

  • If you want to run a particular service in debug mode, you can still continue to use the “service <bahmni service-name> debug” command. However, few things you need to keep in mind
    • Always run the service in debug mode, as root user. 
    • After stopping the service, ensure that you delete the /var/run/<bahmni-service-name> and /var/log/<bahmni-service-name> directories. 

generate "LetsEncrypt" certs:

  • If you want to generate “LetsEncypt” certs from the same server machine, you will have to manually install zlib-devel package. Please see this thread for information
Known Issues
  • Same as August 2019 release of v0.92
  • Replace Offline sync omod: 
    • If you are going to use “bahmni connect”, you would have chosen “bahmni-offline”. You will need to replace the following file
      • /opt/openmrs/modules/bahmniOfflineSync-0.91-SNAPSHOT.omod 

                       with “bahmniOfflineSync-0.92-SNAPSHOT.omod” file, which can be downloaded from 

                       https://github.com/Bahmni/bahmni-offline-sync/releases/tag/0.92-SNAPSHOT

                       - click the assets link in the above page, to list out the files.            

    • Once you have placed the file in /opt/openmrs/modules/ directory, make sure that you change the permission for the file
          > chown bahmni:bahmni /opt/openmrs/modules/bahmniOfflineSync-0.92-SNAPSHOT.omod 

The Bahmni documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)