# Subject/Title: LDT -4177 Post-Treatment - SW - 02 - TxReview - Q&R - 15: SIT - Software Integration Tests - Squish Qt # # Functionalities: Testing of Post-Treatment Tx review # # Steps: # 1. Navigate to the Post Treatment review page # 1. On the Review page check the request in the firmware # 2. Test the response in the UI page # import names from configuration import config, utility, navigation, application_init from leahi_dialin.ui import utils from leahi_dialin.ui.td_messaging import TD_Messaging from leahi_dialin.common.td_defs import TDOpModes from leahi_dialin.common.msg_defs import MsgIds from leahi_dialin.protocols import CAN from pathlib import Path td_simulator = TD_Messaging() can_interface = td_simulator.can_interface bloodSetAutoEject = False # handler for messages from UI to FW def handle_blood_set_auto_eject_request(message, timestamp=0.0): """ Called when the user requests to firmware from UI @return: None """ global bloodSetAutoEject bloodSetAutoEject = True def verify_values_tx_review(): test.startSection("Verify the firmware response values in the End Treatment page") td_simulator.td_post_tx_logs_response( vAccepted = 1, vRejectionReason = 0, vBloodFlowRate = config.blood_flow_prescribed, vBloodFlowRateActual = config.blood_flow_actual, vDialysateFlowRate = config.dialysis_flow_prescribed, vDialysateFlowRateActual = config.dialysis_flow_actual, vTreatmentDuration = 0, vTreatmentDurationActual = 0, vAcidConcentrateType = config.acid_concentrate, vAcidConcentrateTypeActual = config.acid_concentrate_actual, vBicarbonateCartridgeSize = 0, vBicarbonateCartridgeSizeActual = 40, vPotassiumConcentration = config.potassium_concentrate, vPotassiumConcentrationActual = config.potassium_concentrate_actual, vCalciumConcentration = config.calcium_concentrate, vCalciumConcentrationActual = config.calcium_concentrate_actual, vBicarbonateConcentration = config.bicarbonate_concentrate , vBicarbonateConcentrationActual = config.bicarbonate_concentrate_actual, vSodiumConcentration = 0, vSodiumConcentrationActual = 0, vVitalsInterval = 5, vVitalsIntervalActual = 10, vDialyzerType = 0, vTreatmentStartEpoch = 0, vTreatmentEndEpoch = 0, vFluidBolusVolume = 0, vFluidBolusVolumeActual = 0, vHeparinType = 0, vHeparinDeliveryDuration = 0, vHeparinDeliveryDurationActual = 0, vTreatmentModality = 0, vTreatmentModalityActual = 0, vHDFOperatingMode = 0, vHDFOperatingModeActual = 0, vHepatitisStatus = 0, vDialysateTemperature = config.dialysate_temperature, vDialysateTemperatureActual = config.dialysate_temperature_actual, vDialysateVolumeUsed = config.dialysate_volume, vHeparinBolusVolume = 13.0, vHeparinBolusVolumeActual = 14.0, vHeparinDispenseRate = 15.0, vHeparinDispenseRateActual = 16.0, vHeparinDeliveredVolume = 17.0, vUFVolume = 18.0, vUFVolumeActual = 19.0, vUFVolumeTarget = 20.0, vUFRate = 21.0, vUFRateActual = 22.0, vUFRateTarget = 0, vSubstitutionVolume = 0, vSubstitutionVolumeActual = 0, vSubstitutionVolumeTarget = 0, vSubstitutionRate = 0, vSubstitutionRateActual = 0, vSubstitutionRateTarget = 0, vIsoUfVolume = 23.0, vIsoUfVolumeActual = 24.0, vIsoUfVolumeTarget = 25.0, vIsoUfRate = 26.0, vIsoUfRateActual = 27.0, vIsoUfRateTarget = 28.0, vWaterSampleTestResult = 0) blood_flow_prescribed_obj = waitForObject(names.o_PostTreatmentBase_bloodFlowDiaysate_ReviewContainer) blood_flow_prescribed_value_obj = utility.findChildByText(blood_flow_prescribed_obj, "Blood Flow Rate") blood_flow_prescribed_initial_value = utility.findObjectById(blood_flow_prescribed_value_obj, "_initial") test.compare(str(blood_flow_prescribed_initial_value.text),str(config.blood_flow_prescribed), "Blood flow prescribed value should be"+str(config.blood_flow_prescribed)) blood_flow_prescribed_actual_value = utility.findObjectById(blood_flow_prescribed_value_obj,"_actual") test.compare(str(blood_flow_prescribed_actual_value.text),str(config.blood_flow_actual), "Blood flow actual value should be"+ str(config.blood_flow_actual)) dialysis_flow_value_obj = utility.findChildByText(blood_flow_prescribed_obj, "Dialysis Flow Rate") dialysis_flow_value_initial_value = utility.findObjectById(dialysis_flow_value_obj, "_initial") test.compare(str(dialysis_flow_value_initial_value.text),str(config.dialysis_flow_prescribed), "Dialysis flow prescribed value should be"+str(config.dialysis_flow_prescribed)) dialysis_flow_value_actual_value = utility.findObjectById(dialysis_flow_value_obj,"_actual") test.compare(str(dialysis_flow_value_actual_value.text),str(config.dialysis_flow_actual), "Dialysis flow actual value should be"+ str(config.dialysis_flow_actual)) dialyzer_type = utility.findChildByText(blood_flow_prescribed_obj,"Dialyzer Type") test.compare(str(dialyzer_type.text),str(config.dialyzer_type), "Dialyzer type value should be"+ str(config.dialyzer_type)) dialysate_temp_value_obj = utility.findChildByText(blood_flow_prescribed_obj, "Dialysate Temperature") dialysate_temp_initial_value = utility.findObjectById(dialysate_temp_value_obj, "_initial") test.compare(str(dialysate_temp_initial_value.text),str(config.dialysate_temperature), "Dialysate temperature value should be"+str(config.dialysate_temperature)) dialysate_temp_actual_value = utility.findObjectById(dialysate_temp_value_obj,"_actual") test.compare(str(dialysate_temp_actual_value.text),str(config.dialysate_temperature_actual), "Dialysate temperature actual value should be"+ str(config.dialysate_temperature_actual)) dialysate_volume_value_obj = utility.findChildByText(blood_flow_prescribed_obj, "Dialysate Volume Used") dialysate_volume_initial_value = utility.findObjectById(dialysate_volume_value_obj, "_initial") test.compare(f"{float(str(dialysate_volume_initial_value.text).strip()):.1f}",f"{float(str(config.dialysate_volume)):.1f}","Dialysate volume value should be " + str(config.dialysate_volume)) mouseWheel(waitForObject(names.o_PostTreatmentBase_ScrollBar), 387, 510, 0, -45, Qt.NoModifier) potassium_concentrate_obj = waitForObject(names.o_PostTreatmentBase_concentrateSettings_ReviewContainer) potassium_concentrate_value_obj = utility.findChildByText(potassium_concentrate_obj, "Potassium Concentration") potassium_concentrate_initial_value = utility.findObjectById(potassium_concentrate_value_obj, "_initial") test.compare(str(potassium_concentrate_initial_value.text),str(config.potassium_concentrate), "Potassium concentrate value should be"+str(config.potassium_concentrate)) potassium_concentrate_actual_value = utility.findObjectById(potassium_concentrate_value_obj,"_actual") test.compare(str(potassium_concentrate_actual_value.text),str(config.potassium_concentrate_actual), "Potassium concentrate actual value should be"+ str(config.potassium_concentrate_actual)) calcium_concentrate_obj = waitForObject(names.o_PostTreatmentBase_concentrateSettings_ReviewContainer) calcium_concentrate_value_obj = utility.findChildByText(calcium_concentrate_obj, "Calcium Concentration") calcium_concentrate_initial_value = utility.findObjectById(calcium_concentrate_value_obj, "_initial") test.compare(str(calcium_concentrate_initial_value.text),str(config.calcium_concentrate), "Calcium concentrate value should be"+str(config.calcium_concentrate)) calcium_concentrate_actual_value = utility.findObjectById(calcium_concentrate_value_obj,"_actual") test.compare(str(calcium_concentrate_actual_value.text),str(config.calcium_concentrate_actual), "Calcium concentrate actual value should be"+ str(config.calcium_concentrate_actual)) bicarbonate_concentrate_obj = waitForObject(names.o_PostTreatmentBase_concentrateSettings_ReviewContainer) bicarbonate_concentrate_value_obj = utility.findChildByText(bicarbonate_concentrate_obj, "Bicarbonate Concentration") bicarbonate_concentrate_initial_value = utility.findObjectById(bicarbonate_concentrate_value_obj, "_initial") test.compare(str(bicarbonate_concentrate_initial_value.text),str(config.bicarbonate_concentrate), "Bicarbonate concentrate value should be"+str(config.bicarbonate_concentrate)) bicarbonate_concentrate_actual_value = utility.findObjectById(bicarbonate_concentrate_value_obj,"_actual") test.compare(str(bicarbonate_concentrate_actual_value.text),str(config.bicarbonate_concentrate_actual), "Bicarbonate concentrate actual value should be"+ str(config.bicarbonate_concentrate_actual)) test.endSection() def main(): utils.tstStart(__file__) test.startSection("Post-Treatment Foundation") if can_interface is None: test.fail("CAN Interface is not available. Stopping tests.") return channel_id = CAN.CanChannels.ui_to_td_ch_id # Register Blood Set Auto Eject Request message_id = MsgIds.MSG_ID_UI_ADJUST_DISPOSABLES_REMOVAL_CONFIRM_REQUEST.value can_interface.register_receiving_publication_function( channel_id, message_id, handle_blood_set_auto_eject_request ) startApplication(utility.aut("-q")) td_simulator.td_operation_mode(TDOpModes.MODE_STAN.value) td_simulator.td_operation_mode(TDOpModes.MODE_POST.value) post_treatment = utility.get_object_from_names(names.o_PostTreatmentStack_PostTreatmentStack) mouseClick(waitForObject(utility.findChildByText(post_treatment, config.CONTINUE), 3000)) td_simulator.td_patient_disconnect_confirm_response(vAccepted = 1, vRejectionReason = 0) mouseClick(waitForObject(utility.findChildByText(post_treatment, config.CONTINUE), 3000)) mouseClick(waitForObject(utility.findChildByText(post_treatment, config.AUTO_EJECT), 3000)) test.verify( waitFor(lambda: bloodSetAutoEject == True, 3000),"Testing UI -> TD message Auto Eject",) td_simulator.td_blood_set_auto_eject_response(vAccepted = 1, vRejectionReason = 0) verify_values_tx_review() test.endSection() utils.tstDone()