state.dart 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119
  1. import 'package:fis_jsonrpc/rpc.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/architecture/utils/datetime.dart';
  4. import 'package:vitalapp/architecture/utils/sensitive.dart';
  5. import 'package:vitalapp/consts/rpc_enum_labels.dart';
  6. import 'package:vitalapp/global.dart';
  7. import 'package:vitalapp/managers/interfaces/patient.dart';
  8. import 'package:vitalapp/store/store.dart';
  9. class PatientDetailState {
  10. final Rx<PatientDTO> _dto = Rx<PatientDTO>(
  11. PatientDTO(
  12. patientName: "",
  13. patientGender: GenderEnum.Unknown,
  14. phone: "UNLOAD", // TODO: 先复用此字段判断加载状态
  15. birthday: DateTime(1900, 1, 1),
  16. patientAddress: "",
  17. crowdLabels: null,
  18. contractedDoctorName: '',
  19. ),
  20. );
  21. final Rx<List<List<String>>> _currentDiagnosis = Rx<List<List<String>>>([]);
  22. final RxBool _isExistLocalData = RxBool(false);
  23. final _patientManager = Get.find<IPatientManager>();
  24. // final Rx<Map<String, dynamic>> _diagnosisDataValue = Rx({});
  25. final RxList<String> _labels = RxList<String>();
  26. List<List<String>> get currentDiagnosis => _currentDiagnosis.value;
  27. set currentDiagnosis(List<List<String>> val) => _currentDiagnosis(val);
  28. List<String> get labels => _labels;
  29. set labels(List<String> v) => _labels.value = v;
  30. bool get isExistLocalData => _isExistLocalData.value;
  31. set isExistLocalData(bool val) => _isExistLocalData(val);
  32. final RxBool _isOnline = RxBool(kIsOnline);
  33. /// 当前在线状态
  34. bool get isOnline => _isOnline.value;
  35. set isOnline(bool val) => _isOnline.value = val;
  36. /// 居民编号
  37. String code = "";
  38. /// 姓名
  39. String get name {
  40. return _dto.value.patientName!;
  41. }
  42. /// 年龄
  43. String get age => DataTimeUtils.calculateAge(_dto.value.birthday!);
  44. /// 手机号
  45. String get phone {
  46. return _dto.value.phone!;
  47. }
  48. /// 地址
  49. String get address {
  50. return _dto.value.patientAddress ?? '';
  51. }
  52. /// 头像URL
  53. String? get avatarUrl {
  54. if (_dto.value.photos != null && _dto.value.photos!.isNotEmpty) {
  55. return _dto.value.photos![0];
  56. }
  57. return null;
  58. }
  59. /// 性别
  60. GenderEnum get gender => _dto.value.patientGender;
  61. /// 性别描述
  62. String get genderDesc => RpcEnumLabels.gender[gender]!;
  63. /// 人群分类名称集合
  64. List<String>? get labelNames => _dto.value.labelNames;
  65. List<String> get crowdLabels => _dto.value.crowdLabels ?? [];
  66. /// 签约医生
  67. String get contractedDoctorName => _dto.value.contractedDoctorName ?? "";
  68. /// 证件号
  69. String get cardNo {
  70. if (_dto.value.cardNo == null) {
  71. return "";
  72. }
  73. if (Store.app.enableEncryptSensitiveInfo) {
  74. return SensitiveUtils.desensitizeIdCard(_dto.value.cardNo!);
  75. } else {
  76. return _dto.value.cardNo!;
  77. }
  78. }
  79. String? get nation => _dto.value.nationality;
  80. DateTime? get birthday => _dto.value.birthday;
  81. CardTypeEnum get cardType => _dto.value.cardType;
  82. /// 签约状态
  83. ContractStateEnum get contractState => _dto.value.contractState;
  84. void updateDto(PatientDTO dto) {
  85. _dto.value = dto;
  86. labels = _patientManager.convertLabelsFormDto(dto.crowdLabels ?? []);
  87. }
  88. PatientDTO get dto => _dto.value;
  89. void updateCrowd(List<String> crowdCodes, List<String> crowdNames) {
  90. final newDto = PatientDTO.fromJson(_dto.value.toJson());
  91. newDto.crowdLabels = crowdCodes;
  92. newDto.labelNames = crowdNames;
  93. _dto.value = newDto;
  94. }
  95. }