RuleTest.java 8.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191
  1. package org.diagbot;
  2. import org.diagbot.common.push.bean.Rule;
  3. import org.diagbot.common.push.bean.SearchData;
  4. import org.diagbot.common.push.filter.rule.PretreatmentRule;
  5. import org.diagbot.nlp.rule.module.PreResult;
  6. import org.diagbot.pub.jdbc.MysqlJdbc;
  7. import org.springframework.util.StringUtils;
  8. import java.util.ArrayList;
  9. import java.util.HashMap;
  10. import java.util.List;
  11. import java.util.Map;
  12. /**
  13. * Created by louhr on 2019/11/22.
  14. */
  15. public class RuleTest {
  16. public static void main(String[] args) {
  17. RuleTest test = new RuleTest();
  18. try {
  19. test.validatePub();
  20. } catch (Exception e) {
  21. e.printStackTrace();
  22. }
  23. }
  24. private void validatePub() throws Exception {
  25. MysqlJdbc nlpJdbc = new MysqlJdbc("root", "lantone", "jdbc:mysql://192.168.2.236:3306/med?useUnicode=true&characterEncoding=UTF-8");
  26. List<Map<String, String>> data = nlpJdbc.query("kl_rule_pub",
  27. new String[]{"id", "pub_name", "min_operator", "min_value", "min_unit",
  28. "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, "");
  29. List<Map<String, Object>> updates = new ArrayList<>();
  30. List<Map<String, Object>> wheres = new ArrayList<>();
  31. //数据预处理
  32. PretreatmentRule pretreatmentRule = new PretreatmentRule();
  33. for (Map<String, String> map : data) {
  34. SearchData searchData = new SearchData();
  35. searchData.setSysCode("1");
  36. createSearchData(searchData, map);
  37. Map<String, Object> line = new HashMap<>();
  38. Map<String, Object> where = new HashMap<>();
  39. pretreatmentRule.rule(searchData);
  40. Map<String, List<Rule>> rules = searchData.getRules();
  41. for (Map.Entry<String, List<Rule>> entry : rules.entrySet()) {
  42. if (entry.getValue().size() > 0) {
  43. line.put("rule_type", "9");
  44. where.put("id", map.get("id"));
  45. updates.add(line);
  46. wheres.add(where);
  47. break;
  48. }
  49. }
  50. }
  51. nlpJdbc.update("kl_rule_pub", updates, wheres);
  52. }
  53. private void validateApp() throws Exception {
  54. MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
  55. List<Map<String, String>> data = nlpJdbc.query("kl_rule_pub",
  56. new String[]{"id", "pub_name", "min_operator", "min_value", "min_unit",
  57. "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, " where pub_name like '%体征%'");
  58. Map<String, Map<String, String>> rulesMap = new HashMap<>();
  59. for (Map<String, String> map : data) {
  60. rulesMap.put(map.get("id"), map);
  61. }
  62. data = nlpJdbc.query("kl_rule_app", new String[]{"id", "rule_id"}, "");
  63. for (Map<String, String> map : data) {
  64. }
  65. List<Map<String, Object>> updates = new ArrayList<>();
  66. List<Map<String, Object>> wheres = new ArrayList<>();
  67. }
  68. private SearchData createSearchData(SearchData searchData, Map<String, String> map) {
  69. double value = 0.0;
  70. if (!StringUtils.isEmpty(map.get("eq_operator")) && "=".equals(map.get("eq_operator"))) {
  71. if ("诊断--".equals(map.get("pub_name"))) {
  72. searchData.setDiagString(map.get("eq_value"));
  73. }
  74. if ("体征--".equals(map.get("pub_name"))) {
  75. searchData.setVital(map.get("eq_value"));
  76. }
  77. if ("开单--".equals(map.get("pub_name"))) {
  78. List<PreResult> results = new ArrayList<>();
  79. PreResult preResult = new PreResult();
  80. preResult.setValue(map.get("eq_value"));
  81. results.add(preResult);
  82. searchData.setLisOrder(results);
  83. searchData.setPacsOrder(results);
  84. }
  85. if ("症状--".equals(map.get("pub_name"))) {
  86. searchData.setChief(map.get("eq_value"));
  87. }
  88. if ("药品--".equals(map.get("pub_name"))) {
  89. searchData.setDrugString(map.get("eq_value"));
  90. }
  91. if ("既往--".equals(map.get("pub_name"))) {
  92. searchData.setPasts(map.get("eq_value"));
  93. }
  94. if ("过敏--".equals(map.get("pub_name"))) {
  95. searchData.setAllergy(map.get("eq_value"));
  96. }
  97. if (map.get("pub_name").indexOf("其他--") > -1) {
  98. searchData.setOther(map.get("pub_name") + map.get("eq_value"));
  99. }
  100. if (map.get("pub_name").indexOf("检查--") > -1) {
  101. searchData.setPacsString(map.get("pub_name") + map.get("eq_value"));
  102. }
  103. } else if (!StringUtils.isEmpty(map.get("min_operator")) && !StringUtils.isEmpty(map.get("max_operator"))) {
  104. if (map.get("pub_name").indexOf("体征--") > -1) {
  105. value = Double.valueOf(map.get("min_value")) + 0.1;
  106. searchData.setVital(map.get("pub_name") + value + map.get("min_unit"));
  107. }
  108. if (map.get("pub_name").indexOf("其他--") > -1) {
  109. value = Double.valueOf(map.get("min_value")) + 0.1;
  110. searchData.setOther(map.get("pub_name") + value + map.get("min_unit"));
  111. }
  112. if (map.get("pub_name").indexOf("化验--") > -1) {
  113. value = Double.valueOf(map.get("min_value")) + 0.1;
  114. List<PreResult> list = new ArrayList<>();
  115. PreResult preResult = new PreResult();
  116. preResult.setUniqueName(map.get("pub_name").substring(4));
  117. preResult.setValue(String.valueOf(value));
  118. preResult.setUnits(map.get("min_unit"));
  119. list.add(preResult);
  120. searchData.setLis(list);
  121. }
  122. if (map.get("pub_name").indexOf("年龄--") > -1) {
  123. int v = Integer.valueOf(map.get("min_value")) + 1;
  124. searchData.setAge(v);
  125. }
  126. } else if (!StringUtils.isEmpty(map.get("min_operator"))) {
  127. if (map.get("pub_name").indexOf("体征--") > -1) {
  128. value = Double.valueOf(map.get("min_value")) - 0.1;
  129. searchData.setVital(map.get("pub_name") + value + map.get("min_unit"));
  130. }
  131. if (map.get("pub_name").indexOf("其他--") > -1) {
  132. value = Double.valueOf(map.get("min_value")) - 0.1;
  133. searchData.setOther(map.get("pub_name") + value + map.get("min_unit"));
  134. }
  135. if (map.get("pub_name").indexOf("化验--") > -1) {
  136. value = Double.valueOf(map.get("min_value")) - 0.1;
  137. List<PreResult> list = new ArrayList<>();
  138. PreResult preResult = new PreResult();
  139. preResult.setUniqueName(map.get("pub_name").substring(4));
  140. preResult.setValue(String.valueOf(value));
  141. preResult.setUnits(map.get("min_unit"));
  142. list.add(preResult);
  143. searchData.setLis(list);
  144. }
  145. if (map.get("pub_name").indexOf("年龄--") > -1) {
  146. int v = Integer.valueOf(map.get("min_value")) - 1;
  147. searchData.setAge(v);
  148. }
  149. } else if (!StringUtils.isEmpty(map.get("max_operator"))) {
  150. if (map.get("pub_name").indexOf("体征--") > -1) {
  151. value = Double.valueOf(map.get("max_value")) + 0.1;
  152. searchData.setVital(map.get("pub_name") + value + map.get("max_unit"));
  153. }
  154. if (map.get("pub_name").indexOf("其他--") > -1) {
  155. value = Double.valueOf(map.get("max_value")) + 0.1;
  156. searchData.setOther(map.get("pub_name") + value + map.get("max_unit"));
  157. }
  158. if (map.get("pub_name").indexOf("化验--") > -1) {
  159. value = Double.valueOf(map.get("max_value")) + 0.1;
  160. List<PreResult> list = new ArrayList<>();
  161. PreResult preResult = new PreResult();
  162. preResult.setUniqueName(map.get("pub_name").substring(4));
  163. preResult.setValue(String.valueOf(value));
  164. preResult.setUnits(map.get("max_unit"));
  165. list.add(preResult);
  166. searchData.setLis(list);
  167. }
  168. if (map.get("pub_name").indexOf("年龄--") > -1) {
  169. int v = Integer.valueOf(map.get("max_value")) + 1;
  170. searchData.setAge(v);
  171. }
  172. }
  173. return searchData;
  174. }
  175. }