Index: leahi_dialin/common/fp_defs.py =================================================================== diff -u -rbe799e12803dba3054ff893b68f8b79a9dde440b -rb7d86216a91c9fbf74af7c6233ed0b6eaf74cd75 --- leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision be799e12803dba3054ff893b68f8b79a9dde440b) +++ leahi_dialin/common/fp_defs.py (.../fp_defs.py) (revision b7d86216a91c9fbf74af7c6233ed0b6eaf74cd75) @@ -18,7 +18,10 @@ from enum import unique # Project imports -from leahi_dialin.common.dd_defs import DDConductivitySensorNames, DDEventList, DDPressureSensorNames, DDValveNames, DDLevelSensorNames +from leahi_dialin.common.disp_defs import AcidTypes, BicarbTypes +from leahi_dialin.common.dd_defs import DDConcentratePumpNames, DDConductivitySensorNames, DDDialysatePumpNames, DDEventList, DDLevelSensorNames, DDPressureSensorNames, DDTemperatureSensorNames, DDValveNames, \ + DDCalibRecordSensorFields, DDCalibRecordAccelerometerFields, DDCalibRecordBloodLeakFields, DDCalibRecordConcentrateFields, DDCalibRecordConductivityFields +from leahi_dialin.common.generic_defs import RecordsBaseEnum, DataTypes from leahi_dialin.utils.enums import DialinEnum @@ -648,3 +651,104 @@ 'VALVE_STATE_OPEN': ['open', 'on'], 'NUM_OF_VALVE_STATES': [], } + + + +# ================================================== Enum Creators: Record Fields ================================================== +def get_calibration_record_fields() -> RecordsBaseEnum: + # Creating the enum members list + i = 0 + members = {} + for pres_sensor in DDPressureSensorNames: + if 'num_' in pres_sensor.name.lower(): + continue + for field_name in DDCalibRecordSensorFields: + if 'num_' in field_name.name.lower(): + continue + members[f'PRES__{pres_sensor.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for pres_sensor in FPPressureSensorNames: + if 'num_' in pres_sensor.name.lower(): + continue + for field_name in DDCalibRecordSensorFields: + if 'num_' in field_name.name.lower(): + continue + members[f'PRES__{pres_sensor.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for temp_sensor in DDTemperatureSensorNames: + if 'num_' in temp_sensor.name.lower(): + continue + elif temp_sensor.value >= DDTemperatureSensorNames.FIRST_CONDUCTIVITY_SENSOR.value: + continue + for field_name in DDCalibRecordSensorFields: + if 'num_' in field_name.name.lower(): + continue + members[f'TEMP__{temp_sensor.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for conc_pump in DDConcentratePumpNames: + if 'num_' in conc_pump.name.lower(): + continue + for field_name in DDCalibRecordSensorFields: + if 'num_' in field_name.name.lower(): + continue + members[f'CONC__{conc_pump.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for dial_pump in DDDialysatePumpNames: + if 'num_' in dial_pump.name.lower(): + continue + elif 'd12' in dial_pump.name.lower(): + members[f'DIAL__{dial_pump.name}__TARGET_SPEED'] = (i, DataTypes.F32) + i += 1 + members[f'DIAL__{dial_pump.name}__{DDCalibRecordSensorFields.CALIBRATION_TIME.name}'] = (i, DDCalibRecordSensorFields.CALIBRATION_TIME.datatype()) + i += 1 + else: + for field_name in DDCalibRecordSensorFields: + if 'num_' in field_name.name.lower(): + continue + members[f'DIAL__{dial_pump.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for acid in AcidTypes: + if 'num_' in acid.name.lower(): + continue + for field_name in DDCalibRecordConcentrateFields: + if 'num_' in field_name.name.lower(): + continue + members[f'ACID__{acid.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for bicarb in BicarbTypes: + if 'num_' in bicarb.name.lower(): + continue + for field_name in DDCalibRecordConcentrateFields: + if 'num_' in field_name.name.lower(): + continue + members[f'BICARB__{bicarb.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for field_name in DDCalibRecordAccelerometerFields: + if 'num_' in field_name.name.lower(): + continue + members[f'ACCEL__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for field_name in DDCalibRecordBloodLeakFields: + if 'num_' in field_name.name.lower(): + continue + members[f'BLOOD_LEAK__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for cond_sensor in DDConductivitySensorNames: + if 'num_' in cond_sensor.name.lower(): + continue + for field_name in DDCalibRecordConductivityFields: + if 'num_' in field_name.name.lower(): + continue + members[f'COND__{cond_sensor.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + members[f'NUM_OF_CALIBRATION_RECORD_FIELDS'] = (i, DataTypes.NONE) + + # Enum creation + DDCalibrationRecordFields = RecordsBaseEnum('DDCalibrationRecordFields', members,) + + # Setting the _str_list values for the enum + DDCalibrationRecordFields._str_list = {} + for member in members: + DDCalibrationRecordFields._str_list[member] = [] + + return DDCalibrationRecordFields