v0.92 또는 v0.93에서 Bahmni 원격진료 기능 설정
기능 소개
Bahmni 원격진료 기능 릴리스는 기존 Bahmni 0.92 버전 시스템에 배포하거나 설치할 수 있는 산출물 모음입니다. 이 산출물을 설치하면 Bahmni를 사용하는 의료진이 화상 원격진료 예약을 잡을 수 있습니다.
기능 목록
- 화상 원격진료 예약 잡기

- 환자의 이메일 주소로 예약 확인 및 링크 보내기

환자 대시보드에서 원격진료를 시작합니다.

데모 영상
Bahmni 0.92에서 원격진료 기능 설정하기 — 사전 요구 사항
- 지원되는 Bahmni 버전은 0.92입니다. 최신 버전으로 업그레이드하는 방법은 ‘CentOS에 Bahmni 설치’를 참고하십시오.
전제 조건
- 롤백하려면 이전 산출물을 수동으로 다시 배포합니다. 이 기능은 완전한 롤백을 지원합니다.
원격진료 기능 배포 단계
- ‘CentOS에 Bahmni 설치’를 따라 Bahmni 0.92 버전을 설치합니다. appointment omod를 다운로드하여 /opt/openmrs/modules/ 디렉터리에 넣습니다. bahmniapps.zip을 다운로드하고 압축을 푼 뒤, 기존 bahmniapps를 교체하도록 /var/www/에 넣습니다.
#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#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다음 단계: bahmni_config에서 일부 원격진료 설정을 표시하려면 다음 작업을 수동으로 수행해야 합니다.
- /var/www/bahmni_config/openmrs/apps/customDisplayControl/js/customControl.js 파일의 patientAppointmentsDashboard 지시문 아래에서 다음 내용을 교체합니다. /var/www/bahmni_config/openmrs/apps/customDisplayControl/views/patientAppointmentsDashboard.html 파일에서는 다음 헤더와 그 내용을 교체합니다:
$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'); };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]; } - Join Teleconsultation
<th> Join Teleconsultation </th> - ]]>
<button style="background: #669998; color: white;" ng-if="showJoinTeleconsultationOption($index)" ng-click="openJitsiMeet($index)"> Join Teleconsultation </button>
- Join Teleconsultation
- ]]>
/var/www/bahmni_config/openmrs/apps/registration/app.json 파일을 수정하여 다음 내용을 추가합니다.
- config/attributes 아래:
"cluster", "email"
- fieldValidations 아래에 추가합니다.
()\[\]\\.,;:\s@"]+(\.[^<>()\[\]\\.,;:\s@"]+)*)|(".+"))@(([a-zA-Z\-0-9]+\.)+[a-zA-Z]{2,4})$", "errorMessage" : "Should be a valid email address"}, ]]>이메일 시스템 설정 방법
"email" : {"pattern" : "^(?=.{1,40}$)(([^<>()\\[\\]\\\\.,;:\\s@\"]+(\\.[^<>()\\[\\]\\\\.,;:\\s@\"]+)*)|(\".+\"))@(([a-zA-Z\\-0-9]+\\.)+[a-zA-Z]{2,4})$", "errorMessage" : "Should be a valid email address"},
- /opt/openmrs/에 email-notification.properties라는 파일을 만듭니다. 파일에 다음 내용을 넣고 이메일 서버 속성에 맞게 수정합니다.
다음 링크는 개인 Gmail 계정을 이메일 시스템용으로 설정하는 데 도움이 됩니다.
smtp.from.email.address=
smtp.from.name=
smtp.host=
smtp.port=
smtp.ssl=
smtp.username=
smtp.password=3. 원격진료의 이메일 전송 기능이 꺼져 있으면 Check and Save 버튼을 클릭할 때 UI에 다음 경고가 표시됩니다.

이메일 전송 기능을 활성화하려면 OpenMRS 전역 속성에서 bahmni.appointment.teleConsultation.sendEmail을 true로 설정합니다.
복구 방법(원격진료 기능 설치 전의 원래 상태로 시스템 복원)
- 설치 단계를 진행하기 전에 다음 항목을 백업하십시오: /opt/openmrs/modules/ 폴더의 appointments omod, /var/www/ 폴더 아래의 bahmniapps 디렉터리, /var/www/ 폴더 아래의 bahmni_config 디렉터리.
기능을 되돌리려면 위에서 백업한 appointments omod, bahmniapps 및 bahmni_config 디렉터리를 복원하고 openmrs 서비스를 다시 시작하십시오.
원격진료 서버 구성
원격진료 링크의 서버 URL 패턴을 구성할 수 있습니다.
/Administration => Advance Settings로 이동하여 속성을 편집합니다.
위의 자리표시자 {0}은 원격진료 링크의 고유 ID로 대체됩니다.
문의:
Praveena Dayanand<praveena.dayanand@thoughtworks.com>
Adhavan Kp<adhavan.kp@thoughtworks.com>
Ruchika Bhargava<ruchikab@thoughtworks.com>
Swati Gogia<swatigogia openers id>
Bahmni Wiki · CC BY-SA 4.0