Browse Source

更新测量库

loki.wu 1 year ago
parent
commit
063e6034d7

+ 13 - 0
lib/view/mobile_view/mobile_control_board/progress_bar.dart

@@ -218,6 +218,8 @@ class _ProgressBarState extends State<_ProgressBar> {
 
       case DiagnosisOrganEnum.Thyroid:
         return _buildThyroidDescription(label);
+      case DiagnosisOrganEnum.CarotidArtery:
+        return _buildCarotidDescription(label);
       default:
         return '';
     }
@@ -315,6 +317,17 @@ class _ProgressBarState extends State<_ProgressBar> {
         return '';
     }
   }
+
+  String _buildCarotidDescription(int label) {
+    switch (label) {
+      case 0:
+        return i18nBook.measure.noSignificantAbnormalitiesWereSeen.t;
+      case 1:
+        return i18nBook.measure.patch.t;
+      default:
+        return '';
+    }
+  }
 }
 
 // https://juejin.cn/post/6959703051586240549

+ 23 - 16
lib/view/paint/ai_patint_controller.dart

@@ -122,33 +122,40 @@ class AiPatintController extends GetxController {
           (detectedObjects[m].descriptions?.isNotEmpty ?? false)) {
         var lesionSizeDescription = detectedObjects[m].descriptions?.firstWhere(
             (element) => element.type == DiagnosisDescriptionEnum.LesionSize);
+
         lesionSize = lesionSizeDescription?.value ?? '';
 
         final lesionSizeMap = jsonDecode(lesionSize);
+        // var carotidInnerDiameterDescription = detectedObjects[m]
+        //     .descriptions
+        //     ?.firstWhere((element) =>
+        //         element.type == DiagnosisDescriptionEnum.CarotidInnerDiameter);
+        // final carotidInnerDiameterMap =
+        //     jsonDecode(carotidInnerDiameterDescription?.value ?? '');
         if (_HAS_VIEW_STATUS_ARR.contains(state.vidStatus)) {
           aiResultsList = [];
+          p1 = Offset(lesionSizeMap['HorizontalPoint1']['X'] * widthScale,
+              lesionSizeMap['HorizontalPoint1']['Y'] * widthScale);
+          p2 = Offset(lesionSizeMap['HorizontalPoint2']['X'] * widthScale,
+              lesionSizeMap['HorizontalPoint2']['Y'] * widthScale);
+          p3 = Offset(lesionSizeMap['VerticalPoint1']['X'] * widthScale,
+              lesionSizeMap['VerticalPoint1']['Y'] * widthScale);
+          p4 = Offset(lesionSizeMap['VerticalPoint2']['X'] * widthScale,
+              lesionSizeMap['VerticalPoint2']['Y'] * widthScale);
           for (int i = 0; i < contours!.length; i++) {
             aiResultsList.add(Offset(
               contours[i].x * widthScale,
               contours[i].y * widthScale,
             ));
-            p1 = Offset(lesionSizeMap['HorizontalPoint1']['X'] * widthScale,
-                lesionSizeMap['HorizontalPoint1']['Y'] * widthScale);
-            p2 = Offset(lesionSizeMap['HorizontalPoint2']['X'] * widthScale,
-                lesionSizeMap['HorizontalPoint2']['Y'] * widthScale);
-            p3 = Offset(lesionSizeMap['VerticalPoint1']['X'] * widthScale,
-                lesionSizeMap['VerticalPoint1']['Y'] * widthScale);
-            p4 = Offset(lesionSizeMap['VerticalPoint2']['X'] * widthScale,
-                lesionSizeMap['VerticalPoint2']['Y'] * widthScale);
-            aiDotsResults = AiDotsResults(
-              aiResultsIndex: m,
-              aiResultsList: aiResultsList,
-              p1: p1,
-              p2: p2,
-              p3: p3,
-              p4: p4,
-            );
           }
+          aiDotsResults = AiDotsResults(
+            aiResultsIndex: m,
+            aiResultsList: aiResultsList,
+            p1: p1,
+            p2: p2,
+            p3: p3,
+            p4: p4,
+          );
           aiDotsResultsList.add(aiDotsResults);
         }
       }

+ 48 - 23
lib/view/paint/date_structure.dart

@@ -1,15 +1,16 @@
+///诊断器官枚举
 enum DiagnosisOrganEnum {
   Null,
   placeHolder_1,
-  Breast,
-  Abdomen,
-  Liver,
-  Cholecyst,
-  Kidney,
-  Spleen,
-  CarotidArtery,
-  Thyroid,
-  Neck,
+  Breast, //乳腺
+  Abdomen, //腹部
+  Liver, //肝脏
+  Cholecyst, //胆囊
+  Kidney, //肾脏
+  Spleen, //脾脏
+  CarotidArtery, //颈动脉
+  Thyroid, //甲状腺
+  Neck, //颈部
 }
 
 class AIDiagnosisRect {
@@ -76,21 +77,27 @@ class AIDiagnosisPoint2D {
   }
 }
 
+///诊断描述类型
 enum DiagnosisDescriptionEnum {
-  Shape,
-  Orientation,
-  EchoPattern,
-  LesionBoundary,
-  Margin,
-  Calcification,
-  LesionSize,
-  ThyroidEchoPattern,
-  ThyroidShape,
-  ThyroidMargin,
-  ThyroidEchogenicFoci,
-  LiverShape,
-  LiverBoundary,
-  LiverEchoTexture,
+  Shape, //形状
+  Orientation, //方向
+  EchoPattern, //回声模式
+  LesionBoundary, //病变边界
+  Margin, //边缘
+  Calcification, //钙化
+  LesionSize, //病变大小
+  ThyroidEchoPattern, //甲状腺回声模式
+  ThyroidShape, //甲状腺形状
+  ThyroidMargin, //甲状腺边缘
+  ThyroidEchogenicFoci, //甲状腺回声点
+  LiverShape, //肝脏形状
+  LiverBoundary, //肝脏边界
+  LiverEchoTexture, //肝脏回声质地
+  QlaqueEchoPattern, // 斑块回声类型,这里下面是颈动脉相关的
+  QlaqueLocation, // 斑块位置
+  CarotidRateOfStenosis, // 颈动脉狭窄率
+  CarotidInnerDiameter, // 颈动脉内径
+  CarotidIntimaMediaThickness, // 颈动脉内中膜厚度,到这结束颈动脉相关
 }
 
 class AIDiagnosisDescription {
@@ -119,10 +126,19 @@ class AIDiagnosisDescription {
 }
 
 class AIDetectedObject {
+  ///标签
   int label;
+
+  ///置信度(可信程度)
   double confidence;
+
+  ///边界框
   AIDiagnosisRect? boundingBox;
+
+  ///坐标集合
   List<AIDiagnosisPoint2D>? contours;
+
+  ///描述集合
   List<AIDiagnosisDescription>? descriptions;
 
   AIDetectedObject({
@@ -167,10 +183,19 @@ class AIDetectedObject {
 }
 
 class AIDiagnosisResultPerOrgan {
+  ///诊断器官
   DiagnosisOrganEnum organ;
+
+  ///诊断矩形
   AIDiagnosisRect? organBoundBox;
+
+  ///器官轮廓:坐标集合
   List<AIDiagnosisPoint2D>? organContours;
+
+  ///器官描述
   List<AIDiagnosisDescription>? organDescriptions;
+
+  ///检测到的对象集合
   List<AIDetectedObject>? detectedObjects;
 
   AIDiagnosisResultPerOrgan({

+ 16 - 1
lib/view/paint/parts/feature_analysis.dart

@@ -130,9 +130,18 @@ class FeatureAnalysis extends StatelessWidget {
         return i18nBook.measure.lesionBoundary.t;
       case DiagnosisDescriptionEnum.LiverEchoTexture:
         return i18nBook.measure.liverEchoTexture.t;
-
       case DiagnosisDescriptionEnum.LesionSize:
         return i18nBook.measure.lesionSize.t;
+      case DiagnosisDescriptionEnum.QlaqueEchoPattern: // 斑块回声类型
+        return i18nBook.measure.plaqueEcho.t;
+      case DiagnosisDescriptionEnum.QlaqueLocation: // 斑块位置
+        return i18nBook.measure.plaquePosition.t;
+      case DiagnosisDescriptionEnum.CarotidRateOfStenosis: // 颈动脉狭窄率
+        return i18nBook.measure.stenosisRateoflumen.t;
+      case DiagnosisDescriptionEnum.CarotidInnerDiameter: // 颈动脉内径
+        return i18nBook.measure.carotidArteryDiameter.t;
+      case DiagnosisDescriptionEnum.CarotidIntimaMediaThickness: // 颈动脉内中膜厚度
+        return ''; //暂时不需要做这个
       default:
         return '';
     }
@@ -211,6 +220,12 @@ class FeatureAnalysis extends StatelessWidget {
           return i18nBook.measure.coarsecalcifications.t;
         case 'Microcalcifications':
           return i18nBook.measure.microcalcifications.t;
+        case 'AnteriorWall':
+          return i18nBook.measure.frontWall.t;
+        case 'PosteriorWall':
+          return i18nBook.measure.rearWall.t;
+        case 'SideWall':
+          return i18nBook.measure.sideWall.t;
         default:
           return '';
       }

+ 2 - 2
pubspec.yaml

@@ -66,7 +66,7 @@ dependencies:
   fis_i18n:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git
-      ref: 30fa1d6
+      ref: b77ee00
   fis_lib_qrcode:
     git:
       url: http://git.ius.plus/Project-Wing/fis_lib_qrcode.git
@@ -96,7 +96,7 @@ dependency_overrides:
   fis_i18n:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git
-      ref: 3a008fb
+      ref: b77ee00
   fis_jsonrpc:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git