|
@@ -0,0 +1,187 @@
|
|
|
+package org.diagbot;
|
|
|
+
|
|
|
+import org.diagbot.common.push.bean.Rule;
|
|
|
+import org.diagbot.common.push.bean.SearchData;
|
|
|
+import org.diagbot.common.push.filter.rule.PretreatmentRule;
|
|
|
+import org.diagbot.nlp.rule.module.PreResult;
|
|
|
+import org.diagbot.pub.jdbc.MysqlJdbc;
|
|
|
+import org.springframework.util.StringUtils;
|
|
|
+
|
|
|
+import java.util.ArrayList;
|
|
|
+import java.util.HashMap;
|
|
|
+import java.util.List;
|
|
|
+import java.util.Map;
|
|
|
+
|
|
|
+/**
|
|
|
+ * Created by louhr on 2019/11/22.
|
|
|
+ */
|
|
|
+public class RuleTest {
|
|
|
+ public static void main(String[] args) {
|
|
|
+ RuleTest test = new RuleTest();
|
|
|
+ try {
|
|
|
+ test.validatePub();
|
|
|
+ } catch (Exception e) {
|
|
|
+ e.printStackTrace();
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ private void validatePub() throws Exception {
|
|
|
+ MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
|
|
|
+ List<Map<String, String>> data = nlpJdbc.query("kl_rule_pub",
|
|
|
+ new String[]{"id", "pub_name", "min_operator", "min_value", "min_unit",
|
|
|
+ "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, "");
|
|
|
+
|
|
|
+ List<Map<String, Object>> updates = new ArrayList<>();
|
|
|
+ List<Map<String, Object>> wheres = new ArrayList<>();
|
|
|
+ //数据预处理
|
|
|
+ PretreatmentRule pretreatmentRule = new PretreatmentRule();
|
|
|
+ for (Map<String, String> map : data) {
|
|
|
+ SearchData searchData = new SearchData();
|
|
|
+ searchData.setSysCode("1");
|
|
|
+ createSearchData(searchData, map);
|
|
|
+
|
|
|
+ Map<String, Object> line = new HashMap<>();
|
|
|
+ Map<String, Object> where = new HashMap<>();
|
|
|
+
|
|
|
+ pretreatmentRule.rule(searchData);
|
|
|
+ Map<String, List<Rule>> rules = searchData.getRules();
|
|
|
+ for (Map.Entry<String, List<Rule>> entry : rules.entrySet()) {
|
|
|
+ if (entry.getValue().size() > 0) {
|
|
|
+ line.put("rule_type", "9");
|
|
|
+ where.put("id", map.get("id"));
|
|
|
+
|
|
|
+ updates.add(line);
|
|
|
+ wheres.add(where);
|
|
|
+ break;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ nlpJdbc.update("kl_rule_pub", updates, wheres);
|
|
|
+ }
|
|
|
+
|
|
|
+ private void validateApp() throws Exception {
|
|
|
+ MysqlJdbc nlpJdbc = new MysqlJdbc("root", "diagbot@20180822", "jdbc:mysql://192.168.2.235:3306/med-s?useUnicode=true&characterEncoding=UTF-8");
|
|
|
+ List<Map<String, String>> data = nlpJdbc.query("kl_rule_pub",
|
|
|
+ new String[]{"id", "pub_name", "min_operator", "min_value", "min_unit",
|
|
|
+ "max_operator", "max_value", "max_unit", "eq_operator", "eq_value", "eq_unit", "remind", "suffix_info"}, "");
|
|
|
+
|
|
|
+ Map<String, Map<String, String>> rulesMap = new HashMap<>();
|
|
|
+ for (Map<String, String> map : data) {
|
|
|
+ rulesMap.put(map.get("id"), map);
|
|
|
+ }
|
|
|
+
|
|
|
+ data = nlpJdbc.query("kl_rule_app", new String[]{"id", "rule_id"}, "");
|
|
|
+ for (Map<String, String> map : data) {
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ List<Map<String, Object>> updates = new ArrayList<>();
|
|
|
+ List<Map<String, Object>> wheres = new ArrayList<>();
|
|
|
+ }
|
|
|
+
|
|
|
+ private SearchData createSearchData(SearchData searchData, Map<String, String> map) {
|
|
|
+ double value = 0.0;
|
|
|
+ if (!StringUtils.isEmpty(map.get("eq_operator")) && "=".equals(map.get("eq_operator"))) {
|
|
|
+ if ("诊断--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setDiag(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if ("体征--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setVital(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if ("开单--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setLisOrder(map.get("eq_value"));
|
|
|
+ searchData.setPacsOrder(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if ("症状--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setSymptom(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if ("药品--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setPasts(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if ("既往--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setPasts(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if ("过敏--".equals(map.get("pub_name"))) {
|
|
|
+ searchData.setPasts(map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("其他--") > -1) {
|
|
|
+ searchData.setOther(map.get("pub_name") + map.get("eq_value"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("检查--") > -1) {
|
|
|
+ searchData.setPacs(map.get("pub_name") + map.get("eq_value"));
|
|
|
+ }
|
|
|
+ } else if (!StringUtils.isEmpty(map.get("min_operator")) && !StringUtils.isEmpty(map.get("max_operator"))) {
|
|
|
+ if (map.get("pub_name").indexOf("体征--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("min_value")) + 0.1;
|
|
|
+ searchData.setVital(map.get("pub_name") + value + map.get("min_unit"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("其他--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("min_value")) + 0.1;
|
|
|
+ searchData.setOther(map.get("pub_name") + value + map.get("min_unit"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("化验--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("min_value")) + 0.1;
|
|
|
+ List<PreResult> list = new ArrayList<>();
|
|
|
+ PreResult preResult = new PreResult();
|
|
|
+ preResult.setUniqueName(map.get("pub_name").substring(4));
|
|
|
+ preResult.setValue(String.valueOf(value));
|
|
|
+ preResult.setUnits(map.get("min_unit"));
|
|
|
+ list.add(preResult);
|
|
|
+ searchData.setLisArr(list);
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("年龄--") > -1) {
|
|
|
+ int v = Integer.valueOf(map.get("min_value")) + 1;
|
|
|
+ searchData.setAge(v);
|
|
|
+ }
|
|
|
+ } else if (!StringUtils.isEmpty(map.get("min_operator"))) {
|
|
|
+ if (map.get("pub_name").indexOf("体征--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("min_value")) - 0.1;
|
|
|
+ searchData.setVital(map.get("pub_name") + value + map.get("min_unit"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("其他--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("min_value")) - 0.1;
|
|
|
+ searchData.setOther(map.get("pub_name") + value + map.get("min_unit"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("化验--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("min_value")) - 0.1;
|
|
|
+ List<PreResult> list = new ArrayList<>();
|
|
|
+ PreResult preResult = new PreResult();
|
|
|
+ preResult.setUniqueName(map.get("pub_name").substring(4));
|
|
|
+ preResult.setValue(String.valueOf(value));
|
|
|
+ preResult.setUnits(map.get("min_unit"));
|
|
|
+ list.add(preResult);
|
|
|
+ searchData.setLisArr(list);
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("年龄--") > -1) {
|
|
|
+ int v = Integer.valueOf(map.get("min_value")) - 1;
|
|
|
+ searchData.setAge(v);
|
|
|
+ }
|
|
|
+ } else if (!StringUtils.isEmpty(map.get("max_operator"))) {
|
|
|
+ if (map.get("pub_name").indexOf("体征--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("max_value")) + 0.1;
|
|
|
+ searchData.setVital(map.get("pub_name") + value + map.get("max_unit"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("其他--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("max_value")) + 0.1;
|
|
|
+ searchData.setOther(map.get("pub_name") + value + map.get("max_unit"));
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("化验--") > -1) {
|
|
|
+ value = Double.valueOf(map.get("max_value")) + 0.1;
|
|
|
+ List<PreResult> list = new ArrayList<>();
|
|
|
+ PreResult preResult = new PreResult();
|
|
|
+ preResult.setUniqueName(map.get("pub_name").substring(4));
|
|
|
+ preResult.setValue(String.valueOf(value));
|
|
|
+ preResult.setUnits(map.get("max_unit"));
|
|
|
+ list.add(preResult);
|
|
|
+ searchData.setLisArr(list);
|
|
|
+ }
|
|
|
+ if (map.get("pub_name").indexOf("年龄--") > -1) {
|
|
|
+ int v = Integer.valueOf(map.get("max_value")) + 1;
|
|
|
+ searchData.setAge(v);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+ return searchData;
|
|
|
+ }
|
|
|
+}
|