lv_mass.dart 1.6 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253
  1. import 'package:fis_measure/configs/patient.dart';
  2. import 'package:fis_measure/interfaces/process/calculators/values.dart';
  3. import 'package:fis_measure/interfaces/process/items/terms.dart';
  4. import 'package:fis_measure/process/calcuators/unit_formulas/index.dart';
  5. import 'package:fis_measure/process/primitives/combos/lv_mass.dart';
  6. import 'calculator.dart';
  7. class LvdMassALCal extends Calculator<LVMass, double> {
  8. LvdMassALCal(super.ref);
  9. @override
  10. void calculate() {
  11. if (ref.feature == null) return;
  12. final feature = ref.feature!;
  13. UnitFloatValue? epi = pickChildToFloatValue(ref.epi)?.toUnitFloatValue();
  14. UnitFloatValue? endo = pickChildToFloatValue(ref.endo)?.toUnitFloatValue();
  15. UnitFloatValue? l = pickChildToFloatValue(ref.l)?.toUnitFloatValue();
  16. UnitFloatValue? lvdmass;
  17. UnitFloatValue? lvdMassIndex;
  18. if (epi != null && endo != null && l != null) {
  19. lvdmass = UnitFormulas.cardiac.lvdMassAL(epi, endo, l);
  20. }
  21. if (lvdmass != null && GlobalPatientConfig.bsa > 0) {
  22. lvdMassIndex = UnitFormulas.cardiac.lvdMassIndex(
  23. lvdmass,
  24. bsa: GlobalPatientConfig.bsa,
  25. );
  26. }
  27. for (var output in ref.meta.outputs) {
  28. switch (output.name) {
  29. case MeasureTerms.LVdMass:
  30. if (lvdmass != null) {
  31. feature.updateFloatValue(output, lvdmass.value, lvdmass.unit);
  32. }
  33. break;
  34. case MeasureTerms.LVdMassIndex:
  35. if (lvdMassIndex != null) {
  36. feature.updateFloatValue(
  37. output,
  38. lvdMassIndex.value,
  39. lvdMassIndex.unit,
  40. );
  41. }
  42. break;
  43. }
  44. }
  45. }
  46. }