diagnosis.dart 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889
  1. import 'dart:convert';
  2. import 'package:fis_jsonrpc/rpc.dart';
  3. import 'package:vitalapp/database/db.dart';
  4. import 'package:vitalapp/global.dart';
  5. import 'package:vitalapp/managers/interfaces/diagnosis.dart';
  6. import 'package:vitalapp/managers/interfaces/models/diagnosis_aggregation_record_model.dart';
  7. import 'package:vitalapp/rpc.dart';
  8. import 'package:vitalapp/store/store.dart';
  9. class DiagnosisManager implements IDiagnosisManager {
  10. DiagnosisManager();
  11. @override
  12. Future<PageCollection<DiagnosisAggregationRecordModel>?>
  13. getDiagnosisAggregationPageAsync(
  14. String patientCode, int pageIndex, int pageSize) async {
  15. PageCollection<DiagnosisAggregationRecordModel> diagnosisAggregationRecord =
  16. PageCollection<DiagnosisAggregationRecordModel>();
  17. try {
  18. var request = DiagnosisPageRequest(
  19. token: Store.user.token,
  20. pageIndex: pageIndex,
  21. pageSize: pageSize,
  22. patientCode: patientCode,
  23. );
  24. diagnosisAggregationRecord.pageData = [];
  25. var result =
  26. await rpc.diagnosis.getDiagnosisAggregationPageAsync(request);
  27. diagnosisAggregationRecord.pageIndex = result.pageIndex;
  28. diagnosisAggregationRecord.pageSize = result.pageSize;
  29. diagnosisAggregationRecord.dataCount = result.dataCount;
  30. for (var element in result.pageData!) {
  31. var record = DiagnosisAggregationRecordModel.fromJson(element.toJson());
  32. record.isExistLocalData = false;
  33. diagnosisAggregationRecord.pageData!.add(record);
  34. }
  35. } catch (e) {}
  36. return diagnosisAggregationRecord;
  37. }
  38. @override
  39. Future<List<DiagnosisAggregationRecordModel>?> getListByPatientCode(
  40. String patientCode) async {
  41. try {
  42. List<DiagnosisAggregationRecordModel> records =
  43. <DiagnosisAggregationRecordModel>[];
  44. final localRecords = await db.repositories.diagnosis
  45. .getNotUploadedListByPatientCode(patientCode);
  46. var currentPatient = Store.user.currentSelectPatientInfo!;
  47. for (var element in localRecords) {
  48. Map<String, dynamic> data = jsonDecode(element.dataJson);
  49. List<DiagnosisAggregationData> list = [];
  50. for (var key in data.keys) {
  51. list.add(DiagnosisAggregationData(
  52. key: key, diagnosisData: jsonEncode(data[key])));
  53. }
  54. records.add(DiagnosisAggregationRecordModel(
  55. patientCode: element.patientCode,
  56. patientName: currentPatient.patientName,
  57. doctorName: Store.user.displayName,
  58. diagnosisTime: element.createTime,
  59. diagnosisAggregationData: list,
  60. isExistLocalData: true,
  61. ));
  62. }
  63. return records;
  64. } catch (e) {}
  65. return null;
  66. }
  67. /// 创建健康检测
  68. @override
  69. Future<bool> submitDiagnosisAsync(SubmitDiagnosisRequest request) async {
  70. request.token = Store.user.token;
  71. print(jsonEncode(request.toJson()));
  72. var result = await rpc.diagnosis.submitDiagnosisAsync(request);
  73. return result;
  74. }
  75. /// 创建健康检测(在线)
  76. @override
  77. Future<bool> syncPatientAndDiagnosisData(
  78. SyncPatientAndDiagnosisDataRequest request) async {
  79. return await rpc.diagnosis.syncPatientAndDiagnosisDataAsync(
  80. request,
  81. );
  82. }
  83. }