Index: firmware/App/Modes/ModePostTreat.c =================================================================== diff -u -r3970ba21aa2500f662620ef3d4b3e1e7a48fc47a -ra1191a670ad0d101072076bab4192294d1449223 --- firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision 3970ba21aa2500f662620ef3d4b3e1e7a48fc47a) +++ firmware/App/Modes/ModePostTreat.c (.../ModePostTreat.c) (revision a1191a670ad0d101072076bab4192294d1449223) @@ -139,7 +139,7 @@ setAlarmUserActionEnabled( ALARM_USER_ACTION_RINSEBACK, FALSE ); setAlarmUserActionEnabled( ALARM_USER_ACTION_END_TREATMENT, FALSE ); - doorClosedRequired( FALSE, FALSE ); + doorClosedRequired( TRUE, TRUE ); cmdStopDGTrimmerHeater(); @@ -369,7 +369,7 @@ { // Done with draining the reservoirs state = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; - doorClosedRequired( TRUE, TRUE ); + doorClosedRequired( FALSE, FALSE ); setCurrentSubState( NO_SUB_STATE ); } @@ -386,10 +386,6 @@ *************************************************************************/ static HD_POST_TREATMENT_STATE_T handlePostTreatmentPatientDisconnectionState( void ) { - VALVE_T valve; - - F32 bolusVol = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ); - F32 hepRate = getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ); HD_POST_TREATMENT_STATE_T state = HD_POST_TREATMENT_PATIENT_DISCONNECTION_STATE; OPN_CLS_STATE_T frontDoor = getSwitchStatus( FRONT_DOOR ); OPN_CLS_STATE_T pumpTrack = getSwitchStatus( PUMP_TRACK_SWITCH ); @@ -407,22 +403,6 @@ { patientDisconnectionConfirmed = FALSE; state = HD_POST_TREATMENT_DISPOSABLE_REMOVAL_STATE; - - for ( valve = VDI; valve < NUM_OF_VALVES; valve++ ) - { - setValvePosition( valve, VALVE_POSITION_A_INSERT_EJECT ); - } - - homeBloodPump(); - homeDialInPump(); - homeDialOutPump(); - - doorClosedRequired( FALSE, FALSE ); - - if ( ( bolusVol > 0.0 ) || ( hepRate > 0.0 ) ) - { - retractSyringePump(); - } } } @@ -633,11 +613,27 @@ { if ( TRUE == hasDGCompletedReservoirSwitch() ) { + VALVE_T valve; + // Check if the reservoir switch has been completed // If this is the first drain, rinse the concentrate lines too rinseConcentrateLines = ( TRUE == isThisFirstDrain ? TRUE : FALSE ); dgCommandSent = FALSE; state = DRAIN_RESERVOIR_START_DRAIN_STATE; + + // Also home valves and pumps while front door is still closed. + homeBloodPump(); + homeDialInPump(); + homeDialOutPump(); + for ( valve = VDI; valve < NUM_OF_VALVES; valve++ ) + { + setValvePosition( valve, VALVE_POSITION_A_INSERT_EJECT ); + } + if ( ( getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ) > 0.0 ) || + ( getTreatmentParameterF32( TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ) > 0.0 ) ) + { + retractSyringePump(); + } } } else