About the Feature

The Bahmni tele-consultation feature release is set of artefacts that can be deployed/installed on an existing Bahmni system using 0.92 version. These artefacts would enable the healthcare professionals using bahmni to schedule video tele-consultation appointments.

See this documentation page too: Teleconsultation

Features List

Video Demo

https://www.youtube.com/watch?v=cLxmGHshCzI

Prerequisites

Assumptions

Steps to deploy Tele-consultation feature

  1. Install Bahmni version 0.92 Install Bahmni on CentOS

  2. Download appointment omod and place it in /opt/openmrs/modules/ directory

    #Download appoitment omod
    yum install https://github.com/Bahmni-Covid19/openmrs-module-appointments/releases/download/Release_v1/appointments-1.2.3.omod
    
    mv appointments-1.2.3.omod /opt/openmrs/modules/
    chown bahmni:bahmni /opt/openmrs/modules/appointments-1.2.3.omod
  3. Download bahmniapps.zip, unzip and place it in /var/www/ replacing the existing bahmniapps

    #Download bahmniapps.zip
    yum install https://github.com/Bahmni-Covid19/openmrs-module-appointments/releases/download/Release_v1/bahmniapps.zip
    
    unzip bahmniapps.zip -d bahmniapps
    mv bahmniapps /var/www/
    chown bahmni:bahmni /var/www/bahmniapps

Next Steps:
These are manual steps to be done, in order to see some tele-consultation configurations in bahmni_config.

  1. In file /var/www/bahmni_config/openmrs/apps/customDisplayControl/js/customControl.js under directive patientAppointmentsDashboard , where we have

    $q.all([getUpcomingAppointments(), getPastAppointments()]).then(function (response) {
                $scope.upcomingAppointments = response[0].data;
                 $scope.upcomingAppointmentsHeadings = _.keys($scope.upcomingAppointments[0]);
                $scope.pastAppointments = response[1].data;
                $scope.pastAppointmentsHeadings = _.keys($scope.pastAppointments[0]);
            });
            $scope.goToListView = function () {
                $window.open('/bahmni/appointments/#/home/manage/appointments/list');
            };

    replace the following

    var convertUTCtoLocal = function (start_date_time, end_date_time) {
                var date = Bahmni.Common.Util.DateUtil.formatDateWithoutTime(start_date_time);
                var timeSlot = Bahmni.Common.Util.DateUtil.formatTime(start_date_time) + " - " + Bahmni.Common.Util.DateUtil.formatTime(end_date_time);
                return [date, timeSlot];
            };
            $q.all([getUpcomingAppointments(), getPastAppointments()]).then(function (response) {
                $scope.upcomingAppointments = response[0].data;
                $scope.upcomingAppointmentsUUIDs = [];
                $scope.teleconsultationAppointments = [];
                for (var i=0; i<$scope.upcomingAppointments.length; i++) {
                    $scope.upcomingAppointmentsUUIDs[i] = $scope.upcomingAppointments[i].uuid;
                    $scope.teleconsultationAppointments[i] = $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_TELECONSULTATION;
                    delete $scope.upcomingAppointments[i].uuid;
                    delete $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_TELECONSULTATION;
                    const [date, timeSlot] = convertUTCtoLocal($scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_START_DATE_KEY, $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_END_DATE_KEY);
                    delete $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_START_DATE_KEY;
                    delete $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_END_DATE_KEY;
                    $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_DATE_KEY = date;
                    $scope.upcomingAppointments[i].DASHBOARD_APPOINTMENTS_SLOT_KEY = timeSlot;
                }
                $scope.upcomingAppointmentsHeadings = _.keys($scope.upcomingAppointments[0]);
                $scope.pastAppointments = response[1].data;
                $scope.pastAppointmentsHeadings = _.keys($scope.pastAppointments[0]);
            });
            $scope.goToListView = function () {
                $window.open('/bahmni/appointments/#/home/manage/appointments/list');
            };
            $scope.openJitsiMeet = function (appointmentIndex) {
                var jitsiMeetingId = $scope.upcomingAppointmentsUUIDs[appointmentIndex];
                appService.setTeleConsultationVars(jitsiMeetingId, true);
            };
            $scope.showJoinTeleconsultationOption = function (appointmentIndex) {
                return $scope.upcomingAppointments[appointmentIndex].DASHBOARD_APPOINTMENTS_STATUS_KEY == 'Scheduled' &&
                        $scope.teleconsultationAppointments[appointmentIndex];
            }
  2. In the file /var/www/bahmni_config/openmrs/apps/customDisplayControl/views/patientAppointmentsDashboard.html, the the following header and its content:

          <th>
              Join Teleconsultation
          </th>
  3. <button style="background: #669998; color: white;" ng-if="showJoinTeleconsultationOption($index)" ng-click="openJitsiMeet($index)">
             Join Teleconsultation
     </button>

  4. To the file /var/www/bahmni_config/openmrs/apps/registration/app.json add the following:

    1. under config/attributes:

      "cluster",
       "email"

b. under fieldValidations add

 "email" : {"pattern" : "^(?=.{1,40}$)(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,4})$", "errorMessage" : "Should be a valid email address"},
                

How To Setup Email System

  1. Create a file called email-notification.properties in /opt/openmrs/

  2. Have the following contents in the file and update the contents to the email server properties.

smtp.from.email.address=
smtp.from.name=
smtp.host=
smtp.port=
smtp.ssl=
smtp.username=
smtp.password=

This link can help setup personal gmail account for email system.

https://support.google.com/a/answer/176600?hl=en#zippy=%2Cuse-the-gmail-smtp-server

3. If the send email functionality is turned off for tele-consulation, on click of Check and Save button it will display the below warning on the UI


set bahmni.appointment.teleConsultation.sendEmail true in OpenMRS global property to enable the send email functionality.

Fall back mechanism (To restore the system back to original state before tele-consultation feature was installed)

  1. Before proceeding with the installation steps take the backup of the following:

    1. appointments omod in /opt/openmrs/modules/ folder.

    2. bahmniapps directory under /var/www/ folder.

    3. bahmni_config directory under /var/www/ folder

  2. If you want to revert the feature, please restore the above backups of appointments omod, bahmniapps and bahmni_config directories and restart openmrs service.

Contact Us:

Praveena Dayanand<praveena.dayanand@thoughtworks.com>

Adhavan Kp<adhavan.kp@thoughtworks.com>

Ruchika Bhargava<ruchikab@thoughtworks.com>

Swati Gogia<swatigogia openers id>