controller.dart 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990
  1. import 'dart:convert';
  2. import 'package:fis_jsonrpc/services/diagnosis.m.dart';
  3. import 'package:fis_jsonrpc/services/dictionary.m.dart';
  4. import 'package:get/get.dart';
  5. import 'package:vitalapp/architecture/defines.dart';
  6. import 'package:vitalapp/consts/diagnosis.dart';
  7. import 'package:vitalapp/managers/interfaces/diagnosis.dart';
  8. import 'package:vitalapp/managers/interfaces/dictionary.dart';
  9. import 'package:vitalapp/managers/interfaces/models/diagnosis_aggregation_record_model.dart';
  10. import 'package:vitalapp/pages/medical/records/state.dart';
  11. class MedicalRecordsController extends FControllerBase {
  12. final state = MedicalRecordsState();
  13. final _diagnosisManager = Get.find<IDiagnosisManager>();
  14. final _dictionaryManager = Get.find<IDictionaryManager>();
  15. late String patientCode;
  16. @override
  17. void onReady() {
  18. super.onReady();
  19. final p = Get.parameters;
  20. patientCode = p['patientCode'] ?? "";
  21. _loadData();
  22. }
  23. _loadData() async {
  24. try {
  25. state.pageIndex = 0;
  26. state.dataList = [];
  27. var listRecord =
  28. await _diagnosisManager.getListByPatientCode(patientCode);
  29. if (listRecord != null) {
  30. state.appendDataList(listRecord);
  31. }
  32. await loadNextPageList();
  33. } catch (e) {}
  34. }
  35. Future<void> loadNextPageList() async {
  36. var result = await _diagnosisManager.getDiagnosisAggregationPageAsync(
  37. patientCode, state.pageIndex + 1, state.pageSize);
  38. if (result != null) {
  39. state.totalCount = result.dataCount;
  40. if (result.pageData != null) {
  41. state.pageIndex = state.pageIndex + 1;
  42. state.appendDataList(result.pageData!);
  43. }
  44. }
  45. }
  46. Future<List<List<String>>> getTableData(
  47. DiagnosisAggregationRecordModel dto) async {
  48. var currentDiagnosis = <List<String>>[];
  49. var index = 1;
  50. // this.diagnosisTime = DateFormat("yyyy-MM-dd HH:mm:ss").format(row.diagnosisTime);
  51. for (var element in dto.diagnosisAggregationData!) {
  52. if (element.diagnosisData != "null") {
  53. var jsonData = json.decode(element.diagnosisData!);
  54. List<String> keys = jsonData.keys.toList();
  55. List<DictionaryWithUnitDTO>? dtos = [];
  56. if (dto.isExistLocalData!) {
  57. for (var key in keys) {
  58. dtos.add(DictionaryWithUnitDTO(
  59. key: key, name: DiagnosisTranslator.reportTr(key), unit: ""));
  60. }
  61. } else {
  62. dtos = await _dictionaryManager
  63. .getDictionaryNameAndUnitByKeysAsync(keys) ??
  64. [];
  65. }
  66. for (var key in keys) {
  67. if (key == "ECG_POINT") {
  68. continue;
  69. }
  70. var dto = dtos.firstWhereOrNull((item) => item.key == key);
  71. currentDiagnosis.add([
  72. (index++).toString(),
  73. dto?.name ?? '',
  74. jsonData[key].toString(),
  75. dto?.unit ?? '',
  76. ]);
  77. }
  78. }
  79. }
  80. return currentDiagnosis;
  81. }
  82. }