Index: firmware/App/Services/TxParams.h =================================================================== diff -u -r6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543 -r880a9762cc029d858dfbaadc678afa2c6f8633a2 --- firmware/App/Services/TxParams.h (.../TxParams.h) (revision 6f02ff4686ec9dfc60247e9ed3fc9c5cc7771543) +++ firmware/App/Services/TxParams.h (.../TxParams.h) (revision 880a9762cc029d858dfbaadc678afa2c6f8633a2) @@ -7,8 +7,8 @@ * * @file TxParams.h * -* @author (last) Varshini Nagabooshanam -* @date (last) 26-Jan-2026 +* @author (last) Raghu Kallala +* @date (last) 01-May-2026 * * @author (original) Varshini Nagabooshanam * @date (original) 02-Dec-2025 @@ -41,27 +41,62 @@ /// Record structure for a treatment parameters payload from UI. typedef struct { + BOOL finalConfirmation; ///< Confirmation flag indicating treatment params validated are final + U32 treatmentModality; ///< User set treatment modality option + U32 hdfDilution; ///< User set HDF dilution option U32 bloodFlowRate_mL_min; ///< User set blood flow rate (in mL/min) U32 dialysateFlowRate_mL_min; ///< User set dialysate flow rate (in mL/min) U32 treatmentDuration_min; ///< User set treatment duration (in min) - U32 salineBolusVolume_mL; ///< User set saline bolus volume (in mL) - U32 hepStopTime_min; ///< User set Heparin stop time (in min) + U32 hepDeliveryDuration_min; ///< User set Heparin delivery duration (in min) U32 hepType; ///< User set Heparin type option - U32 acidConcentrate; ///< User set acid concentrate option - U32 bicarbConcentrate; ///< User set bicarbonate concentrate option + U32 dryBicarbCartSize; ///< User set dry bicarb cart size option + U32 sodium_mEq_L; ///< User set sodium (in mEq/L) + U32 bicarbonate_mEq_L; ///< User set bicarbonate (in mEq/L) U32 dialyzerType; ///< User set dialyzer type option + U32 fluidBolusVolume_mL; ///< User set fluid bolus volume (in mL) U32 bpInterval_min; ///< User set blood pressure measurement interval (in min) - U32 rinsebackFlowRate_mL_min; ///< User set rinseback flow rate (in mL/min) U32 rinsebackVolume_mL; ///< User set rinseback volume (in mL) - S32 arterialPressureLimitWindow_mmHg; ///< User set alarm limit window for arterial pressure (in mmHg) - S32 venousPressureLimitWindow_mmHg; ///< User set alarm limit window for venous pressure (in mmHg) - S32 venousPressureLimitAsymmetric_mmHg; ///< User set alarm limit asymmetric for venous pressure (in mmHg) - S32 tmpLimitWindow_mmHg; ///< User set alarm limit window for trans-membrane pressure (in mmHg) - F32 dialysateTemperature_degC; ///< User set dialysate temperature (in deg C) - F32 hepDispenseRate_mL_hr; ///< User set Heparin dispense rate (in mL/hr) + U32 hepatitisBStatus; ///< User set Hepatitis B status option + U32 acidConcentrate; ///< User set acid concentrate option + F32 substitutionFluidVolume_L; ///< User set substitution fluid volume (in L) F32 hepBolusVolume_mL; ///< User set Heparin bolus volume (in mL) + F32 hepDeliveryRate_mL_hr; ///< User set Heparin delivery rate (in mL/hr) + F32 dialysateTemperature_degC; ///< User set dialysate temperature (in deg C) + F32 acidKConcentrateConvFactor; ///< User set acid concentrate conversion factor + F32 ufPreWeight; ///< User set patient pre weight prior to treatment (in Kilogram) + F32 ufEstimatedTargetWeight; ///< User set patient estimated target weight after the treatment (in Kilogram) + F32 ufVolume; ///< User set ultrafiltration volume (in L) } TREATMENT_PARAMS_DATA_PAYLOAD_T; +/// Record structure for a treatment parameters payload to UI. +typedef struct +{ + U32 treatmentModality; ///< User set treatment modality option + U32 hdfDilution; ///< User set HDF dilution option + U32 bloodFlowRate_mL_min; ///< User set blood flow rate (in mL/min) + U32 dialysateFlowRate_mL_min; ///< User set dialysate flow rate (in mL/min) + U32 treatmentDuration_min; ///< User set treatment duration (in min) + U32 hepDeliveryDuration_min; ///< User set Heparin delivery duration (in min) + U32 hepType; ///< User set Heparin type option + U32 dryBicarbCartSize; ///< User set dry bicarb cart size option + U32 sodium_mEq_L; ///< User set sodium (in mEq/L) + U32 bicarbonate_mEq_L; ///< User set bicarbonate (in mEq/L) + U32 dialyzerType; ///< User set dialyzer type option + U32 fluidBolusVolume_mL; ///< User set fluid bolus volume (in mL) + U32 bpInterval_min; ///< User set blood pressure measurement interval (in min) + U32 rinsebackVolume_mL; ///< User set rinseback volume (in mL) + U32 hepatitisBStatus; ///< User set Hepatitis B status option + U32 acidConcentrate; ///< User set acid concentrate option + F32 substitutionFluidVolume_L; ///< User set substitution fluid volume (in L) + F32 hepBolusVolume_mL; ///< User set Heparin bolus volume (in mL) + F32 hepDeliveryRate_mL_hr; ///< User set Heparin delivery rate (in mL/hr) + F32 dialysateTemperature_degC; ///< User set dialysate temperature (in deg C) + F32 acidKConcentrateConvFactor; ///< User set acid concentrate conversion factor + F32 ufPreWeight; ///< User set patient pre weight prior to treatment (in Kilogram) + F32 ufEstimatedTargetWeight; ///< User set patient estimated target weight after the treatment (in Kilogram) + F32 ufVolume; ///< User set ultrafiltration volume (in L) +} TREATMENT_PARAMS_DATA_RESPONSE_PAYLOAD_T; + /// Record structure for reporting all current treatment parameters to Dialin typedef struct { @@ -80,36 +115,160 @@ U32 maxDialRate; ///< Maximum dialysate flow rate (in mL/min) } TREATMENT_PARAM_RANGE_BROADCAST_PAYLOAD_T; +/// Payload record structure for treatment duration validate request. +typedef struct +{ + U32 duration; ///< Requested treatment duration in minutes. +} TREATMENT_DURATION_VALIDATE_REQUEST_PAYLOAD_T; + +/// Payload record structure for treatment duration confirm request. +typedef struct +{ + U32 duration; ///< Confirmed treatment duration in minutes. + U32 heparinDuration; ///< Confirmed heparin delivery duration in minutes. + F32 ufRate; ///< Confirmed UF rate in L/hr. +} TREATMENT_DURATION_CONFIRM_REQUEST_PAYLOAD_T; + +/// Payload record structure for treatment duration validate response. +typedef struct +{ + BOOL accepted; ///< Accepted/Rejected. + U32 rejectionReason; ///< Rejection reason if not accepted. + U32 duration; ///< Treatment duration in minutes. + U32 heparinDuration; ///< Heparin delivery duration in minutes. + F32 ufVolumeGoal; ///< UF volume goal in L. + F32 ufRate; ///< UF rate in L/hr. +} TREATMENT_DURATION_VALIDATE_RESPONSE_PAYLOAD_T; + +/// Payload record structure for bolus volume change request. +typedef struct +{ + U32 bolusVolume; ///< Requested bolus volume (in mL). +} BOLUS_VOLUME_CHANGE_REQUEST_PAYLOAD_T; + +/// Payload record structure for pressure limit change request. +typedef struct +{ + U32 arterialPressureLimitWindowMMHG; ///< Arterial pressure limit window in mmHg. + U32 venousPressureLimitWindowMMHG; ///< Venous pressure limit window in mmHg. + U32 venousAsymmetricPressureLimitWindowMMHG; ///< Venous asymmetric pressure limit window in mmHg. + U32 tmpPressureLimitWindowMMHG; ///< TMP pressure limit window in mmHg. +} PRESSURE_LIMIT_CHANGE_REQUEST_T; + +/// Payload record structure for in-treatment pressure limit change response. +typedef struct +{ + BOOL accepted; ///< Accepted/Rejected. + U32 arterialPressureLimitWindowRejectionReason; ///< Rejection reason for arterial pressure limit window. + U32 venousPressureLimitWindowRejectionReason; ///< Rejection reason for venous pressure limit window. + U32 venousAsymmetricPressureLimitWindowRejectionReason; ///< Rejection reason for venous asymmetric pressure limit window. + U32 tmpPressureLimitWindowRejectionReason; ///< Rejection reason for TMP pressure limit window. +} PRESSURE_LIMITS_CHANGE_RESPONSE_PAYLOAD_T; + +/// Payload record structure for UF volume validate request. +typedef struct +{ + F32 ufVolume; ///< Requested UF volume in L. +} UF_VOLUME_VALIDATE_REQUEST_PAYLOAD_T; + +/// Payload record structure for UF volume confirm request. +typedef struct +{ + F32 ufVolume; ///< Confirmed UF volume in L. + F32 ufRate; ///< Confirmed UF rate in L/hr. +} UF_VOLUME_CONFIRM_REQUEST_PAYLOAD_T; + +/// Payload record structure for UF change response. +typedef struct +{ + BOOL accepted; ///< Accepted/Rejected. + U32 rejectionReason; ///< Rejection reason if not accepted. + F32 ufVolumeGoal; ///< UF Volume in L. + F32 ufRate; ///< new UF rate in L/hr. +} UF_VOLUME_RESPONSE_PAYLOAD_T; + +/// Payload record structure for blood flow rate change request. +typedef struct +{ + U32 flowRate; ///< Blood flow rate in mL/min. +} BLOOD_FLOW_RATE_CHANGE_REQUEST_PAYLOAD_T; + +/// Payload record structure for dialysate flow rate change request. +typedef struct +{ + U32 flowRate; ///< Dialysate flow rate in mL/min. +} DIALYSATE_FLOW_RATE_CHANGE_REQUEST_PAYLOAD_T; + +/// Payload record structure for dialysate temperature change request. +typedef struct +{ + F32 temperature; ///< Dialysate temperature in degrees Celsius. +} DIALYSATE_TEMPERATURE_CHANGE_REQUEST_PAYLOAD_T; + +/// Payload record structure for prescription settings change request. +typedef struct +{ + U32 bloodFlowRate; ///< Blood flow rate. + U32 dialysateFlowRate; ///< Dialysate flow rate. + F32 dialysateTemperature; ///< Dialysate temperature. + U32 acidConcentrate; ///< Acid concentrate. + F32 acidConcentrateConversionFactor; ///< Acid concentrate conversion factor. + U32 bicarbonateConcentrate; ///< Dry bicarbonate cartridge size. + U32 treatmentModality; ///< Treatment modality. + U32 hepatitis; ///< Hepatitis status. + U32 sodium; ///< Sodium concentration. + U32 bicarbonate; ///< Bicarbonate concentration (mEq/L). +} TREATMENT_PRESCRIPTION_SETTINGS_EDIT_REQUEST_T; + +/// Payload record structure for prescription settings change response. +typedef struct +{ + BOOL accepted; ///< Accepted/Rejected. + U32 rejectionReason[ NUM_OF_TREATMENT_SETPOINT_PARAMS ]; ///< Rejection reason for each prescription setting. +} TREATMENT_PRESCRIPTION_SETTINGS_EDIT_RESPONSE_T; + // ********** public function prototypes **************** BOOL setTreatmentParameterU32( TREATMENT_PARAM_T param, U32 value ); // Set a specified unsigned integer treatment parameter value -BOOL setTreatmentParameterS32( TREATMENT_PARAM_T param, S32 value ); // Set a specified signed integer treatment parameter value BOOL setTreatmentParameterF32( TREATMENT_PARAM_T param, F32 value ); // Set a specified floating point treatment parameter value U32 getTreatmentParameterU32( TREATMENT_PARAM_T param ); // Get a specified unsigned integer treatment parameter -S32 getTreatmentParameterS32( TREATMENT_PARAM_T param ); // Get a specified signed integer treatment parameter F32 getTreatmentParameterF32( TREATMENT_PARAM_T param ); // Get a specified floating point treatment parameter -S32 getTreatmentParameterS32DefaultValue( TREATMENT_PARAM_T param ); // Get the default value for a specified signed integer treatment parameter BOOL validateAndSetTreatmentParameters( MESSAGE_T *message ); // User provided treatment params to be set and validated + +// Edit Treatment parameter handlers +BOOL validateAndSetTreatmentDuration( MESSAGE_T *message ); // User provided treatment duration to be set and validated +BOOL validateAndSetBolusVolume( MESSAGE_T *message ); // User provided bolus volume to be set and validated +BOOL pressureLimitHandleChangeRequest( MESSAGE_T *message ); // User provided pressure limit window values to be validated and applied BOOL validateAndSetUFVolume( MESSAGE_T *message ); // User provided ultrafiltration volume to be set and validated +BOOL validateAndSetTreatmentSetPoints( MESSAGE_T *message ); // User provided prescription setting values to be validated and applied +BOOL validateAndSetBloodFlowRate( MESSAGE_T *message ); // Validates and applies blood flow rate change from UI button request +BOOL validateAndSetDialysateFlowRate( MESSAGE_T *message ); // Validates and applies dialysate flow rate change from UI button request +BOOL validateAndSetDialysateTemperature( MESSAGE_T *message ); // Validates and applies temperature change from UI button request +BOOL signalUserConfirmationOfTreatmentDuration( MESSAGE_T *message ); // Process UI confirm/reject treatment duration +BOOL signalUserConfirmationOfUFVolume( MESSAGE_T *message ); // Process UI confirm/reject ultrafiltration volume change -void resetTreatmentParameters( void ); // Reset all parameters to defaults -BOOL signalUserConfirmationOfTreatmentParameters( MESSAGE_T *message ); // Process UI confirm/reject Treatment parameters +void initTreatmentParameters( void ); // Initialize treatment parameters and session state BOOL getValidTreatParamsReceived( void ); // Determine whether valid Treatment Parameters exist BOOL getTreatParamsConfirmed( void ); // Determine whether user confirmed the parameters BOOL isTreatmentParamInRange( TREATMENT_PARAM_T param, CRITICAL_DATAS_T value ); // Check range for a proposed treatment parameter value -S32 getS32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_T param ); // Get lower range limit for signed integer treatment parameter -S32 getS32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_T param ); // Get upper range limit for signed integer treatment parameter +BOOL isSysConfigTreatmentParamInRange( SYS_CONFIG_TREATMENT_PARAM_T param ); // Check system config treatment parameter from institutional records are in range U32 getU32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_T param ); // Get lower range limit for unsigned integer treatment parameter U32 getU32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_T param ); // Get upper range limit for unsigned integer treatment parameter F32 getF32TreatmentParamLowerRangeLimit( TREATMENT_PARAM_T param ); // Get lower range limit for floating point treatment parameter F32 getF32TreatmentParamUpperRangeLimit( TREATMENT_PARAM_T param ); // Get upper range limit for floating point treatment parameter -S32 getS32DefaultTreatmentParamEdge( TREATMENT_PARAM_T param, BOOL isMin ); // Get default min/max edge for signed integer treatment parameter U32 getU32DefaultTreatmentParamEdge( TREATMENT_PARAM_T param, BOOL isMin ); // Get default min/max edge for unsigned integer treatment parameter F32 getF32DefaultTreatmentParamEdge( TREATMENT_PARAM_T param, BOOL isMin ); // Get default min/max edge for floating point treatment parameter +U32 getU32SysConfigTreatmentParamLowerRangeLimit( SYS_CONFIG_TREATMENT_PARAM_T param ); // Get lower range limit for unsigned integer system configured treatment parameter +U32 getU32SysConfigTreatmentParamUpperRangeLimit( SYS_CONFIG_TREATMENT_PARAM_T param ); // Get upper range limit for unsigned integer system configured treatment parameter +U32 getU32DefaultSysConfigTreatmentParamEdge( SYS_CONFIG_TREATMENT_PARAM_T param, BOOL isMin ); // Get default min/max edge for unsigned integer system configured treatment parameter +U32 getSysConfigTreatmentParameterU32( SYS_CONFIG_TREATMENT_PARAM_T param ); // Get a specified unsigned integer system configured treatment parameter +U32 getSysConfigTreatmentParameterU32DefaultValue( SYS_CONFIG_TREATMENT_PARAM_T param ); // Get the default value for a specified unsigned integer system configured treatment parameter +BOOL setSysConfigTreatmentParameterU32( SYS_CONFIG_TREATMENT_PARAM_T param, U32 value ); // Set a specified unsigned integer system configured treatment parameter + U32 getDialyzerBloodVolume( DIALYZER_TYPE_T dialyzer ); // Get the blood side volume for a given dialyzer type U32 getDialyzerDialysateVolume( DIALYZER_TYPE_T dialyzer ); // Get the dialysate side volume for a given dialyzer type