Explorar o código

Merge remote-tracking branch 'origin/push-dev-edite' into push-debug

# Conflicts:
#	graph/src/main/resources/bolt.properties
kongwz %!s(int64=5) %!d(string=hai) anos
pai
achega
90c07496bf

+ 27 - 7
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -19,6 +19,7 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 
 import org.diagbot.nlp.rule.module.PreResult;
+import org.diagbot.nlp.util.Constants;
 import org.slf4j.Logger;
 import org.slf4j.LoggerFactory;
 
@@ -39,8 +40,6 @@ public class GraphCalculate {
         long starttime = System.currentTimeMillis();
         System.out.println("Start at: " + starttime);
         ResponseData responseData = new ResponseData();
-//        ParamsDataProxy paramsDataProxy = new ParamsDataProxy();
-//        paramsDataProxy.createSearchData(request, searchData);
         List<String> inputList = new ArrayList<>();
         int age = searchData.getAge();
         String sex = searchData.getSex();
@@ -75,8 +74,10 @@ public class GraphCalculate {
         //计算诊断
         Map<String, Object> condition =null;
         Map<String, Map<String, String>> excludelist = null;
-        if(featureTypeList.contains("2")){
+        starttime = System.currentTimeMillis();
+        if(featureTypeList.contains(Constants.feature_type_diag)){
             condition = neo4jAPI.getNewCondition((String[]) inputList.toArray(new String[inputList.size()]),webDiag );
+            System.out.println("推送诊断消耗:"+(System.currentTimeMillis()-starttime)+"s");
             // 查找需要排除的诊断
             excludelist = neo4jAPI.getExcludeDiag(inputList);
             responseData.setExcludeDiag(Arrays.asList(excludelist.keySet().stream().toArray(String[]::new)));
@@ -129,32 +130,38 @@ public class GraphCalculate {
             }
         }
         logger.info("页面导入的所有化验项为 :" +lisSet);
+        starttime = System.currentTimeMillis();
         //走治疗
-        if (StringUtils.isNotEmpty(diseaseName) && featureTypeList.contains("6")) {
+        if (StringUtils.isNotEmpty(diseaseName) && featureTypeList.contains(Constants.feature_type_treat)) {
             // 查找页面诊断里是否有不良反应
             Map<String, List<String>> disUE = neo4jAPI.getDisUE(diseaseName, diseaseType);
             //根据页面输入内容推出的不良反应集合
             Set<String> ue = neo4jAPI.getUe((String[]) inputList.toArray(new String[inputList.size()]));
             //走平常诊断治疗
-            Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(diseaseName,webDiag, diseaseType, diseaseSet,disUE,ue,String.join(",", inputList));
-            responseData.setTreat(mulDiseaseTreat);
+//            Map<String, Filnlly> mulDiseaseTreat = neo4jAPI.getMulDiseaseTreat_2(diseaseName,webDiag, diseaseType, diseaseSet,disUE,ue,String.join(",", inputList));
+            Map<String, Filnlly> mulDiseaseTreat_new = neo4jAPI.getMulDiseaseTreat_new(diseaseName,webDiag, diseaseType, diseaseSet,disUE,ue,String.join(",", inputList));
+            System.out.println("推送治疗消耗:"+(System.currentTimeMillis()-starttime)+"s");
+            responseData.setTreat(mulDiseaseTreat_new);
         }
         //管理评估(慢病才有)
         if (featureTypeList.contains("11") && diseaseType == 1 && diseaseType != null) {
             logger.info("featureTypeList 包含11,走管理评估!!!");
+            starttime = System.currentTimeMillis();
             if(webDiag != null){
                 MangementEvaluation mangementEvaluation = neo4jAPI.pushMe(webDiagList,lis_Result);
+                System.out.println("推送管理评估消耗:"+(System.currentTimeMillis()-starttime)+"s");
                 Map<String, JSONObject> mangementEvaluation1 = mangementEvaluation.getMangementEvaluation();
                 responseData.setManagementEvaluation(mangementEvaluation1);
             }
         }
         //指标推送
         if (featureTypeList.contains("22") ) {
+            starttime = System.currentTimeMillis();
             List<MedicalIndication> idns =new ArrayList<>();
             Set<String> newindSet = new HashSet<>();
             Set<String> newindSet1 = new HashSet<>();
             //查找指标
-            Set<String> indSet = neo4jAPI.getInd((String[]) inputList.toArray(new String[inputList.size()]),sex,age);
+            Set<String> indSet = neo4jAPI.getInd((String[]) inputList.toArray(new String[inputList.size()]),sex,age,webDiagList);
             if(indSet != null && indSet.size()>0){
                 for (String ind:indSet) {
                     if("肾功能不全".equals(ind)){
@@ -195,6 +202,7 @@ public class GraphCalculate {
                     idns.add(medicalIndication);
                 }
             }
+            System.out.println("推送指标消耗:"+(System.currentTimeMillis()-starttime)+"s");
             responseData.setMedicalIndications(idns);
         }
         //诊断推送
@@ -203,4 +211,16 @@ public class GraphCalculate {
         System.out.println("Total takes: " + (System.currentTimeMillis()-starttime)/1000d + 's');
         return responseData;
     }
+    /**
+     * 推送化验,辅检,体征
+     */
+    public ResponseData getLisPacs(HttpServletRequest request, SearchData searchData) throws Exception {
+
+        ResponseData responseData = new ResponseData();
+        Map<String, List<FeatureRate>> lisPacs = neo4jAPI.getLisPacs(searchData);
+        responseData.setLabs(lisPacs.get("lisList"));
+        responseData.setPacs(lisPacs.get("pacsList"));
+        responseData.setVitals(lisPacs.get("vitalResultList"));
+        return responseData;
+    }
 }

A diferenza do arquivo foi suprimida porque é demasiado grande
+ 350 - 877
graph/src/main/java/org/diagbot/graph/jdbc/Neo4jAPI.java


+ 0 - 1
graph/src/main/java/org/diagbot/graph/jdbc/gdbtest.java

@@ -65,7 +65,6 @@ public class gdbtest {
             JSONArray jarray = jobj.getJSONArray("lis");
 
             Neo4jAPI napi = new Neo4jAPI(DriverManager.newDrive("192.168.3.201:7687", "neo4j", "123456"));
-            lisres = napi.AnalysisLISResult(jarray);
 
             for (String item:lisres) {
                 System.out.println(item);

+ 23 - 18
graph/src/main/resources/bolt.properties

@@ -5,7 +5,7 @@ pass_235 = diagbot@20180822
 
 # neo4j bolt credentials
 #\u7EBF\u4E0A\u4F7F\u7528
-bolt.uri=bolt://192.168.2.234
+bolt.uri=bolt://192.168.3.180
 bolt.user=neo4j
 bolt.passwd=123456
 
@@ -22,9 +22,6 @@ match (n)-[r:\u5C5E\u4E8E]->(m)-[r1:\u7EC4\u5408]->(k) \n \
 where n.name= row \n \
 return m.name as condition, count(distinct r)>=m.path as jundgement, labels(m)[0] as label,k.name as standName
 
-searchCollection1=match (n)-[r:\u5C5E\u4E8E]->(m)-[r1:\u7EC4\u5408]->(k) \n \
-where n.name in fildList \n \
-return m.name as condition, count(distinct r)>=m.path as jundgement, labels(m)[0] as label,k.name as standName
 #\u67E5\u627E\u8FD1\u4E49\u8BCD\u7CBE\u534E\u7248
 serchCollect=match (n)-[r:\u8BCA\u65AD\u4F9D\u636E|:\u8FD1\u4E49\u8BCD]->(e) where n.name in fildList return n.name as fild,collect(distinct type(r)) as typeCollect
 #\u67E5\u627E\u80FD\u63A8\u51FA\u8BCA\u65AD\u4F9D\u636E\u7684\u8BCD
@@ -36,14 +33,6 @@ match (n)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
 where n.name= row\n \
 return m.name as condition, count(distinct r)>=m.path as jundgement, labels(m)[0] as label
 
-searchCondition1=match (l)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
-where l.name in newList\n \
-with m,fildList as data\n \
-match (n)-[r:\u8BCA\u65AD\u4F9D\u636E]->(m)\n \
-where n.name in data\n \
-with m.name as condition, count(distinct r) as sd,m.path as jundgement\n \
-where sd>=jundgement\n \
-return condition
 #\u67E5\u627E\u786E\u8BCA,\u62DF\u8BCA\u7684\u8BED\u53E5
 searchQuezhen=match (n)-[r:\u786E\u8BCA|:\u62DF\u8BCA]->(m:Disease)\n \
 where n.name in fildList\n \
@@ -53,7 +42,8 @@ return m.name as name, labels(m)[0] as label,type(r) as relationType
 #\u63A8\u9001\u786E\u8BCA,\u65B0\u7ED3\u6784,\u5305\u542B\u5173\u8054\u8BCD
 #\u67E5\u627E\u8FD9\u4E2A\u8BCD\u5C5E\u4E8E\u54EA\u4E2A\u5E8F\u53F7\u96C6\u5408
 searchNumColl=match(h)-[r:\u5C5E\u4E8E|:\u8BCA\u65AD\u4F9D\u636E]->(c:Condition)\n \
-where h.name in startList\n \
+where (h:Symptom or h:Vital or h:LISResult or h:PACSResult or h:History or h:Other or h:Cause or h:Prognosis or h:PrevailHistory or h:Disease or h:Indicators or h:UntowardEffect) and \
+ h.name in startList\n \
 with c.name as v,count(distinct r)>=c.path as hh\n \
 where hh =true\n \
 return v
@@ -75,7 +65,7 @@ return m.name as name, labels(m)[0] as label,type(r) as relationType;
 excludeDiag=match (ex)-[q:\u6392\u9664\u4F9D\u636E]-(c)-[r:\u6392\u9664]->(d:Disease) where ex.name in infostr return d
 #\u6CBB\u7597\u5904\u7406
 #\u67E5\u627E\u8BCA\u65AD\u5BF9\u5E94\u7684\u7C7B\u548C\u836F,\u4EE5\u53CA\u4ED6\u4EEC\u7684\u6392\u5E8F
-searchDrugsMedic=match (d:Disease{name:diseaseName})-[r0:\u63A8\u8350]->(m:Drugs)-[:\u5305\u542B]->(n:Medicine),(d:Disease)-[r1:\u63A8\u8350]->(n)\n \
+searchDrugsMedic=match (d:Disease{name:diseaseName})-[r:\u6CBB\u7597\u65B9\u6848]->(t:Treat)-[r0:\u63A8\u8350]->(m:Drugs)-[:\u5305\u542B]->(n:Medicine),(t:Treat)-[r1:\u63A8\u8350]->(n)\n \
 where r0.p<6 \n \
 return m.name as \u7C7B, r0.p as sort, n.name as \u836F\u7269, r1.rate as a order by sort , a desc
 #\u67E5\u627E\u8BCA\u65AD\u5BF9\u5E94\u7684\u836F\u7269\u7684\u5927\u5C0F\u7C7B
@@ -100,11 +90,26 @@ where n.name in fildList\n \
 with distinct m,r\n \
 return m.name as name
 
-#\u67E5\u627E\u4E00\u4E9B\u8BCD\u662F\u5426\u5728\u56FE\u8C31\u4E2D
-searchWords=match(d) where d.name in fildList return distinct d.name as name
 #\u6839\u636E\u75BE\u75C5\u67E5\u627E\u76F8\u5E94\u7684Lis Pacs
-serchLisPacs=match (d:Disease)-[r1:\u63A8\u8350]->(m)\n \
-where d.name in diseaseNmae return distinct d.name as name,labels(m)[0] as lei,m.name as n
+serchLisPacs=unwind disList as row \n \
+  match (d:Disease)-[r1:\u63A8\u8350|:\u8868\u73B0]->(m) where d.name=row return  labels(m)[0] as label,m.name as name
+
+# \u65B0\u7ED3\u6784\u6CBB\u7597\u67E5\u8BE2
+searchTreat=match(h:Disease{name:disName})-[r:\u6CBB\u7597\u65B9\u6848]->(t:Treat)-[r2:\u63A8\u8350]->(m:Medicine)-[r1:\u5C5E\u4E8E]->(d:Drugs)\n \
+with t,m,d\n \
+match(t)-[r:\u63A8\u8350]->(m)-[r1:\u5C5E\u4E8E]->(h:Drugs)\n \
+where d.name=h.bigDrugs \n \
+with t,m,d,h\n \
+match(m)<-[R:\u614E\u7528|:\u5FCC\u7528]-(i) where i.name in filds\n \
+return t.name as treat,d.name as big,h.name as sub,m.name as med,type(R) as ty\n \
+order by h.p\n \
+union\n \
+match(h:Disease{name:disName})-[r:\u6CBB\u7597\u65B9\u6848]->(t:Treat)-[r2:\u63A8\u8350]->(m:Medicine)-[r1:\u5C5E\u4E8E]->(d:Drugs)\n \
+with t,m,d\n \
+match(t)-[r:\u63A8\u8350]->(m)-[r1:\u5C5E\u4E8E]->(h:Drugs)\n \
+where d.name=h.bigDrugs and h.p<6 \n \
+return t.name as treat,d.name as big,h.name as sub, m.name as med,null as ty\n \
+order by h.p
 
 #\u66F4\u65B0\u8BCA\u65AD\u4F9D\u636E\u7684path
 updateConditionPath=match (n:Condition)<-[:\u8BCA\u65AD\u4F9D\u636E]-(m) \n \

+ 3 - 16
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -157,19 +157,6 @@ public class AlgorithmController extends BaseController {
         ResponseData graphResponseData = graphCalculate.calculate(request, searchData);
         if (graphResponseData.getDis().size() > 0) {
             List<FeatureRate> disFeatureRates = new ArrayList<>();
-            /*boolean isFind = false;
-            for (int i = 0; i < bigDataResponseData.getDis().size(); i++) {
-                FeatureRate bigdata_fr = bigDataResponseData.getDis().get(i);
-                isFind = false;
-                for (FeatureRate graph_fr : graphResponseData.getDis()) {
-                    if (graph_fr.getDesc().contains("拟诊")|| graph_fr.getDesc().contains("确诊") && bigdata_fr.getFeatureName().equals(graph_fr.getFeatureName())) {
-                        isFind = true;
-                    }
-                }
-                if (!isFind) {
-                    disFeatureRates.add(bigdata_fr);
-                }
-            }*/
             List<FeatureRate> bigdis = bigDataResponseData.getDis();
             List<FeatureRate> graphdis = graphResponseData.getDis();
             for (FeatureRate bg:graphdis) {
@@ -210,13 +197,13 @@ public class AlgorithmController extends BaseController {
 
         //推送管理评估
         bigDataResponseData.setManagementEvaluation(graphResponseData.getManagementEvaluation());
-        //知识图谱直接替换大数据中的检验检查数据
-        LisPacsCalculate lisPacsCalculate = new LisPacsCalculate();
-        graphResponseData = lisPacsCalculate.getLisPacs(request, searchData);
 
+        //知识图谱直接替换大数据中的检验检查数据
+        graphResponseData = graphCalculate.getLisPacs(request,searchData);
         bigDataResponseData.setLabs(graphResponseData.getLabs());
         bigDataResponseData.setPacs(graphResponseData.getPacs());
 
+
         //体征结果和指标推送
         Map<String, String> vitalCache = CacheUtil.getVitalCache();
         List<String> featureList = Arrays.asList(searchData.getFeatureTypes());