Index: shared/scripts/configuration/config.py =================================================================== diff -u -r8242123c781d022e2c7d9e1d36436ddfde01ffe4 -r8022d2716a79cbb147fa8976606720c566a7b864 --- shared/scripts/configuration/config.py (.../config.py) (revision 8242123c781d022e2c7d9e1d36436ddfde01ffe4) +++ shared/scripts/configuration/config.py (.../config.py) (revision 8022d2716a79cbb147fa8976606720c566a7b864) @@ -8,7 +8,7 @@ # # @file utils.py # -# @author (last) Joseph varghese +# @author (last) LTTS # @date (last) 18-Jan-2022 # ############################################################################ @@ -19,20 +19,511 @@ COMMON_PATH = os.environ['HOME']+"/Projects" - COLOR_CODES = {"Aqua": "#81ffff", "Blue": "#017dea", "Blue 2": "#1090d5", "Green": "#29fd2d", "Grey": "#d3d3d3", "Lavender": "#db98f5", "Light Blue": "#acd7f1", "Light Teal": "#29f1da","Lime": "#b7fc36", "Magenta":"#fd28fd", "Orange": "#f2721c", "Peach":"#f1979a", "Red": "#c53b33", "Rose":"#fc178d", "Slate blue":"#7f7ffa", "Violet": "#6435c9", "White": "#ffffff", "Yellow": "#fcfc4d"} + +ALARM_ID_AND_MESSAGES = { + 1: "Stuck button POST failure.\nStop or Off button detected to be pressed for at least 1 second during test shortly after power up.", + 2: "HD FPGA POST failure.", + 3: "DG FPGA POST failure.", + 4: "HD Watchdog POST failure.", + 5: "DG Watchdog POST failure.", + 6: "UI communication POST failure.\nUI failed to communicate within a reasonable time after power up.", + 7: "Real-time clock configuration error.", + 8: "HD accelerometer failed POST.", + 9: "DG accelerometer failed POST.", + 10: "RTC or MCU timer inaccurate.", + 11: "DG heaters failed POST.", + 12: "HD firmware image integrity POST test failed." , + 13: "DG firmware image integrity POST test failed.", + 14: "HD blood flow invalid calibration.", + 15: "HD dialysate flow invalid calibration.", + 16: "HD alarm audio failed POST.", + 17: "HD UI POST failed.", + 18: "DG load cells invalid calibration record.", + 19: "DG flow sensors invalid calibration record.", + 20: "DG conductivity sensors invalid calibration record.", + 21: "DG drain line volume invalid calibration record.", + 22: "DG reservoirs invalid calibration record.", + 23: "DG acid concentrate calibration record.", + 24: "DG bicarb concentrate calibration record.", + 25: "DG accelerometer invalid calibration record.", + 26: "HD accelerometer invalid calibration record.", + 27: "HD blood flow invalid calibration record.", + 28: "HD dialyzer flow invalid calibration record." , + 29: "HD heparin force sensor invalid calibration record.", + 30: "HD Software fault.\nSoftware found itself in an unexpected state.", + 31: "Blood pump failed motor controller current check.\nToo high when pump should be off or out of range when pump should be running.", + 32: "Blood pump failed motor off check.\nMeasured speed while commanded off.", + 33: "Blood pump failed motor direction check.\nMeasured vs commanded.", + 34: "Blood pump failed rotor speed check.\nMismatch with rotor and motor speeds.", + 35: "Dialysis inlet pump failed motor controller current check.\nToo high when pump should be off or out of range when pump should be running.", + 36: "Dialysis inlet pump failed motor off check.\nMeasured speed while commanded off.", + 37: "Dialysis inlet pump failed motor direction check.\nMeasured vs commanded.", + 38: "Dialysis inlet pump failed rotor speed check.\nMismatch with rotor and motor speeds.", + 39: "Dialysis outlet pump failed motor controller current check.\nToo high when pump should be off or out of range when pump should be running.", + 40: "Dialysis outlet pump failed motor off check.\nMeasured speed while commanded off.", + 41: "Dialysis outlet pump failed motor direction check.\nMeasured vs commanded.", + 42: "Dialysis outlet pump failed rotor speed check.\nMismatch with rotor and motor speeds.", + 43: "Watchdog expired error.\nWatchdog was not \"pet\" within the appropriate time.", + 44: "User interface communication timeout.", + 45: "Too many bad CRCs detected on received system messages.", + 46: "System message that required acknowledgment was not acknowledged.", + 47: "Ultrafiltration rate is too high error during treatment.", + 48: "Ultrafiltration volume accuracy error during treatment.", + 49: "HD FPGA communication down for too long." , + 50: "FPGA not accepting commanded valve states.", + 51: "Blood pump failed motor speed check.\nMeasured vs commanded.", + 52: "Dialysate inlet pump failed motor speed check.\nMeasured vs commanded." , + 53: "Dialysate outlet pump failed motor speed check.\nMeasured vs commanded.", + 54: "HD critical data integrity check failed.", + 55: "DG critical data integrity check failed.", + 56: "HD accelerometer error (no readings or FPGA reports error).", + 57: "DG accelerometer error (no readings or FPGA reports error).", + 58: "HD valve homing failed.", + 59: "HD valve transition time out.", + 60: "HD valve not functional.", + 61: "HD valve current out of range.", + 62: "HD valve position out of target.", + 63: "FPGA reports failure reading arterial pressure sensor.", + 64: "FPGA reports failure reading venous pressure sensor.", + 65: "HD requests DG command with invalid parameter fault.", + 66: "This alarm ID is available for use.", + 67: "HD blood pump occlusion self-test failure alarm.", + 68: "HD active reservoir recirculation out of range.", + 69: "This alarm ID is available for use.", + 70: "HD arterial pressure self-test failure alarm.", + 71: "HD venous pressure self-test failure alarm.", + 72: "HD blood flow meter status check self-test failure alarm.", + 73: "HD dialysate flow meter status check self-test failure alarm.", + 74: "HD blood leak detector self-test failure alarm.", + 75: "HD syringe pump self-test failure alarm.", + 76: "HD monitored voltage is out of range.", + 77: "DG monitored voltage is out of range.", + 78: "HD syringe pump direction (from encoder) error.", + 79: "HD syringe pump direction (from controller) error.", + 80: "HD syringe pump fault reported by FPGA.", + 81: "HD syringe pump over travel error.", + 82: "HD syringe pump DAC write failure.", + 83: "HD syringe pump is running while the BP is off.", + 84: "HD venous pressure sensor not being read." , + 85: "HD venous pressure sensor temperature out of range error.", + 86: "HD BP occlusion sensor not being read.", + 87: "This alarm ID is available for use.", + 88: "This alarm ID is available for use." , + 89: "HD BP occlusion sensor error.", + 90: "This alarm ID is available for use.", + 91: "HD No dialysate flow data receive in the last 3 seconds.", + 92: "This alarm ID is available for use." , + 93: "This alarm ID is available for use.", + 94: "This alarm ID is available for use." , + 95: "This alarm ID is available for use." , + 96: "This alarm ID is available for use.", + 97: "This alarm ID is available for use.", + 98: "HD battery communication fault." , + 99: "HD syringe pump stall alarm.", + 100: "HD no cartridge self-test timeout." , + 101: "HD dry self-test timeout.", + 102: "Real-time clock communication error.", + 103: "HD non-volatile calibration group invalid record CRC.", + 104: "Air trap level sensors reporting illegal combination of air/fluid.", + 105: "DG non-volatile system group invalid record CRC.", + 106: "This alarm ID is available for use.", + 107: "HD reports DG restarted fault.", + 108: "HD syringe pump ADC error.", + 109: "HD syringe pump volume check error.", + 110: "HD syringe pump speed check error.", + 111: "HD syringe pump not stopped in off state error.", + 112: "HD blood leak detector fault.", + 113: "HD arterial air bubble detector self-test failure.", + 114: "HD venous air bubble detector self-test failure.", + 115: "DG temperature sensor out of range.", + 116: "DG temperature sensor ADC out of range.", + 117: "DG primary heater internal temperature out of range." , + 118: "DG primary heater cold junction temperature out of range." , + 119: "DG trimmer heater internal temperature out of range." , + 120: "DG trimmer heater cold junction temperature out of range." , + 121: "DG main primary heater voltage out of range.", + 122: "DG small primary heater voltage out of range.", + 123: "DG trimmer heater voltage out of range.", + 124: "HD end of treatment alarm (high priority - user still not acting to end treatment)." , + 125: "Blood sitting too long after treatment stopped by user alarm (>5 min)." , + 126: "HD blood leak detected alarm.", + 127: "Venous pressure too low during treatment.", + 128: "HD venous air bubble detected alarm.", + 129: "HD venous air bubble detected rinseback alarm." , + 130: "Venous pressure too high during treatment." , + 131: "Arterial pressure too low during treatment." , + 132: "Arterial pressure too high during treatment.", + 133: "DG fluid leak detected alarm.", + 134: "HD fluid leak detected alarm." , + 135: "HD experienced large acceleration." , + 136: "DG experienced large acceleration.", + 137: "HD tilt exceeds maximum." , + 138: "DG tilt exceeds maximum.", + 139: "HD AC power lost alarm." , + 140: "Dialysate generator communication timeout." , + 141: "Air trap fill timeout during treatment.", + 142: "Blood pump occlusion detected.", + 143: "This alarm ID is available for use.", + 144: "This alarm ID is available for use.", + 145: "Concentrate conductivity after adding acid out of range alarm." , + 146: "Dialysate conductivity out of range." , + 147: "DG dialysate generation conductivity fault alarm.", + 148: "Inlet water temperature too high." , + 149: "Inlet water temperature too low." , + 150: "Inlet water conductivity too high." , + 151: "Inlet water conductivity too low." , + 152: "Inlet water pressure too low." , + 153: "HD prime completed high priority alarm.", + 154: "EEPROM operations (read, write, erase) failure.", + 155: "This alarm ID is available for use.", + 156: "HW usage data (treatment time in HD and total consumed water in DG) failure.", + 157: "This alarm ID is available for use." , + 158: "Blood pump failed flow vs motor speed check.", + 159: "Dialysate inlet pump failed flow vs motor speed check.", + 160: "Blood pump rotor speed too high.", + 161: "Blood flow sensor signal strength too low.", + 162: "Dialysate flow sensor signal strength too low.", + 163: "HD sees primary load cell for reservoir 1 change too much too fast.", + 164: "HD sees primary load cell for reservoir 2 change too much too fast.", + 165: "HD in treatment rinseback operation timeout.", + 166: "HD in treatment re-circ sub-mode for too long." , + 167: "HD cartridge door opened alarm." , + 168: "HD active reservoir depletion timeout.", + 169: "Dialysate flow rate out of range.", + 170: "HD syringe empty alarm." , + 171: "HD syringe pump occlusion alarm.", + 172: "HD syringe pump not enough Heparin alarm.", + 173: "HD arterial air bubble detected alarm." , + 174: "HD arterial air bubble detected rinseback alarm.", + 175: "HD pump direction status error.", + 176: "HD active reservoir is full during treatment and DG not ready to switch reservoirs.", + 177: "DG software fault.\nSoftware found itself in an unexpected state." , + 178: "HD communication timeout.", + 179: "DG FPGA communication down for too long." , + 180: "DG load cell ADC error." , + 181: "DG load cells weight out of range for tare.", + 182: "DG load cells invalid calibration.", + 183: "DG invalid load cell value.", + 184: "Inlet or Outlet UV reactor not healthy.", + 185: "DG fan RPM out of range.", + 186: "DG concentrate pump fault." , + 187: "DG concentrate pump CP1 speed control error.", + 188: "DG concentrate pump CP2 speed control error." , + 189: "DG drain pump RPM out of range.", + 190: "DG drain pump off fault.", + 191: "DG flow rate out of upper range." , + 192: "DG flow rate out of lower range." , + 193: "RO pump flow rate out of range.", + 194: "DG RO pump duty cycle out of range.", + 195: "DG RO pump pressure out of range.", + 196: "DG temperature sensor error flag fault.", + 197: "DG temperature sensors ADC fault." , + 198: "DG heaters cold junction temperature out of range.", + 199: "DG heaters fault." , + 200: "DG thermistors/sensors temperature out of range.", + 201: "Inlet water quality is bad (temperature, conductivity, pressure).", + 202: "Inlet water pressure fault." , + 203: "Pressure sensor fault.", + 204: "RO rejection ratio out of range." , + 205: "Conductivity sensor fault.", + 206: "DG dialysate fill runs out of time." , + 207: "DG flow meter check failure alarm.", + 208: "DG primary heater on with no flow time out.", + 209: "DG drain circulation line timeout.", + 210: "HD battery pack detected an error." , + 211: "Blood sitting too long warning (>4 min).", + 212: "HD end of treatment alarm (user not acting to end treatment).", + 213: "HD prime completed medium priority alarm.", + 214: "HD Saline bolus volume check failure.", + 215: "HD rinseback volume check failure." , + 216: "HD end treatment sub-mode timeout alarm.", + 217: "HD blood prime volume check failure.", + 218: "HD syringe detected alarm.", + 219: "HD syringe pump syringe removed alarm." , + 220: "HD battery pack SOC is too low.", + 221: "HD Saline bag is empty.", + 222: "HD dialysate temperature too high alarm.", + 223: "HD dialysate temperature too low alarm.", + 224: "Treatment stopped by user action - pressed stop button.", + 225: "HD end of treatment warning." , + 226: "HD prime completed low priority alarm.", + 227: "HD prime out of time alarm.", + 228: "HD time out on prime sub-mode purge air state.", + 229: "HD prime dialysate dialyzer time out alarm.", + 230: "HD prime dialysate bypass time out alarm." , + 231: "HD pre-treatment mode dry self-tests failure." , + 232: "HD pre-treatment mode wet self-tests failure." , + 233: "RTC battery low." , + 234: "RTC (i.e read time) or RAM operations failure (read or write)." , + 235: "HD in treatment stopped sub-mode after rinseback completed (no escalation).", + 236: "HD needs new cartridge to be installed." , + 237: "HD prime saline dialyzer time out alarm." , + 238: "HD no cartridge loaded or installed improperly alarm." , + 239: "HD fail to remove cartridge alarm." , + 240: "Bicarb conductivity out of range during bicarb pump check alarm." , + 241: "DG reservoir drain time out.", + 242: "DG reservoir fill time out.", + 243: "DG reservoir leak time out.", + 244: "DG temperature sensors difference out of range.", + 245: "DG heat disinfect target temperature time out (could not reach to temperature).", + 246: "DG heat disinfect inlet pressure and temperature sensors out of range.", + 247: "DG heat disinfect inlet conductivity and temperature out of range.", + 248: "DG chemical disinfect could not reach to target temperature." , + 249: "DG chemical disinfect inlet pressure and temperature sensors out of range." , + 250: "DG chemical disinfect inlet conductivity and temperature out of range." , + 251: "HD invalid system record." , + 252: "HD invalid service record.", + 253: "DG invalid system record." , + 254: "DG invalid service record." , + 255: "HD and UI software builds are not compatible.", + 256: "HD and DG software builds are not compatible.", + 257: "DG FPGA power out timeout.", + 258: "HD FPGA power out timeout." , + 259: "HD temperatures out of range." , + 260: "UI POST Application Integrity (Sha256Sum) failure.", + 261: "UI POST CANBus failure.", + 262: "UI POST Display failure.", + 263: "UI POST Touch failure." , + 264: "UI POST SD-Card failure.", + 265: "UI POST RTC failure." , + 266: "UI POST WiFi failure.", + 267: "UI POST Bluetooth failure.", + 268: "UI POST Ethernet failure.", + 269: "UI POST Sound failure." , + 270: "HD POST Safety Shutdown failure.", + 271: "DG POST Safety Shutdown failure." , + 272: "HD Fan RPM out of range." , + 273: "HD measured blood pump flow rate is out of range." , + 274: "HD measured dialysate inlet pump flow rate is out of range.", + 275: "HD arterial pressure sensor is reading out of range." , + 276: "HD venous pressure sensor is reading out of range.", + 277: "HD BP occlusion sensor is reading out of range." , + 278: "HD active reservoir weight out of range." , + 279: "DG dialysate drain time out." , + 280: "HD arterial pressure sensor read timeout error." , + 281: "Acid concentration bottle low volume alarm." , + 282: "Bicarbonate concentration bottle low volume alarm." , + 283: "DG load cells weight out of range." , + 284: "DG load cells primary/back up drift out of range.", + 285: "HD treatment recirculate timeout warning." , + 286: "HD treatment rinseback complete timeout warning.", + 287: "HD processor clock speed checks against FPGA clock failure.", + 288: "DG trimmer heater on with flow timeout.", + 289: "Total number of alarms.", + 290: "ALARM_ID_UNDEFINED [{}]", + } + +ALARM_PRIORITIES = {1: "LOW", 2: "MEDIUM", 3: "HIGH"} +NUM_OF_ALARM_PRIORITIES = 4 # Total number of alarm priorities +ACCEPTED = True +REJECTED = False +ALARM_LIST_TITLE = "Alarm list" +UNDEFINED_ALARM_ID_MSG = "ALARM_ID_UNDEFINED" +ALARM_TITLE = "Alarm" + + +ALARM_ID_NO_ALARM = 0 +ALARM_ID_OUT_OF_RANGE = 290 + +ALARM_PRIORITY_OPTIONS = { + 0 : 'ALARM_PRIORITY_NONE' , + 1 : 'ALARM_PRIORITY_LOW' , + 2 : 'ALARM_PRIORITY_MEDIUM', + 3 : 'ALARM_PRIORITY_HIGH', +} + +# alarm colors +ALARMS_COLORS_HEADER = { + "ALARM_PRIORITY_NONE" : "#438feb", + "ALARM_PRIORITY_LOW" : "#db8f00", + "ALARM_PRIORITY_MEDIUM" : "#db8f00", + "ALARM_PRIORITY_HIGH" : "#831913" +} + +ALARMS_COLORS_BODY = { + "ALARM_PRIORITY_NONE" : "#254670", + "ALARM_PRIORITY_LOW" : "#f5a623", + "ALARM_PRIORITY_MEDIUM" : "#f5a623", + "ALARM_PRIORITY_HIGH" : "#c53b33" +} + +ALARM_MUTE_FLAG = 0B0000001000000000 +ALARM_UNMUTE_FLAG = 0B0000000000000000 + +ALARM_BUTTONS_OK = 0B0000000010111000 + +ALARM_BUTTONS_RESUME = 0B0000000000110000 +ALARM_BUTTONS_RESUME_RINSEBACK = 0B0000000000100000 +ALARM_BUTTONS_RESUME_END = 0B0000000000010000 + +ALARM_BUTTONS_RINSEBACK = 0B0000000000101000 +ALARM_BUTTONS_RINSEBACK_RESUME = ALARM_BUTTONS_RESUME_RINSEBACK +ALARM_BUTTONS_RINSEBACK_END = 0B0000000000001000 + +ALARM_BUTTONS_END = 0B0000000000011000 +ALARM_BUTTONS_END_RESUME = ALARM_BUTTONS_RESUME_END +ALARM_BUTTONS_END_RINSEBACK = ALARM_BUTTONS_RINSEBACK_END + +ALARM_BUTTONS_RESUME_RINSEBACK_END = 0B0000000000000000 +ALARM_BUTTONS_RINSEBACK_RESUME_END = ALARM_BUTTONS_RESUME_RINSEBACK_END +ALARM_BUTTONS_END_RESUME_RINSEBACK = ALARM_BUTTONS_RESUME_RINSEBACK_END + + #standby mode GOODMORNING_START_TIME_SEC = 0 GOODEVENING_START_TIME_SEC = 43200 BLOOD_PRIMING_TEXT = "Blood Priming" -SALINE_UNIT = "mL" +LIQUID_UNIT = "mL" BLOOD_PRIMING_DEFAULT_VALUE = "0 mL" +SALINE_BOLUS_CUMULATIVE = 300 + +UF_MINIMUM_VALUE = 0 +UF_MAXIMUM_VALUE = 600 +PAUSED_TEXT = "Ultrafiltration Paused" +RESUME_TEXT = "RESUME ULTRAFILTRATION" +EDIT_TEXT = "EDIT ULTRAFILTRATION VOLUME" +TITLE_TEXT = "ULTRAFILTRATION VOLUME (L)" + + +# dictionary of rejection reason from application source code. +# message location -> denali-> Headers-> common-> MsgDefs.h +REJECTION_REASON = { + 0 : "REQUEST_REJECT_REASON_NONE" , # Used when there is no rejection + 1 : "REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE" , # "REQuest is not allowed in the current operating mode + 2 : "REQUEST_REJECT_REASON_TIMEOUT_WAITING_FOR_USER_CONFIRM" , # Validated "REQuest was not confirmed by user in reasonable time + 3 : "REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE" , # "REQuest is not allowed if not in treatment mode + 4 : "REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE" , # "REQuest is not allowed in current treatment state + 5 : "REQUEST_REJECT_REASON_TREATMENT_TOO_CLOSE_TO_FINISHED" , # "REQuest is not allowed so near end of treatment + 6 : "REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE" , # Treatment duration is out of range + 7 : "REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT" , # Treatment time change is less than currently elapsed treatment time + 8 : "REQUEST_REJECT_REASON_BLOOD_FLOW_OUT_OF_RANGE" , # Blood flow is out of range + 9 : "REQUEST_REJECT_REASON_DIAL_FLOW_OUT_OF_RANGE" , # Dialysate flow is out of range + 10 : "REQUEST_REJECT_REASON_DIAL_VOLUME_OUT_OF_RANGE" , # Dialysate flow rate or treatment duration causes dialysate volume to exceed limit + 11 : "REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE" , # Ultrafiltration volume is out of range + 12 : "REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE" , # Ultrafiltration rate is out of range + 13 : "REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM" , # Treatment time change is less than minimum treatment time + 14 : "REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS" , # Ultrafiltration is not currently in progress + 15 : "REQUEST_REJECT_REASON_UF_NOT_PAUSED" , # Ultrafiltration is not currently paused + 16 : "REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS" , # A saline bolus is in progress + 17 : "REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE" , # A treatment parameter is out of range + 18 : "REQUEST_REJECT_REASON_HEPARIN_PRESTOP_EXCEEDS_DURATION" , # The Heparin pre-stop setting is greater than the treatment duration + 19 : "REQUEST_REJECT_REASON_ARTERIAL_PRESSURE_LOW_VS_HIGH" , # Arterial pressure low and high alarm limits are not inconsistent + 20 : "REQUEST_REJECT_REASON_VENOUS_PRESSURE_LOW_VS_HIGH" , # Venous pressure low and high alarm limits are inconsistent + 21 : "REQUEST_REJECT_REASON_SALINE_MAX_VOLUME_REACHED" , # Saline bolus volume maximum has been reached - no more saline allowed + 22 : "REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_IN_PROGRESS" , # A saline bolus is not in progress + 23 : "REQUEST_REJECT_REASON_ACTION_DISABLED_IN_CURRENT_STATE" , # "REQuested user action is disabled in current state + 24 : "REQUEST_REJECT_REASON_ALARM_IS_ACTIVE" , # "REQuested user action not allowed while alarm is active + 25 : "REQUEST_REJECT_REASON_INVALID_COMMAND" , # "REQuested user action invalid + 26 : "REQUEST_REJECT_REASON_TREATMENT_IS_COMPLETED" , # The treatment has been completed + 27 : "REQUEST_REJECT_REASON_ADDL_RINSEBACK_MAX_VOLUME_REACHED" , # Rinseback additional volume maximum has been reached - no more additional rinsebacks allowed + 28 : "REQUEST_REJECT_REASON_UF_VOLUME_NOT_SET" , # Ultrafiltration volume is not set yet + 29 : "REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM" , # The user has not confirmed patient connection + 30 : "REQUEST_REJECT_REASON_HEPARIN_PAUSE_INVALID_IN_THIS_STATE" , # Heparin cannot be paused if not currently deliverying Heparin + 31 : "REQUEST_REJECT_REASON_HEPARIN_NOT_PAUSED" , # Heparin cannot be resumed if not paused + 32 : "REQUEST_REJECT_REASON_DG_COMM_LOST" , # Treatment cannot initiate if DG comm is lost + 33 : "REQUEST_REJECT_REASON_DRAIN_NOT_COMPLETE" , # Post-treatment reservoirs drain not complete + 34 : "REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE" , # Treatment cannot initiate if DG is not in standby idle state + 35 : "REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT" , # "REQuest message not formatted properly + 36 : "REQUEST_REJECT_REASON_INVALID_DATE_OR_TIME" , # Given date/time is invalid + 37 : "REQUEST_REJECT_REASON_NO_NEW_TREATMENT_ALARM_TRIGGERED" , # Treatment cannot initiate if an alarm with no new treatment property has triggered before + 38 : "REQUEST_REJECT_REASON_BATTERY_IS_NOT_CHARGED" , # Battery does not have enough charge to start treatment + 39 : "REQUEST_REJECT_REASON_RINSEBACK_NOT_COMPLETED" , # Cannot move on to recirculate without completing full rinseback +} + +NUM_OF_REQUEST_REJECT_REASONS = 39 + +#main treatment pressure +PRESSURE_TITLE = "PRESSURES" +ARTERIAL_TITLE = "Arterial" +VENOUS_TITLE = "Venous" +VENOUS_UOM = "mmHg" +ARTERIAL_UOM = "mmHg" +LOW_TEXT = "LOW" +HIGH_TEXT = "HIGH" +ACCEPTED = True +REJECTED = False + +#pressure +PRESSURE_STEPS = 10 +ARTERIAL_PRESSURE_MINIMUM = -400 +ARTERIAL_PRESSURE_MAXIMUM = +600 +ARTERIAL_PRESSURE_LOW_MIN = -300 +ARTERIAL_PRESSURE_LOW_DEF = -300 +ARTERIAL_PRESSURE_LOW_MAX = +200 +ARTERIAL_PRESSURE_HIGH_MIN = -300 +ARTERIAL_PRESSURE_HIGH_DEF = +100 +ARTERIAL_PRESSURE_HIGH_MAX = +200 + +VENOUS_PRESSURE_MINIMUM = -100 +VENOUS_PRESSURE_MAXIMUM = +700 +VENOUS_PRESSURE_LOW_MIN = -100 +VENOUS_PRESSURE_LOW_DEF = -100 +VENOUS_PRESSURE_LOW_MAX = +600 +VENOUS_PRESSURE_HIGH_MIN = +100 +VENOUS_PRESSURE_HIGH_DEF = +400 +VENOUS_PRESSURE_HIGH_MAX = +600 + +#main_treatment_flows +BLOOD_FLOW_MINIMUM_VALUE = 100 +BLOOD_FLOW_BUFFER = 25 +FLOW_SLIDER_WIDTH_BUFFER = 37 +BLOOD_FLOW_MAXIMUM_VALUE = 500 +DIALYSATE_FLOW_MINIMUM_VALUE = 0 +DIALYSATE_FLOW_MAXIMUM_VALUE = 0 # Seems to be bug. need change +FLOW_UNIT = "mL/min" +BLOOD_FLOW_TEXT = "blood" +DIALYSATE_FLOW_TEXT = "dialysate" + +#main treatment screen +VITALS_TITLE = "VITALS" +OUT_OF_RANGE_COLOR = "#c53b33" +IN_RANGE_COLOR = "#fcfcfc" +SYSTOLIC_LOWER_LIMIT = 60 +SYSTOLIC_UPPER_LIMIT = 250 +DIASTOLIC_LOWER_LIMIT = 40 +DIASTOLIC_UPPER_LIMIT = 200 +HEART_RATE_LOWER_LIMIT = 40 +HEART_RATE_UPPER_LIMIT = 180 +HEART_RATE_TITLE = "Heart Rate" +BLOOD_PRESSURE_TITLE = "Blood Pressure" +BLOOD_PRESSURE_UNIT = "mmHg" +HEART_RATE_UNIT = "BPM" +BLOOD_PRIMING_RANGE = 300 +BLOOD_PRIMING_TARGET_MAXIMUM = 300 + + +#tst_treatment_monitoring +FLOWS_TEXT = "FLOWS" +BLOOD_UNIT = "mL/min" +DIALYSATE_TEXT = "Dialysate" +BLOOD_TEXT = "Blood" +VITALS_TEXT = "VITALS" +BLOOD_PRESSURE_TEXT = "mmHg" +HEARTRATE_UNIT = "BPM" +PRESSURE_TEXT = "PRESSURE (mmHg)" +ARTEREAL_TEXT = "Arterial" +VENOUS_TEXT = "Venous" +TIME_DURATION_TEXT = "Time Remaining" +ULTRAFILTERATION_TEXT = "ULTRAFILTRATION VOLUME (L)" +SALINE_BOLUS = "SALINE BOLUS" +VOLUME_DELIVERED = "Volume Delivered" +CUMULATIVE_DELIVERED = "Cumulative Delivered" +HEPARIN_TEXT = "HEPARIN" +VOLUME_DELIVERED = "Volume Delivered" + +#patient id +CHARACTER_PATIENT_ID = ["qwerty","sampleid","abcdefghijklmnop","patientid", "username"] +ALPHANUMERIC_PATIENT_ID = ["sA@MpLE#123", "A@BH&321","5432@qwerty"] +KEYBOARD_SWITCH = ["ABC", "&123"] + + #main-treatment heparin HEPARIN_UNIT = "mL" HEPARIN_DELIVERY_TEXT = "HEPARIN DELIVERY" @@ -44,48 +535,3 @@ HEPARIN_MAXIMUM_VOLUME_DELIVERED_TEXT = "Maximum Cumulative Heparin Volume Delivered" HEPARIN_SYRINGE_EMPTY_TEXT = "Heparin Syringe Empty" - -REJECTION_REASON = { - 0: "No Active Alarm List", - 1: "REQUEST_REJECT_REASON_NOT_ALLOWED_IN_CURRENT_MODE", - 2: "REQUEST_REJECT_REASON_TIMEOUT_WAITING_FOR_USER_CONFIRM", - 3: "REQUEST_REJECT_REASON_NOT_IN_TREATMENT_MODE", - 4: "REQUEST_REJECT_REASON_INVALID_TREATMENT_STATE", - 5: "REQUEST_REJECT_REASON_TREATMENT_TOO_CLOSE_TO_FINISHED", - 6: "REQUEST_REJECT_REASON_TREATMENT_TIME_OUT_OF_RANGE", - 7: "REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_CURRENT", - 8: "REQUEST_REJECT_REASON_BLOOD_FLOW_OUT_OF_RANGE", - 9: "REQUEST_REJECT_REASON_DIAL_FLOW_OUT_OF_RANGE", - 10: "REQUEST_REJECT_REASON_DIAL_VOLUME_OUT_OF_RANGE", - 11: "REQUEST_REJECT_REASON_UF_VOLUME_OUT_OF_RANGE", - 12: "REQUEST_REJECT_REASON_UF_RATE_OUT_OF_RANGE", - 13: "REQUEST_REJECT_REASON_TREATMENT_TIME_LESS_THAN_MINIMUM", - 14: "REQUEST_REJECT_REASON_UF_NOT_IN_PROGESS", - 15: "REQUEST_REJECT_REASON_UF_NOT_PAUSED", - 16: "REQUEST_REJECT_REASON_SALINE_BOLUS_IN_PROGRESS", - 17: "REQUEST_REJECT_REASON_PARAM_OUT_OF_RANGE", - 18: "REQUEST_REJECT_REASON_HEPARIN_PRESTOP_EXCEEDS_DURATION", - 19: "REQUEST_REJECT_REASON_ARTERIAL_PRESSURE_LOW_VS_HIGH", - 20: "REQUEST_REJECT_REASON_VENOUS_PRESSURE_LOW_VS_HIGH", - 21: "REQUEST_REJECT_REASON_SALINE_MAX_VOLUME_REACHED", - 22: "REQUEST_REJECT_REASON_SALINE_BOLUS_NOT_IN_PROGRESS", - 23: "REQUEST_REJECT_REASON_ACTION_DISABLED_IN_CURRENT_STATE", - 24: "REQUEST_REJECT_REASON_ALARM_IS_ACTIVE", - 25: "REQUEST_REJECT_REASON_INVALID_COMMAND", - 26: "REQUEST_REJECT_REASON_TREATMENT_IS_COMPLETED", - 27: "REQUEST_REJECT_REASON_ADDL_RINSEBACK_MAX_VOLUME_REACHED", - 28: "REQUEST_REJECT_REASON_UF_VOLUME_NOT_SET", - 29: "REQUEST_REJECT_REASON_NO_PATIENT_CONNECTION_CONFIRM", - 30: "REQUEST_REJECT_REASON_HEPARIN_PAUSE_INVALID_IN_THIS_STATE", - 31: "REQUEST_REJECT_REASON_HEPARIN_NOT_PAUSED", - 32: "REQUEST_REJECT_REASON_DG_COMM_LOST", - 33: "REQUEST_REJECT_REASON_DRAIN_NOT_COMPLETE", - 34: "REQUEST_REJECT_REASON_DG_NOT_IN_STANDBY_IDLE_STATE", - 35: "REQUEST_REJECT_REASON_INVALID_REQUEST_FORMAT", - 36: "REQUEST_REJECT_REASON_INVALID_DATE_OR_TIME", - 37: "REQUEST_REJECT_REASON_NO_NEW_TREATMENT_ALARM_TRIGGERED", - 38: "REQUEST_REJECT_REASON_BATTERY_IS_NOT_CHARGED", - 39: "REQUEST_REJECT_REASON_RINSEBACK_NOT_COMPLETED", - } - -NUM_OF_REJECTION_MSG = 39 Index: shared/scripts/configuration/utility.py =================================================================== diff -u -r8242123c781d022e2c7d9e1d36436ddfde01ffe4 -r8022d2716a79cbb147fa8976606720c566a7b864 --- shared/scripts/configuration/utility.py (.../utility.py) (revision 8242123c781d022e2c7d9e1d36436ddfde01ffe4) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision 8022d2716a79cbb147fa8976606720c566a7b864) @@ -7,19 +7,27 @@ # # @file utils.py # +# @author (last) Papiya Mandal +# @date (last) 21-Jan-2022 # @author (last) Joseph varghese # @date (last) 15-Jan-2022 # ############################################################################ + import names import sys import test -import squish 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 str as pyStr +from builtins import float as pyFloat - + def start_application(app_name): """ Function to start application and verify application status [running] @@ -56,22 +64,22 @@ except: logErrorDetails("Failed to start the application") sys.exit(1) + - 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)) + containerPos = container.mapToGlobal(QPoint(0, 0)) container_x, container_y = pyInt(containerPos.x), pyInt(containerPos.y) container_width, container_height = pyInt(container.width), pyInt(container.height) obj = squish.findObject(obj) - objPos = obj.mapToGlobal(squish.QPoint(0, 0)) + objPos = obj.mapToGlobal(QPoint(0, 0)) obj_x, obj_y = pyInt(objPos.x), pyInt(objPos.y) obj_width, obj_height = pyInt(obj.width), pyInt(obj.height) @@ -81,16 +89,11 @@ return False - -def rejection_msg(text): - names.rejection_msg["text"] = text - return names.rejection_msg - def scroll_to_zone(zone=None, screen_object=None): """ scroll to the numeric if object is hidden @param zone - UI object - @param screen_object - UI object (UI Home screen = waveforms + numerics) + @param screen_object - container object of zone @return boolean true/false """ counter = 0 @@ -108,7 +111,100 @@ screenHeight = pyInt(ScreenObj.height) screenWidth = pyInt(ScreenObj.width) squish.mouseWheel(ScreenObj, screenWidth-1000, - screenHeight-10, 0, -50, squish.Qt.NoModifier) + screenHeight-10, 0, -50, Qt.NoModifier) raise LookupError("zone 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 entered_value: + 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_value_on_pop_up(value=None, container=None): + """ + scroll to the to the value if object is hidden + @param value - value object + @param container - 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 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 Index: shared/scripts/names.py =================================================================== diff -u -r8242123c781d022e2c7d9e1d36436ddfde01ffe4 -r8022d2716a79cbb147fa8976606720c566a7b864 --- shared/scripts/names.py (.../names.py) (revision 8242123c781d022e2c7d9e1d36436ddfde01ffe4) +++ shared/scripts/names.py (.../names.py) (revision 8022d2716a79cbb147fa8976606720c566a7b864) @@ -1,8 +1,20 @@ # encoding: UTF-8 -from objectmaphelper import * +# Top Parents +o_QQuickView = { "type": "QQuickView"} +o_Overlay = {"container": o_QQuickView, "type": "Overlay"} +o_Gui_MainView = { "type": "Gui::MainView" } + +# Modal Dialog +o_modalDialog = {"container": o_Overlay , "id": "_backgroundRect", "type": "Rectangle", "unnamed": 1, "visible": True} +o_treatmentHome = {"container": o_QQuickView , "id": "_treatmentHome" , "type": "TreatmentHome", "unnamed": 1, "visible": True} +o_treatmentHome_backgroung = {"container": o_treatmentHome, "id": "_backgroundRect" , "type": "Rectangle" , "unnamed": 1, "visible": True} +o_treatmentHome_startTreatment = {"container": o_treatmentHome, "id": "_startTreatmentRect" , "type": "TouchRect" , "unnamed": 1, "visible": True} +o_treatmentHome_createTreatment = {"container": o_treatmentHome, "id": "_createTreatmentRect", "type": "TouchRect" , "unnamed": 1, "visible": True} + + o_Gui_MainView = {"type": "Gui::MainView", "unnamed": 1, "visible": True} o_Overlay = {"container": o_Gui_MainView, "type": "Overlay", "unnamed": 1, "visible": True} o_borderRect_Rectangle = {"container": o_Overlay, "gradient": 0, "id": "_borderRect", "type": "Rectangle", "unnamed": 1, "visible": True} @@ -22,10 +34,14 @@ o_PreTreatmentCreate_dialysateFlowRate_SliderCreateTreatment = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "gradient": 0, "objectName": "_dialysateFlowRate", "type": "SliderCreateTreatment", "visible": True} o_PreTreatementCreateStack_PreTreatmentBase_TreatmentFlowBase = {"container":o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase,"objectName":"_PreTreatmentBase","type":"TreatmentFlowBase", "visible": True} o_treatmentStack_treatmentHome_TreatmentHome = {"container": o_treatmentStack_TreatmentStack, "id": "_treatmentHome", "type": "TreatmentHome", "unnamed": 1, "visible": True} + + +#create_treatment o_confirmButton_TouchRect = {"container": o_Gui_MainView, "gradient": 0, "objectName": "_confirmButton", "type": "TouchRect", "visible": False} o_backButton_BackButton = {"container": o_Gui_MainView, "gradient": 0, "objectName": "_backButton", "type": "BackButton", "visible": False} o_NinePatchImage = {"container": o_Gui_MainView, "occurrence": 6, "type": "NinePatchImage", "unnamed": 1, "visible": False} o_PreTreatmentBase_backgroundRect_Rectangle = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "gradient": 0, "id": "_backgroundRect", "type": "Rectangle", "unnamed": 1, "visible": True} +t_Text = {"container": o_Gui_MainView, "text": "t", "type": "Text", "unnamed": 1, "visible": True} o_PreTreatmentBase_confirmButton_TouchRect = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "gradient": 0, "objectName": "_confirmButton", "type": "TouchRect", "visible": True} @@ -34,19 +50,250 @@ o_standby_page = {"container": o_MainHome_MainHome, "type": "Column", "unnamed": 1, "visible": True} +#alarm list +o_alarm_list_container = {"container": o_Overlay, "id": "_flickable", "type": "Flickable", "unnamed": 1, "visible": True} +o_notification_bar_alarm_list_button = {"container": o_Gui_MainView, "id": "_alarmListImage", "source": "qrc:/images/iList", "type": "Image", "unnamed": 1, "visible": True} +#minimize and maximize button +o_minimize_button = {"container": o_Overlay, "id": "_image", "source": "qrc:/images/iChevronDown", "type": "Image", "unnamed": 1, "visible": True} +o_maximize_button = {"container": o_Gui_MainView, "gradient": 0, "id": "_updownButton", "type": "UpDownButton", "unnamed": 1, "visible": True} +#Alarm list title text +o_alarm_list_title_text = {"container": o_Overlay, "text": "Alarm list", "type": "Text", "unnamed": 1, "visible": True} +o_dialogue_bar_alarm_list_button = {"container": o_Overlay, "id": "_icon", "source": "qrc:/images/iList", "type": "Image", "unnamed": 1, "visible": True} +#alarm list minimize and maximize button +o_alarm_list_minimize_maximize_button = {"container": o_Overlay, "id": "_image", "source": "qrc:/images/iList", "type": "Image", "unnamed": 1, "visible": True} +#generated alarm id +o_alarm_id = {"container": o_Overlay, "id": "_text", "type": "Text", "unnamed": 1, "visible": True} +#generated alarm message +o_alarm_message = {"container": o_Overlay, "id": "_itemsValue", "type": "Text", "unnamed": 1, "visible": True} +#list alarm messages +o_alarm_list = {"container": o_Overlay, "id": "_grid", "type": "Grid", "unnamed": 1, "visible": True} +#Rejected alarm list +o_rejected_alarm_list_msg = {"container": o_Overlay, "id": "_desc", "objectName": "_NotificationDialog_Description", "type": "Text", "visible": True} +#Alarm list title text +o_alarm_title_text = {"container": o_Overlay, "id": "_title", "type": "Text", "unnamed": 1, "visible": True} +#Alarm dialogue +o_alarm_dialogue_box_msg = {"container": o_Overlay, "id": "_desc", "objectName": "_NotificationDialog_Description", "type": "Text", "visible": True} + +#alarm dialog +o_alarm_dialog_content = {"container": o_Overlay , "objectName": "_NotificationDialog" , "type": "ContentItem" } +o_alarm_dialog_titleBar = {"container": o_alarm_dialog_content , "id" : "_titleBar" , "type": "Rectangle" } +o_alarm_button_minimize = {"container": o_alarm_dialog_content , "id" : "_minimizeButton" , "type": "UpDownButton" ,"visible": True } +o_alarm_button_mute = {"container": o_alarm_dialog_content , "id" : "_muteButton" , "type": "MuteButton" ,"visible": True } +o_alarm_button_mute_img = {"container": o_alarm_button_mute , "id" : "_image" , "type": "Image", "unnamed": 1, "visible": True} +o_alarm_button_mute_min = {"container": o_alarm_button_mute , "id" : "_hourText" , "type": "Text" } +o_alarm_button_mute_sec = {"container": o_alarm_button_mute , "id" : "_minuteText" , "type": "Text" } +o_alarm_button_row = {"container": o_alarm_dialog_content , "id" : "_buttonGroup" , "type": "Row" } +o_alarm_button_resume = {"container": o_alarm_button_row , "id" : "_resumeTouchRect" , "type": "TouchRect" } +o_alarm_button_rinseback = {"container": o_alarm_button_row , "id" : "_rinsebackTouchRect" , "type": "TouchRect" } +o_alarm_button_end = {"container": o_alarm_button_row , "id" : "_endTouchRect" , "type": "TouchRect" } +o_alarm_button_ok = {"container": o_alarm_button_row , "id" : "_okTouchRect" , "type": "TouchRect" } +o_alarm_text_description = {"container": o_alarm_dialog_content , "id" : "_desc" , "type": "Text" } +o_alarm_bar = {"container": o_QQuickView , "id" : "_alarmBar" , "type": "NotificationBar" } +o_alarm_bar_text = {"container": o_alarm_bar , "id" : "_text" , "type": "Text" } +o_alarm_bar_mute_img = {"container": o_alarm_bar , "id" : "_image" , "type": "Image", "unnamed": 1, "visible": True} +o_alarm_bar_mute_min = {"container": o_alarm_bar , "id" : "_hourText" , "type": "Text" } +o_alarm_bar_mute_sec = {"container": o_alarm_bar , "id" : "_minuteText" , "type": "Text" } +o_alarm_bar_maximize = {"container": o_alarm_bar , "id" : "_updownButton" , "type": "UpDownButton" } +o_qquickview_alarm = {"type": "QQuickView", "unnamed": 1, "visible": True} +o_okay_alarm = {"container": o_Overlay, "id": "_okay", "type": "TouchRect", "unnamed": 1, "visible": True} +o_dismiss_alarm = {"container": o_Overlay, "id": "_silence", "type": "TouchRect", "unnamed": 1, "visible": True} + #in-treatment o_blood_priming = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "text": "Blood Priming", "type": "Text", "unnamed": 1, "visible": True} o_blood_priming_value_by_default = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "text": "0 mL", "type": "Text", "unnamed": 1, "visible": True} -o_uf_minimum_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "0.000", "type": "Text", "unnamed": 1, "visible": True} -o_uf_maximum_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} -o_uf_minimum_value_pop_up = {"container": o_Overlay, "text": "0.000", "type": "Text", "unnamed": 1, "visible": True} -o_uf_maximum_value_pop_up = {"container": o_Overlay, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} o_edit_uf_value = {"container": o_Overlay, "text": "EDIT ULTRAFILTRATION VOLUME", "type": "Text", "unnamed": 1, "visible": True} o_uf_back_button = {"container": o_Overlay, "text": "BACK", "type": "Text", "unnamed": 1, "visible": True} o_uf_close_button = {"container": o_Overlay, "id": "_image", "source": "qrc:/images/iClose", "type": "Image", "unnamed": 1, "visible": True} +o_cumulative_fluid_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Cumulative Delivered", "type": "Text", "unnamed": 1, "visible": True} + + +# Saline Bolus +o_treatmentHome = {"container": o_QQuickView , "id": "_treatmentHome" , "type": "TreatmentHome", "unnamed": 1, "visible": True} +o_treatmentStart_TreatmentStart = {"container": o_QQuickView, "id": "_treatmentStart", "type": "TreatmentStart", "unnamed": 1, "visible": True} +o_fluid_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentStart_SalineSection = {"container": o_treatmentHome, "id": "_salineTouchArea", "type": "TreatmentSaline", "unnamed": 1, "visible": True} +o_treatmentHome_mL_Text = {"container": o_treatmentHome, "text": "mL", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_cumalative_value = {"container": o_treatmentHome, "occurrence": 39, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_cumalative_unit = {"container": o_treatmentHome, "occurrence": 38, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_delivered_value = {"container": o_treatmentHome, "occurrence": 36, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_delivered_unit = {"container": o_treatmentHome, "occurrence": 35, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_ultrafiltrationTouchArea_TreatmentUltrafiltration = {"container": o_treatmentHome, "id": "_ultrafiltrationTouchArea", "type": "TreatmentUltrafiltration", "unnamed": 1, "visible": True} +o_treatmentHome_startFluidButton_TouchRect = {"container": o_treatmentHome, "id": "_startFluidButton", "type": "TouchRect", "unnamed": 1, "visible": True} +o_treatment_notification_rejection = {"container": ":o_treatmentHome", "occurrence": 3, "objectName": "NotificationBar", "type": "NotificationBarSmall", "visible": True} + + +#main treatment pressure +#arterial title text +o_arterial_title = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Arterial", "type": "Text", "unnamed": 1, "visible": True} +#pressure adjustment pop up related objects +o_pop_up_pressure_text_obj = {"container": o_Overlay, "type": "Text", "unnamed": 1, "visible": True} +o_pop_up_close_btn = {"container": o_Overlay, "id": "_image", "source": "qrc:/images/iClose", "type": "Image", "unnamed": 1, "visible": True} +o_pop_up_confirm_btn = {"container": o_Overlay, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_pressure_text_obj = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "type": "Text", "unnamed": 1, "visible": True} +o_pop_up_rejected_msg = {"container": o_Overlay, "type": "Text", "unnamed": 1, "visible": True} +# Pressure Adjustment +o_treatmentAdjustmentPressures_Screen = {"container": o_Overlay, "objectName": "TreatmentAdjustmentPressures", "type": "ContentItem"} +# arterial pressure range slider +o_arterial_range_slider = {"container": o_treatmentAdjustmentPressures_Screen, "id": "_arterialPressure", "type": "PressureRangeSlider"} +# arterial progress +o_arterial_progress = {"container": o_arterial_range_slider , "id": "_pressureRangeBar", "type": "RangeBar"} +o_arterial_marker = {"container": o_arterial_progress, "id": "_rangeMarkerValue", "type": "RangeMarker"} +o_arterial_progress_text_value = {"container": o_arterial_marker, "id": "_textValue", "type": "Text"} +# arterial slider +o_arterial_slider = {"container": o_arterial_range_slider, "id": "_pressureSlider" , "type": "RangeSlider"} +# arterial limits bar +o_arterial_limitbar = {"container": o_arterial_range_slider, "id": "_rangeRect", "type": "RangeRect"} +# venous pressure range slider +o_venous_range_slider= {"container": o_treatmentAdjustmentPressures_Screen, "id": "_venousPressure", "type": "PressureRangeSlider"} +o_venous_progress = {"container": o_venous_range_slider , "id": "_pressureRangeBar", "type": "RangeBar"} +o_venous_marker = {"container": o_venous_progress , "id": "_rangeMarkerValue", "type": "RangeMarker" } +o_venous_progress_text_value = {"container": o_venous_marker , "id": "_textValue", "type": "Text"} +# venous progress +o_venous_slider = {"container": o_venous_range_slider , "id": "_pressureSlider" , "type": "RangeSlider" } +o_venous_limitbar = {"container": o_venous_range_slider, "id": "_rangeRect" , "type": "RangeRect"} +#arterial adjustment low slider title text +o_arterial_text_low = {"container": o_Overlay, "text": "LOW", "type": "Text", "unnamed": 1, "visible": True} +#venous adjustment low slider title text +o_venous_text_low = {"container": o_Overlay, "occurrence": 2, "text": "LOW", "type": "Text", "unnamed": 1, "visible": True} o_fluid_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} o_cumulative_fluid_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Cumulative Delivered", "type": "Text", "unnamed": 1, "visible": True} + +# Ultrafiltration Section +o_treatmentStart_TreatmentStart = {"container": o_QQuickView, "id": "_treatmentStart", "type": "TreatmentStart", "unnamed": 1, "visible": True} +o_treatmentStart_ultrafiltration_section = {"container": o_treatmentStart_TreatmentStart , "id": "_ultrafiltrationTouchArea", "type": "TreatmentUltrafiltration"} +o_treatmentStart_ultrafiltration_notification = {"container": o_treatmentStart_ultrafiltration_section, "objectName": "NotificationBar" , "type": "NotificationBarSmall" } +o_treatmentStart_ultrafiltrationTouchArea_TreatmentUltrafiltration = {"container": o_treatmentHome, "id": "_ultrafiltrationTouchArea", "type": "TreatmentUltrafiltration", "unnamed": 1, "visible": True} +o_uf_minimum_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "0.000", "type": "Text", "unnamed": 1, "visible": True} +o_uf_maximum_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} +o_uf_minimum_value_pop_up = {"container": o_Overlay, "text": "0.000", "type": "Text", "unnamed": 1, "visible": True} +o_uf_maximum_value_pop_up = {"container": o_Overlay, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} +o_uf_edit_ultrafilteration_volume = {"container": o_Overlay, "text": "EDIT ULTRAFILTRATION VOLUME", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_progressbar_start_state = {"container": o_treatmentHome, "id": "_progressbarex", "type": "ProgressBarEx", "unnamed": 1, "visible": True} +o_treatmentHome_progressbar_edit_uf = {"container": o_Overlay, "id": "_rangeProgressBar", "type": "ProgressBarEx", "unnamed": 1, "visible": True} +o_volumeSlider_slider = {"container": o_Overlay,"id": "_volumeSlider", "type": "Slider", "unnamed": 1, "visible": True} +o_treatmenthome_ultrafiltration_paused_text = {"container": o_treatmentHome, "text": "Ultrafiltration Paused", "type": "Text", "unnamed": 1, "visible": True} +o_ultrafiltration_paused_text = {"container": o_Overlay, "text": "Ultrafiltration Paused", "type": "Text", "unnamed": 1, "visible": True} +o_resume_ultrafilteration_text = {"container": o_Overlay, "text": "RESUME ULTRAFILTRATION", "type": "Text", "unnamed": 1, "visible": True} +o_ultrafilteration_volume_text = {"container": o_Overlay, "text": "ULTRAFILTRATION VOLUME (L)", "type": "Text", "unnamed": 1, "visible": True} +o_ultrafilteration_closeButton = {"container": o_Overlay, "id": "_closeButton", "type": "CloseButton", "unnamed": 1, "visible": True} +o_backbutton_backbutton = {"container": o_Overlay, "id": "_backButton", "type": "BackButton", "unnamed": 1, "visible": True} +o_notificationbar_response = {"container": o_Overlay, "objectName": "NotificationBar", "type": "NotificationBar", "visible": True} + + +#flows +o_treatment_blood_flow_touch_area = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "FLOWS", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentStart_TreatmentStart = {"container": o_QQuickView, "id": "_treatmentStart", "type": "TreatmentStart", "unnamed": 1, "visible": True} +o_treatment_blood_flow_rate = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "id": "_bloodFlow", "type": "TextRect", "unnamed": 1, "visible": True} +o_treatment_dialysate_flow_rate = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "id": "_dialysateInletFlow", "type": "TextRect", "unnamed": 1, "visible": True} +o_treatment_blood_flow_adjustment = {"container": o_Overlay, "id": "_bloodFlowTextRect", "type": "TextRect", "unnamed": 1, "visible": True} +o_treatment_dialysate_flow_adjustment = {"container": o_Overlay, "id": "_dialysateInletFlowTextRect", "type": "TextRect", "unnamed": 1, "visible": True} +o_treatment_flow_adjustment_close = {"container": o_Overlay, "id": "_closeButton", "type": "CloseButton", "unnamed": 1, "visible": True} +o_treatment_notification_bar = {"container": o_Overlay, "type": "Text", "unnamed": 1, "visible": True} +o_dialysateFlowSlider_Slider = {"container": o_Overlay, "id": "_dialysateFlowSlider", "type": "Slider", "unnamed": 1, "visible": True} +o_blood_flow_slider = {"container": o_Overlay, "id": "_bloodFlowSlider", "type": "Slider", "unnamed": 1, "visible": True} +o_blood_flow_minimum_value = {"container": o_Overlay, "text": "100mL/min", "type": "Text", "unnamed": 1, "visible": True} +o_blood_flow_maximum_value = {"container": o_Overlay, "text": "500mL/min", "type": "Text", "unnamed": 1, "visible": True} +o_dialysate_flow_minimum_value = {"container": o_Overlay, "text": "0mL/min", "type": "Text", "unnamed": 1, "visible": True} +o_dialysate_flow_maximum_value = {"container": o_Overlay, "occurrence": 2, "text": "0mL/min", "type": "Text", "unnamed": 1, "visible": True} +o_handler_Rectangle = {"container": o_Overlay, "gradient": 0, "id": "_handler", "type": "Rectangle", "unnamed": 1, "visible": True} + + +#vitals +#vitals title text on main-treatment screen +o_vitals_title = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "VITALS", "type": "Text", "unnamed": 1, "visible": True} +#unit of measurement for blood pressure and heart rate +o_bp_uom = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "mmHg", "type": "Text", "unnamed": 1, "visible": True} +o_hr_uom = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "BPM", "type": "Text", "unnamed": 1, "visible": True} +#reading of vitals +o_vitals_reading = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "type": "Text", "unnamed": 1, "visible": True} +#vitals pop up confirm and close button +o_vitals_confrim_btn = {"container": o_treatmentStack_TreatmentStack, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_vitals_close_btn = {"container": o_treatmentStack_TreatmentStack, "id": "_image", "source": "qrc:/images/iClose", "type": "Image", "unnamed": 1, "visible": True} +#vitals title text vitals pop up +o_vitals_pop_up_title = {"container": o_treatmentStack_TreatmentStack, "text": "VITALS", "type": "Text", "unnamed": 1, "visible": True} +o_pop_up_bp_title = {"container": o_treatmentStack_TreatmentStack, "text": "Blood Pressure", "type": "Text", "unnamed": 1, "visible": True} +o_pop_up_heart_rate_title = {"container": o_treatmentStack_TreatmentStack, "text": "Heart Rate", "type": "Text", "unnamed": 1, "visible": True} +#unit of measurement for blood pressure and heart rate on pop up +o_pop_up_bp_uom = {"container": o_treatmentStack_TreatmentStack, "text": "mmHg", "type": "Label", "unnamed": 1, "visible": True} +o_pop_up_heart_rate_uom = {"container": o_treatmentStack_TreatmentStack, "text": "BPM", "type": "Label", "unnamed": 1, "visible": True} +#systolic, diastolic and heart rate input field +o_pop_up_systolic_input_field = {"container": o_treatmentStack_TreatmentStack, "echoMode": 0, "id": "_input", "type": "TextInput", "unnamed": 1, "visible": True} +o_pop_up_diastolic_input_field = {"container": o_treatmentStack_TreatmentStack, "echoMode": 0, "id": "_input", "occurrence": 2, "type": "TextInput", "unnamed": 1, "visible": True} +o_pop_up_heart_rate_input_field = {"backgroundcolor": "#254670", "container": o_treatmentStack_TreatmentStack, "echoMode": 0, "id": "_input", "occurrence": 3, "type": "TextInput", "unnamed": 1, "visible": True} +#virtal keypad input field +o_keypad_input = {"container": o_Gui_MainView, "id":"keyText", "type": "Text", "unnamed": 1, "visible": True} +#virtal keypad back space key +o_back_space_key = {"container": o_Gui_MainView, "id": "backspaceKeyIcon", "source": "qrc:/QtQuick/VirtualKeyboard/content/styles/default/images/backspace-868482.svg", "type": "Image", "unnamed": 1, "visible": True} + + +#authentication +o_confirm_button = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_back_button ={"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "id": "_image", "source": "qrc:/images/iBack", "type": "Image", "unnamed": 1, "visible": True} +o_PreTreatmentBase_confirmButton_TouchRect = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_PreTreatmentCreate_bloodFlowRate_SliderCreateTreatment = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "gradient": 0, "objectName": "_bloodFlowRate", "type": "SliderCreateTreatment", "visible": True} +o_input_patient_id = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "echoMode": 0, "id": "_input", "type": "TextInput", "unnamed": 1, "visible": True} +o_keboard_input = {"container": o_Gui_MainView, "type": "Text", "unnamed": 1, "visible": True} +o_custom_treatment = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "text": "Create a Custom Treatment", "type": "Text", "unnamed": 1, "visible": True} +o_treatment_create_flickable = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "objectName": "TreatmentCreateFlickable", "type": "Flickable", "visible": True} +o_operating_parameters = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "type": "Text", "unnamed": 1, "visible": True} +o_PreTreatmentBase_confirmButton_TouchRect_2 = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "gradient": 0, "objectName": "_confirmButton", "type": "TouchRect", "visible": True} +o_PreTreatmentCreate_heparinDispensingRate_SliderCreateTreatment = {"container": o_PreTreatmentCreateStack_PreTreatmentCreate_PreTreatmentCreate, "gradient": 0, "objectName": "_heparinDispensingRate", "type": "SliderCreateTreatment", "visible": True} +o_PreTreatmentBase_backgroundRect_Rectangle_2 = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "gradient": 0, "id": "_backgroundRect", "type": "Rectangle", "unnamed": 1, "visible": True} +o_keyboard_switch = {"container": o_Gui_MainView, "id": "shiftKeyIcon", "source": "qrc:/QtQuick/VirtualKeyboard/content/styles/default/images/shift-868482.svg", "type": "Image", "unnamed": 1, "visible": True} +o_keyboard_switch_2 = {"container": o_Gui_MainView, "id": "shiftKeyIcon", "source": "qrc:/QtQuick/VirtualKeyboard/content/styles/default/images/shift-80c342.svg", "type": "Image", "unnamed": 1, "visible": True} + + +# main screen monitoring parameters +o_flowRectangle= {"container": o_treatmentStack_treatmentHome_TreatmentHome, "gradient": 0, "id": "_flowsTouchArea", "type": "TouchArea", "unnamed": 1, "visible": True} +o_Flows = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "FLOWS","type":"Text", "unnamed": 1, "visible": True} +o_pressure = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "PRESSURE (mmHg)", "type": "Text", "unnamed": 1, "visible": True} +o_Arterial = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Arterial", "type": "Text", "unnamed": 1, "visible": True} +o_Venous = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Venous", "type": "Text", "unnamed": 1, "visible": True} +o_Timeremaining = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Time Remaining", "type": "Text", "unnamed": 1, "visible": True} +o_Ultrafiltration = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "ULTRAFILTRATION VOLUME (L)", "type": "Text", "unnamed": 1, "visible": True} +o_Blood = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Blood", "type": "Text", "unnamed": 1, "visible": True} +o_Blood_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "mL/min", "type": "Text", "unnamed": 1, "visible": True} +o_Dialysate = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Dialysate", "type": "Text", "unnamed": 1, "visible": True} +o_Dialysate_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "occurrence": 2, "text": "mL/min", "type": "Text", "unnamed": 1, "visible": True} +o_Vitals = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "VITALS", "type": "Text", "unnamed": 1, "visible": True} +o_BloodPressure_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "mmHg", "type": "Text", "unnamed": 1, "visible": True} +o_HeartRate_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "BPM", "type": "Text", "unnamed": 1, "visible": True} +o_SalineBolus = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "SALINE BOLUS", "type": "Text", "unnamed": 1, "visible": True} +o_VolumeDelivered = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_VolumeDElivered_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "mL", "type": "Text", "unnamed": 1, "visible": True} +o_CumulativeDElivered = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Cumulative Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_CumulativeDelivered_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "occurrence": 2, "text": "mL", "type": "Text", "unnamed": 1, "visible": True} +o_Heparin = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "HEPARIN", "type": "Text", "unnamed": 1, "visible": True} +o_Heparin_VolumeDelivered = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "occurrence": 2, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_Heparin_VolumeDelivered_Unit = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "occurrence": 3, "text": "mL", "type": "Text", "unnamed": 1, "visible": True} +o_TreatmentBloodPrime_backgroundRect_Rectangle = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "gradient": 0, "id": "_backgroundRect", "type": "Rectangle", "unnamed": 1, "visible": True} +o_blood_Prime_Value = {"container": o_Gui_MainView, "id": "_shape", "type": "Shape", "unnamed": 1, "visible": True} +o_blood_Prime_Current_Value = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "id": "_circle", "type": "ProgressCircle", "unnamed": 1, "visible": True} +o_treatmentStack_TreatmentStack = {"container": o_Gui_MainView, "objectName": "TreatmentStack", "type": "TreatmentStack", "visible": True} +o_treatmentStack_TreatmentBloodPrime_ScreenItem = {"container": o_treatmentStack_TreatmentStack, "objectName": "_TreatmentBloodPrime", "type": "ScreenItem", "visible": True} +o_target_value = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "occurrence": 2, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentHome_backgroundRect_Rectangle = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "gradient": 0, "id": "_backgroundRect", "type": "Rectangle", "unnamed": 1, "visible": True} +o_treatmentHome_TimeText_timeSeparator_Text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "objectName": "_TimeText_timeSeparator", "type": "Text", "visible": True} +o_confirmButton_TouchRect_2 = {"container": o_Overlay, "gradient": 0, "id": "_confirmButton", "type": "TouchRect", "unnamed": 1, "visible": True} +o_timeText = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "gradient": 0, "objectName": "_TimeText", "type": "TimeText", "visible": True} + +blood_priming = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "text": "Blood Priming", "type": "Text", "unnamed": 1, "visible": True} +blood_priming_value_by_default = {"container": o_treatmentStack_TreatmentBloodPrime_ScreenItem, "text": "0 mL", "type": "Text", "unnamed": 1, "visible": True} +treatmentStack_treatmentHome_TreatmentHome = {"container": o_treatmentStack_TreatmentStack, "id": "_treatmentHome", "type": "TreatmentHome", "unnamed": 1, "visible": True} +uf_minimum_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "0.000", "type": "Text", "unnamed": 1, "visible": True} +uf_maximum_value = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} +uf_minimum_value_pop_up = {"container": o_Overlay, "text": "0.000", "type": "Text", "unnamed": 1, "visible": True} +uf_maximum_value_pop_up = {"container": o_Overlay, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} +edit_uf_value = {"container": o_Overlay, "text": "EDIT ULTRAFILTRATION VOLUME", "type": "Text", "unnamed": 1, "visible": True} +uf_maximum_title = {"container": o_Overlay, "text": "0.600", "type": "Text", "unnamed": 1, "visible": True} +uf_back_button = {"container": o_Overlay, "text": "BACK", "type": "Text", "unnamed": 1, "visible": True} +uf_close_button = {"container": o_Overlay, "id": "_image", "source": "qrc:/images/iClose", "type": "Image", "unnamed": 1, "visible": True} +fluid_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Volume Delivered", "type": "Text", "unnamed": 1, "visible": True} +cumulative_fluid_text = {"container": o_treatmentStack_treatmentHome_TreatmentHome, "text": "Cumulative Delivered", "type": "Text", "unnamed": 1, "visible": True} +o_initialModeScreen_ScreenItem = {"container": o_Gui_MainView, "id": "_initialModeScreen", "type": "ScreenItem", "unnamed": 1, "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} @@ -67,3 +314,8 @@ 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} +o_fail_indicator = {"container": o_initialModeScreen_ScreenItem, "id": "_checkIndicator", "source": "qrc:/images/iBusyFail", "type": "Image", "unnamed": 1, "visible": True} +o_progress_bar = {"container": o_initialModeScreen_ScreenItem, "id": "_textMaximum", "type": "Text", "unnamed": 1, "visible": False} Index: suite.conf =================================================================== diff -u -r8df6f936193bbd9127d3ec940562e62db0060bcb -r8022d2716a79cbb147fa8976606720c566a7b864 --- suite.conf (.../suite.conf) (revision 8df6f936193bbd9127d3ec940562e62db0060bcb) +++ suite.conf (.../suite.conf) (revision 8022d2716a79cbb147fa8976606720c566a7b864) @@ -1,6 +1,9 @@ AUT=denaliSquish +ENVVARS=envvars +HOOK_SUB_PROCESSES=false +IMPLICITAUTSTART=0 LANGUAGE=Python OBJECTMAPSTYLE=script -TEST_CASES=tst_environment tst_post tst_standbymode tst_In_treatment +TEST_CASES=tst_environment tst_post tst_standbymode tst_In_treatment tst_main_treatment_pressure tst_treatment_blood_dialysateflow_rate tst_main_treatment_vitals tst_ui_alarms_list tst_ui_alarms_dialog tst_main_treatment_ultrafilteration tst_main_treatment_heparin VERSION=3 WRAPPERS=Qt Index: tst_main_treatment_heparin/test.py =================================================================== diff -u -r8242123c781d022e2c7d9e1d36436ddfde01ffe4 -r8022d2716a79cbb147fa8976606720c566a7b864 --- tst_main_treatment_heparin/test.py (.../test.py) (revision 8242123c781d022e2c7d9e1d36436ddfde01ffe4) +++ tst_main_treatment_heparin/test.py (.../test.py) (revision 8022d2716a79cbb147fa8976606720c566a7b864) @@ -151,7 +151,7 @@ hd_simulator.cmd_set_treatment_states_data(sub_mode= 2, uf_state= 0, saline_state=0, heparin_state= 4, rinseback_state= 0, recirculate_state= 0, blood_prime_state= 0, treatment_end_state=0, treatment_stop_state= 0) - for reason_id in range(1, config.NUM_OF_REJECTION_MSG+1): + for reason_id in range(1, config.NUM_OF_REQUEST_REJECT_REASONS+1): hd_simulator.cmd_set_heparin_pause_resume_response(accepted=0, reason=reason_id, state=2) rejection_msg = waitForObjectExists(utility.rejection_msg(text=config.REJECTION_REASON[reason_id])) test.compare(rejection_msg.text, config.REJECTION_REASON[reason_id], "The rejection message should be {}".format(config.REJECTION_REASON[reason_id]))