functions_panel.dart 8.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187
  1. import 'dart:async';
  2. import 'dart:convert';
  3. import 'package:fis_jsonrpc/rpc.dart';
  4. import 'package:flutter/foundation.dart';
  5. import 'package:flutter/material.dart';
  6. import 'package:get/get.dart';
  7. import 'package:vitalapp/architecture/utils/prompt_box.dart';
  8. import 'package:vitalapp/architecture/values/features.dart';
  9. import 'package:vitalapp/consts/styles.dart';
  10. import 'package:vitalapp/managers/interfaces/csvData.dart';
  11. import 'package:vitalapp/managers/interfaces/models/crowd_labels.dart';
  12. import 'package:vitalapp/pages/check/prescription/Iodine_deficiency_disorder.dart';
  13. import 'package:vitalapp/pages/check/prescription/blood_sugar_disorder.dart';
  14. import 'package:vitalapp/pages/check/prescription/hypertension_prescription.dart';
  15. import 'package:vitalapp/pages/check/prescription/hypertrophic_osteoarthropathy_prescription.dart';
  16. import 'package:vitalapp/pages/check/prescription/pediatric_epilepsy.dart';
  17. import 'package:vitalapp/pages/check/prescription/pediatric_pneumonia.dart';
  18. import 'package:vitalapp/pages/check/prescription/prescription_form.dart';
  19. import 'package:vitalapp/pages/check/prescription/prescription_form_keys.dart';
  20. import 'package:vitalapp/pages/check/prescription/trichomoniasis_vaginitis.dart';
  21. import 'package:vitalapp/pages/check/prescription/psychiatric_prescription.dart';
  22. import 'package:vitalapp/pages/check/prescription/tuberculosis_prescription.dart';
  23. import 'package:vitalapp/pages/check/prescription/under_fiveMalnutrition_prescription.dart';
  24. import 'package:vitalapp/pages/patient/csv_datas/csv_datas_view.dart';
  25. import 'package:vitalapp/pages/widgets/function_button.dart';
  26. import 'package:vitalapp/store/store.dart';
  27. import 'package:universal_html/html.dart' as html;
  28. import '../controller.dart';
  29. import 'package:csv/csv.dart';
  30. import 'package:vitalapp/managers/interfaces/csvData.dart';
  31. import 'package:vitalapp/pages/patient/csv_datas/csv_datas_view.dart';
  32. import 'package:vitalapp/store/store.dart';
  33. /// 功能入口面板
  34. class FunctionsPanel extends GetView<PatientDetailController> {
  35. const FunctionsPanel({super.key});
  36. @override
  37. Widget build(BuildContext context) {
  38. return Container(
  39. alignment: Alignment.topLeft,
  40. margin: const EdgeInsets.all(8).copyWith(left: 0, right: 12),
  41. decoration: BoxDecoration(
  42. color: Colors.white,
  43. borderRadius: GlobalStyles.borderRadius,
  44. ),
  45. padding: const EdgeInsets.symmetric(horizontal: 0, vertical: 10)
  46. .copyWith(right: 0),
  47. child: Obx(
  48. () => GridView(
  49. padding: const EdgeInsets.symmetric(horizontal: 32).copyWith(top: 12),
  50. // shrinkWrap: true,
  51. // controller: scrollController,
  52. gridDelegate: const SliverGridDelegateWithFixedCrossAxisCount(
  53. crossAxisCount: 3,
  54. mainAxisSpacing: 24,
  55. crossAxisSpacing: 24,
  56. childAspectRatio: 15 / 14,
  57. ),
  58. children: [
  59. if (kDebugMode) ...[
  60. FunctionButton(
  61. label: "处方",
  62. icon: _buildImgIcon("档案.png"),
  63. onTap: () {
  64. Get.to(PrescriptionForm(PrescriptionFormKeys.PFSCBIE));
  65. },
  66. ),
  67. ],
  68. if (Store.user.hasFeature(FeatureKeys.HealthRecordHandling))
  69. FunctionButton(
  70. label: "个人基本信息",
  71. icon: _buildImgIcon("档案.png"),
  72. onTap: controller.gotoInfo,
  73. ),
  74. if (controller.state.labels.contains(CrowdLabels.MENTAlDISORDER) &&
  75. Store.user.hasFeature(FeatureKeys.MentalDisorderInfo))
  76. FunctionButton(
  77. label: "精神障碍补充表",
  78. icon: _buildImgIcon("严重精神障碍补充表.png"),
  79. onTap: controller.gotoMentalDisorderInfo,
  80. ),
  81. if (Store.user.hasFeature(FeatureKeys.HealthCheckRecord))
  82. FunctionButton(
  83. label: "体检记录",
  84. icon: _buildImgIcon("体检记录.png"),
  85. onTap: controller.gotoHealthCheckRecord,
  86. ),
  87. // if (Store.user.hasFeature(FeatureKeys.FollowUpRecord))
  88. // FunctionButton(
  89. // label: "随访记录",
  90. // icon: _buildImgIcon("随访报告.png"),
  91. // onTap: controller.gotoFollowUpRecord,
  92. // ),
  93. // FunctionButton(
  94. // label: "双向转诊",
  95. // icon: _buildImgIcon("转诊.png"),
  96. // onTap: controller.gotoReferral,
  97. // ),
  98. if (Store.user.hasFeature(FeatureKeys.HealthCheckupRecords))
  99. FunctionButton(
  100. label: "健康检测记录",
  101. icon: _buildImgIcon("诊疗.png"),
  102. onTap: controller.gotoExamRecord,
  103. ),
  104. if (Store.user
  105. .hasFeature(FeatureKeys.TraditionalChineseMedicineConstitution))
  106. FunctionButton(
  107. label: "中医体质记录",
  108. icon: _buildImgIcon("中医体质.png"),
  109. onTap:
  110. controller.gotoTraditionalChineseMedicineConsitutionRecord,
  111. ),
  112. if (Store.user.hasFeature(FeatureKeys.HypertensionOperation))
  113. FunctionButton(
  114. label: "高血压随访",
  115. icon: _buildImgIcon("高血压随访.png"),
  116. onTap: controller.gotoHypertensionRecord,
  117. ),
  118. if (Store.user.hasFeature(FeatureKeys.DoctorContract))
  119. FunctionButton(
  120. label: "医生签约",
  121. icon: _buildImgIcon("签约.png"),
  122. onTap: controller.gotoContractRecords,
  123. ),
  124. if (Store.user.hasFeature(FeatureKeys.DiabeticOperational))
  125. FunctionButton(
  126. label: "2型糖尿病随访",
  127. icon: _buildImgIcon("2型糖尿病随访.png"),
  128. onTap: controller.gotoDiabetesRecord,
  129. ),
  130. if (Store.user.hasFeature(FeatureKeys.SelfCareAssessmentRecord))
  131. FunctionButton(
  132. label: "老年人自理评估",
  133. icon: _buildImgIcon("自理能力评估.png"),
  134. onTap: controller.gotoSelfCareAbilityAssessment,
  135. ),
  136. if (Store.user.hasFeature(FeatureKeys.MaternalHealthManagement) &&
  137. Store.user.currentSelectPatientInfo?.patientGender !=
  138. GenderEnum.Male)
  139. FunctionButton(
  140. label: "孕产妇健康管理",
  141. icon: _buildImgIcon("孕产妇健康管理.png"),
  142. onTap: controller.gotoMaternalHealthManagement,
  143. ),
  144. if (controller.state.labels.contains(CrowdLabels.MENTAlDISORDER) &&
  145. Store.user.hasFeature(FeatureKeys.MentalDisorderInfo))
  146. FunctionButton(
  147. label: "精神障碍随访",
  148. icon: _buildImgIcon("严重精神障碍随访.png"),
  149. onTap: controller.gotoMentalDisorderRecord,
  150. ),
  151. if ((Store.user.currentSelectPatientInfo?.crowdLabels
  152. ?.contains("RQFL_ET") ??
  153. false) &&
  154. Store.user.hasFeature(FeatureKeys.ChildrenHealthManagement))
  155. FunctionButton(
  156. label: "儿童健康管理",
  157. icon: _buildImgIcon("儿童健康管理.png"),
  158. onTap: controller.gotoChildHealth,
  159. ),
  160. if (Store.user
  161. .hasFeature(FeatureKeys.TuberculosisManagementRecord) &&
  162. controller.state.labels.contains(CrowdLabels.TUBERCULOSIS))
  163. FunctionButton(
  164. label: "肺结核健康管理",
  165. icon: _buildImgIcon("肺结核健康管理.png"),
  166. onTap: controller.gototuberculosisRecord,
  167. ),
  168. ],
  169. ),
  170. ),
  171. );
  172. }
  173. Widget _buildImgIcon(String assetName) {
  174. return Image.asset(
  175. "assets/images/patient/$assetName",
  176. width: 120,
  177. height: 120,
  178. fit: BoxFit.contain,
  179. );
  180. }
  181. }