Skip to end of metadata
Go to start of metadata

You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 9 Current »

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

  • Scheduling video tele-consultation appointments

  • Send appointment confirmation and link to patient’s email address.

  • Start tele-consulatation from patient dashboard.

Video Demo

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

Prerequisites

Assumptions

  • To rollback, manually deploy back the old artefacts.

  • This feature is completely supports rollback.

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. Set bahmni.appointment.teleConsultation.sendEmail true in OpenMRS global property to send email for tele-consultation

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>

  • No labels