rvsp.dart 1.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344
  1. import 'package:fis_measure/interfaces/process/items/terms.dart';
  2. import 'package:fis_measure/process/primitives/rvsp.dart';
  3. import 'package:vid/us/vid_us_unit.dart';
  4. import 'calculator.dart';
  5. import 'formulas/general.dart';
  6. class RvspCal extends Calculator<Rvsp, double> {
  7. RvspCal(super.ref);
  8. @override
  9. void calculate() {
  10. if (ref.feature == null) return;
  11. final feature = ref.feature!;
  12. final tRVmax = pickChildFloatValue(ref.tRVmax);
  13. if (tRVmax == null) {
  14. updateStringValue("");
  15. return;
  16. }
  17. final rap = ref.rap.value ?? 0;
  18. final rvsp = GeneralFormulas.countPressure(tRVmax) + rap;
  19. // TODO: ??? PG=RVSP-RAP
  20. final pg = rvsp - rap;
  21. for (var output in ref.meta.outputs) {
  22. switch (output.name) {
  23. case MeasureTerms.RVSP:
  24. updateFloatValue(rvsp);
  25. break;
  26. case MeasureTerms.RAP:
  27. feature.updateFloatValue(output, rap, VidUsUnit.mmHg);
  28. break;
  29. case MeasureTerms.PG:
  30. feature.updateFloatValue(output, pg, VidUsUnit.mmHg);
  31. break;
  32. }
  33. }
  34. }
  35. }