Browse Source

fixed: 0018249: 【一体机】【健康体检】体检表中,点击检测,提交所有检测项,第二次只提交体温,体检表里的血压数值自动被清空

loki.wu 11 months ago
parent
commit
e10878b9b4

+ 6 - 1
lib/managers/diagnosis.dart

@@ -184,7 +184,12 @@ class DiagnosisManager implements IDiagnosisManager {
     for (var element in dto.diagnosisAggregationData!) {
       if (element.diagnosisData != "null") {
         var jsonData = json.decode(element.diagnosisData!);
-        List<String> keys = jsonData.keys.toList();
+        List<String> keys = [];
+        if (jsonData is Map) {
+          for (var key in jsonData.keys) {
+            keys.add(key);
+          }
+        }
 
         List<DictionaryWithUnitDTO>? dtos = [];
         if (!kIsOnline) {

+ 3 - 2
lib/pages/medical/widgets/blood_sugar.dart

@@ -36,7 +36,8 @@ class _ExamBloodSugarState extends State<BloodSugar> {
   int errorCount = 0;
   String _bloodStatus = '';
 
-  late String _value = controller.diagnosisDataValue['GLU']?['sugar'] ?? '';
+  late String _value =
+      controller.diagnosisDataValue['GLU']?['sugar']?.toString() ?? '';
   @override
   void initState() {
     WidgetsBinding.instance.addPostFrameCallback((timeStamp) {
@@ -85,7 +86,7 @@ class _ExamBloodSugarState extends State<BloodSugar> {
   }
 
   Future<void> initData() async {
-    _value = controller.diagnosisDataValue['GLU']?['sugar'] ?? '';
+    _value = controller.diagnosisDataValue['GLU']?['sugar']?.toString() ?? '';
     logger.i('_ExamBloodSugarState initData sugar:$_value');
     setState(() {});
   }

+ 4 - 3
lib/pages/medical/widgets/body_temperature.dart

@@ -36,7 +36,7 @@ class _ExamBodyTemperatureState extends State<BodyTemperature> {
   ///重试机制
 
   late String _value =
-      controller.diagnosisDataValue['Temp']?['Temperature'] ?? '';
+      controller.diagnosisDataValue['Temp']?['Temperature']?.toString() ?? '';
   @override
   void initState() {
     WidgetsBinding.instance.addPostFrameCallback(
@@ -71,11 +71,12 @@ class _ExamBodyTemperatureState extends State<BodyTemperature> {
   }
 
   Future<void> initTemperature() async {
-    _value = controller.diagnosisDataValue['Temp']?['Temperature'] ?? '';
+    _value =
+        controller.diagnosisDataValue['Temp']?['Temperature'].toString() ?? '';
 
     /// 体检系统 基础检查的特殊处理
     if (controller.diagnosisDataValue['Temperature'] != null) {
-      _value = controller.diagnosisDataValue['Temperature'] ?? '';
+      _value = controller.diagnosisDataValue['Temperature']?.toString() ?? '';
       logger.i('_ExamBloodSugarState initData Temperature:$_value');
       setState(() {});
       return;

+ 22 - 24
lib/pages/medical_checkup_station/registration/controller/list.dart

@@ -16,6 +16,8 @@ import 'package:vitalapp/components/appbar.dart';
 import 'package:vitalapp/components/button.dart';
 import 'package:vitalapp/components/scroll_list.dart';
 import 'package:vitalapp/components/table/table_column.dart';
+import 'package:vitalapp/managers/interfaces/diagnosis.dart';
+import 'package:vitalapp/managers/interfaces/models/diagnosis_aggregation_record_model.dart';
 import 'package:vitalapp/managers/interfaces/patient.dart';
 import 'package:vitalapp/managers/interfaces/prescription.dart';
 import 'package:vitalapp/managers/interfaces/registration.dart';
@@ -714,7 +716,7 @@ class RegistrationListController {
             Positioned(
               left: 16,
               bottom: 16,
-              child: _buildMedicalButton(rowData.physicalExamNumber ?? ''),
+              child: _buildMedicalButton(rowData.idNumber),
             )
           ],
         ),
@@ -742,36 +744,32 @@ class RegistrationListController {
     );
   }
 
-  Widget _buildMedicalButton(String physicalExamNumber) {
+  Widget _buildMedicalButton(String patientCode) {
     if (_hasHealthMonitor()) {
       return Container(
         width: 214,
         margin: EdgeInsets.only(right: 10),
         child: VButton(
           onTap: () async {
-            List<ExamDTO>? examList = await Get.find<IRegistrationManager>()
-                .getExamListByPhysicalExamNumberAsync(
-              physicalExamNumber: physicalExamNumber,
-            );
-            if (examList != null) {
-              Map examData = {};
-              var firstItem = examList
-                  .firstWhereOrNull((element) => element.key == "ZZYBZK");
-              var firstExamData = firstItem?.examData;
-              if (firstExamData != null) {
-                Map firstExam = jsonDecode(firstExamData);
-                if (firstExam.containsKey("BloodPressure")) {
-                  examData["BloodPressure"] = firstExam["BloodPressure"];
-                }
-                if (firstExam.containsKey("Temperature")) {
-                  examData["Temperature"] = firstExam["Temperature"];
+            var diagnosis = await Get.find<IDiagnosisManager>()
+                .getDiagnosisAggregationPageAsync(patientCode, 1, 10);
+            if (diagnosis?.pageData?.isNotEmpty ?? false) {
+              try {
+                Map<String, dynamic> diagnosisDataValue = {};
+                for (DiagnosisAggregationRecordModel data
+                    in diagnosis!.pageData!) {
+                  if (data.diagnosisAggregationData?.isNotEmpty ?? false) {
+                    for (DiagnosisAggregationData diaData
+                        in data.diagnosisAggregationData!) {
+                      diagnosisDataValue[diaData.key ?? ''] =
+                          jsonDecode(diaData.diagnosisData ?? '');
+                    }
+                    break;
+                  }
                 }
-                //  if (firstExam.containsKey("Sbp_Right")) {
-                //   examData["Sbp_Right"] = firstExam["Sbp_Right"];
-                // }
-              }
-              var secordItem =
-                  examList.firstWhereOrNull((element) => element.key == "FZJC");
+                var medicalController = Get.find<MedicalController>();
+                medicalController.diagnosisDataValue = diagnosisDataValue;
+              } catch (e) {}
             }
             Get.dialog<MedicalController>(
               Scaffold(