Browse Source

PC端打开测量页面功能实现

loki.wu 2 years ago
parent
commit
8b3efb713b

+ 18 - 0
lib/main.dart

@@ -1,5 +1,6 @@
 import 'dart:ui';
 import 'package:fis_measure/measure_page_test.dart';
+import 'package:fis_measure/view/measure/measure_view.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
 import 'package:fis_i18n/i18n.dart';
@@ -131,6 +132,23 @@ class _MyHomePageState extends State<MyHomePage> {
               },
               child: const Text("Player"),
             ),
+            const SizedBox(
+              height: 15,
+            ),
+            ElevatedButton(
+              onPressed: () {
+                Navigator.of(context).push(
+                  MaterialPageRoute(
+                    builder: (context) => const MeasureMainPage(
+                        '50BB5ED499304A8C8BD77B39CBCF596E',
+                        'RecordInfoDO_20220811025200rOow04',
+                        'PatientInfoDO_202208110311443tup96',
+                        'RemedicalDO_20220811025202y3u0Rc'),
+                  ),
+                );
+              },
+              child: const Text("Measure image"),
+            ),
           ],
         ),
       ),

+ 1 - 3
lib/measure_page_test.dart

@@ -1,4 +1,3 @@
-import 'package:fis_measure/index.dart';
 import 'package:fis_measure/interfaces/enums/annotation.dart';
 import 'package:fis_measure/interfaces/process/items/measure_terms.dart';
 import 'package:fis_measure/interfaces/process/player/play_controller.dart';
@@ -6,7 +5,6 @@ import 'package:fis_measure/interfaces/process/workspace/application.dart';
 import 'package:fis_measure/interfaces/process/workspace/exam_info.dart';
 import 'package:fis_measure/interfaces/process/workspace/measure_controller.dart';
 import 'package:fis_measure/process/workspace/measure_controller.dart';
-import 'package:fis_measure/process/workspace/measure_data_controller.dart';
 import 'package:fis_measure/view/main/desktop.dart';
 import 'package:flutter/material.dart';
 import 'package:get/get.dart';
@@ -24,7 +22,7 @@ class _MeasureTestPageState extends State<MeasureTestPage> {
   static const C_CONVEX_TISSUE =
       "http://43.138.119.65:9303/Flyinsono-BJ-1300984704.VCS.AP-BeiJing/9f74db43fd3b4fc486edc59106ae96ae.VID";
 
-  final datac = Get.put(MeasureDataController());
+  //final datac = Get.put(MeasureDataController());
   final controller = Get.put<IMeasureController>(MeasureController(
     "12345",
     imagesFetchFunc: (code) async {

+ 14 - 1
lib/process/workspace/measure_data_controller.dart

@@ -1,5 +1,6 @@
 import 'package:fis_common/event/event_type.dart';
 import 'package:fis_jsonrpc/rpc.dart';
+import 'package:fis_measure/process/workspace/measure_handler.dart';
 
 /// 图片信息数据
 abstract class IMeasureDataController {
@@ -102,7 +103,19 @@ class MeasureDataController implements IMeasureDataController {
     }
   }
 
-  MeasureDataController();
+  MeasureDataController(
+      this.getRemedicalList, this.getImageInfo, this.getMeasureApplication);
+
+  ///参数1:patientCode,参数2:recordCode,参数3:token
+  Future<List<RemedicalItemList>> Function(String, String, String)
+      getRemedicalList;
+
+  ///参数1:remedicalCode,参数2:token
+  Future<RemedicalInfoDTO?> Function(String, String) getImageInfo;
+
+  ///参数1:测量模式参数
+  Future<MeasureApplicationDTO?> Function(MeasureModeSelection)
+      getMeasureApplication;
 
   void _onRemedicalListChanged() {
     remedicalListResultChanged.emit(this, remedicalList);

+ 1 - 1
lib/view/measure/measure_player.dart

@@ -35,7 +35,7 @@ class _MeasureRightBoardState extends State<MeasureRightBoard> {
                 color: Colors.white,
               ),
             ),
-          )
+          ),
         ],
       ),
     );

+ 26 - 7
lib/view/measure/measure_tool.dart

@@ -36,23 +36,42 @@ class _LeftSiderSelectMeasureState extends FState<LeftSiderSelectMeasure> {
   }
 
   Future<void> getName() async {
-    measureHandler.measureModeChanged = MeasureModeSelection(
+    var measureModeSelection = MeasureModeSelection(
       application.applicationName,
       application.categoryName,
       ['Tissue'],
     );
-    if (measureData.getMeasureApplicationList.isEmpty) {
-      await Future.delayed(const Duration(milliseconds: 500), () {
-        changeItem(measureData.getMeasureApplicationList[0]);
-      });
+    measureHandler.measureModeChanged = measureModeSelection;
+    measureData.getMeasureApplicationList = [];
+    var measureApplicationDTO =
+        await measureData.getMeasureApplication.call(measureModeSelection);
+    if (measureApplicationDTO != null) {
+      ///模式列表
+      var models = measureApplicationDTO.availableModes;
+      if (models != null && models.isNotEmpty) {
+        ///群组列表
+        var groups = models[0].availableGroups;
+        if (groups != null && groups.isNotEmpty) {
+          ///项目列表
+          var folders = groups[0].availableFolders;
+          if (folders != null && folders.isNotEmpty) {
+            measureData.getMeasureApplicationList =
+                folders[0].workingItemNames ?? [];
+            if (folders[0].availableItems != null) {
+              measureData.itemMetaList = folders[0].availableItems!.toList();
+            }
+            if (measureData.getMeasureApplicationList.isNotEmpty) {
+              changeItem(measureData.getMeasureApplicationList[0]);
+            }
+          }
+        }
+      }
     }
-    changeItem(measureData.getMeasureApplicationList[0]);
   }
 
   @override
   void initState() {
     getName();
-
     super.initState();
   }
 

+ 45 - 8
lib/view/measure/measure_view.dart

@@ -13,7 +13,16 @@ import 'package:get/get.dart';
 
 /// 测量主页面
 class MeasureMainPage extends StatefulWidget implements FWidget {
-  const MeasureMainPage({Key? key}) : super(key: key);
+  const MeasureMainPage(
+      this.token, this.recordCode, this.patientCode, this.remedicalCode,
+      {Key? key})
+      : super(key: key);
+
+  final String token;
+  final String patientCode;
+  final String remedicalCode;
+  final String recordCode;
+
   @override
   State<StatefulWidget> createState() => _MeasureMainPageState();
 }
@@ -53,18 +62,46 @@ class _MeasureMainPageState extends State<MeasureMainPage> {
     ));
     measureController.load().then((value) {
       int selectedImageIndex = -1;
-      ExamImageInfo selectedImage = examImageInfoList.firstWhere(
-        (element) => element.url == measureData.itemCurrentImage,
-      );
-      selectedImageIndex = examImageInfoList.indexOf(selectedImage);
-      measureController.examInfo.selectedImageIndex = selectedImageIndex;
+      if (examImageInfoList
+          .any((element) => element.url == measureData.itemCurrentImage)) {
+        ExamImageInfo selectedImage = examImageInfoList.firstWhere(
+          (element) => element.url == measureData.itemCurrentImage,
+        );
+        selectedImageIndex = examImageInfoList.indexOf(selectedImage);
+        measureController.examInfo.selectedImageIndex = selectedImageIndex;
+      }
     });
   }
 
   @override
   void initState() {
-    List<RemedicalInfoDTO> remedicals = measureData.remedicalList;
-    getExamImageInfoList(remedicals);
+    List<RemedicalInfoDTO> remedicals = [];
+    print('token : ' + widget.token);
+    print('patientCode : ' + widget.patientCode);
+    print('recordCode : ' + widget.recordCode);
+    print('remedicalCode : ' + widget.remedicalCode);
+    measureData.getRemedicalList
+        .call(widget.patientCode, widget.recordCode, widget.token)
+        .then((value) {
+      for (var remedicalItemList in value) {
+        remedicals.addAll(remedicalItemList.remedicalList ?? []);
+      }
+      measureData.remedicalList = remedicals;
+
+      measureData.getImageInfo
+          .call(widget.remedicalCode, widget.token)
+          .then((remedicalInfo) {
+        if (remedicalInfo != null) {
+          measureData.aiResults = remedicalInfo.diagnosisResult ?? '';
+          if (remedicalInfo.terminalImages != null) {
+            measureData.itemCurrentImage =
+                remedicalInfo.terminalImages!.imageUrl ?? '';
+            getExamImageInfoList(remedicals);
+          }
+        }
+        setState(() {});
+      });
+    });
     measureController.imageLoaded.addListener(onImageLoaded);
 
     super.initState();

+ 5 - 5
pubspec.lock

@@ -140,8 +140,8 @@ packages:
     dependency: "direct main"
     description:
       path: "."
-      ref: a9ade48f4d
-      resolved-ref: a9ade48f4dab62b4e0499e2d6eccc75f41c2c045
+      ref: b3adb2c3dd3b544de51076f6f45260bc7a981fb6
+      resolved-ref: b3adb2c3dd3b544de51076f6f45260bc7a981fb6
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git"
     source: git
     version: "0.0.1"
@@ -149,8 +149,8 @@ packages:
     dependency: "direct main"
     description:
       path: "."
-      ref: "792e11d4fe"
-      resolved-ref: "792e11d4feaf564b1709c8c2b7f837345331fc6f"
+      ref: "34e393c416f1f3830723c2ea4fde3d6edba4fdab"
+      resolved-ref: "34e393c416f1f3830723c2ea4fde3d6edba4fdab"
       url: "http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git"
     source: git
     version: "0.0.1"
@@ -358,7 +358,7 @@ packages:
       name: path_provider_android
       url: "https://pub.flutter-io.cn"
     source: hosted
-    version: "2.0.17"
+    version: "2.0.18"
   path_provider_ios:
     dependency: transitive
     description:

+ 2 - 2
pubspec.yaml

@@ -85,11 +85,11 @@ dependency_overrides:
   fis_i18n:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_i18n.git
-      ref: a9ade48f4d
+      ref: b3adb2c3dd3b544de51076f6f45260bc7a981fb6
   fis_jsonrpc:
     git:
       url: http://git.ius.plus:88/Project-Wing/fis_lib_jsonrpc.git
-      ref: 792e11d4fe
+      ref: 34e393c416f1f3830723c2ea4fde3d6edba4fdab
   fis_lib_business_components:
     git:
       url: http://git.ius.plus/bakamaka.guan/fis_lib_business_components.git