Index: shared/scripts/configuration/config.py =================================================================== diff -u -rcfb90b69e9a9d77bbaed7c8a33ce177ca5dd29df -re074ab4641bebc4796543ddaeeb7afae5411e77d --- shared/scripts/configuration/config.py (.../config.py) (revision cfb90b69e9a9d77bbaed7c8a33ce177ca5dd29df) +++ shared/scripts/configuration/config.py (.../config.py) (revision e074ab4641bebc4796543ddaeeb7afae5411e77d) @@ -531,13 +531,13 @@ #main-treatment heparin HEPARIN_UNIT = "mL" HEPARIN_DELIVERY_TEXT = "HEPARIN DELIVERY" -HEPARIN_DELIVERY_OFF_TEXT = "Heparin Delivery Off" -HEPARIN_STOP_TEXT = "Heparin Delivery Stopped" +HEPARIN_DELIVERY_OFF_TEXT = "OFF" +HEPARIN_STOP_TEXT = "Delivery Stopped" HEPARIN_RESUME_DELIVERY_TEXT = "RESUME DELIVERY" -HEPARIN_BOLUS_ACTIVE_TEXT = "Heparin Bolus Active" +HEPARIN_BOLUS_ACTIVE_TEXT = "Bolus Active" HEPARIN_PAUSE_DELIVERY_TEXT = "PAUSE DELIVERY" HEPARIN_MAXIMUM_VOLUME_DELIVERED_TEXT = "Maximum Cumulative Heparin Volume Delivered" -HEPARIN_SYRINGE_EMPTY_TEXT = "Heparin Syringe Empty" +HEPARIN_SYRINGE_EMPTY_TEXT = "Syringe Empty" #Time_Duration CREATE_TREATMENT_PARAMETERS = ["Blood Flow Rate", "Dialysate Flow Rate", "Duration","Heparin Dispensing Rate", @@ -568,5 +568,3 @@ 8 : {"uf_maximum" : 390, "uf_minimum" : 675}, 9 : {"uf_maximum" : 290, "uf_minimum" : 125}, } - - Index: shared/scripts/configuration/utility.py =================================================================== diff -u -rb98a26754d9f171df91a444374c4eb9a6f15450f -re074ab4641bebc4796543ddaeeb7afae5411e77d --- shared/scripts/configuration/utility.py (.../utility.py) (revision b98a26754d9f171df91a444374c4eb9a6f15450f) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision e074ab4641bebc4796543ddaeeb7afae5411e77d) @@ -7,24 +7,44 @@ # # @file utils.py # -# @author (last) Joseph varghese +# @author (last) LTTS # @date (last) 15-Jan-2022 # ############################################################################ - + import names import sys import test import squish +import test + from configuration import config +from dialin.ui import utils +from datetime import datetime +from dialin.ui.hd_simulator import HDSimulator from builtins import int as pyInt - +from builtins import float as pyFloat + +hd = HDSimulator() + + +def color_verification(exp_val = "Red", act_val = "#c53b33"): + """ + Function to verify item color verification + Argument: + exp_val - Expected required value + act_val - Color displayed on UI + Return: + handle the application for log + """ + test.compare(config.COLOR_CODES[color_name],(act_val.color[name])) + def check_if_object_is_within_the_container(obj=None, container=None): """ check if an object is inside a container @param obj - child UI object @param container - container UI object - @return boolean true/false + @return boolean true and false """ container = squish.findObject(container) containerPos = container.mapToGlobal(squish.QPoint(0, 0)) @@ -42,12 +62,12 @@ return False -def scroll_to_zone(zone=None, screen_object=None): +def scroll_to_zone(zone=None, screen_object=None, direction = None): """ - scroll to the numeric if object is hidden - @param zone - UI object - @param screen_object - UI object (UI Home screen = waveforms + numerics) - @return boolean true/false + scroll to the UI, if object is hidden + @param zone - object to be find out. + @param screen_object - object of the screen. + @return boolean """ counter = 0 while counter <= 100: @@ -63,18 +83,223 @@ ScreenObj = squish.waitForObject(screen_object) screenHeight = pyInt(ScreenObj.height) screenWidth = pyInt(ScreenObj.width) - squish.mouseWheel(ScreenObj, screenWidth-1000, - screenHeight-10, 0, -50, squish.Qt.NoModifier) + squish.mouseWheel(ScreenObj, screenWidth//2, + screenHeight//2, 0, -50, squish.Qt.NoModifier) + raise LookupError("value object is not in view to the user after trying 100 times") + + +def pressure_pop_up_text_obj(text): + names.o_pop_up_pressure_text_obj["text"] = text + return names.o_pop_up_pressure_text_obj + +def pressure_text_obj(text): + names.o_pressure_text_obj["text"] = text + return names.o_pressure_text_obj + +def get_current_date_and_time(): + + date_format='%Y/%b/%d - %H:%M' + date = datetime.now() + return str(date.strftime(date_format)) + +def enter_keypad_value(entry): + """ + Method to enter user desired + value using keypad + @param entry: (str) User expected value + """ + test.startSection("Entering {}".format(entry)) + for value in entry: + value = pyInt(value) + key_val = squish.waitForObject(keypad_input(value)) + squish.mouseClick(key_val) + utils.waitForGUI(1) + test.endSection() + +def erase_entered_value(input_field): + """ + Method to erase the entered value + @param input_field - (obj) object of input field + """ + test.startSection("Erasing value") + input_field= squish.waitForObject(input_field) + entered_value = str(input_field.text) + for value in range(len(entered_value)+1): + utils.waitForGUI(1) + squish.mouseClick(squish.waitForObjectExists(names.o_back_space_key)) + + test.compare(str(input_field.text), "", "Input field should be empty") + test.endSection() + +def vitals_reading_obj(reading): + names.o_vitals_reading["text"] = reading + return names.o_vitals_reading + +def keypad_input(key_value): + names.o_keypad_input["text"] = key_value + return names.o_keypad_input + + +def scroll_to_zone(zone=None, screen_object=None, direction = None): + """ + scroll to the to the value if object is hidden + @param value - (obj) value object + @param container - (obj) Container of the value + @return boolean true and false + """ + counter = 0 + while counter <= 100: + try: + counter += 1 + squish.findObject(zone) + squish.snooze(0.5) + if check_if_object_is_within_the_container(obj=zone, container=screen_object): + return True + else: + raise RuntimeError + except RuntimeError: + ScreenObj = squish.findObject(screen_object) + screenHeight = pyInt(ScreenObj.height) + screenWidth = pyInt(ScreenObj.width) + if direction is None: + squish.mouseWheel(ScreenObj, (screenWidth-100), + 107, 0, -(screenHeight-460), squish.Qt.NoModifier) + else: + squish.mouseWheel(ScreenObj, (screenWidth-100), + -(screenHeight-700), 0, 200, squish.Qt.NoModifier) + raise LookupError("zone object is not in view to the user after " + \ "trying 100 times") - +def get_alarm_id_obj(id): + names.o_alarm_id["text"] = id + return names.o_alarm_id + +def get_alarm_msg_obj(msg): + names.o_alarm_message["text"] = msg + return names.o_alarm_message + def rejection_msg(text): names.rejection_msg["text"] = text return names.rejection_msg + +def set_slider_value(slider_value= None, slider_object= None, bidirectional= False, + slider_range = None): + """ + Method to drag slider to desired value + @param slider_value : value in which slider should be placed + @param slider_object : object of the slider + @param bidirectional : True, if slider have 2 handler + @return boolean (True - if user able to select slider. else, false) + """ + slider_value = pyFloat(slider_value) + actual_value = slider_value + if slider_range == "Max": + x_value = 600 + else: + x_value = 0 + counter = 0 + while True: + if slider_value < 0: + slider_value = -1 * slider_value + squish.mouseDrag(slider_object, x_value, 0, slider_value, 0, squish.Qt.NoModifier, + squish.Qt.LeftButton) + if counter == 50: + test.fail("User unable to fix slider value") + return False + if bidirectional is True: + if slider_range == "Low": + if actual_value == pyFloat(slider_object.minValue): + return True + if slider_value >= pyFloat(slider_object.minValue): + slider_value = slider_value - 30 + if slider_value <= pyFloat(slider_object.minValue): + slider_value = slider_value + 30 + if slider_range == "Max": + if actual_value == pyFloat(slider_object.maxValue): + return True + if slider_value >= pyFloat(slider_object.maxValue): + slider_value = slider_value + 30 + if slider_value <= pyFloat(slider_object.maxValue): + slider_value = slider_value - 30 + else: + if actual_value == pyFloat(slider_object.value): + return True + if slider_value >= pyFloat(slider_object.value): + slider_value = slider_value + 30 + if slider_value <= pyFloat(slider_object.value): + slider_value = slider_value - 30 + counter = counter + 1 + + +def slider_movement_for_negative_values(slider_value= None, slider_object= None, bidirectional= False, + slider_range = None): + """ + Method to drag slider for negative values value + @param slider_value : value in which slider should be placed + @param slider_object : object of the slider + @param bidirectional : True, if slider have 2 handler + @return boolean (True - if user able to select slider. else, false) + """ + slider_value = pyFloat(slider_value) + actual_value = slider_value + if slider_range == "Max": + x_value = 600 + else: + x_value = 0 + counter = 0 + while True: + squish.mouseDrag(slider_object, x_value, 0, slider_value, 0, squish.Qt.NoModifier, + squish.Qt.LeftButton) + if counter == 50: + test.fail("User unable to fix slider slider_value") + return False + if bidirectional is True: + if slider_range == "Low": + if actual_value == pyFloat(slider_object.minValue): + return True + if slider_value >= pyFloat(slider_object.minValue): + slider_value = slider_value + 30 + if slider_value <= pyFloat(slider_object.minValue): + slider_value = slider_value - 30 + if slider_range == "Max": + if actual_value == pyFloat(slider_object.maxValue): + return True + if slider_value >= pyFloat(slider_object.maxValue): + slider_value = slider_value + 30 + if slider_value <= pyFloat(slider_object.maxValue): + slider_value = slider_value - 30 + counter = counter + 1 + + +def scroll_to_value_on_pop_up(value=None, container=None): + """ + scroll to the to the value if object is hidden + @param value - (obj) value object + @param container - (obj) Container of the value + @return boolean true and false + """ + counter = 0 + while counter <= 100: + try: + counter += 1 + squish.findObject(value) + squish.snooze(0.5) + if check_if_object_is_within_the_container(obj=value, container=container): + return True + else: + raise RuntimeError + except RuntimeError: + ScreenObj = squish.waitForObject(container) + screenHeight = pyInt(ScreenObj.height) + screenWidth = pyInt(ScreenObj.width) + squish.mouseWheel(ScreenObj, screenWidth//2, + screenHeight//2, 0, -50, squish.Qt.NoModifier) + + raise LookupError("value object is not in view to the user after " + \ + "trying 100 times") - def expected_heparin_value(val): names.o_heparin_value["text"] = val return names.o_heparin_value Index: shared/scripts/names.py =================================================================== diff -u -ra8541b2c93c33c10d993dea8aa3d6b10a4c8e9b0 -re074ab4641bebc4796543ddaeeb7afae5411e77d --- shared/scripts/names.py (.../names.py) (revision a8541b2c93c33c10d993dea8aa3d6b10a4c8e9b0) +++ shared/scripts/names.py (.../names.py) (revision e074ab4641bebc4796543ddaeeb7afae5411e77d) @@ -298,25 +298,32 @@ o_treatment_duration = {"container": o_treatmentHome, "objectName": "TreatmentTime", "type": "TreatmentTime", "visible": True} #Heparin -cumulative_fluid = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Cumulative Delivered", "type": "Text", "unnamed": 1, "visible": True} -heparin_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "occurrence": 2, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} -o_QQuickView = {"type": "QQuickView"} +#o_heparin_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_heparin_value_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text":" Volume Delivered " ,"type": "Text", "unnamed": 1, "visible": True} +o_heparin_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome,"type": "Text", "unnamed": 1, "visible": True} +o_QQuickView = {"type": "QQuickView"} o_treatmentStart_TreatmentStart = {"container": o_QQuickView, "id": "_treatmentStart", "type": "TreatmentStart", "unnamed": 1, "visible": True} o_treatmentStart_HeparinSection = {"container": o_treatmentStart_TreatmentStart , "id": "_heparinTouchArea", "type": "TreatmentFluid" } + #Heparin_Messages_on_Button -state0_heparin_delivery_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "HEPARIN DELIVERY", "type": "Text", "unnamed": 1, "visible": True} -state2_heparin_state_paused_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "RESUME DELIVERY", "type": "Text", "unnamed": 1, "visible": True} -state4_heparin_state_dispensing_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "PAUSE DELIVERY", "type": "Text", "unnamed": 1, "visible": True} +o_state0_heparin_delivery_Off_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "OFF", "type": "Text", "unnamed": 1, "visible": True} +o_state1_heparin_delivery_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "HEPARIN DELIVERY", "type": "Text", "unnamed": 1, "visible": True} +o_state2_heparin_state_paused_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "RESUME DELIVERY", "type": "Text", "unnamed": 1, "visible": True} +o_state4_heparin_state_dispensing_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "PAUSE DELIVERY", "type": "Text", "unnamed": 1, "visible": True} + #Heparin_Statewise_Messages -state0_heparin_delivery_Off_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Heparin Delivery Off", "type": "Text", "unnamed": 1, "visible": True} -state_one_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Heparin Delivery Stopped", "type": "Text", "unnamed": 1, "visible": True} -state3_heparin_state_initial_bolus_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Heparin Bolus Active", "type": "Text", "unnamed": 1, "visible": True} -state5_heparin_state_completed_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Maximum Cumulative Heparin Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} -state6_heparin_state_empty_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Heparin Syringe Empty", "type": "Text", "unnamed": 1, "visible": True} +#o_state0_heparin_delivery_Off_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "OFF", "type": "Text", "unnamed": 1, "visible": True} +o_state_one_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Delivery Stopped", "type": "Text", "unnamed": 1, "visible": True} +o_state2_resume_delivery_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Delivery Paused", "type": "Text", "unnamed": 1, "visible": True} +o_state3_heparin_state_initial_bolus_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Bolus Active", "type": "Text", "unnamed": 1, "visible": True} +o_state4_heparin_state_dispensing_active_text ={"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Dispensing Active", "type": "Text", "unnamed": 1, "visible": True} +o_state5_heparin_state_completed_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Maximum Cumulative Heparin Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_state6_heparin_state_empty_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Syringe Empty", "type": "Text", "unnamed": 1, "visible": True} #Heparin Rejection Message -rejection_msg = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "type": "Text", "unnamed": 1, "visible": True} +o_rejection_msg = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "type": "Text", "unnamed": 1, "visible": True} + #post screen o_busy_indicator = {"container": o_initialModeScreen_ScreenItem, "id": "_busyIndicator", "source": "qrc:/images/iBusy", "type": "Image", "unnamed": 1, "visible": True} o_done_indicator = {"container": o_initialModeScreen_ScreenItem, "id": "_checkIndicator", "source": "qrc:/images/iBusyDone", "type": "Image", "unnamed": 1, "visible": True}