import 'package:fis_measure/configs/patient.dart'; import 'package:fis_measure/interfaces/process/calculators/values.dart'; import 'package:fis_measure/interfaces/process/items/terms.dart'; import 'package:fis_measure/process/calcuators/unit_formulas/index.dart'; import 'package:fis_measure/process/primitives/combos/lv_mass.dart'; import 'calculator.dart'; class LvdMassALCal extends Calculator { LvdMassALCal(super.ref); @override void calculate() { if (ref.feature == null) return; final feature = ref.feature!; UnitFloatValue? epi = pickChildToFloatValue(ref.epi)?.toUnitFloatValue(); UnitFloatValue? endo = pickChildToFloatValue(ref.endo)?.toUnitFloatValue(); UnitFloatValue? l = pickChildToFloatValue(ref.l)?.toUnitFloatValue(); UnitFloatValue? lvdmass; UnitFloatValue? lvdMassIndex; if (epi != null && endo != null && l != null) { lvdmass = UnitFormulas.cardiac.lvdMassAL(epi, endo, l); } if (lvdmass != null && GlobalPatientConfig.bsa > 0) { lvdMassIndex = UnitFormulas.cardiac.lvdMassIndex( lvdmass, bsa: GlobalPatientConfig.bsa, ); } for (var output in ref.meta.outputs) { switch (output.name) { case MeasureTerms.LVdMass: if (lvdmass != null) { feature.updateFloatValue(output, lvdmass.value, lvdmass.unit); } break; case MeasureTerms.LVdMassIndex: if (lvdMassIndex != null) { feature.updateFloatValue( output, lvdMassIndex.value, lvdMassIndex.unit, ); } break; } } } }