Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -rc1b9ac0dbf2196280895d2e440dd7ac288ac8424 -rfed8ef4f0540818dfb7ca670a65eac39c12cb25a --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision c1b9ac0dbf2196280895d2e440dd7ac288ac8424) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision fed8ef4f0540818dfb7ca670a65eac39c12cb25a) @@ -37,6 +37,7 @@ // ********** private definitions ********** #define MAX_DIALYSATE_VOLUME_ML ( 150 * ML_PER_LITER ) ///< Maximum dialysate volume (in mL) +#define MAX_HEPARIN_VOLUME_ML 10 ///< Maximum heparin volume ( in mL ) #define NO_HEPARIN_PRE_STOP_TIME_SET 0 ///< Zero value indicates no Heparin pre-stop time was set by user @@ -557,7 +558,11 @@ stagedParams[ TREATMENT_PARAM_ART_PRESSURE_LOW_LIMIT ].sInt; S32 venousPresLimitDelta = stagedParams[ TREATMENT_PARAM_VEN_PRESSURE_HIGH_LIMIT ].sInt - \ stagedParams[ TREATMENT_PARAM_VEN_PRESSURE_LOW_LIMIT ].sInt; + F32 heparinVolume_mL = ( stagedParams[ TREATMENT_PARAM_HEPARIN_DISPENSE_RATE ].sFlt * \ + ( stagedParams[ TREATMENT_PARAM_TREATMENT_DURATION ].uInt - stagedParams[ TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME ].uInt ) ) + \ + stagedParams[ TREATMENT_PARAM_HEPARIN_BOLUS_VOLUME ].sFlt + SYRINGE_PUMP_PRIME_VOLUME_ML + SYRINGE_PUMP_HW_TOLERANCE_ML; + // Check max dialysate volume dependency if ( dialysateVolume_mL > MAX_DIALYSATE_VOLUME_ML ) { @@ -582,6 +587,12 @@ result = FALSE; } + // Check max heparin volume dependency + if (heparinVolume_mL > MAX_HEPARIN_VOLUME_ML ) + { + reasons[ TREATMENT_PARAM_HEPARIN_PRE_STOP_TIME ] = REQUEST_REJECT_REASON_EXCEEDS_MAXIMUM_HEPARIN_VOLUME; + result = FALSE; + } // Check arterial alarm limits dependency if ( arterialPresLimitDelta < MIN_PRESSURE_ALARM_LIMIT_DELTA_MMHG ) {