|
@@ -1,10 +1,12 @@
|
|
|
import 'dart:convert';
|
|
|
+import 'dart:io';
|
|
|
import 'package:fis_jsonrpc/rpc.dart';
|
|
|
import 'package:flutter/foundation.dart';
|
|
|
import 'package:flutter/material.dart';
|
|
|
import 'package:get/get.dart';
|
|
|
import 'package:uuid/uuid.dart';
|
|
|
import 'package:vitalapp/architecture/utils/prompt_box.dart';
|
|
|
+import 'package:vitalapp/architecture/utils/upload.dart';
|
|
|
import 'package:vitalapp/components/alert_dialog.dart';
|
|
|
import 'package:vitalapp/database/db.dart';
|
|
|
import 'package:vitalapp/database/entities/defines.dart';
|
|
@@ -13,6 +15,7 @@ import 'package:vitalapp/global.dart';
|
|
|
import 'package:vitalapp/managers/interfaces/exam.dart';
|
|
|
import 'package:vitalapp/managers/interfaces/patient.dart';
|
|
|
import 'package:vitalapp/managers/interfaces/record_data_cache.dart';
|
|
|
+import 'package:vitalapp/rpc.dart';
|
|
|
import 'package:vnote_device_plugin/consts/types.dart';
|
|
|
import 'package:vitalapp/architecture/defines.dart';
|
|
|
import 'package:vitalapp/architecture/storage/text_storage.dart';
|
|
@@ -25,6 +28,7 @@ import 'package:vitalapp/pages/medical/state.dart';
|
|
|
import 'package:vitalapp/store/store.dart';
|
|
|
import 'package:vnote_device_plugin/events/event_type.dart';
|
|
|
import 'package:fis_common/logger/logger.dart';
|
|
|
+import 'package:vitalapp/architecture/storage/storage.dart';
|
|
|
|
|
|
class MedicalController extends FControllerBase {
|
|
|
String patientCode = '';
|
|
@@ -347,12 +351,80 @@ class MedicalController extends FControllerBase {
|
|
|
}
|
|
|
|
|
|
/// 【TODO 接口需要变更】 心电
|
|
|
- Future<void> createHeart(String physicalExamNumber) async {
|
|
|
+ Future<void> createHeart(
|
|
|
+ String physicalExamNumber,
|
|
|
+ String? keyValue,
|
|
|
+ ) async {
|
|
|
+ Map<String, dynamic> input = diagnosisDataValue;
|
|
|
+ for (var entry in input.entries) {
|
|
|
+ var key = entry.key;
|
|
|
+ var value = entry.value;
|
|
|
+ if (value != null) {
|
|
|
+ Store.app.setBusy("提交中");
|
|
|
+ if (['Heart', 'TwelveHeart'].contains(key) && value is Map) {
|
|
|
+ value = await uploadData(value);
|
|
|
+ }
|
|
|
+ Store.app.busy = false;
|
|
|
+ // diagnosisItems.add(
|
|
|
+ // DiagnosisItem(
|
|
|
+ // key: key,
|
|
|
+ // diagnosisData: jsonEncode(value),
|
|
|
+ // ),
|
|
|
+ // );
|
|
|
+ }
|
|
|
+ print('$key: $value');
|
|
|
+ }
|
|
|
+
|
|
|
+ Map<String, dynamic> output = {};
|
|
|
+
|
|
|
+ input.forEach((key, value) {
|
|
|
+ value.forEach((innerKey, innerValue) {
|
|
|
+ output[innerKey] = innerValue;
|
|
|
+ });
|
|
|
+ });
|
|
|
var result = await _examManager.createExam(CreateExamRequest(
|
|
|
- key: "TJXD",
|
|
|
- examData: jsonEncode(diagnosisDataValue),
|
|
|
+ key: keyValue ?? "HEIBasic",
|
|
|
+ examData: jsonEncode(output),
|
|
|
physicalExamNumber: physicalExamNumber,
|
|
|
));
|
|
|
+ if (result == true) {
|
|
|
+ Get.back();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ bool isUploaded(String url) {
|
|
|
+ return url.startsWith('https://') || url.startsWith('http://');
|
|
|
+ }
|
|
|
+
|
|
|
+ Future<Map> uploadData(Map data) async {
|
|
|
+ if (data['ECG_POINT'] != null && !isUploaded(data['ECG_POINT'])) {
|
|
|
+ File ecgPointFile =
|
|
|
+ await rpc.storage.writeStringToFile(data['ECG_POINT']);
|
|
|
+ String? ecgPointUrl = await rpc.storage.uploadFile(ecgPointFile);
|
|
|
+ data['ECG_POINT'] = ecgPointUrl ?? '';
|
|
|
+ // ... 上传点集
|
|
|
+ }
|
|
|
+ if (data['ECG'] != null && !isUploaded(data['ECG'])) {
|
|
|
+ // ... 上传图片
|
|
|
+ /// 图片地址
|
|
|
+ final imageFile = UploadUtils.convertBase64ToXFile(data['ECG']);
|
|
|
+ String? imageUrl = await rpc.storage.upload(imageFile!);
|
|
|
+ data['ECG'] = imageUrl ?? '';
|
|
|
+ }
|
|
|
+ if (data['ECG_POINT12'] != null && !isUploaded(data['ECG_POINT12'])) {
|
|
|
+ File ecgPointFile =
|
|
|
+ await rpc.storage.writeStringToFile(data['ECG_POINT12']);
|
|
|
+ String? ecgPointUrl = await rpc.storage.uploadFile(ecgPointFile);
|
|
|
+ data['ECG_POINT12'] = ecgPointUrl ?? '';
|
|
|
+ // ... 上传点集
|
|
|
+ }
|
|
|
+ if (data['ECG12'] != null && !isUploaded(data['ECG12'])) {
|
|
|
+ // ... 上传图片
|
|
|
+ final imageFile = UploadUtils.convertBase64ToXFile(data['ECG12']);
|
|
|
+ String? imageUrl = await rpc.storage.upload(imageFile!);
|
|
|
+ data['ECG12'] = imageUrl ?? '';
|
|
|
+ }
|
|
|
+ return data;
|
|
|
}
|
|
|
|
|
|
/// 体检 检查提交
|