controller.dart 2.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import 'dart:async';
  2. import 'package:fis_jsonrpc/rpc.dart';
  3. import 'package:get/get.dart';
  4. import 'package:vitalapp/architecture/defines.dart';
  5. import 'package:vitalapp/architecture/utils/confirm_box.dart';
  6. import 'package:vitalapp/managers/interfaces/patient.dart';
  7. import 'package:vitalapp/pages/patient/info/widgets/ext_model.dart';
  8. import 'package:vitalapp/pages/patient_info/state.dart';
  9. import 'package:vitalapp/store/store.dart';
  10. class PatientInfomationController extends FControllerBase {
  11. final state = PatientInfomationState();
  12. @override
  13. void onReady() {
  14. super.onReady();
  15. //_loadData();
  16. }
  17. /// 处理 “同户籍地址” 勾选变更事件
  18. void onSyncAddressCheckChanged(bool isChecked) {
  19. state.isSyncAddresses = isChecked;
  20. if (isChecked) {
  21. // 同步户籍地址到现住地址
  22. state.address = state.permanentResidenceAddress;
  23. } else {
  24. state.address = "";
  25. }
  26. }
  27. Future<bool> onCardNoChanged(String value) async {
  28. final passed = await checkPatientCreatePassed(value);
  29. if (passed) {
  30. state.cardNo = value;
  31. }
  32. return passed;
  33. }
  34. Future<bool> checkPatientCreatePassed(String cardNo) async {
  35. if (cardNo == state.cardNo) {
  36. return true;
  37. }
  38. busy = true;
  39. final patient = await Get.find<IPatientManager>().getDetail(
  40. cardNo,
  41. isValidOperationDoctor: false,
  42. allowOfflineData: false,
  43. );
  44. busy = false;
  45. if (patient == null) {
  46. return true;
  47. }
  48. List<String> contents = [""];
  49. if (patient.createdDoctorName == null) {
  50. contents[0] = "该居民已在\"${patient.createdOrgName}\"建档";
  51. contents.add("姓名:${patient.patientName}");
  52. contents.add("证件号:${patient.cardNo}");
  53. } else {
  54. contents[0] =
  55. "该居民已在\"${patient.createdOrgName}\"下由\"${patient.createdDoctorName}\"建档";
  56. contents.add("姓名:${patient.patientName}");
  57. contents.add("证件号:${patient.cardNo}");
  58. }
  59. await ConfirmBox.showMultiLines(
  60. contents: contents,
  61. width: 600,
  62. showCancel: false,
  63. onConfirm: () {
  64. state.cardNo = '';
  65. },
  66. );
  67. return false;
  68. }
  69. /// 检查是否存在居民离线缓存,并
  70. Future<void> checkOfflinePatientExists(String cardNo) async {
  71. final model = await Get.find<IPatientManager>().getOfflineFullInfo(cardNo);
  72. if (model == null) {
  73. return;
  74. }
  75. final isConfirmed = await ConfirmBox.show(
  76. content: "检查到居民的信息缓存,是否自动填充?",
  77. width: 520,
  78. showCancel: false,
  79. );
  80. if (!isConfirmed) {
  81. return;
  82. }
  83. state.updateDto(model);
  84. if (model.extJsonMap != null) {
  85. state.detailInfo = PatientDetailInfoModel.fromJson(model.extJsonMap!);
  86. state.healthInfo = PatientHealthInfoModel.fromJson(model.extJsonMap!);
  87. }
  88. }
  89. }