SearchService.java 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135
  1. package thyyxxk.webserver.service.search;
  2. import com.baomidou.mybatisplus.core.metadata.IPage;
  3. import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
  4. import org.springframework.beans.factory.annotation.Autowired;
  5. import org.springframework.stereotype.Service;
  6. import thyyxxk.webserver.config.exception.ExceptionEnum;
  7. import thyyxxk.webserver.dao.his.search.SearchDao;
  8. import thyyxxk.webserver.entity.ResultVo;
  9. import thyyxxk.webserver.entity.dictionary.CodeName;
  10. import thyyxxk.webserver.entity.dictionary.SearchDataParam;
  11. import thyyxxk.webserver.utils.ResultVoUtil;
  12. import java.util.HashMap;
  13. import java.util.Map;
  14. @Service
  15. public class SearchService {
  16. private final SearchDao dao;
  17. @Autowired
  18. public SearchService(SearchDao dao) {
  19. this.dao = dao;
  20. }
  21. public ResultVo<Map<String, Object>> execute(SearchDataParam params) {
  22. IPage<CodeName> iPage = new Page<>(params.getPage(), 10);
  23. switch (params.getTarget()) {
  24. case "physician":
  25. iPage = deepinPhysician(params.getMethod(), params.getContent(), iPage);
  26. break;
  27. case "icd10":
  28. iPage = deepinIcd10Diag(params.getMethod(), params.getContent(), iPage);
  29. break;
  30. case "diag":
  31. iPage = deepinSiDiag(params.getMethod(), params.getContent(), iPage);
  32. break;
  33. case "surgery":
  34. iPage = deepinSurgery(params.getMethod(), params.getContent(), iPage);
  35. break;
  36. case "slwspcdiag":
  37. iPage = deepinSlwSpcDiag(params.getContent(), params.getPerstype(), iPage);
  38. break;
  39. case "injurydiag":
  40. iPage = deepinInjuryDiag(params.getMethod(), params.getContent(), iPage);
  41. break;
  42. case "SSCZ":
  43. iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "zd_icd9_cm3", iPage);
  44. break;
  45. case "SFXM":
  46. iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "zd_charge_item", iPage);
  47. break;
  48. case "JY":
  49. iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "jy_zd_item", iPage);
  50. break;
  51. case "JC":
  52. iPage = deepinMedicalTechnology(params.getMethod(), params.getContent(), "jc_zd_item", iPage);
  53. break;
  54. }
  55. if (iPage.getTotal() > 0) {
  56. Map<String, Object> map = new HashMap<>();
  57. map.put("list", iPage.getRecords());
  58. map.put("totalSize", iPage.getTotal());
  59. return ResultVoUtil.success(map);
  60. }
  61. return ResultVoUtil.fail(ExceptionEnum.NO_DATA_EXIST);
  62. }
  63. private IPage<CodeName> deepinPhysician(String method, String content, IPage<CodeName> iPage) {
  64. content = '%' + content.toUpperCase() + '%';
  65. String column = filterCommonColumn(method);
  66. return dao.searchPhysician(iPage, column, content);
  67. }
  68. private IPage<CodeName> deepinMedicalTechnology(String method, String content, String table, IPage<CodeName> iPage) {
  69. content = '%' + content.toUpperCase() + '%';
  70. String column = filterCommonColumn(method);
  71. return dao.searchMedicalTechnology(iPage, column, content, table);
  72. }
  73. private IPage<CodeName> deepinSiDiag(String method, String content, IPage<CodeName> iPage) {
  74. content = '%' + content.toUpperCase() + '%';
  75. String column;
  76. switch (method) {
  77. case "alpha":
  78. column = "yb_py_code";
  79. break;
  80. case "code":
  81. column = "yb_code";
  82. break;
  83. default:
  84. column = "yb_name";
  85. }
  86. return dao.searchSiDiagnose(iPage, column, content);
  87. }
  88. private IPage<CodeName> deepinSurgery(String method, String content, IPage<CodeName> iPage) {
  89. content = '%' + content.toUpperCase() + '%';
  90. String column = filterCommonColumn(method);
  91. return dao.searchSurgeries(iPage, column, content);
  92. }
  93. private IPage<CodeName> deepinIcd10Diag(String method, String content, IPage<CodeName> iPage) {
  94. content = '%' + content.toUpperCase() + '%';
  95. String column = filterCommonColumn(method);
  96. return dao.searchIcd10Diagnose(iPage, column, content);
  97. }
  98. private IPage<CodeName> deepinSlwSpcDiag(String content, Integer perstype, IPage<CodeName> iPage) {
  99. content = "%" + content + "%";
  100. if (null == perstype) {
  101. perstype = 1;
  102. }
  103. String tableName = perstype == 1 ? "si_icd_employees_outpatient_chronic_idiopathic_disease"
  104. : "si_icd_residents_outpatient_chronic_idiopathic_disease";
  105. return dao.selectSlwSpcDiag(iPage, content, tableName);
  106. }
  107. private IPage<CodeName> deepinInjuryDiag(String method, String content, IPage<CodeName> iPage) {
  108. content = '%' + content.toUpperCase() + '%';
  109. String column = filterCommonColumn(method);
  110. return dao.searchInjurydiag(iPage, column, content);
  111. }
  112. private String filterCommonColumn(String method) {
  113. switch (method) {
  114. case "alpha":
  115. return "py_code";
  116. case "code":
  117. return "code";
  118. default:
  119. return "name";
  120. }
  121. }
  122. }