浏览代码

modify config 4 item creating

melon.yin 2 年之前
父节点
当前提交
b485a57fd3

+ 17 - 0
lib/interfaces/process/items/terms.dart

@@ -1,6 +1,23 @@
 // ignore_for_file: constant_identifier_names
 
 class MeasureTerms {
+  /* AI [begin]*/
+  /// 前壁
+  static const AntCCA_IMT = "Ant.CCA IMT";
+
+  /// 后壁
+  static const PostCCA_IMT = "Post.CCA IMT";
+
+  /// 前壁和后壁
+  static const BothCCA_IMT = "Both.CCA IMT";
+
+  /// 斑块检测
+  static const PlaqueDetection = "Plaque Detection";
+
+  /// 内膜检测
+  static const IntimaDetection = "Intima Detection";
+  /* AI [end]*/
+
   /////////////////////////////////////////////Common/////////////////////////////////////////////
   //////////Tissue//////////
 

+ 73 - 62
lib/interfaces/process/items/types.dart

@@ -1,83 +1,94 @@
 // ignore_for_file: constant_identifier_names
 
+/* Temp [begin] */
+/* Temp [end] */
 class MeasureTypes {
   MeasureTypes._();
-  /* Tissue */
 
+  /* Location [begin] */
   /// 深度
-  static const String Depth = "Depth";
+  static const Depth = "Depth";
 
-  /// 距离
-  static const String Distance = "Distance";
-
-  /// 周长
-  static const String Perimeter = "Perimeter";
+  /// 深度(M mode)
+  static const MDepth = "MDepth";
 
-  /// 面积
-  static const String Area = "Area";
+  /// 速度
+  static const Velocity = "Velocity";
+  /* Location [end] */
 
+  /* Angle [begin] */
   /// 角度
-  static const String Angle = "Angle";
-
-  /// 椭圆测面积周长
-  static const String AreaPerimeterEllipse = "AreaPerimeterEllipse";
+  static const Angle = "Angle";
 
-  static const String Trace = "Trace";
+  static const HipTwoAngle = "HipTwoAngle";
+  static const PolyLineAngle = "PolyLineAngle";
+  static const TwoStraightLineAngle = "TwoStraightLineAngle";
 
-  /* Volume */
+  static const Ray = "Ray";
+  static const HipOneRay = "HipOneRay";
+  static const HipTwoRay = "HipTwoRay";
+  /* Angle [end] */
 
+  /* Length [begin] */
+  /// 距离
+  static const Distance = "Distance";
+
+  static const CurveLengthSpline = "CurveLengthSpline";
+  static const CurveLengthPolyline = "CurveLengthPolyline";
+  static const CurveLengthTrace = "CurveLengthTrace";
+  static const CurveLength = "CurveLength";
+  static const VerticalDistance = "VerticalDistance";
+  static const DepthToBaseLine = "DepthToBaseLine";
+  static const AutoVesselDiam = "AutoVesselDiam";
+  static const MultipleVesselDiam = "MultipleVesselDiam";
+  /* Length [end]*/
+
+  /* Area Perimeter [begin] */
+  /// 周长/面积
+  static const AreaPerimeter = "AreaPerimeter";
+
+  static const AreaPerimeterPolyline = "AreaPerimeterPolyline";
+  static const AreaPerimeterEllipse = "AreaPerimeterEllipse";
+  static const AreaPerimeterSpline = "AreaPerimeterSpline";
+  static const AreaPerimeterTwoDistance = "AreaPerimeterTwoDistance";
+  static const AreaPerimeterTrace = "AreaPerimeterTrace";
+
+  static const Pht = "Pht";
+  /* Area Perimeter [end] */
+
+  /* Volume  [begin] */
   /// 体积
-  static const String Volume = "Volume";
-
-  /// 椭圆测体积
-  static const String VolumeEllipse = "VolumeEllipse";
-
-  /// 单线体积
-  static const String VolumeOneDistance = "VolumeOneDistance";
-
-  /// 二线体积
-  static const String VolumeTwoDistance = "VolumeTwoDistance";
-
-  /// 三线体积
-  static const String VolumeThreeDistance = "VolumeThreeDistance";
-
-  /* 面积周长 */
-
-  static const String TwoDistanceBase = "TwoDistanceBase";
-
+  static const Volume = "Volume";
+  static const VolumeOneDistance = "VolumeOneDistance";
+  static const VolumeTwoDistance = "VolumeTwoDistance";
+  static const VolumeThreeDistance = "VolumeThreeDistance";
+  static const AreaStraightLine = "AreaStraightLine";
+  static const VolumeEllipse = "VolumeEllipse";
+
+  static const AutoBladder = "AutoBladder";
+  static const Bladder = "Bladder";
+  /* Volume  [end] */
+
+  /* Ratio & Stenosis  [begin] */
   /// 狭窄率
-  static const String StenosisTwoArea = "StenosisTwoArea";
-  static const String StenosisTwoDistance = "StenosisTwoDistance";
+  static const Stenosis = "Stenosis";
+  static const StenosisTwoArea = "StenosisTwoArea";
+  static const StenosisTwoDistance = "StenosisTwoDistance";
+  static const StenosisTwoVerticalDistance = "StenosisTwoVerticalDistance";
 
   /// A/B 比值
-  static const String AbRatioTwoArea = "AbRatioTwoArea";
-  static const String AbRatioTwoDistance = "AbRatioTwoDistance";
+  static const AbRatio = "AbRatio";
+  static const AbRatioTwoArea = "AbRatioTwoArea";
+  static const AbRatioTwoDepth = "AbRatioTwoDepth";
+  static const AbRatioTwoVelocity = "AbRatioTwoVelocity";
+  static const AbRatioTwoDistance = "AbRatioTwoDistance";
+  static const AbRatioTwoVerticalDistance = "AbRatioTwoVerticalDistance";
+  static const AbRatioTwoTimeSpan = "AbRatioTwoTimeSpan";
+  static const AbRatioTwoSlope = "AbRatioTwoSlope";
+  /* Ratio & Stenosis  [end] */
 
   /// 残余尿
-  static const String ResidualUrine = "ResidualUrine";
-
-  /// 折线多边形测面积周长
-  static const String AreaPerimeterPolyline = "AreaPerimeterPolyline";
-
-  static const String AreaPerimeterTrace = "AreaPerimeterTrace";
-
-  /// 曲线多边形测面积周长
-  static const String AreaPerimeterSpline = "AreaPerimeterSpline";
-
-  /* AI */
-
-  /// 前壁
-  static const String AntCCA_IMT = "Ant.CCA IMT";
-
-  /// 后壁
-  static const String PostCCA_IMT = "Post.CCA IMT";
-
-  /// 前壁和后壁
-  static const String BothCCA_IMT = "Both.CCA IMT";
-
-  /// 斑块检测
-  static const String PlaqueDetection = "Plaque Detection";
+  static const ResidualUrine = "ResidualUrine";
 
-  /// 内膜检测
-  static const String IntimaDetection = "Intima Detection";
+  static const TwoDistanceBase = "TwoDistanceBase";
 }

+ 15 - 0
lib/item_create_test.dart

@@ -1,6 +1,7 @@
 import 'dart:convert';
 
 import 'package:fis_jsonrpc/services/remedical.m.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/process/items/item_meta_convert.dart';
 import 'package:flutter/services.dart';
@@ -86,6 +87,20 @@ class ItemCreateTest {
 
 class TestItems {
   TestItems._();
+  static final C_TEST_ITEMS = [
+    "MV Ann Diam",
+    "Distance",
+    MeasureTerms.Volume,
+    MeasureTerms.Stenosis,
+    MeasureTerms.AbRatio,
+    MeasureTerms.Angle,
+    MeasureTerms.Depth,
+    MeasureTerms.Perimeter,
+    MeasureTerms.Time,
+    MeasureTerms.Velocity,
+    MeasureTerms.RUV,
+  ];
+
   static final C_DISTANCE_ITEMS = [
     "MV Ann Diam",
     "Distance",

+ 8 - 7
lib/measure_page_test.dart

@@ -342,12 +342,12 @@ class _MeasureLeftBoard extends StatefulWidget {
 class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
   // ignore: non_constant_identifier_names
   static final C_SUPPORTED_ITEMS = <String>[
-    MeasureTypes.Distance,
-    MeasureTypes.Perimeter,
-    MeasureTypes.Area,
-    MeasureTypes.Angle,
-    MeasureTypes.Depth,
-    MeasureTypes.Volume,
+    MeasureTerms.Distance,
+    MeasureTerms.Perimeter,
+    MeasureTerms.Area,
+    MeasureTerms.Angle,
+    MeasureTerms.Depth,
+    MeasureTerms.Volume,
     MeasureTypes.AreaPerimeterEllipse,
     MeasureTypes.AreaPerimeterPolyline,
     MeasureTypes.AreaPerimeterSpline,
@@ -368,7 +368,8 @@ class _MeasureLeftBoardState extends State<_MeasureLeftBoard> {
   @override
   void initState() {
     // passeItems = C_SUPPORTED_ITEMS;
-    passeItems = TestItems.C_DISTANCE_ITEMS;
+    // passeItems = TestItems.C_DISTANCE_ITEMS;
+    passeItems = TestItems.C_TEST_ITEMS;
     loadItems();
     // application.switchItemByName(C_SUPPORTED_ITEMS[0]);
     // changeItemByMeta(0);

+ 0 - 44
lib/process/calcuators/area.dart

@@ -1,44 +0,0 @@
-import 'dart:math' as math;
-import 'package:fis_measure/interfaces/date_types/point.dart';
-import 'package:fis_measure/interfaces/process/calculators/output.dart';
-import 'package:fis_measure/interfaces/process/items/types.dart';
-import 'package:fis_measure/process/primitives/ellipse.dart';
-import 'package:vid/us/vid_us_unit.dart';
-
-import '../primitives/trace.dart';
-import 'calculator.dart';
-
-class TraceAreaCal extends Calculator<Trace, double> {
-  TraceAreaCal(Trace ref) : super(ref);
-
-  @override
-  void calculate() {
-    if (ref.feature == null) return;
-
-    // TODO:xxx
-    final viewport = ref.feature!.hostVisualArea!.viewport!;
-    final points =
-        ref.feature!.innerPoints.map((e) => viewport.convert(e)).toList();
-
-    double value = clacArea(points);
-    updateFloatValue(value);
-  }
-
-  static double clacArea(List<DPoint> points) {
-    if (points.isEmpty) {
-      return 0;
-    }
-
-    double sum = 0;
-    var ax = points[0].x;
-    var ay = points[0].y;
-    for (var i = 1; i < points.length - 1; i++) {
-      var bx = points[i].x;
-      var by = points[i].y;
-      var cx = points[i + 1].x;
-      var cy = points[i + 1].y;
-      sum += ax * by - ay * bx + ay * cx - ax * cy + bx * cy - cx * by;
-    }
-    return (-sum / 2).abs();
-  }
-}

+ 57 - 28
lib/process/calcuators/perimeter.dart → lib/process/calcuators/area_perimeter.dart

@@ -1,18 +1,39 @@
 import 'package:fis_measure/interfaces/date_types/point.dart';
-import 'package:fis_measure/interfaces/process/items/types.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/process/primitives/ellipse.dart';
+import 'package:fis_measure/process/primitives/trace.dart';
 
-import '../primitives/trace.dart';
 import 'calculator.dart';
 
-class TracePerimeterCal extends Calculator<Trace, double> {
-  TracePerimeterCal(Trace ref) : super(ref);
+class AreaPerimeterEllipseCal extends Calculator<Ellipse, double> {
+  AreaPerimeterEllipseCal(Ellipse ref) : super(ref);
+
+  @override
+  void calculate() {
+    if (ref.feature == null) return;
+
+    final feature = ref.feature!;
+    final viewport = feature.hostVisualArea!.viewport!;
+
+    for (var output in ref.meta.outputs) {
+      if (output.name == MeasureTerms.Perimeter) {
+        var value = ref.feature!.getCircumference(viewport.convertBoundary);
+        feature.updateFloatValue(output, value, output.unit);
+      } else if (output.name == MeasureTerms.Area) {
+        var value = ref.feature!.getArea(viewport.convertBoundary);
+        feature.updateFloatValue(output, value, output.unit);
+      }
+    }
+  }
+}
+
+class AreaPerimeterCal extends Calculator<Trace, double> {
+  AreaPerimeterCal(Trace ref) : super(ref);
 
   @override
   void calculate() {
     if (ref.feature == null) return;
 
-    // TODO:xxx
     final feature = ref.feature!;
     final viewport = feature.hostVisualArea!.viewport!;
     final points = feature.innerPoints.map((e) => viewport.convert(e)).toList();
@@ -22,10 +43,40 @@ class TracePerimeterCal extends Calculator<Trace, double> {
     // {
     //     threshold = ref.Threshold.Value;
     // }
-    double value = calcPerimeter(points, ref.feature!.isClosed, threshold);
+    double perimeter = calcPerimeter(points, ref.feature!.isClosed, threshold);
+    double area = clacArea(points);
+
+    for (var output in ref.meta.outputs) {
+      if (output.name == MeasureTerms.Perimeter) {
+        var value = roundDouble(perimeter, output.fractionalDigits);
+        feature.updateFloatValue(output, value, viewport.xUnit);
+      } else if (output.name == MeasureTerms.Area) {
+        var value = roundDouble(area, output.fractionalDigits);
+        feature.updateFloatValue(output, value, viewport.xUnit);
+      }
+    }
+    double value = clacArea(points);
     updateFloatValue(value);
   }
 
+  static double clacArea(List<DPoint> points) {
+    if (points.isEmpty) {
+      return 0;
+    }
+
+    double sum = 0;
+    var ax = points[0].x;
+    var ay = points[0].y;
+    for (var i = 1; i < points.length - 1; i++) {
+      var bx = points[i].x;
+      var by = points[i].y;
+      var cx = points[i + 1].x;
+      var cy = points[i + 1].y;
+      sum += ax * by - ay * bx + ay * cx - ax * cy + bx * cy - cx * by;
+    }
+    return (-sum / 2).abs();
+  }
+
   static double calcPerimeter(
     List<DPoint> points,
     bool isClosed,
@@ -49,25 +100,3 @@ class TracePerimeterCal extends Calculator<Trace, double> {
     return sum;
   }
 }
-
-class AreaPerimeterEllipseCal extends Calculator<Ellipse, double> {
-  AreaPerimeterEllipseCal(Ellipse ref) : super(ref);
-
-  @override
-  void calculate() {
-    if (ref.feature == null) return;
-
-    final feature = ref.feature!;
-    final viewport = feature.hostVisualArea!.viewport!;
-
-    for (var output in ref.meta.outputs) {
-      if (output.name == MeasureTypes.Perimeter) {
-        var value = ref.feature!.getCircumference(viewport.convertBoundary);
-        feature.updateFloatValue(output, value, output.unit);
-      } else if (output.name == MeasureTypes.Area) {
-        var value = ref.feature!.getArea(viewport.convertBoundary);
-        feature.updateFloatValue(output, value, output.unit);
-      }
-    }
-  }
-}

+ 5 - 5
lib/process/items/factory.dart

@@ -11,6 +11,7 @@ import 'package:fis_measure/process/primitives/polyline.dart';
 import 'package:fis_measure/process/primitives/polyline_angle.dart';
 import 'package:fis_measure/process/primitives/spline.dart';
 import 'package:fis_measure/process/primitives/straightline.dart';
+import 'package:fis_measure/process/primitives/trace.dart';
 
 /// 测量项创建器
 ///
@@ -72,6 +73,7 @@ class MeasureItemFactory {
     // Three StraightLine
     _singleton._register(
         MeasureTypes.VolumeThreeDistance, LWHStraightLine.createVolume);
+    _singleton._register(MeasureTypes.VolumeEllipse, Ellipse.createVolume);
 
     // Two Area
     _singleton._register(MeasureTypes.StenosisTwoArea, TwoArea.crateStenosis);
@@ -83,16 +85,14 @@ class MeasureItemFactory {
     // Angle
     _singleton._register(MeasureTypes.Angle, PolylineAngle.createPolyAngle);
 
-    //Ellipse
+    // Area Perimeter
     _singleton._register(
         MeasureTypes.AreaPerimeterEllipse, Ellipse.createAreaPerimeter);
-    _singleton._register(MeasureTypes.VolumeEllipse, Ellipse.createVolume);
-
-    //Polylines
     _singleton._register(
         MeasureTypes.AreaPerimeterPolyline, Polyline.createAreaPerimeter);
-    //Splines
     _singleton._register(
         MeasureTypes.AreaPerimeterSpline, Spline.createAreaPerimeter);
+    _singleton._register(
+        MeasureTypes.AreaPerimeterTrace, Trace.createAreaPerimeter);
   }
 }

+ 2 - 2
lib/process/primitives/combos/two_area.dart

@@ -23,8 +23,8 @@ class TwoArea extends TopMeasureItem<TwoAreaFeature> {
   TwoArea(ItemMeta meta) : super(meta) {
     final metaA1 = meta.getChildByName(_area1Key)!;
     final metaA2 = meta.getChildByName(_area2Key)!;
-    a1 = Trace.createArea(metaA1, this);
-    a2 = Trace.createArea(metaA2, this);
+    a1 = Trace.createAreaPerimeter(metaA1, this);
+    a2 = Trace.createAreaPerimeter(metaA2, this);
     childItems.add(a1);
     childItems.add(a2);
   }

+ 0 - 3
lib/process/primitives/combos/two_straightline.dart

@@ -56,9 +56,6 @@ class TwoStraightLine extends TopMeasureItem<TwoStraightLineFeature> {
   void onCancelingOnce() {}
 
   static TwoStraightLine createRUV(ItemMeta meta, [IMeasureItem? parent]) {
-    if (meta.measureType != MeasureTypes.AreaPerimeterTrace) {
-      throw ArgumentError();
-    }
     var twoStraightline = TwoStraightLine(meta);
     twoStraightline.calculator = ResidualUrineCal(twoStraightline);
 

+ 1 - 1
lib/process/primitives/ellipse.dart

@@ -5,8 +5,8 @@ import 'package:fis_measure/interfaces/enums/items.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
+import 'package:fis_measure/process/calcuators/area_perimeter.dart';
 import 'package:fis_measure/process/calcuators/formulas/general.dart';
-import 'package:fis_measure/process/calcuators/perimeter.dart';
 import 'package:fis_measure/process/calcuators/volume.dart';
 import 'package:fis_measure/utils/canvas.dart';
 import 'package:path_drawing/path_drawing.dart';

+ 3 - 2
lib/process/primitives/polyline.dart

@@ -4,6 +4,7 @@ import 'package:fis_measure/interfaces/date_types/point.dart';
 import 'package:fis_measure/interfaces/enums/items.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
 import 'package:fis_measure/process/calcuators/calculator.dart';
@@ -157,10 +158,10 @@ class _AreaPerimeterCalc extends Calculator<Polyline, double> {
       perimeter = calcPerimeter(points, feature.isClosed, threshold);
     }
     for (var output in ref.meta.outputs) {
-      if (output.name == MeasureTypes.Perimeter) {
+      if (output.name == MeasureTerms.Perimeter) {
         var value = roundDouble(perimeter, output.fractionalDigits);
         feature.updateFloatValue(output, value, output.unit);
-      } else if (output.name == MeasureTypes.Area) {
+      } else if (output.name == MeasureTerms.Area) {
         var value = roundDouble(area, output.fractionalDigits);
         feature.updateFloatValue(output, value, output.unit);
       }

+ 3 - 2
lib/process/primitives/spline.dart

@@ -5,6 +5,7 @@ import 'package:fis_measure/interfaces/date_types/point.dart';
 import 'package:fis_measure/interfaces/enums/items.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
 import 'package:fis_measure/process/calcuators/calculator.dart';
@@ -221,10 +222,10 @@ class _AreaPerimeterCalc extends Calculator<Spline, double> {
     area = res[1];
 
     for (var output in ref.meta.outputs) {
-      if (output.name == MeasureTypes.Perimeter) {
+      if (output.name == MeasureTerms.Perimeter) {
         var value = roundDouble(perimeter, output.fractionalDigits);
         feature.updateFloatValue(output, value, output.unit);
-      } else if (output.name == MeasureTypes.Area) {
+      } else if (output.name == MeasureTerms.Area) {
         var value = roundDouble(area, output.fractionalDigits);
         feature.updateFloatValue(output, value, output.unit);
       }

+ 5 - 17
lib/process/primitives/trace.dart

@@ -5,11 +5,10 @@ import 'package:fis_measure/interfaces/enums/items.dart';
 import 'package:fis_measure/interfaces/process/items/item.dart';
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
 import 'package:fis_measure/interfaces/process/workspace/point_info.dart';
+import 'package:fis_measure/process/calcuators/area_perimeter.dart';
 import 'package:fis_measure/process/primitives/utils/auto_snap.dart';
 import 'package:path_drawing/path_drawing.dart';
 
-import '../calcuators/area.dart';
-import '../calcuators/perimeter.dart';
 import '../items/item.dart';
 import '../items/item_feature.dart';
 
@@ -101,24 +100,13 @@ class Trace extends MeasureItem<TraceFeature> with AutoSnapMixin {
     return true;
   }
 
-  /// 创建面积测量
-  static Trace createArea(
+  static Trace createAreaPerimeter(
     ItemMeta meta, [
     IMeasureItem? parent,
   ]) {
-    Trace poyline = Trace(meta, parent);
-    poyline.calculator = TraceAreaCal(poyline);
-    return poyline;
-  }
-
-  /// 创建周长测量
-  static Trace createPerimeter(
-    ItemMeta meta, [
-    IMeasureItem? parent,
-  ]) {
-    Trace poyline = Trace(meta, parent);
-    poyline.calculator = TracePerimeterCal(poyline);
-    return poyline;
+    Trace trace = Trace(meta, parent);
+    trace.calculator = AreaPerimeterCal(trace);
+    return trace;
   }
 }
 

+ 41 - 41
lib/process/workspace/application.dart

@@ -321,30 +321,30 @@ class Application implements IApplication {
       return;
     }
 
-    if (name == MeasureTypes.Perimeter) {
-      activeMeasureItem = Trace.createPerimeter(
+    if (name == MeasureTerms.Perimeter) {
+      activeMeasureItem = Trace.createAreaPerimeter(
         ItemMeta(
-          MeasureTypes.Perimeter,
-          measureType: MeasureTypes.Perimeter,
-          description: MeasureTypes.Perimeter,
-          briefAnnotation: MeasureTypes.Perimeter,
+          MeasureTerms.Perimeter,
+          measureType: MeasureTypes.AreaPerimeterTrace,
+          description: MeasureTerms.Perimeter,
+          briefAnnotation: MeasureTerms.Perimeter,
           outputs: [
-            ItemOutputMeta(MeasureTypes.Perimeter, "Perimeter", VidUsUnit.cm),
+            ItemOutputMeta(MeasureTerms.Perimeter, "Perimeter", VidUsUnit.cm),
           ],
         ),
         null,
       );
       return;
     }
-    if (name == MeasureTypes.Area) {
-      activeMeasureItem = Trace.createArea(
+    if (name == MeasureTerms.Area) {
+      activeMeasureItem = Trace.createAreaPerimeter(
         ItemMeta(
-          MeasureTypes.Area,
-          measureType: MeasureTypes.Area,
-          description: MeasureTypes.Area,
-          briefAnnotation: MeasureTypes.Area,
+          MeasureTerms.Area,
+          measureType: MeasureTypes.AreaPerimeterTrace,
+          description: MeasureTerms.Area,
+          briefAnnotation: MeasureTerms.Area,
           outputs: [
-            ItemOutputMeta(MeasureTypes.Area, "Area", VidUsUnit.cm2),
+            ItemOutputMeta(MeasureTerms.Area, "Area", VidUsUnit.cm2),
           ],
         ),
         null,
@@ -380,68 +380,68 @@ class Application implements IApplication {
           null);
       return;
     }
-    if (name == MeasureTypes.AntCCA_IMT) {
+    if (name == MeasureTerms.AntCCA_IMT) {
       activeMeasureItem = CarotidIMT.createMeasureRect(
           ItemMeta(
-            MeasureTypes.AntCCA_IMT,
-            description: MeasureTypes.AntCCA_IMT,
-            measureType: MeasureTypes.AntCCA_IMT,
+            MeasureTerms.AntCCA_IMT,
+            description: MeasureTerms.AntCCA_IMT,
+            measureType: MeasureTerms.AntCCA_IMT,
             outputs: [
-              ItemOutputMeta(MeasureTypes.AntCCA_IMT, "", VidUsUnit.cm),
+              ItemOutputMeta(MeasureTerms.AntCCA_IMT, "", VidUsUnit.cm),
             ],
           ),
           null);
       return;
     }
-    if (name == MeasureTypes.PostCCA_IMT) {
+    if (name == MeasureTerms.PostCCA_IMT) {
       activeMeasureItem = CarotidIMT.createMeasureRect(
           ItemMeta(
-            MeasureTypes.PostCCA_IMT,
-            description: MeasureTypes.PostCCA_IMT,
-            measureType: MeasureTypes.PostCCA_IMT,
+            MeasureTerms.PostCCA_IMT,
+            description: MeasureTerms.PostCCA_IMT,
+            measureType: MeasureTerms.PostCCA_IMT,
             outputs: [
-              ItemOutputMeta(MeasureTypes.PostCCA_IMT, "", VidUsUnit.cm),
+              ItemOutputMeta(MeasureTerms.PostCCA_IMT, "", VidUsUnit.cm),
             ],
           ),
           null);
       return;
     }
-    if (name == MeasureTypes.BothCCA_IMT) {
+    if (name == MeasureTerms.BothCCA_IMT) {
       activeMeasureItem = CarotidIMT.createMeasureRect(
           ItemMeta(
-            MeasureTypes.BothCCA_IMT,
-            description: MeasureTypes.BothCCA_IMT,
-            measureType: MeasureTypes.BothCCA_IMT,
+            MeasureTerms.BothCCA_IMT,
+            description: MeasureTerms.BothCCA_IMT,
+            measureType: MeasureTerms.BothCCA_IMT,
             outputs: [
-              ItemOutputMeta(MeasureTypes.BothCCA_IMT, "", VidUsUnit.cm),
+              ItemOutputMeta(MeasureTerms.BothCCA_IMT, "", VidUsUnit.cm),
             ],
           ),
           null);
       return;
     }
-    if (name == MeasureTypes.PlaqueDetection) {
+    if (name == MeasureTerms.PlaqueDetection) {
       ///TODO: 只允许触发一次
       activeMeasureItem = CarotidDetection.createDetectionRect(
           ItemMeta(
-            MeasureTypes.PlaqueDetection,
-            description: MeasureTypes.PlaqueDetection,
-            measureType: MeasureTypes.PlaqueDetection,
+            MeasureTerms.PlaqueDetection,
+            description: MeasureTerms.PlaqueDetection,
+            measureType: MeasureTerms.PlaqueDetection,
             outputs: [
-              ItemOutputMeta(MeasureTypes.PlaqueDetection, "", VidUsUnit.cm2),
+              ItemOutputMeta(MeasureTerms.PlaqueDetection, "", VidUsUnit.cm2),
             ],
           ),
           null);
       return;
     }
-    if (name == MeasureTypes.IntimaDetection) {
+    if (name == MeasureTerms.IntimaDetection) {
       ///TODO: 只允许触发一次
       activeMeasureItem = CarotidDetection.createDetectionRect(
           ItemMeta(
-            MeasureTypes.IntimaDetection,
-            description: MeasureTypes.IntimaDetection,
-            measureType: MeasureTypes.IntimaDetection,
+            MeasureTerms.IntimaDetection,
+            description: MeasureTerms.IntimaDetection,
+            measureType: MeasureTerms.IntimaDetection,
             outputs: [
-              ItemOutputMeta(MeasureTypes.IntimaDetection, "", VidUsUnit.cm2),
+              ItemOutputMeta(MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
             ],
           ),
           null);
@@ -482,7 +482,7 @@ class Application implements IApplication {
         return ItemMeta(
           name,
           description: name,
-          measureType: MeasureTypes.Trace,
+          measureType: MeasureTypes.StenosisTwoArea,
           outputs: [
             ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
           ],
@@ -510,7 +510,7 @@ class Application implements IApplication {
         return ItemMeta(
           name,
           description: name,
-          measureType: MeasureTypes.Trace,
+          measureType: MeasureTypes.AbRatioTwoArea,
           outputs: [
             ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
           ],

+ 5 - 4
lib/view/3d_view/carotid_player.dart

@@ -1,5 +1,6 @@
 import 'dart:async';
 import 'dart:typed_data';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/interfaces/process/workspace/measure_3d_view_controller.dart';
@@ -77,11 +78,11 @@ class _CarotidPlayerState extends State<CarotidPlayer> {
         break;
       case MeasureMode.carotid2DMode:
         final itemMeta = ItemMeta(
-          MeasureTypes.IntimaDetection,
-          description: MeasureTypes.IntimaDetection,
-          measureType: MeasureTypes.IntimaDetection,
+          MeasureTerms.IntimaDetection,
+          description: MeasureTerms.IntimaDetection,
+          measureType: MeasureTerms.IntimaDetection,
           outputs: [
-            ItemOutputMeta(MeasureTypes.IntimaDetection, "", VidUsUnit.cm2),
+            ItemOutputMeta(MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
           ],
         );
         application.clearRecords();

+ 27 - 27
lib/view/measure/carotid_measure_tool.dart

@@ -32,12 +32,12 @@ class _CarotidLeftSiderSelectMeasure extends LeftSiderSelectMeasureState {
       ],
     ),
     ItemMeta(
-      MeasureTypes.Area,
-      measureType: MeasureTypes.Area,
-      description: MeasureTypes.Area,
-      briefAnnotation: MeasureTypes.Area,
+      MeasureTerms.Area,
+      measureType: MeasureTypes.AreaPerimeterTrace,
+      description: MeasureTerms.Area,
+      briefAnnotation: MeasureTerms.Area,
       outputs: [
-        ItemOutputMeta(MeasureTypes.Area, "Area", VidUsUnit.cm2),
+        ItemOutputMeta(MeasureTerms.Area, "Area", VidUsUnit.cm2),
       ],
     ),
 
@@ -52,7 +52,7 @@ class _CarotidLeftSiderSelectMeasure extends LeftSiderSelectMeasureState {
         ItemMeta(
           "A1",
           description: "A1",
-          measureType: MeasureTypes.Trace,
+          measureType: MeasureTypes.AreaPerimeterTrace,
           outputs: [
             ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
           ],
@@ -60,7 +60,7 @@ class _CarotidLeftSiderSelectMeasure extends LeftSiderSelectMeasureState {
         ItemMeta(
           "A2",
           description: "A2",
-          measureType: MeasureTypes.Trace,
+          measureType: MeasureTypes.AreaPerimeterTrace,
           outputs: [
             ItemOutputMeta("Area", "Area", VidUsUnit.cm2),
           ],
@@ -69,43 +69,43 @@ class _CarotidLeftSiderSelectMeasure extends LeftSiderSelectMeasureState {
     ),
     // '%Stenosis',
     ItemMeta(
-      MeasureTypes.AntCCA_IMT,
-      description: MeasureTypes.AntCCA_IMT,
-      measureType: MeasureTypes.AntCCA_IMT,
+      MeasureTerms.AntCCA_IMT,
+      description: MeasureTerms.AntCCA_IMT,
+      measureType: MeasureTerms.AntCCA_IMT,
       outputs: [
-        ItemOutputMeta(MeasureTypes.AntCCA_IMT, "", VidUsUnit.cm),
+        ItemOutputMeta(MeasureTerms.AntCCA_IMT, "", VidUsUnit.cm),
       ],
     ),
     ItemMeta(
-      MeasureTypes.PostCCA_IMT,
-      description: MeasureTypes.PostCCA_IMT,
-      measureType: MeasureTypes.PostCCA_IMT,
+      MeasureTerms.PostCCA_IMT,
+      description: MeasureTerms.PostCCA_IMT,
+      measureType: MeasureTerms.PostCCA_IMT,
       outputs: [
-        ItemOutputMeta(MeasureTypes.PostCCA_IMT, "", VidUsUnit.cm),
+        ItemOutputMeta(MeasureTerms.PostCCA_IMT, "", VidUsUnit.cm),
       ],
     ),
     ItemMeta(
-      MeasureTypes.BothCCA_IMT,
-      description: MeasureTypes.BothCCA_IMT,
-      measureType: MeasureTypes.BothCCA_IMT,
+      MeasureTerms.BothCCA_IMT,
+      description: MeasureTerms.BothCCA_IMT,
+      measureType: MeasureTerms.BothCCA_IMT,
       outputs: [
-        ItemOutputMeta(MeasureTypes.BothCCA_IMT, "", VidUsUnit.cm),
+        ItemOutputMeta(MeasureTerms.BothCCA_IMT, "", VidUsUnit.cm),
       ],
     ),
     ItemMeta(
-      MeasureTypes.PlaqueDetection,
-      description: MeasureTypes.PlaqueDetection,
-      measureType: MeasureTypes.PlaqueDetection,
+      MeasureTerms.PlaqueDetection,
+      description: MeasureTerms.PlaqueDetection,
+      measureType: MeasureTerms.PlaqueDetection,
       outputs: [
-        ItemOutputMeta(MeasureTypes.PlaqueDetection, "", VidUsUnit.cm2),
+        ItemOutputMeta(MeasureTerms.PlaqueDetection, "", VidUsUnit.cm2),
       ],
     ),
     ItemMeta(
-      MeasureTypes.IntimaDetection,
-      description: MeasureTypes.IntimaDetection,
-      measureType: MeasureTypes.IntimaDetection,
+      MeasureTerms.IntimaDetection,
+      description: MeasureTerms.IntimaDetection,
+      measureType: MeasureTerms.IntimaDetection,
       outputs: [
-        ItemOutputMeta(MeasureTypes.IntimaDetection, "", VidUsUnit.cm2),
+        ItemOutputMeta(MeasureTerms.IntimaDetection, "", VidUsUnit.cm2),
       ],
     ),
   ];

+ 9 - 8
lib/view/mobile_view/mobile_right_panel/mobile_measure_tool.dart

@@ -1,4 +1,5 @@
 import 'package:fis_measure/interfaces/process/items/item_metas.dart';
+import 'package:fis_measure/interfaces/process/items/terms.dart';
 import 'package:fis_measure/interfaces/process/items/types.dart';
 import 'package:fis_measure/view/measure/measure_tool.dart';
 import 'package:fis_ui/index.dart';
@@ -34,12 +35,12 @@ class _MobileMeasureSelector extends LeftSiderSelectMeasureState {
       icon: Icons.border_style,
       displayName: '周长',
       itemMeta: ItemMeta(
-        MeasureTypes.Perimeter,
-        measureType: MeasureTypes.Perimeter,
-        description: MeasureTypes.Perimeter,
+        MeasureTerms.Perimeter,
+        measureType: MeasureTypes.AreaPerimeterTrace,
+        description: MeasureTerms.Perimeter,
         briefAnnotation: "P",
         outputs: [
-          ItemOutputMeta(MeasureTypes.Perimeter, "Perimeter", VidUsUnit.cm),
+          ItemOutputMeta(MeasureTerms.Perimeter, "Perimeter", VidUsUnit.cm),
         ],
       ),
     ),
@@ -47,12 +48,12 @@ class _MobileMeasureSelector extends LeftSiderSelectMeasureState {
       icon: Icons.format_shapes,
       displayName: '面积',
       itemMeta: ItemMeta(
-        MeasureTypes.Area,
-        measureType: MeasureTypes.Area,
-        description: MeasureTypes.Area,
+        MeasureTerms.Area,
+        measureType: MeasureTypes.AreaPerimeterTrace,
+        description: MeasureTerms.Area,
         briefAnnotation: "A",
         outputs: [
-          ItemOutputMeta(MeasureTypes.Area, "Area", VidUsUnit.cm2),
+          ItemOutputMeta(MeasureTerms.Area, "Area", VidUsUnit.cm2),
         ],
       ),
     ),