Index: leahi_dialin/common/generic_defs.py =================================================================== diff -u -rdc54799269b0b49b3559756076afca3bd0bf4bc0 -ra9a280f1f678c984654c15a827da1bcd4ce0663c --- leahi_dialin/common/generic_defs.py (.../generic_defs.py) (revision dc54799269b0b49b3559756076afca3bd0bf4bc0) +++ leahi_dialin/common/generic_defs.py (.../generic_defs.py) (revision a9a280f1f678c984654c15a827da1bcd4ce0663c) @@ -231,81 +231,55 @@ } -@unique -class CalibrationRecordFields(RecordsBaseEnum): - def __new__(cls): - obj = object.__new__(cls) - i = 0 - for pres_sensor in DDPressureSensorNames: - for field_name in CalibRecordSensorFields: - obj._name_ = f'PRES__{pres_sensor.name}__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - for temp_sensor in DDTemperatureSensorNames: - for field_name in CalibRecordSensorFields: - obj._name_ = f'TEMP__{temp_sensor.name}__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - for conc_pump in DDConcentratePumpNames: - for field_name in CalibRecordSensorFields: - obj._name_ = f'CONC__{conc_pump.name}__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - for dial_pump in DDDialysatePumpNames: - # Custom request for D12 to include Target Speed - if dial_pump is DDDialysatePumpNames.D12_PUMP: - obj._name_ = f'DIAL__{dial_pump.name}__TARGET_SPEED' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - for field_name in CalibRecordSensorFields: - obj._name_ = f'DIAL__{dial_pump.name}__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - for acid in AcidTypes: - for field_name in CalibRecordConcentrateFields: - obj._name_ = f'ACID__{acid.name}__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - for bicarb in BicarbTypes: - for field_name in CalibRecordConcentrateFields: - obj._name_ = f'BICARB__{bicarb.name}__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 - i += 1 - # Accelerometer - for field_name in CalibRecordAccelerometerFields: - obj._name_ = f'ACCEL__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 +def get_calibration_record_fields() -> RecordsBaseEnum: + # Creating the enum members list + i = 0 + members = {} + for pres_sensor in DDPressureSensorNames: + for field_name in CalibRecordSensorFields: + members[f'PRES__{pres_sensor.name}__{field_name.name}'] = (i, field_name.datatype()) i += 1 - # Blood Leak sensor - for field_name in CalibRecordBloodLeakFields: - obj._name_ = f'BLOOD_LEAK__{field_name.name}' - obj._value_ = i - obj.unpack_type = field_name.datatype() - obj.multichar_length = 1 + for temp_sensor in DDTemperatureSensorNames: + for field_name in CalibRecordSensorFields: + members[f'TEMP__{temp_sensor.name}__{field_name.name}'] = (i, field_name.datatype()) i += 1 - obj._name_ = 'NUM_OF_CALIBRATION_RECORD_FIELDS' - obj._value_ = i - obj.unpack_type = DataTypes.NONE - obj.multichar_length = 1 - return obj + for conc_pump in DDConcentratePumpNames: + for field_name in CalibRecordSensorFields: + members[f'CONC__{conc_pump.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for dial_pump in DDDialysatePumpNames: + members[f'DIAL__{dial_pump.name}__{field_name.name}__TARGET_SPEED'] = (i, DataTypes.F32) + i += 1 + for field_name in CalibRecordSensorFields: + members[f'DIAL__{dial_pump.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for acid in AcidTypes: + for field_name in CalibRecordConcentrateFields: + members[f'ACID__{acid.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for bicarb in BicarbTypes: + for field_name in CalibRecordConcentrateFields: + members[f'BICARB__{bicarb.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for field_name in CalibRecordAccelerometerFields: + members[f'ACCEL__{bicarb.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + for field_name in CalibRecordBloodLeakFields: + members[f'BLOOD_LEAK__{bicarb.name}__{field_name.name}'] = (i, field_name.datatype()) + i += 1 + members[f'NUM_OF_CALIBRATION_RECORD_FIELDS'] = (i, DataTypes.NONE) + + # Enum creation + CalibrationRecordFields = RecordsBaseEnum('CalibrationRecordFields', members,) + # Setting the _str_list values for the enum + CalibrationRecordFields._str_list = {} + for member in members: + CalibrationRecordFields._str_list[member] = [] + + return CalibrationRecordFields + @unique class InstitutionalRecordFields(RecordsBaseEnum): MIN_DIALYSATE_SYSTEM_FLOW_MLPM = (0, DataTypes.U32) # Min dialysate flow in mL/min