Index: shared/scripts/configuration/config.py =================================================================== diff -u -r3a6e5c144857d6b746000422b720b5b6b22fa72e -r9b3e2170cacd0aab59984e93aea8d054d67279d7 --- shared/scripts/configuration/config.py (.../config.py) (revision 3a6e5c144857d6b746000422b720b5b6b22fa72e) +++ shared/scripts/configuration/config.py (.../config.py) (revision 9b3e2170cacd0aab59984e93aea8d054d67279d7) @@ -1636,3 +1636,137 @@ SERVICE_CONF_LOCATION = os.environ['HOME']+"/Projects/application/resources/settings/Service.conf" VALID = True INVALID = False + + +#post-treatment +PATIENT_DISCONNECTION_TEXT = "Patient Disconnection" +REVIEW_TEXT = "Review" +EXPORT_TEXT = "Export" +PATIENT_DISCONNECTION_CONFIRM_BUTTON_TEXT = "CONFIRM" +DISPOSABLE_TEXT = "Disposables" +NEXT_TEXT = "NEXT" +BACK_TEXT = "BACK" +CONFIRM_TEXT = "CONFIRM" +DISPOSABLES_REMOVAL_TEXT = "Disposables Removal" +INCOMPLETE_COLOR_POST_TREATMENT = '#fcfcfc' +CURRENT_COLOR = '#000000' +COMPLETE_COLOR= '#4290ec' +ENABLED_COLOR = '#fcfcfc' +INCOMPLETE_COLOR = '#607a91' + +POST_TREATMENT_SCREENS = ["Disconnection", "Review", "Disposables", "Disinfection"] + +#post treatment review +HEPARIN_TYPE = "UFH 1,000 IU/mL" +ACID_CONCENTRATE = ["Fres. Naturalyte", "08-1251-1", "08-2251-0", "08-3251-9", "08-3251-9"] +BICARBONATE_CONCENTRATE = "Fres. Centrisol" +DIALYZER_TYPE = ["BB Diacap Pro 13H", "BB Diacap Pro 16H", "BB Diacap Pro 19H", "F Optiflux F160NRe", "F Optiflux F180NRe"] + +TREATMENT_LOG_LOCATION = '/home/denali/Desktop/sd-card/treatment/*.log' +TREATMENT_REVIEW_TITLE_TEXT = "Treatment Review" +VISIBLE = True + +POST_TREATMENT_REVIEW_SCREEN_PARAMETERS = ["Patient ID", "Heparin Stop", + "Device ID", "Heparin Delivered Volume", + "Blood Flow Rate", "Treatment Start DateTime", + "Dialysate Flow Rate", "Treatment End DateTime", + "Treatment Duration", "Water Sample Test Result", + "Actual Treatment Duration", "Dialysate Volume Used", + "Acid ConcentrateType", "Prescribed UF Volume", + "Bicarbonate Concentrate Type", "Target UF Volume", + "Potassium Concentration", "Actual UF Volume", + "Calcium Concentration", "Prescribed UF Rate", + "Bicarbonate Concentration", "Target UF Rate", + "Sodium Concentration", "Actual UF Rate", + "Dialysate Temperature", "Saline Bolus Volume", + "Dialyzer Type", "Average Blood Flow", + "Heparin Type", "Average Dialysate Flow", + "Heparin Concentration", "Average Dialysate Temp", + "Heparin Bolus Volume", "Average Arterial Pressure", + "Heparin Dispense Rate", "Average Venous Pressure"] + + +POST_TREATMENT_REVIEW_SCREEN_UNITS = { + "Patient ID" : "", + "Device ID" : "", + "Blood Flow Rate" : "mL/min", + "Dialysate Flow Rate" : "mL/min", + "Treatment Duration" : "min", + "Actual Treatment Duration":"min", + "Acid ConcentrateType" : "", + "Bicarbonate Concentrate Type" : "", + "Heparin Stop" : "min", + "Heparin Bolus Volume": "mL", + "Heparin Delivered Volume": "mL", + "Treatment Start DateTime" : "", + "Treatment End DateTime" : "", + "Water Sample Test Result": "", + "Dialysate Volume Used" : "L", + "Prescribed UF Volume" : "L", + "Target UF Volume" : "L", + "Potassium Concentration" : "mEg/L", + "Calcium Concentration" :"mEg/L", + "Bicarbonate Concentration" : "mEg/L", + "Sodium Concentration" : "mEg/L", + "Average Blood Flow" : "mL/min", + "Saline Bolus Volume" : "mL", + "Average Dialysate Flow" : "mL/min", + "Average Arterial Pressure" : "mmHg", + "Average Venous Pressure" : "mmHg", + "Dialysate Temperature" :"°C", + "Dialyzer Type" : "", + "Heparin Type" : "IU/mL", + "Heparin Concentration" : "IU/mL", + "Actual UF Volume" : "L", + "Prescribed UF Rate" : "mL/min", + "Target UF Rate": "mL/min", + "Actual UF Rate": "mL/min", + "Heparin Dispense Rate" : "mL/hr", + "Average Dialysate Flow" : "mL/min", + "Average Dialysate Temp" : "°C", + + } + + +#dictionary consist of review parameters values of post treatment +POST_TREATMENT_REVIEW_PARAMETER_RANGE = { + "Patient ID": ["abcd", "xyz", "qwerty", "dghjf", "cdtys"], + "Heparin Stop": [0, 101, 205, 307, 470], + "Device ID": [1234, 1234, 1234, 1234, 1234], + "Heparin Delivered Volume": [10.1, 10.5, 15.4, 18.9, 20.0], + "Blood Flow Rate": [100, 125, 150, 175, 500], + "Treatment Start DateTime": [1623382321, 1623382321, 1623382321, 1623382321, 1623382321], + "Dialysate Flow Rate": [100, 150, 200, 250, 600], + "Treatment End DateTime": [1623382321, 1623382321, 1623382321, 1623382321, 1623382321], + "Treatment Duration": [60, 75, 90, 105, 330, 480], + "Water Sample Test Result": [0, 1, 1, 1, 1], + "Actual Treatment Duration": [2, 6, 14, 67, 100], + "Dialysate Volume Used": [4.0, 6.0, 54.0, 67.0, 81.0], + "Acid ConcentrateType": [0, 1, 2, 3, 3], + "Prescribed UF Volume": [0.3, 0.5, 0.6, 10.0, 0.8, 5.8, 6.4], + "Bicarbonate Concentrate Type": [0, 0, 0, 0, 0], + "Target UF Volume": [10.1, 10.5, 15.4, 18.9, 20.0], + "Potassium Concentration": [60, 75, 90, 105, 330, 465, 480], + "Actual UF Volume": [0.3, 0.5, 0.6, 10.0, 0.8, 5.8, 6.4], + "Calcium Concentration": [3, 56, 100, 154, 67], + "Prescribed UF Rate": [0.1, 0.55, 0.9, 5.1, 6.7], + "Bicarbonate Concentration": [14, 50, 67, 156, 1], + "Target UF Rate": [0.2, 0.56, 0.45, 2.56, 10.93], + "Sodium Concentration": [4, 6, 54, 67, 81, 100], + "Actual UF Rate": [0.5, 0.6, 10.0, 0.8, 5.8, 6.4], + "Dialysate Temperature": [35.0, 35.5, 36.0, 36.5, 37.0], + "Saline Bolus Volume": [300, 250, 200, 150, 300], + "Dialyzer Type": [0, 1, 2, 3, 4], + "Average Blood Flow": [54.3, 67.3, 65.89, 75.89, 48.76], + "Heparin Type": [0, 0, 0, 0, 0], + "Average Dialysate Flow": [0.6, 0.5, 5.8, 6.4, 10.0, 0.8], + "Average Dialysate Temp": [35.0, 35.5, 36.0, 36.5, 37.0], + "Heparin Bolus Volume": [0.0, 0.1, 1.5, 1.6, 2.0], + "Average Arterial Pressure": [0.0, 11.56, 154.46, 225.57, 300.0], + "Heparin Dispense Rate": [0.0, 0.1, 0.2, 0.9, 1.0], + "Average Venous Pressure": [20.0, 101.45, 394.56, 447.45, 600.00], + + +} + + \ No newline at end of file Index: shared/scripts/configuration/utility.py =================================================================== diff -u -r8570137444e39574b26b2e57c704ba8efd195504 -r9b3e2170cacd0aab59984e93aea8d054d67279d7 --- shared/scripts/configuration/utility.py (.../utility.py) (revision 8570137444e39574b26b2e57c704ba8efd195504) +++ shared/scripts/configuration/utility.py (.../utility.py) (revision 9b3e2170cacd0aab59984e93aea8d054d67279d7) @@ -11,17 +11,18 @@ # ############################################################################ - import csv import glob import math import object -import os import names import sys -import squish -import time +import builtins +import names +import os import test +import time +import squish from builtins import format from builtins import int as pyInt @@ -39,7 +40,82 @@ def color_verification(exp_val = "Red", act_val = "#c53b33"): test.compare(config.COLOR_CODES[color_name],(act_val.color[name])) - + + +def verify_page_step_indicator(screen_obj, post_treatment_step): + """ + Method to verify the Page Step indicators [the object on top of the screen which indicates the steps passed, current, remained] + @param post_treatment_step : (int) indicates the Current post-treatment step + """ + test.startSection("verification of page step indicators") + for page in range(config.NUM_OF_POST_TREATMENT_BULLETS): + bullet_children = object.children(squish.waitForObjectExists(get_bullet_object(screen_obj, page))) + bullet_circle_color = bullet_children[0].color.name + #test.log() + bullet_border_color = bullet_children[0].border.color.name + step_title = squish.waitForObjectExists(get_text_object(screen_obj, config.POST_TREATMENT_SCREENS[page])) + #To verify the step indicators of the completed post treatment screens + if page < post_treatment_step: + test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current) + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) + test.compare(bullet_circle_color, config.CURRENT_COLOR) + test.compare(bullet_border_color,config.COMPLETE_COLOR) + test.compare(step_title.color.name,config.ENABLED_COLOR) + #To verify the step indicators of the current post treatment screen + elif page == post_treatment_step: + test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current,) + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) + test.compare(bullet_circle_color,config.CURRENT_COLOR) + test.compare(bullet_border_color,config.COLOR) + test.compare(step_title.color.name,config.ENABLED_COLOR_ONE) + test.verify(step_title.font.bold) + #To verify the step indicators of the remaining post treatment screens + else: + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current,) + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete,) + test.compare(step_title.color.name,config.COLOR) + test.compare(bullet_circle_color,config.CURRENT_COLOR) + test.compare(bullet_border_color,config.COLOR) + test.endSection() + + +def get_text_object(screen_obj, txt): + """ + To obtain a text object based on text provided + @param screen_obj: provides the container on which the txt must be present + @returns a real name object + """ + names.o_text_object["container"] = screen_obj + names.o_text_object["text"] = txt + return names.o_text_object + + +def get_bullet_object(screen_obj, num): + """ + To obtain a bullet object based on occurrence provided. + @param screen_obj: provides the container on which the bullet must be present + @param num: provides the occurrence value + @returns a real name object + """ + names.o_bullet_object["container"] = screen_obj + names.o_bullet_object["occurrence"] = num + 1 + return names.o_bullet_object + + +def get_indicators(screen_obj, txt): + """ + Verifying the busy indicators for BiCarb Pump Check and Acid Pump Check. + indicator object of expected text + @param step - (str) expected text + @return indicators - (obj) list of busy and check indicator + """ + parent_obj = object.parent(squish.waitForObjectExists(get_text_object(screen_obj,txt))) + children_obj = object.children(parent_obj) + indicator_parent = children_obj[2] + indicators = object.children(indicator_parent) + return indicators + + def check_if_object_is_within_the_container(obj=None, container=None): """ check if an object is inside a container @@ -51,19 +127,18 @@ containerPos = container.mapToGlobal(squish.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)) obj_x, obj_y = pyInt(objPos.x), pyInt(objPos.y) obj_width, obj_height = pyInt(obj.width), pyInt(obj.height) - + if obj_x >= container_x and obj_y >= container_y: if (obj_x + obj_width) <= (container_x + container_width) and (obj_y + obj_height) <= (container_y + container_height): return True - + return False - def pressure_pop_up_text_obj(text): names.o_pop_up_pressure_text_obj["text"] = text return names.o_pop_up_pressure_text_obj @@ -111,10 +186,10 @@ 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 zone if object is hidden + @param zone - (obj) UI object + @param screen_object - (obj) UI object + @return boolean true and false """ counter = 0 while counter <= 100: @@ -1210,6 +1285,7 @@ message[value] = float(message[value]) if int_status is True: message[value] = int(message[value]) + test.log(str(message)) return message else: pass @@ -1739,6 +1815,94 @@ except ValueError: return False +def scroll_to_zone(zone=None, screen_object=None, direction = None): + """ + 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: + try: + counter += 1 + squish.snooze(0.5) + 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, 50, squish.Qt.NoModifier) + + raise LookupError("zone object is not in view to the user after " + \ + "trying 100 times") + + +def convert_seconds_into_min_and_sec(seconds, time_format="%M:%S"): + """ + Method to convert seconds into minute format. + @param seconds - time in seconds. + @param time_format (str) - time format. + @return (int) - minute time + """ + seconds = builtins.int(seconds) + min_and_sec = time.strftime(time_format, time.gmtime(seconds)) + return min_and_sec + + +def verify_parameter_from_post_treatment_log(msg_text): + """ + To obtain the details of parameter from post treatment log file. + @param msg_text: parameter to be extracted. + @returns message value and message unit + """ + try: + log_location = str(get_extracted_file_from_post_treatment()) + with open(log_location, 'r') as csv_file: + try: + for row in csv_file: + reader = csv.reader(csv_file) + for row in reader: + row_length = sum(1 for values in row) + for row1 in row: + if row[0]!= None and row[0] == msg_text and row_length == 3: + return (row[1],row[2]) + else: + pass + except: + test.fail("Treatment log data is corrupted") + except: + test.fail("Log file is not created or log file is not created based on standard log naming format.") + + +def get_extracted_file_from_post_treatment(): + """ + This function is the handler for getting file from log folder. + + This handler will go inside log folder and looks for newly added log based on current time. + if it satisfied that condition, it will return the exact path of newly created log. + + @return latest_file - (string) returns latest file that append on log folder from sd-data + """ + try: + list_of_files = glob.glob(config.TREATMENT_LOG_LOCATION) + latest_file = max(list_of_files, key=os.path.getctime) + return latest_file + except: + test.fail("log file is not created during application interaction") + return False + + def get_extracted_file(): """ This function is the handler for getting file from log folder. @@ -1750,12 +1914,9 @@ @return latest_file - (string) returns latest file that append on log folder from sd-data """ -# try: current_date = get_current_date_and_time(date_format = "%Y_%m_%d") latest_file = '/home/denali/Desktop/sd-card/log/'+current_date+'_denaliSquish.log' return latest_file -# except: -# return False def get_message_from_log(file_name, message_text): @@ -1890,7 +2051,6 @@ """ content_record = [] file_name = get_extracted_file() - test.log(str(file_name)) if message_text != None: message = get_message_from_log(file_name, message_text) content_record.append(message) @@ -1903,3 +2063,92 @@ ack_bak_status = get_bak_request_details(file_name, ack_bak_value) content_record.append(ack_bak_status) return content_record + + +def get_text_object(screen_obj, txt): + """ + To obtain a text object based on text provided + @param screen_obj: provides the container on which the txt must be present + @returns a real name object + """ + names.o_text_object["container"] = screen_obj + names.o_text_object["text"] = txt + return names.o_text_object + + +def get_bullet_object(screen_obj, num): + """ + To obtain a bullet object based on occurrence provided. + @param screen_obj: provides the container on which the bullet must be present + @param num: provides the occurrence value + @returns a real name object + """ + names.o_bullet_object["container"] = screen_obj + names.o_bullet_object["occurrence"] = num + 1 + return names.o_bullet_object + + +def get_indicators(screen_obj, txt): + """ + Verifying the busy indicators for BiCarb Pump Check and Acid Pump Check. + indicator object of expected text + @param step - (str) expected text + @return indicators - (obj) list of busy and check indicator + """ + parent_obj = object.parent(squish.waitForObjectExists(get_text_object(screen_obj,txt))) + children_obj = object.children(parent_obj) + indicator_parent = children_obj[2] + indicators = object.children(indicator_parent) + return indicators + + +def verify_missing_object(object_to_check): + """ + Method to verify the given object is invisible or is not present on the screen + @param object_to_check: the object whose invisibility must be verified + """ + try: + squish.testSettings.objectNotFoundDebugging = False + squish.waitForObject(object_to_check,3000) + test.fail("Given object should not be present initially") + except LookupError as _: + test.passes("object is not present as expected") + + squish.testSettings.objectNotFoundDebugging = True + + +def verify_page_step_indicator_post_treatment(screen_obj, post_treatment_step): + """ + Method to verify the Page Step indicators [the object on top of the screen which indicates the steps passed, current, remained] + @param post_treatment_step : (int) indicates the Current post-treatment step + + """ + test.startSection("verification of page step indicators") + for page in range(len(config.POST_TREATMENT_SCREENS)): + bullet_children = object.children(squish.waitForObjectExists(get_bullet_object(screen_obj, page))) + bullet_circle_color = bullet_children[0].color.name + bullet_border_color = bullet_children[0].border.color.name + step_title = squish.waitForObjectExists(get_text_object(screen_obj, config.POST_TREATMENT_SCREENS[0])) + #To verify the step indicators of the completed post-treatment screens + if page < post_treatment_step: + test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current) + test.compare(bullet_circle_color, config.COMPLETE_COLOR) + test.compare(bullet_border_color,config.COMPLETE_COLOR) + test.compare(step_title.color.name,config.ENABLED_COLOR) + #To verify the step indicators of the current post-treatment screen + elif page == post_treatment_step: + test.verify(squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current,) + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete) + test.compare(bullet_circle_color,config.CURRENT_COLOR) + test.compare(bullet_border_color,config.COMPLETE_COLOR) + test.compare(step_title.color.name,config.ENABLED_COLOR) + #To verify the step indicators of the remaining post-treatment screens + else: + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).current,) + test.verify(not squish.waitForObjectExists(get_bullet_object(screen_obj, page)).complete,) + test.compare(step_title.color.name,config.INCOMPLETE_COLOR_POST_TREATMENT) + test.compare(bullet_circle_color,config.CURRENT_COLOR) + test.compare(bullet_border_color,config.INCOMPLETE_COLOR) + test.endSection() + Index: shared/scripts/names.py =================================================================== diff -u -r0bdfe99af7b51d00f774e621d4e04fe450f7531c -r9b3e2170cacd0aab59984e93aea8d054d67279d7 --- shared/scripts/names.py (.../names.py) (revision 0bdfe99af7b51d00f774e621d4e04fe450f7531c) +++ shared/scripts/names.py (.../names.py) (revision 9b3e2170cacd0aab59984e93aea8d054d67279d7) @@ -1146,6 +1146,7 @@ o_PreTreatmentBase_CONFIRM_Text_2 = {"container":o_PreTreatmentConnectionStack_PreTreatmentBase_TreatmentFlowBase_2, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} o_interval_obj = {"container":o_treatmentStack_treatmentHome_TreatmentHome, "id": "_text", "type": "Text", "unnamed": 1, "visible": True} + #settings_Home o_settings_Text = {"container": o_Gui_MainView, "text": "Settings", "type": "Text", "unnamed": 1, "visible": True} o_SettingsHome_SettingsHome = {"container": o_Gui_MainView, "objectName": "_SettingsHome", "type": "SettingsHome", "visible": True} @@ -1171,4 +1172,60 @@ o_shutdown_text = {"container": o_Gui_MainView, "text": "SHUTDOWN", "type": "Text", "unnamed": 1, "visible": True} +#post-treatment +o_text_object = {"type": "Text", "unnamed": 1, "visible": True} +o_bullet_object = {"type": "StepBullet", "unnamed": 1, "visible": True} +o_PostTreatmentStack_PostTreatmentStack = {"container": o_Gui_MainView, "objectName": "_PostTreatmentStack", "type": "PostTreatmentStack", "visible": True} +o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase = {"container": o_PostTreatmentStack_PostTreatmentStack, "objectName": "_patientDisconnectionConfirm", "type": "TreatmentFlowBase", "visible": True} +o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase = {"container": o_PostTreatmentStack_PostTreatmentStack, "objectName": "_disposablesRemovalConfirm", "type": "TreatmentFlowBase", "visible": True} +o_patientDisconnectionConfirm_Patient_Disconnection_Text = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "text": "Patient Disconnection", "type": "Text", "unnamed": 1, "visible": True} +o_patient_Disconnection_left_arrow = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} +o_patientDisconnectionConfirm_rightImage_Image = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "id": "_rightImage", "source": "qrc:/images/iArrowRight", "type": "Image", "unnamed": 1, "visible": True} +o_patientDisconnectionConfirm_lefttImage_Image = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} +o_patientDisconnectionConfirm_Button = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_PostTreatmentStack_PostTreatmentStack = {"container": o_Gui_MainView, "objectName": "_PostTreatmentStack", "type": "PostTreatmentStack", "visible": True} +o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase = {"container": o_PostTreatmentStack_PostTreatmentStack, "objectName": "_patientDisconnectionConfirm", "type": "TreatmentFlowBase", "visible": True} +o_patient_disconnection_text = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "text": "Patient Disconnection", "type": "Text", "unnamed": 1, "visible": True} +o_patient_Disconnection_right_arrow = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "id": "_rightImage", "source": "qrc:/images/iArrowRight", "type": "Image", "unnamed": 1, "visible": True} +o_patient_Disconnection_left_arrow = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} +o_patient_disconnection_confirm_button = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview = {"container": o_PostTreatmentStack_PostTreatmentStack, "objectName": "_treatmentReviewConfirm", "type": "PostTreatmentReview", "visible": True} +o_treatment_review_next_text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "text": "NEXT", "type": "Text", "unnamed": 1, "visible": True} +o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase = {"container": o_PostTreatmentStack_PostTreatmentStack, "objectName": "_disposablesRemovalConfirm", "type": "TreatmentFlowBase", "visible": True} +o_disposablesRemovalConfirm_swipeview_SwipeView = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "id": "_swipeview", "type": "SwipeView", "unnamed": 1, "visible": True} +o_disposables_removal_backButton = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "objectName": "_backButton", "type": "BackButton", "visible": True} +o_treatment_review_next_button = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "objectName": "_confirmButton", "type": "TouchRect", "visible": True} +o_treatmentReviewConfirm_ExportButton = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "gradient": 0, "type": "ExportButton", "unnamed": 1, "visible": True} +o_disposables_removal_confirm_button = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "objectName": "_confirmButton", "type": "TouchRect", "visible": True} +o_disposablesRemovalConfirm_BACK_Text = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "text": "BACK", "type": "Text", "unnamed": 1, "visible": True} +o_disposables_removal_confirm_button_text = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_disposables_removal_left_arrow = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} +o_disposables_removal_right_arrow = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "id": "_rightImage", "source": "qrc:/images/iArrowRight", "type": "Image", "unnamed": 1, "visible": True} +o_disposables_removal_text = {"container": o_PostTreatmentStack_disposablesRemovalConfirm_TreatmentFlowBase, "text": "Disposables Removal", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentReviewConfirm_Export_Text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "text": "Export", "type": "Text", "unnamed": 1, "visible": True} +o_right_arrow = {"id": "_rightImage", "source": "qrc:/images/iArrowRight", "type": "Image", "unnamed": 1, "visible": True} +o_left_arrow = {"id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} + +#post treatment review +o_Gui_MainView = {"type": "Gui::MainView", "unnamed": 1, "visible": True} +o_PostTreatmentStack_PostTreatmentStack = {"container": o_Gui_MainView, "objectName": "_PostTreatmentStack", "type": "PostTreatmentStack", "visible": True} +o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview = {"container": o_PostTreatmentStack_PostTreatmentStack, "objectName": "_treatmentReviewConfirm", "type": "PostTreatmentReview", "visible": True} +o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview_ONE = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "type": "Text", "unnamed": 1, "visible": True} +o_review_area = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "id": "_flickable", "type": "Flickable", "unnamed": 1, "visible": True} +o_review_text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "type": "Text", "unnamed": 1, "visible": True} + +#patient ID from create custom treatment +o_input_patient_id = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "echoMode": 0, "id": "_input", "type": "TextInput", "unnamed": 1, "visible": True} +o_confirm_button = {"container": o_PreTreatmentCreateStack_PreTreatmentBase_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_right_arrow = {"id": "_rightImage", "source": "qrc:/images/iArrowRight", "type": "Image", "unnamed": 1, "visible": True} +o_left_arrow = {"id": "_leftImage", "source": "qrc:/images/iArrowLeft", "type": "Image", "unnamed": 1, "visible": True} +o_patientDisconnectionConfirm_Button = {"container": o_PostTreatmentStack_patientDisconnectionConfirm_TreatmentFlowBase, "text": "CONFIRM", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentReviewConfirm_NEXT_Text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "text": "NEXT", "type": "Text", "unnamed": 1, "visible": True} +o_treatmentReviewConfirm_patient_ID_Text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentReviewConfirm_500_Text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "text": 500, "type": "Text", "unnamed": 1, "visible": True} +o_treatmentReviewConfirm_Calcium_Concentration_Text = {"container": o_PostTreatmentStack_treatmentReviewConfirm_PostTreatmentReview, "text": "Calcium Concentration", "type": "Text", "unnamed": 1, "visible": True} + + + +