lv_mass.dart 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647
  1. import 'package:fis_measure/configs/patient.dart';
  2. import 'package:fis_measure/interfaces/process/items/terms.dart';
  3. import 'package:fis_measure/process/primitives/combos/lv_mass.dart';
  4. import 'package:vid/us/vid_us_unit.dart';
  5. import 'calculator.dart';
  6. import 'formulas/cardiac.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. double? epi = pickChildFloatValue(ref.epi);
  14. double? endo = pickChildFloatValue(ref.endo);
  15. double? l = pickChildFloatValue(ref.l);
  16. double? lvdmass;
  17. double? lvdMassIndex;
  18. if (epi != null && endo != null && l != null) {
  19. lvdmass = CardiacFormulas.lvdMassAL(epi, endo, l);
  20. }
  21. if (lvdmass != null && GlobalPatientConfig.bsa > 0) {
  22. lvdMassIndex =
  23. CardiacFormulas.lvdMassIndex(lvdmass, GlobalPatientConfig.bsa);
  24. }
  25. for (var output in ref.meta.outputs) {
  26. switch (output.name) {
  27. case MeasureTerms.LVdMass:
  28. if (lvdmass != null) {
  29. feature.updateFloatValue(output, lvdmass, VidUsUnit.kg);
  30. }
  31. break;
  32. case MeasureTerms.LVdMassIndex:
  33. if (lvdMassIndex != null) {
  34. feature.updateFloatValue(output, lvdMassIndex, VidUsUnit.gm2);
  35. }
  36. break;
  37. }
  38. }
  39. }
  40. }