view.dart 3.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124
  1. // ignore_for_file: must_be_immutable
  2. import 'dart:convert';
  3. import 'package:fis_common/index.dart';
  4. import 'package:fis_jsonrpc/rpc.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:get/get.dart';
  7. import 'package:uuid/uuid.dart';
  8. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  9. import 'package:vitalapp/managers/interfaces/exam.dart';
  10. import 'package:vitalapp/managers/interfaces/registration.dart';
  11. import 'package:vitalapp/pages/self_care_ability_assessment/controller.dart';
  12. import 'package:vitalapp/pages/self_care_ability_assessment/widget/assessment_module.dart';
  13. import 'package:vitalapp/store/store.dart';
  14. class SelfCareAbilityAssessmentView
  15. extends GetView<SelfCareAbilityAssessmentController> {
  16. SelfCareAbilityAssessmentView({
  17. super.key,
  18. this.physicalExamNumber,
  19. });
  20. final _examManager = Get.find<IExamManager>();
  21. ExamDTO? currentSelfCareAbilityAssessmentExam;
  22. final String? physicalExamNumber;
  23. @override
  24. Widget build(BuildContext context) {
  25. return Scaffold(
  26. body: FutureBuilder(
  27. future: getExamData(physicalExamNumber ?? ''),
  28. builder: (context, snapshot) {
  29. if (snapshot.connectionState == ConnectionState.waiting) {
  30. return Center(child: CircularProgressIndicator());
  31. } else if (snapshot.hasError) {
  32. return Center(child: Text('Error: ${snapshot.error}'));
  33. } else {
  34. return buildContent("LNRZLNLPG");
  35. }
  36. },
  37. ),
  38. );
  39. }
  40. Widget buildContent(String key) {
  41. if (currentSelfCareAbilityAssessmentExam != null &&
  42. currentSelfCareAbilityAssessmentExam!.examData != null &&
  43. currentSelfCareAbilityAssessmentExam!.examData!.isNotEmpty) {
  44. return SelfCareAssessmentModule(
  45. cardKey: key,
  46. patientCode: Store.user.currentSelectPatientInfo?.code,
  47. examData: currentSelfCareAbilityAssessmentExam!.examData,
  48. callBack: (key, templateCode, data) async {
  49. await updateExamAsync(
  50. currentSelfCareAbilityAssessmentExam?.code,
  51. data,
  52. );
  53. return true;
  54. },
  55. );
  56. }
  57. return SelfCareAssessmentModule(
  58. cardKey: key,
  59. patientCode: Store.user.currentSelectPatientInfo?.code,
  60. callBack: (key, templateCode, data) async {
  61. await createBasicCheckup(
  62. Store.user.currentSelectPatientInfo?.code ?? '',
  63. physicalExamNumber ?? '',
  64. key,
  65. data,
  66. );
  67. return true;
  68. },
  69. );
  70. }
  71. Future<void> updateExamAsync(String? code, String data) async {
  72. var request = UpdateExamRequest(
  73. key: "LNRZLNLPG",
  74. examData: data,
  75. code: code ?? '',
  76. );
  77. print(jsonEncode(request.toJson()));
  78. final result = await _examManager.editExam(request);
  79. if (result ?? false) {
  80. PromptBox.toast('保存成功');
  81. } else {
  82. PromptBox.toast('保存失败');
  83. }
  84. }
  85. Future<void> createBasicCheckup(String patientCode,
  86. String? physicalExamNumber, String? keyValue, String data) async {
  87. var uuid = Uuid().v4().toString();
  88. var request = CreateExamRequest(
  89. key: keyValue ?? "LNRZLNLPG",
  90. examData: data,
  91. batchNumber: uuid,
  92. patientCode: patientCode,
  93. physicalExamNumber: physicalExamNumber,
  94. );
  95. print(jsonEncode(request.toJson()));
  96. var result = await _examManager.createExam(request);
  97. print(result);
  98. }
  99. Future<ExamDTO?> getExamData(String physicalExamNumber) async {
  100. if (physicalExamNumber.isNullOrEmpty) {
  101. return null;
  102. }
  103. List<ExamDTO>? examList = await Get.find<IRegistrationManager>()
  104. .getExamListByPhysicalExamNumberAsync(
  105. physicalExamNumber: physicalExamNumber,
  106. );
  107. ExamDTO? currentExam = examList?.firstWhereOrNull(
  108. (element) => element.key == "LNRZLNLPG",
  109. );
  110. currentSelfCareAbilityAssessmentExam = currentExam;
  111. return currentExam;
  112. }
  113. }