########################################################################### # # Copyright (c) 2019-2021 Diality Inc. - All Rights Reserved. # # THIS CODE MAY NOT BE COPIED OR REPRODUCED IN ANY FORM, IN PART OR IN # WHOLE, WITHOUT THE EXPLICIT PERMISSION OF THE COPYRIGHT OWNER. # # @file utils.py # # @author (last) Joseph varghese # @date (last) 18-Jan-2022 # ############################################################################ import os AUT_NAME = "denaliSquish" COMMON_PATH = f"{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.", 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.", }