Browse Source

1、暂时提交单位换算问题

guanxinyi 10 months ago
parent
commit
774c1933c8

+ 1 - 1
lib/process/calcuators/formulas/Urology.dart

@@ -6,7 +6,7 @@ import 'package:fis_measure/interfaces/enums/species.dart';
 class UrologyFormulas {
   UrologyFormulas._();
   static final IUrologyFormulaStrategy _singleton =
-      GlobalPatientConfig.speciesType != SpeciesType.mouseGeneral
+      GlobalPatientConfig.speciesType == SpeciesType.mouseGeneral
           ? BaseUrologyFormulas()
           : AnimalsUrologyFormulas();
 

+ 17 - 15
lib/process/calcuators/formulas/cardiac.dart

@@ -49,7 +49,7 @@ class CardiacFormulas {
           [int num = 20]) =>
       _singleton.lvSimsonVolume(l, a, b, num);
 
-  CardiacFormulas._internal(); // 私有构造函数
+  // CardiacFormulas._internal(); // 私有构造函数
 }
 
 abstract class ICardiacFormulaStrategy {
@@ -349,9 +349,9 @@ class AnimalsCardiacFormulas extends BaseCardiacFormulas {
   @override
   double edvTeichholz(double lvidd) {
     double edv = double.nan;
-    lvidd = lvidd / 10;
-    if (!NumUtil.almostEquals(lvidd, 0)) {
-      edv = 7.0 * math.pow(lvidd, 3) / (2.4 + lvidd);
+    double animalsLvidd = lvidd / 10;
+    if (!NumUtil.almostEquals(animalsLvidd, 0)) {
+      edv = 7.0 * math.pow(animalsLvidd, 3) / (2.4 + animalsLvidd);
     }
     return edv;
   }
@@ -392,13 +392,14 @@ class AnimalsCardiacFormulas extends BaseCardiacFormulas {
   /// LVd Mass(2D)
   @override
   double lvdMass(double ivsd, double lvidd, double lvpwd) {
-    ivsd = ivsd / 10;
-    lvidd = lvidd / 10;
-    lvpwd = lvpwd / 10;
+    double animalsIvsd = ivsd / 10;
+    double animalsLvidd = lvidd / 10;
+    double animalsLvpwd = lvpwd / 10;
     const density = GlobalCardiacConfigs.density;
     const correctionFactor = GlobalCardiacConfigs.correctionFactor;
-    double part1 = math.pow(ivsd + lvidd + lvpwd, 3).toDouble();
-    double part2 = math.pow(lvidd, 3).toDouble();
+    double part1 =
+        math.pow(animalsIvsd + animalsLvidd + animalsLvpwd, 3).toDouble();
+    double part2 = math.pow(animalsLvidd, 3).toDouble();
     double value = ((density * part1 - part2) + correctionFactor) / 1000.0;
     return value;
   }
@@ -416,17 +417,18 @@ class AnimalsCardiacFormulas extends BaseCardiacFormulas {
   /// SV(LVOT)|CO
   @override
   double flowAreaByVTI(double otDiam, double otvti, double vti) {
-    otDiam = otDiam / 10;
-    otvti = otvti / 10;
-    vti = vti / 10;
-    double sv = 0.25 * math.pi * math.pow(otDiam, 2) * otvti / vti;
+    double animalsOtDiam = otDiam / 10;
+    double animalsOtvti = otvti / 10;
+    double animalsVti = vti / 10;
+    double sv =
+        0.25 * math.pi * math.pow(animalsOtDiam, 2) * animalsOtvti / animalsVti;
     return sv;
   }
 
   /// LVd Mass Index
   @override
   double lvdMassIndex(double lvdmass, double bsa) {
-    lvdmass = lvdmass / 10;
-    return lvdmass / bsa * 1000;
+    double animalsLvdmass = lvdmass / 10;
+    return animalsLvdmass / bsa * 1000;
   }
 }

+ 1 - 1
lib/process/calcuators/formulas/general.dart

@@ -11,7 +11,7 @@ class GeneralFormulas {
   static const double VolumeCofficient = math.pi / 6.0;
 
   static final IGeneralFormulaStrategy _singleton =
-      GlobalPatientConfig.speciesType != SpeciesType.mouseGeneral
+      GlobalPatientConfig.speciesType == SpeciesType.mouseGeneral
           ? BaseGeneralFormulas()
           : AnimalsGeneralFormulas();
 

+ 1 - 1
lib/process/calcuators/formulas/obstetrics.dart

@@ -6,7 +6,7 @@ import 'package:fis_measure/utils/number.dart';
 class ObstetricsFormulas {
   ObstetricsFormulas._();
   static final IObstetricsFormulaStrategy _singleton =
-      GlobalPatientConfig.speciesType != SpeciesType.mouseGeneral
+      GlobalPatientConfig.speciesType == SpeciesType.mouseGeneral
           ? BaseObstetricsFormulas()
           : AnimalsObstetricsFormulas();
 

+ 29 - 6
lib/process/calcuators/lv_study.dart

@@ -78,14 +78,37 @@ class LvStudyDistanceGroupCal extends LvStudyCalculatorBase<LvStudy> {
     if (ref.feature == null) return;
 
     final feature = ref.feature!;
+    final viewport = feature.hostVisualArea!.viewport!;
 
+    /// TODO 需要重新设计
     v = _ValTemp();
-    v.ivsd = pickChildFloatValue(kidIVSd);
-    v.ivss = pickChildFloatValue(kidIVSs);
-    v.lvidd = pickChildFloatValue(kidLVIDd);
-    v.lvids = pickChildFloatValue(kidLVIDs);
-    v.lvpwd = pickChildFloatValue(kidLVPWd);
-    v.lvpws = pickChildFloatValue(kidLVPWs);
+    if (viewport.yUnit == VidUsUnit.cm) {
+      v.ivsd = pickChildFloatValue(kidIVSd) != null
+          ? pickChildFloatValue(kidIVSd)! * 10
+          : null;
+      v.ivss = pickChildFloatValue(kidIVSs) != null
+          ? pickChildFloatValue(kidIVSs)! * 10
+          : null;
+      v.lvidd = pickChildFloatValue(kidLVIDd) != null
+          ? pickChildFloatValue(kidLVIDd)! * 10
+          : null;
+      v.lvids = pickChildFloatValue(kidLVIDs) != null
+          ? pickChildFloatValue(kidLVIDs)! * 10
+          : null;
+      v.lvpwd = pickChildFloatValue(kidLVPWd) != null
+          ? pickChildFloatValue(kidLVPWd)! * 10
+          : null;
+      v.lvpws = pickChildFloatValue(kidLVPWs) != null
+          ? pickChildFloatValue(kidLVPWs)! * 10
+          : null;
+    } else {
+      v.ivsd = pickChildFloatValue(kidIVSd);
+      v.ivss = pickChildFloatValue(kidIVSs);
+      v.lvidd = pickChildFloatValue(kidLVIDd);
+      v.lvids = pickChildFloatValue(kidLVIDs);
+      v.lvpwd = pickChildFloatValue(kidLVPWd);
+      v.lvpws = pickChildFloatValue(kidLVPWs);
+    }
 
     for (var output in ref.meta.outputs) {
       switch (output.name) {

+ 4 - 1
lib/process/calcuators/time_motion.dart

@@ -26,7 +26,10 @@ class VerticalDistanceCal extends Calculator<StraightLine, double> {
     // updateFloatValue(value);
     final ouput = ref.meta.outputs.first;
     feature.updateFloatValue(
-        ouput, roundDouble(value, ouput.fractionalDigits), VidUsUnit.cm);
+      ouput,
+      roundDouble(value, ouput.fractionalDigits),
+      viewport.yUnit,
+    );
   }
 }