TestFacade.java 8.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203
  1. package com.diagbot.facade;
  2. import com.diagbot.biz.push.entity.Pacs;
  3. import com.diagbot.client.StandConvertServiceClient;
  4. import com.diagbot.dto.IndicationDTO;
  5. import com.diagbot.dto.StandConvertCrfBatchDTO;
  6. import com.diagbot.dto.StandConvertCrfDTO;
  7. import com.diagbot.util.ExcelUtils;
  8. import com.diagbot.util.ListUtil;
  9. import com.diagbot.util.StringUtil;
  10. import com.diagbot.vo.IndicationPushVO;
  11. import com.diagbot.vo.StandConvertCrfVO;
  12. import com.diagbot.vo.TestIndicationVO;
  13. import com.diagbot.vo.TestLineVO;
  14. import org.springframework.beans.factory.annotation.Autowired;
  15. import org.springframework.stereotype.Component;
  16. import org.springframework.web.multipart.MultipartFile;
  17. import java.util.ArrayList;
  18. import java.util.LinkedHashMap;
  19. import java.util.List;
  20. import java.util.Map;
  21. /**
  22. * @Description: 测试facade
  23. * @author: zhoutg
  24. * @time: 2018/8/6 9:11
  25. */
  26. @Component
  27. public class TestFacade {
  28. @Autowired
  29. IndicationFacade indicationFacade;
  30. @Autowired
  31. StandConvertServiceClient standConvertServiceClient;
  32. /**
  33. * 开单项数据测试
  34. *
  35. * @param file
  36. */
  37. public Map<String, Object> importExcel(MultipartFile file, TestLineVO testLineVO) {
  38. List<IndicationPushVO> indicationPushVOList = new ArrayList<>();
  39. List<TestIndicationVO> data = ExcelUtils.importExcel(file, 0, 1, TestIndicationVO.class);
  40. for (TestIndicationVO bean : data) {
  41. if (StringUtil.isNotEmpty(testLineVO.getIdNum()) && !testLineVO.getIdNum().equals(bean.getIdNum())) {
  42. continue;
  43. }
  44. IndicationPushVO indicationPushVO = new IndicationPushVO();
  45. indicationPushVO.setRuleType("2");
  46. indicationPushVO.setIdNum(bean.getIdNum());
  47. if (StringUtil.isNotBlank(bean.getOrderType())) {
  48. switch (bean.getOrderType()) {
  49. // case "实验室检查" : // 细项
  50. // List<Lis> lisDetailOrder = new ArrayList<>();
  51. // Lis lisDetailBean = new Lis();
  52. // lisDetailBean.setName(bean.getStandName());
  53. // lisDetailBean.setDetailName(bean.getStandName());
  54. // lisDetailBean.setUniqueName(bean.getStandName());
  55. // lisDetailOrder.add(lisDetailBean);
  56. // indicationPushVO.setLisOrder(lisDetailOrder);
  57. // break;
  58. case "辅助检查" :
  59. List<Pacs> pacsOrder = new ArrayList<>();
  60. Pacs pacsBean = new Pacs();
  61. pacsBean.setName(bean.getStandName());
  62. pacsBean.setUniqueName(bean.getStandName());
  63. pacsOrder.add(pacsBean);
  64. indicationPushVO.setPacsOrder(pacsOrder);
  65. break;
  66. // case "实验室检查套餐" :
  67. // List<Lis> lisOrder = new ArrayList<>();
  68. // Lis lisBean = new Lis();
  69. // lisBean.setName(bean.getStandName());
  70. // lisBean.setUniqueName(bean.getStandName());
  71. // lisOrder.add(lisBean);
  72. // indicationPushVO.setLisOrder(lisOrder);
  73. // break;
  74. case "手术和操作" :
  75. continue;
  76. default:
  77. continue;
  78. }
  79. }
  80. if (StringUtil.isNotEmpty(bean.getNeoType())) {
  81. switch (bean.getNeoType()) {
  82. // case "1" : // 性别
  83. // if ("男性".equals(bean.getNeoName())) {
  84. // indicationPushVO.setSex(1);
  85. // } else if ("女性".equals(bean.getNeoName())) {
  86. // indicationPushVO.setSex(2);
  87. // }
  88. // break;
  89. // case "2" : // 化验, 示例:血小板计数,<,50,*10~9L
  90. // String lisStr = bean.getNeoName();
  91. // String[] lisArr = lisStr.split(",");
  92. //
  93. // List<Lis> lisList = new ArrayList<>();
  94. // Lis lisBean = new Lis();
  95. // lisBean.setUniqueName(lisArr[0]);
  96. // lisBean.setName(lisArr[0]);
  97. // lisBean.setDetailName(lisArr[0]);
  98. // lisBean.setValue(getValue(lisArr));
  99. // lisList.add(lisBean);
  100. // indicationPushVO.setLis(lisList);
  101. // break;
  102. // case "3" : // 临床表现
  103. // indicationPushVO.setChief(bean.getNeoName());
  104. // break;
  105. // case "5" : // 诊断
  106. // indicationPushVO.setDiagString(bean.getNeoName());
  107. // break;
  108. case "12" : // 体征
  109. String[] vitalArr = bean.getNeoName().split(",");
  110. StringBuffer sbVital = new StringBuffer();
  111. if ("体温".equals(vitalArr[0])) {
  112. sbVital.append("体温");
  113. sbVital.append(getValue(vitalArr));
  114. sbVital.append(vitalArr[3]);
  115. indicationPushVO.setVital(sbVital.toString());
  116. }
  117. // else if ("收缩压".equals(vitalArr[0]) || "舒张压".equals(vitalArr[0])){
  118. // if ("收缩压".equals(vitalArr[0])) {
  119. // sbVital.append("血压");
  120. // sbVital.append(getValue(vitalArr) + "/100mmHg");
  121. // indicationPushVO.setVital(sbVital.toString());
  122. // } else if ("舒张压".equals(vitalArr[0])) {
  123. // sbVital.append("血压");
  124. // sbVital.append("100/" + getValue(vitalArr) + "mmHg");
  125. // indicationPushVO.setVital(sbVital.toString());
  126. // }
  127. // }
  128. else {
  129. continue;
  130. }
  131. break;
  132. default:
  133. continue;
  134. }
  135. }
  136. indicationPushVOList.add(indicationPushVO);
  137. }
  138. Map<String, Object> map = new LinkedHashMap<>();
  139. List<String> msg = new ArrayList<>();
  140. List<String> errMsg = new ArrayList<>();
  141. for (IndicationPushVO indicationPushVO : indicationPushVOList) {
  142. try {
  143. IndicationDTO indicationDTO = indicationFacade.indicationFac(indicationPushVO);
  144. if (ListUtil.isEmpty(indicationDTO.getBillMsgList())) {
  145. msg.add("第【" + indicationPushVO.getIdNum() + "】行未匹配");
  146. }
  147. } catch (Exception e) {
  148. errMsg.add(indicationPushVO.getIdNum() + "行出错了");
  149. }
  150. }
  151. map.put("总条数", indicationPushVOList.size() + "条");
  152. map.put("出错条数", msg.size() + "条");
  153. map.put("出错信息", msg);
  154. map.put("程序报错", errMsg);
  155. return map;
  156. }
  157. /**
  158. * 返回数值
  159. *
  160. * @param arr
  161. * @return
  162. */
  163. public double getValue(String[] arr) {
  164. if ("<".equals(arr[1]) || "≤".equals(arr[1])) {
  165. return Double.parseDouble(arr[2])-1;
  166. } else if (">".equals(arr[1]) || "≥".equals(arr[1])) {
  167. return Double.parseDouble(arr[2])+1;
  168. }
  169. return 0.0;
  170. }
  171. /**
  172. * 标准词转换
  173. *
  174. * @param standConvertCrfVO
  175. * @return
  176. */
  177. public StandConvertCrfDTO testStandConvert(StandConvertCrfVO standConvertCrfVO) {
  178. StandConvertCrfDTO standConvertCrfDTO = standConvertServiceClient.similarity(standConvertCrfVO);
  179. return standConvertCrfDTO;
  180. }
  181. /**
  182. * 标准词转换(批量)
  183. *
  184. * @param standConvertCrfVOList
  185. * @return
  186. */
  187. public StandConvertCrfBatchDTO testStandConvertBatch(List<StandConvertCrfVO> standConvertCrfVOList) {
  188. StandConvertCrfBatchDTO standConvertCrfBatchDTO = standConvertServiceClient.similarityBatch(standConvertCrfVOList);
  189. return standConvertCrfBatchDTO;
  190. }
  191. }