view.dart 3.7 KB

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