import 'dart:async'; import 'package:fis_jsonrpc/rpc.dart'; import 'package:get/get.dart'; import 'package:vitalapp/architecture/defines.dart'; import 'package:vitalapp/architecture/utils/confirm_box.dart'; import 'package:vitalapp/managers/interfaces/patient.dart'; import 'package:vitalapp/pages/patient/info/widgets/ext_model.dart'; import 'package:vitalapp/pages/patient_info/state.dart'; import 'package:vitalapp/store/store.dart'; class PatientInfomationController extends FControllerBase { final state = PatientInfomationState(); @override void onReady() { super.onReady(); //_loadData(); } /// 处理 “同户籍地址” 勾选变更事件 void onSyncAddressCheckChanged(bool isChecked) { state.isSyncAddresses = isChecked; if (isChecked) { // 同步户籍地址到现住地址 state.address = state.permanentResidenceAddress; } else { state.address = ""; } } Future onCardNoChanged(String value) async { final passed = await checkPatientCreatePassed(value); if (passed) { state.cardNo = value; } return passed; } Future checkPatientCreatePassed(String cardNo) async { if (cardNo == state.cardNo) { return true; } busy = true; final patient = await Get.find().getDetail( cardNo, isValidOperationDoctor: false, allowOfflineData: false, ); busy = false; if (patient == null) { return true; } List contents = [""]; if (patient.createdDoctorName == null) { contents[0] = "该居民已在\"${patient.createdOrgName}\"建档"; contents.add("姓名:${patient.patientName}"); contents.add("证件号:${patient.cardNo}"); } else { contents[0] = "该居民已在\"${patient.createdOrgName}\"下由\"${patient.createdDoctorName}\"建档"; contents.add("姓名:${patient.patientName}"); contents.add("证件号:${patient.cardNo}"); } await ConfirmBox.showMultiLines( contents: contents, width: 600, showCancel: false, onConfirm: () { state.cardNo = ''; }, ); return false; } /// 检查是否存在居民离线缓存,并 Future checkOfflinePatientExists(String cardNo) async { final model = await Get.find().getOfflineFullInfo(cardNo); if (model == null) { return; } final isConfirmed = await ConfirmBox.show( content: "检查到居民的信息缓存,是否自动填充?", width: 520, showCancel: false, ); if (!isConfirmed) { return; } state.updateDto(model); if (model.extJsonMap != null) { state.detailInfo = PatientDetailInfoModel.fromJson(model.extJsonMap!); state.healthInfo = PatientHealthInfoModel.fromJson(model.extJsonMap!); } } }