From da222a8674b166db1d305d176c8a9271168abfe0 Mon Sep 17 00:00:00 2001 From: Arjun G <91885483+Arjun-Go@users.noreply.github.com> Date: Fri, 4 Aug 2023 17:49:00 +0530 Subject: [PATCH] BAH-3119 | Add validations and perform save in drug chart modal (#660) * add. enable24hr timer toggle * add. warnings in drug chart modal * add. success/warning notifications for drug chart modal * add. success/warning notifications for drug chart modal * add. patientId for save medication --- micro-frontends/src/ipd/DrugChartModal.jsx | 10 ++-- .../src/ipd/DrugChartModalNotification.jsx | 27 ++++++++++ micro-frontends/src/ipd/index.js | 52 +++++++++++++++++-- .../directives/treatmentTableRow.js | 17 ++++++ .../views/treatmentTableRow.html | 15 ++++-- ui/app/styles/clinical/_patientDashboard.scss | 12 ++++- 6 files changed, 122 insertions(+), 11 deletions(-) create mode 100644 micro-frontends/src/ipd/DrugChartModalNotification.jsx diff --git a/micro-frontends/src/ipd/DrugChartModal.jsx b/micro-frontends/src/ipd/DrugChartModal.jsx index 8c9b411cba..0e9baf9176 100644 --- a/micro-frontends/src/ipd/DrugChartModal.jsx +++ b/micro-frontends/src/ipd/DrugChartModal.jsx @@ -6,7 +6,7 @@ export function DrugChartModal(props) { return ( <> - + Loading...

}> import("@openmrs-mf/ipd/DrugChartModalNotification")); + + return ( + <> + Loading...

}> + +
+ + ); +} + +// Without propTypes, react2angular won't render the component +DrugChartModalNotification.propTypes = { + hostData: PropTypes.shape({ + notificationKind: PropTypes.string, + }).isRequired, + hostApi: PropTypes.shape({ + onClose: PropTypes.func, + }).isRequired, +}; diff --git a/micro-frontends/src/ipd/index.js b/micro-frontends/src/ipd/index.js index e655e5dd7a..1df81f880a 100644 --- a/micro-frontends/src/ipd/index.js +++ b/micro-frontends/src/ipd/index.js @@ -4,6 +4,7 @@ import { react2angular } from "react2angular"; import { IpdDashboard } from "./IpdDashboard"; import { DrugChartModal } from "./DrugChartModal"; +import { DrugChartModalNotification } from "./DrugChartModalNotification"; angular.module("bahmni.mfe.ipd", [ "ui.router", @@ -72,13 +73,21 @@ function ipdDrugChartModalController($rootScope, $scope) { var vm = this; $scope.hostData = { drugOrder: vm.drugOrder, + patientId: vm.patientId, scheduleFrequencies: vm.scheduleFrequencies, startTimeFrequencies: vm.startTimeFrequencies, + enable24HourTimers: vm.enable24HourTimers, }; $scope.hostApi = { - onModalClose: function(event) { + onModalClose: function () { vm.closeDrugChart(); }, + onModalSave: function () { + vm.showSuccessNotification(); + }, + onModalCancel: function () { + vm.showWarningNotification(); + }, }; } @@ -88,11 +97,48 @@ angular.module("bahmni.mfe.ipd").component("mfeIpdDrugChartModal", { controller: ipdDrugChartModalController, bindings: { drugOrder: "=", + patientId: "=", scheduleFrequencies: "=", startTimeFrequencies: "=", - closeDrugChart: "&" + enable24HourTimers: "=", + closeDrugChart: "&", + showWarningNotification: "&", + showSuccessNotification: "&", }, template: '', }); -/** ================= End of component 2 ========================== */ \ No newline at end of file +/** ================= End of component 2 ========================== */ + +/** MFE component 3: DrugChartModalWarnings + * ================================================= */ + +angular + .module("bahmni.mfe.ipd") + .component("mfeIpdDrugChartModalNotificationRemote", react2angular(DrugChartModalNotification)); + +function ipdDrugChartModalNotificationController($rootScope, $scope) { + var vm = this; + $scope.hostData = { + notificationKind: vm.notificationKind, + }; + $scope.hostApi = { + onClose() { + vm.closeWarnings(); + } + } +} + +ipdDrugChartModalNotificationController.$inject = ["$rootScope", "$scope"]; + +angular.module("bahmni.mfe.ipd").component("mfeIpdDrugChartModalNotification", { + controller: ipdDrugChartModalNotificationController, + bindings: { + notificationKind: "=", + closeWarnings: "&", + }, + template: + '', +}); + +/** ================= End of component 3 ========================== */ diff --git a/ui/app/clinical/displaycontrols/treatmentData/directives/treatmentTableRow.js b/ui/app/clinical/displaycontrols/treatmentData/directives/treatmentTableRow.js index 77195ccc31..68dc5dec53 100644 --- a/ui/app/clinical/displaycontrols/treatmentData/directives/treatmentTableRow.js +++ b/ui/app/clinical/displaycontrols/treatmentData/directives/treatmentTableRow.js @@ -6,6 +6,7 @@ angular.module('bahmni.clinical') $scope.selectedDrugOrder = {}; $scope.openModal = false; $scope.enableIPDFeature = appService.getAppDescriptor().getConfigValue("enableIPDFeature"); + $scope.enable24HourTimers = appService.getAppDescriptor().getConfigValue("enable24HourTimers"); if ($scope.enableIPDFeature === true) { $scope.drugChartModalScheduleFrequencies = appService.getAppDescriptor().getConfigValue("drugChartScheduleFrequencies"); $scope.drugChartModalStartTimeFrequencies = appService.getAppDescriptor().getConfigValue("drugChartStartTimeFrequencies"); @@ -25,6 +26,22 @@ angular.module('bahmni.clinical') $scope.openModal = false; $scope.$apply(); }; + $scope.showWarningNotification = function () { + $scope.showModalWarningMessage = true; + $scope.openModal = false; + $scope.kind = "warning"; + $scope.$apply(); + }; + $scope.showSuccessNotification = function () { + $scope.showModalWarningMessage = true; + $scope.openModal = false; + $scope.kind = "success"; + $scope.$apply(); + }; + $scope.closeWarnings = function () { + $scope.showModalWarningMessage = false; + $scope.$apply(); + }; }; return { diff --git a/ui/app/clinical/displaycontrols/treatmentData/views/treatmentTableRow.html b/ui/app/clinical/displaycontrols/treatmentData/views/treatmentTableRow.html index 9017895455..32b4e511e8 100644 --- a/ui/app/clinical/displaycontrols/treatmentData/views/treatmentTableRow.html +++ b/ui/app/clinical/displaycontrols/treatmentData/views/treatmentTableRow.html @@ -22,12 +22,21 @@
-
+ + @@ -38,7 +47,7 @@ - +
{{::drugOrder.additionalInstructions}}