state.dart 3.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115
  1. import 'package:fis_jsonrpc/rpc.dart';
  2. import 'package:get/get.dart';
  3. import 'package:vitalapp/architecture/defines.dart';
  4. import 'package:vitalapp/architecture/utils/datetime.dart';
  5. import 'package:vitalapp/architecture/utils/sensitive.dart';
  6. import 'package:vitalapp/consts/rpc_enum_labels.dart';
  7. import 'package:vitalapp/global.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: "",
  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 Rx<Map<String, dynamic>> _diagnosisDataValue = Rx({});
  24. List<List<String>> get currentDiagnosis => _currentDiagnosis.value;
  25. set currentDiagnosis(List<List<String>> val) => _currentDiagnosis(val);
  26. bool get isExistLocalData => _isExistLocalData.value;
  27. set isExistLocalData(bool val) => _isExistLocalData(val);
  28. final RxBool _isOnline = RxBool(kIsOnline);
  29. /// 当前在线状态
  30. bool get isOnline => _isOnline.value;
  31. set isOnline(bool val) => _isOnline.value = val;
  32. /// 居民编号
  33. String code = "";
  34. /// 姓名
  35. String get name {
  36. return _dto.value.patientName!;
  37. }
  38. /// 年龄
  39. String get age => DataTimeUtils.calculateAge(_dto.value.birthday!);
  40. /// 手机号
  41. String get phone {
  42. return _dto.value.phone!;
  43. }
  44. /// 地址
  45. String get address {
  46. return _dto.value.patientAddress!;
  47. }
  48. /// 头像URL
  49. String? get avatarUrl {
  50. if (_dto.value.photos != null && _dto.value.photos!.isNotEmpty) {
  51. return _dto.value.photos![0];
  52. }
  53. return null;
  54. }
  55. /// 性别
  56. GenderEnum get gender => _dto.value.patientGender;
  57. /// 性别描述
  58. String get genderDesc => RpcEnumLabels.gender[gender]!;
  59. /// 人群分类名称集合
  60. List<String>? get labelNames => _dto.value.labelNames;
  61. List<String>? get crowdLabels => _dto.value.crowdLabels;
  62. /// 签约医生
  63. String get contractedDoctorName => _dto.value.contractedDoctorName!;
  64. /// 证件号
  65. String get cardNo {
  66. if (_dto.value.cardNo == null) {
  67. return "";
  68. }
  69. if (Store.app.enableEncryptSensitiveInfo) {
  70. return SensitiveUtils.desensitizeIdCard(_dto.value.cardNo!);
  71. } else {
  72. return _dto.value.cardNo!;
  73. }
  74. }
  75. String get phoneNo => _dto.value.phone ?? '';
  76. String get nation => _dto.value.nationality ?? '';
  77. DateTime? get birthday => _dto.value.birthday;
  78. CardTypeEnum get cardType => _dto.value.cardType;
  79. /// 签约状态
  80. ContractStateEnum get contractState => _dto.value.contractState;
  81. void updateDto(PatientDTO dto) {
  82. _dto.value = dto;
  83. }
  84. void updateCrowd(List<String> crowdCodes, List<String> crowdNames) {
  85. final newDto = PatientDTO.fromJson(_dto.value.toJson());
  86. newDto.crowdLabels = crowdCodes;
  87. newDto.labelNames = crowdNames;
  88. _dto.value = newDto;
  89. }
  90. }