Index: firmware/App/Modes/ModeTreatmentParams.c =================================================================== diff -u -raddd69fc864448c17a4a68b2bfa466af5483f987 -r8d3dbd25627fb7e993409eb47b2575e0430afddd --- firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision addd69fc864448c17a4a68b2bfa466af5483f987) +++ firmware/App/Modes/ModeTreatmentParams.c (.../ModeTreatmentParams.c) (revision 8d3dbd25627fb7e993409eb47b2575e0430afddd) @@ -47,6 +47,7 @@ #define INSTIT_MAX_INLET_WATER_COND_ALARM_USPCM 300.0F ///< Institutional record max inlet water conductivity alarm in uS/cm. #define INSTIT_MAX_MIN_VEN_PRES_WIDE_LIMIT_MMHG 400 ///< Institutional record max min venous pressure wide limit in mmHg. #define INSTIT_MIN_MIN_VEN_PRES_WIDE_LIMIT_MMHG 0 ///< Institutional record min min venous pressure wide limit in mmHg. +#define RINSEBACK_MIN_VEN_PRESSURE_MMHG -100 ///< Minimum venous pressure (in mmHg) while in rinseback state. /// Record for range and default of treatment parameters. typedef struct @@ -959,9 +960,19 @@ * @details Outputs: none * @return the min venous pressure wide limit window in mmHg. *************************************************************************/ -S32 getMinVenousPressureWideValueMMHG( void ) +S32 getMinVenousPressureWideValueMMHG( void ) { - return hdInstitutionalRecord.minVenPressWideLimitWindowMMHG; + S32 minVenPressureLimit = hdInstitutionalRecord.minVenPressWideLimitWindowMMHG; + HD_OP_MODE_T opMode = getCurrentOperationMode(); + TREATMENT_STATE_T curTxState = getTreatmentState(); + + // while in rinseback state of treatment mode, the minimum venous pressure limit is reduced + if ( ( MODE_TREA == opMode ) && ( TREATMENT_RINSEBACK_STATE == curTxState ) ) + { + minVenPressureLimit = RINSEBACK_MIN_VEN_PRESSURE_MMHG; + } + + return minVenPressureLimit; } /*********************************************************************//** @@ -1047,8 +1058,12 @@ result &= ( ( nvInstRcrd->minRORejectionRatioPCT <= INSTIT_MIN_RO_REJECTION_RATIO_MAX_PCT ) ? TRUE : FALSE ); result &= ( ( nvInstRcrd->minInletWaterCondAlarmLimitUSPCM >= 0.0F ) && ( nvInstRcrd->minInletWaterCondAlarmLimitUSPCM <= INSTIT_MAX_INLET_WATER_COND_ALARM_USPCM ) ? TRUE : FALSE ); - result &= ( ( nvInstRcrd->minVenPressWideLimitWindowMMHG <= INSTIT_MAX_MIN_VEN_PRES_WIDE_LIMIT_MMHG ) && - ( nvInstRcrd->minVenPressWideLimitWindowMMHG >= INSTIT_MIN_MIN_VEN_PRES_WIDE_LIMIT_MMHG ) ? TRUE : FALSE ); + result &= ( ( nvInstRcrd->minVenPressWideLimitWindowMMHG <= INSTIT_MAX_MIN_VEN_PRES_WIDE_LIMIT_MMHG ) && + ( nvInstRcrd->minVenPressWideLimitWindowMMHG >= INSTIT_MIN_MIN_VEN_PRES_WIDE_LIMIT_MMHG ) ? TRUE : FALSE ); + // NOTE: the treatment end blood flow rate in mL/min can be either 0 or 100 <= blood flow mL/min <= 500. + result &= ( ( nvInstRcrd->txEndBloodFlowMLPM == 0 ) || + ( ( nvInstRcrd->txEndBloodFlowMLPM >= TREAT_PARAMS_PROPERTIES[ TREATMENT_PARAM_BLOOD_FLOW ].min.uInt ) && + ( nvInstRcrd->txEndBloodFlowMLPM <= TREAT_PARAMS_PROPERTIES[ TREATMENT_PARAM_BLOOD_FLOW ].max.uInt ) ) ? TRUE : FALSE ); return result; } @@ -1060,17 +1075,28 @@ * treatment parameters. * @details Inputs: none * @details Outputs: hdInstitutionalRecord - * @param nvInstitutionalRecord pointer to the newly received institutional record - * in the non-volatile data management. - * @return none + * @return Institutional record treatment end blood flow in mL/min *************************************************************************/ void setNVInstitutionalRecordToTxParamsRecord( HD_INSTITUTIONAL_RECORD_T* nvInstitutionalRecord ) { - memcpy( &hdInstitutionalRecord, nvInstitutionalRecord, sizeof(HD_INSTITUTIONAL_RECORD_T) ); + memcpy( &hdInstitutionalRecord, nvInstitutionalRecord, sizeof( HD_INSTITUTIONAL_RECORD_T ) ); } /*********************************************************************//** * @brief + * The getNVInstitutionalRecordTxEndBloodFlowMLPM function returns the institutional + * record's treatment end blood flow in mL/min. + * @details Inputs: hdInstitutionalRecord + * @details Outputs: none + * @return none + *************************************************************************/ +U32 getNVInstitutionalRecordTxEndBloodFlowMLPM( void ) +{ + return hdInstitutionalRecord.txEndBloodFlowMLPM; +} + +/*********************************************************************//** + * @brief * The extractTreatmentParamsFromPayload function extracts the individual * treatment parameters received from the UI into a staging array where * they will be validated and stay until user confirms them.