Browse Source

fixed: 0018873: 【精神障碍补充表】连接4G网络,保存补充表的信息后,再打开查看已填写的内容,需要转圈记在15s才显示

loki.wu 10 months ago
parent
commit
2ce84586f9

+ 3 - 0
lib/managers/interfaces/patient.dart

@@ -83,6 +83,9 @@ abstract class IPatientManager implements IManager {
     required String physicalExamNumber,
   });
 
+  Future<PatientExtensionDTO?> getPatientExtensionDetailByCodeAndKey(
+      String key, String patientCode);
+
   // /// 更新离线记录为同步成功
   // Future<void> updateOfflineSyncDone();
 

+ 19 - 0
lib/managers/patient.dart

@@ -339,6 +339,25 @@ class PatientManager implements IPatientManager {
     }
   }
 
+  @override
+  Future<PatientExtensionDTO?> getPatientExtensionDetailByCodeAndKey(
+      String key, String patientCode) async {
+    try {
+      final result = await rpc.vitalPatientExtension
+          .getPatientExtensionDetailByCodeAndKeyAsync(
+              GetPatientExtensionByCodeAndKeyRequest(
+        patientCode: patientCode,
+        key: key,
+        token: Store.user.token,
+      ));
+      return result;
+    } catch (e) {
+      logger.e(
+          "PatientManager getPatientExtensionDetailByCodeAndKey error.", e);
+      return null;
+    }
+  }
+
   @override
   Future<bool> updatePatientExtensionAsync(
       UpdatePatientExtensionRequest request) async {

+ 27 - 8
lib/pages/check/widgets/new_configurable_card.dart

@@ -16,6 +16,7 @@ import 'package:vitalapp/components/dialog_input.dart';
 import 'package:vitalapp/components/dialog_number.dart';
 import 'package:vitalapp/components/dynamic_drawer.dart';
 import 'package:vitalapp/managers/interfaces/cachedRecord.dart';
+import 'package:vitalapp/managers/interfaces/patient.dart';
 import 'package:vitalapp/managers/interfaces/registration.dart';
 import 'package:vitalapp/managers/interfaces/template.dart';
 import 'package:vitalapp/pages/check/models/form.dart';
@@ -332,15 +333,33 @@ class NewConfigurableFormState extends State<NewConfigurableCard> {
   }
 
   Future<void> setExamData() async {
-    List<ExamDTO>? examList = await Get.find<IRegistrationManager>()
-        .getExamListByPhysicalExamNumberAsync(
-      physicalExamNumber: widget.physicalExamNumber,
-    );
+    if (widget.physicalExamNumber.isNotEmpty) {
+      List<ExamDTO>? examList = await Get.find<IRegistrationManager>()
+          .getExamListByPhysicalExamNumberAsync(
+        physicalExamNumber: widget.physicalExamNumber,
+      );
 
-    ExamDTO? currentExam = examList?.firstWhereOrNull(
-      (element) => element.key == widget.cardKey,
-    );
-    _currentExam = currentExam;
+      ExamDTO? currentExam = examList?.firstWhereOrNull(
+        (element) => element.key == widget.cardKey,
+      );
+      _currentExam = currentExam;
+    } else if (widget.cardKey == "YZJSZABCXX") {
+      PatientExtensionDTO? patientExtensionDTO =
+          await Get.find<IPatientManager>()
+              .getPatientExtensionDetailByCodeAndKey(
+        widget.cardKey,
+        widget.patientCode ?? '',
+      );
+      if (patientExtensionDTO != null) {
+        String extensionData = patientExtensionDTO.extensionData ?? '';
+        _currentExam = ExamDTO(
+          code: patientExtensionDTO.code,
+          patientCode: patientExtensionDTO.patientCode,
+          examData: extensionData,
+          key: patientExtensionDTO.key,
+        );
+      }
+    }
   }
 
   Future<void> fetchTemplateData() async {

+ 4 - 2
lib/pages/patient/mental_disorder_info/view.dart

@@ -3,6 +3,7 @@ import 'package:get/get.dart';
 import 'package:vitalapp/components/appbar.dart';
 import 'package:vitalapp/pages/check/widgets/new_configurable_card.dart';
 import 'package:vitalapp/pages/patient/mental_disorder_info/controller.dart';
+import 'package:vitalapp/store/store.dart';
 
 class MentalDisorderInfoView extends GetView<MentalDisorderInfoController> {
   const MentalDisorderInfoView();
@@ -23,8 +24,9 @@ class MentalDisorderInfoView extends GetView<MentalDisorderInfoController> {
           );
           return true;
         },
-        // physicalExamNumber: "physicalExamNumber"
-        examData: controller.state.examData, physicalExamNumber: '',
+        examData: controller.state.examData,
+        physicalExamNumber: '',
+        patientCode: Store.user.currentSelectPatientInfo?.code,
       ),
     );
   }