123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118 |
- import 'dart:convert';
- import 'package:fis_jsonrpc/rpc.dart';
- import 'package:get/get.dart';
- import 'package:uuid/uuid.dart';
- import 'package:vnoteapp/architecture/defines.dart';
- import 'package:vnoteapp/architecture/storage/text_storage.dart';
- import 'package:vnoteapp/architecture/utils/prompt_box.dart';
- import 'package:vnoteapp/managers/interfaces/cachedRecord.dart';
- import 'package:vnoteapp/managers/interfaces/device.dart';
- import 'package:vnoteapp/managers/interfaces/diagnosis.dart';
- import 'package:vnoteapp/managers/interfaces/models/device.dart';
- import 'package:vnoteapp/pages/medical/models/item.dart';
- import 'package:vnoteapp/pages/medical/state.dart';
- import 'package:vnoteapp/store/store.dart';
- class MedicalController extends FControllerBase {
- final state = MedicalState();
- // final deviceCloseSuccessEvent = FEventHandler<bool>();
- final _diagnosisManager = Get.find<IDiagnosisManager>();
- final _cachedRecordManager = Get.find<ICachedRecordManager>();
- final _deviceManager = Get.find<IDeviceManager>();
- String patientCode = '';
- late String appDataId;
- List<MedicalItem> medicalMenuList = [
- MedicalItem(key: 'Temp', diagnosticItem: '体温'),
- MedicalItem(key: 'GLU', diagnosticItem: '血糖'),
- MedicalItem(key: 'NIBP', diagnosticItem: '血压'),
- MedicalItem(key: 'SpO2', diagnosticItem: '血氧'),
- MedicalItem(key: 'BMI', diagnosticItem: 'BMI'),
- ];
- Map<String, dynamic> diagnosisDataValue = {};
- @override
- Future<void> onLoad() async {
- patientCode = Store.user.currentSelectPatientInfo?.code ?? '';
- Get.put(MedicalController());
- var cachedAppDataId = await readCachedAppDataId();
- if (cachedAppDataId != null) {
- appDataId = cachedAppDataId;
- } else {
- await saveCachedAppDataId();
- }
- return super.onLoad();
- }
- Future<DeviceModel?> getDevice(String type) async {
- List<DeviceModel> devices = await _deviceManager.getDeviceList();
- return devices.firstWhereOrNull((element) => element.type == type);
- }
- Future<void> readCachedRecord() async {
- String? value = await _cachedRecordManager.readCachedRecord(
- state.currentTab,
- patientCode,
- 'ZLZS',
- );
- if (value == null) {
- return;
- }
- diagnosisDataValue[state.currentTab] = jsonDecode(value);
- }
- Future<bool?> saveCachedAppDataId() async {
- appDataId = const Uuid().v4().replaceAll('-', '');
- print(appDataId);
- print('🌰');
- TextStorage cachedRecord = TextStorage(
- fileName: 'appDataId',
- directory: "patient/$patientCode",
- );
- return cachedRecord.save(appDataId);
- }
- Future<String?> readCachedAppDataId() async {
- TextStorage cachedRecord = TextStorage(
- fileName: 'appDataId',
- directory: "patient/$patientCode",
- );
- return cachedRecord.read();
- }
- Future<void> saveCachedRecord() async {
- await _cachedRecordManager.saveCachedRecord(
- state.currentTab,
- patientCode,
- 'ZLZS',
- jsonEncode(
- diagnosisDataValue[state.currentTab],
- ),
- );
- print(diagnosisDataValue['BMI']);
- }
- Future<void> createDiagnosis() async {
- CreateDiagnosisRequest diagnosisRequest = CreateDiagnosisRequest(
- patientCode: patientCode,
- appDataId: appDataId,
- diagnosisTime: DateTime.now(),
- diagnosisData: jsonEncode(diagnosisDataValue[state.currentTab]),
- key: state.currentTab,
- );
- saveCachedRecord();
- final result =
- await _diagnosisManager.createDiagnosisAsync(diagnosisRequest);
- if (result.isNotEmpty) {
- PromptBox.toast('保存成功');
- final index = state.medicalMenuList
- .indexWhere((element) => element.key == state.currentTab);
- if (index < 4) {
- state.currentTab = state.medicalMenuList[index + 1].key;
- } else {
- Get.back();
- }
- }
- }
- }
|