cardiac.dart 1.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748
  1. import 'dart:math' as math;
  2. import 'package:fis_measure/utils/number.dart';
  3. class CardiacFormulas {
  4. CardiacFormulas._();
  5. /// <summary>
  6. /// IMP=(CO-ET)/ET
  7. /// </summary>
  8. /// <param name="co">s</param>
  9. /// <param name="et">s</param>
  10. /// <returns>(unit None)</returns>
  11. static double teiIndex(double co, double et) {
  12. double imp = 0.0;
  13. if (et != 0.0) {
  14. imp = (((co).abs() - (et).abs()) / et).abs();
  15. }
  16. return imp;
  17. }
  18. /// <summary>
  19. /// EF = (EDV - ESV )/EDV
  20. /// </summary>
  21. /// <param name="edv">cm³</param>
  22. /// <param name="esv">cm³</param>
  23. /// <returns>None</returns>
  24. static double ef(double edv, double esv) {
  25. // 这行判断暂时注释掉是为了使实际表现与旧版一致
  26. // if (edv < esv) {
  27. // return double.nan;
  28. // }
  29. return (edv - esv) / edv * 100;
  30. }
  31. /// <summary>
  32. /// EDV (Teichholz) = [7.0/(2.4 + LVIDd)] x LVIDd^3
  33. /// </summary>
  34. /// <param name="lvidd">Unit cm</param>
  35. /// <returns>cm³</returns>
  36. static double edvTeichholz(double lvidd) {
  37. double edv = double.nan;
  38. if (!NumUtil.almostEquals(lvidd, 0)) {
  39. edv = 7.0 * math.pow(lvidd, 3) / (2.4 + lvidd);
  40. }
  41. return edv;
  42. }
  43. }