Browse Source

输入的词进行解析

kongwz 6 years ago
parent
commit
fbc639fb76

+ 8 - 1
graph-web/src/main/java/org/diagbot/graphWeb/controller/GraphController.java

@@ -5,6 +5,7 @@ import org.diagbot.graph.javabean.GdbResponse;
 import org.diagbot.graph.jdbc.DriverManager;
 import org.diagbot.graph.jdbc.Neo4jAPI;
 import org.diagbot.graphWeb.dao.BackResponse;
+import org.diagbot.graphWeb.work.DiseaseCalculate;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.HighRiskCalculate;
 import org.diagbot.common.work.ResponseData;
@@ -52,7 +53,13 @@ public class GraphController {
         response.setData(responseData);
         return response;
     }
-
+    @RequestMapping(value = "/dis", method = RequestMethod.POST)
+    @ResponseBody
+    public ResponseData getDisTreat(HttpServletRequest request, @RequestBody SearchData searchData)throws Exception{
+        DiseaseCalculate graphCalculate = new DiseaseCalculate();
+        ResponseData calculate = graphCalculate.getDisease(searchData);
+        return calculate;
+    }
 
 }
 

+ 56 - 117
graph-web/src/main/java/org/diagbot/graphWeb/work/DiseaseCalculate.java

@@ -16,10 +16,11 @@ import javax.servlet.http.HttpServletRequest;
 import java.util.*;
 
 /**
- * 推送诊断和治疗方案
+ * 推送诊断(疑诊,急诊,鉴别诊断)和治疗方案,不良反应,指标推送,管理评估
  */
 public class DiseaseCalculate {
     Logger logger = LoggerFactory.getLogger(DiseaseCalculate.class);
+
     public ResponseData getDisease(SearchData searchData) throws Exception {
         ResponseData responseData = new ResponseData();
         String[] featureSplits = searchData.getFeatureType().split(",");
@@ -31,35 +32,30 @@ public class DiseaseCalculate {
         ResponseData diseaseResponse = api.doPost(propertiesUtil.getProperty("disease.http.url"), searchData,
                 ResponseData.class);
         //走诊断推送(诊断推送包含诊断,指标和量表,管理评估)
-        List<FeatureRate> dis = (List<FeatureRate>)diseaseResponse.getDis();
+        List<FeatureRate> dis = (List<FeatureRate>) diseaseResponse.getDis();
         List<FeatureRate> diseaseName = this.getDisease(dis);
 
         //走治疗推送(治疗里面包含治疗方案和不良反应)
         Map<String, Filnlly> treat = this.getTreat(diseaseResponse.getTreat());
 
         //走量表和指标推送
-        if(featureList.contains("22")){
-            List<MedicalIndication> medicalIndications = this.getMedicalIndications(diseaseResponse.getMedicalIndications());
-            responseData.setMedicalIndications(medicalIndications);
-        }
+        List<MedicalIndication> medicalIndications = this.getMedicalIndications(diseaseResponse.getMedicalIndications());
+        responseData.setMedicalIndications(medicalIndications);
 
         //走管理评估
-        if(featureList.contains("11") && diseaseType == 1 && diseaseType !=null){
-//            Map<String, JSONObject> managementEvaluation = this.getMangeEv(diseaseResponse.getManagementEvaluation());
-//            responseData.setManagementEvaluation(managementEvaluation);
-            Map managementEvaluation = diseaseResponse.getManagementEvaluation();
-            Map test = this.getTest(managementEvaluation);
-            responseData.setManagementEvaluation(test);
-        }
+        Map managementEvaluation = diseaseResponse.getManagementEvaluation();
+        Map test = this.getMan(managementEvaluation);
+
+        responseData.setManagementEvaluation(test);
         responseData.setTreat(treat);
         responseData.setDis(diseaseName);
         return responseData;
     }
 
-    public List<FeatureRate> getDisease(List<FeatureRate> dis){
+    public List<FeatureRate> getDisease(List<FeatureRate> dis) {
         List<FeatureRate> diseaseName = new ArrayList<>();
-        if(dis != null && dis.size()>0){
-            for (FeatureRate d:dis) {
+        if (dis != null && dis.size() > 0) {
+            for (FeatureRate d : dis) {
                 FeatureRate featureRate = new FeatureRate();
                 featureRate.setFeatureName(d.getFeatureName());
                 featureRate.setExtraProperty(d.getExtraProperty());
@@ -71,23 +67,23 @@ public class DiseaseCalculate {
         return diseaseName;
     }
 
-    public Map<String, Filnlly> getTreat(Map<String, Filnlly> treat){
-        Map<String,Filnlly> diseaseTreat = new HashMap<String,Filnlly>();
-        if(treat != null){
-            for (Map.Entry<String, Filnlly> tm:treat.entrySet()) {
+    public Map<String, Filnlly> getTreat(Map<String, Filnlly> treat) {
+        Map<String, Filnlly> diseaseTreat = new HashMap<String, Filnlly>();
+        if (treat != null) {
+            for (Map.Entry<String, Filnlly> tm : treat.entrySet()) {
                 String dise = tm.getKey();
                 Filnlly value = tm.getValue();
                 List<Indicators> adverseEvent = value.getAdverseEvent();
                 List<Indicators> newAdverseEvent = new ArrayList<>();
-                if(adverseEvent !=null && adverseEvent.size()>0){
-                    for (Indicators i:adverseEvent) {
+                if (adverseEvent != null && adverseEvent.size() > 0) {
+                    for (Indicators i : adverseEvent) {
                         Indicators indicators = new Indicators();
                         indicators.setName(i.getName());
                         indicators.setControlType(i.getControlType());
                         List<Detail> details = i.getDetails();
                         List<Detail> newDetails = new ArrayList<>();
-                        if(details !=null && details.size()>0){
-                            for (Detail d:details) {
+                        if (details != null && details.size() > 0) {
+                            for (Detail d : details) {
                                 Detail detail = new Detail();
                                 detail.setName(d.getName());
                                 detail.setValue(d.getValue());
@@ -101,16 +97,16 @@ public class DiseaseCalculate {
 
                 ArrayList<Drugs> treatment = value.getTreatment();
                 ArrayList<Drugs> newTreatment = new ArrayList<>();
-                if(treatment != null && treatment.size()>0){
-                    for (Drugs d:treatment) {
+                if (treatment != null && treatment.size() > 0) {
+                    for (Drugs d : treatment) {
                         Drugs drugs = new Drugs();
                         String bigdrugsName = d.getBigdrugsName();
                         String subdrugsName = d.getSubdrugsName();
                         Integer drugsForbidden = d.getDrugsForbidden();
                         LinkedList<Medicition> medicitionsList = d.getMedicitionsList();
-                        LinkedList<Medicition> newMedicitionsList =new LinkedList<>();
-                        if(medicitionsList != null && medicitionsList.size()>0){
-                            for (Medicition m:medicitionsList) {
+                        LinkedList<Medicition> newMedicitionsList = new LinkedList<>();
+                        if (medicitionsList != null && medicitionsList.size() > 0) {
+                            for (Medicition m : medicitionsList) {
                                 Medicition newMedication = new Medicition();
                                 newMedication.setMedicitionName(m.getMedicitionName());
                                 newMedication.setForbidden(m.getForbidden());
@@ -129,22 +125,22 @@ public class DiseaseCalculate {
                 Filnlly filnlly = new Filnlly();
                 filnlly.setTreatment(newTreatment);
                 filnlly.setAdverseEvent(newAdverseEvent);
-                diseaseTreat.put(dise,filnlly);
+                diseaseTreat.put(dise, filnlly);
             }
         }
         return diseaseTreat;
     }
 
-    public List<MedicalIndication> getMedicalIndications(List<MedicalIndication> medicalIndications){
-        List<MedicalIndication> newMedicalIndicationList =new ArrayList<>();
-        if(medicalIndications !=null && medicalIndications.size()>0){
-            for (MedicalIndication m:medicalIndications) {
+    public List<MedicalIndication> getMedicalIndications(List<MedicalIndication> medicalIndications) {
+        List<MedicalIndication> newMedicalIndicationList = new ArrayList<>();
+        if (medicalIndications != null && medicalIndications.size() > 0) {
+            for (MedicalIndication m : medicalIndications) {
                 MedicalIndication newMedicalIndication = new MedicalIndication();
                 String name = m.getName();
                 List<MedicalIndicationDetail> newDetails = new ArrayList<>();
                 List<MedicalIndicationDetail> details = m.getDetails();
-                if(details !=null && details.size()>0){
-                    for (MedicalIndicationDetail detail:details) {
+                if (details != null && details.size() > 0) {
+                    for (MedicalIndicationDetail detail : details) {
                         MedicalIndicationDetail newMe = new MedicalIndicationDetail();
                         newMe.setType(detail.getType());
                         newMe.setContent(detail.getContent());
@@ -159,96 +155,39 @@ public class DiseaseCalculate {
         return newMedicalIndicationList;
     }
 
-    public Map<String, JSONObject> getMangeEv(Map<String, JSONObject> mv){
-        Map<String, JSONObject> mangeEv = new HashMap<>();
-        JSONObject liaoXiao = mv.get("疗效评估");
-        JSONObject curativeJson = new JSONObject();
-        List<JSONObject> liaoXiaoJsonList = (List<JSONObject>)liaoXiao.get("rows");
-        List<JSONObject> newLiaoXiaoJsonList = new ArrayList<>();
-        if(liaoXiaoJsonList !=null && liaoXiaoJsonList.size()>0){
-            for (JSONObject item:liaoXiaoJsonList) {
-                JSONObject newItem = new JSONObject();
-                newItem.put("controltype",item.get("controltype"));
-                newItem.put("name",item.get("name"));
-                List<JSONObject> detailList = (List<JSONObject>)item.get("details");
-                List<JSONObject> newDetailList = new ArrayList<>();
-                if(detailList !=null && detailList.size()>0){
-                    for (JSONObject itemJson:detailList) {
-                        JSONObject newItemJson = new JSONObject();
-                        newItemJson.put("detailName",itemJson.get("detailName"));
-                        newItemJson.put("state",itemJson.get("state"));
-                        newDetailList.add(newItemJson);
-                    }
-                }
-                newItem.put("details",newDetailList);
-                newLiaoXiaoJsonList.add(newItem);
-            }
-        }
-        curativeJson.put("rows",newLiaoXiaoJsonList);
-
-        JSONObject fenjiMange = mv.get("糖尿病分级管理");
-        JSONObject newFenjiMange = new JSONObject();
-        List<JSONObject> fenjiJsonList = (List<JSONObject>) fenjiMange.get("rows");
-        List<JSONObject> newFenjiJsonList = new ArrayList<>();
-        if(fenjiJsonList !=null && fenjiJsonList.size()>0){
-            for (JSONObject fenjiItem:fenjiJsonList) {
-                JSONObject newFenjiIem = new JSONObject();
-                newFenjiIem.put("name",fenjiItem.get("name"));
-                newFenjiIem.put("controltype",fenjiItem.get("controltype"));
-                List<JSONObject> detaillist = (List<JSONObject>)fenjiItem.get("details");
-                List<JSONObject> newDetaillist = new ArrayList<>();
-                if(detaillist !=null && detaillist.size()>0){
-                    for (JSONObject h:detaillist) {
-                        JSONObject jsonObject = new JSONObject();
-                        jsonObject.put("detailName",h.get("detailName"));
-                        jsonObject.put("state",h.get("state"));
-                        newDetaillist.add(jsonObject);
-                    }
-                }
-                newFenjiIem.put("details",newDetaillist);
-                newFenjiJsonList.add(newFenjiIem);
-            }
-        }
-        newFenjiMange.put("rows",newFenjiJsonList);
-
-        mangeEv.put("疗效评估",curativeJson);
-        mangeEv.put("糖尿病分级管理",newFenjiMange);
-        return  mangeEv;
-    }
-
-    public Map getTest(Map input){
-        Map resultMap =new HashMap();
-        Map lixiao = (HashMap)input.get("疗效评估");
+    public Map getMan(Map input) {
+        Map resultMap = new HashMap();
+        Map lixiao = (HashMap) input.get("疗效评估");
         Map newlixiao = new HashMap();
-        List<Map> lxRows = (ArrayList)lixiao.get("rows");
+        List<Map> lxRows = (ArrayList) lixiao.get("rows");
         List<Map> newlxRows = new ArrayList();
-        if(lxRows !=null && lxRows.size()>0){
-            for (Map item:lxRows) {
+        if (lxRows != null && lxRows.size() > 0) {
+            for (Map item : lxRows) {
                 Map k = new HashMap();
-                k.put("controltype",item.get("controltype"));
-                k.put("name",item.get("name"));
-                ArrayList<Map> h = (ArrayList<Map>)item.get("details");
+                k.put("controltype", item.get("controltype"));
+                k.put("name", item.get("name"));
+                ArrayList<Map> h = (ArrayList<Map>) item.get("details");
                 ArrayList<Map> newh = new ArrayList<>();
-                if(h !=null && h.size()>0){
-                    for (Map d:h) {
-                        Map ll =new HashMap();
-                        ll.put("detailName",d.get("detailName"));
-                        ll.put("state",d.get("state"));
+                if (h != null && h.size() > 0) {
+                    for (Map d : h) {
+                        Map ll = new HashMap();
+                        ll.put("detailName", d.get("detailName"));
+                        ll.put("state", d.get("state"));
                         newh.add(ll);
                     }
                 }
-                k.put("details",newh);
+                k.put("details", newh);
                 newlxRows.add(k);
             }
         }
-        newlixiao.put("rows",newlxRows);
+        newlixiao.put("rows", newlxRows);
 
-        Map fenji = (HashMap)input.get("糖尿病分级管理");
+        Map fenji = (HashMap) input.get("糖尿病分级管理");
         Map newfenji = new HashMap();
-        List<Map> fjRows = (ArrayList)fenji.get("rows");
+        List<Map> fjRows = (ArrayList) fenji.get("rows");
         List<Map> newfjRows = new ArrayList();
-        if(fjRows !=null && fjRows.size()>0){
-            for (Map item:fjRows) {
+        if (fjRows != null && fjRows.size() > 0) {
+            for (Map item : fjRows) {
                 Map k = new HashMap();
                 k.put("controltype", item.get("controltype"));
                 k.put("name", item.get("name"));
@@ -265,10 +204,10 @@ public class DiseaseCalculate {
                 k.put("details", newh);
                 newfjRows.add(k);
             }
-            }
-            newfenji.put("rows",newfjRows);
-        resultMap.put("疗效评估",newlixiao);
-        resultMap.put("糖尿病分级管理",newfenji);
+        }
+        newfenji.put("rows", newfjRows);
+        resultMap.put("疗效评估", newlixiao);
+        resultMap.put("糖尿病分级管理", newfenji);
         return resultMap;
     }
 }

+ 12 - 1
graph-web/src/main/java/org/diagbot/graphWeb/work/GraphCalculate.java

@@ -3,6 +3,7 @@ package org.diagbot.graphWeb.work;
 import com.alibaba.fastjson.JSON;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONObject;
+import org.apache.commons.lang3.StringUtils;
 import org.diagbot.common.javabean.MangementEvaluation;
 import org.diagbot.common.work.FeatureRate;
 import org.diagbot.common.javabean.Filnlly;
@@ -38,7 +39,17 @@ public class GraphCalculate {
 //        paramsDataProxy.createSearchData(request, searchData);
         List<String> inputList = new ArrayList<>();
         Map<String, Map<String, String>> inputs = searchData.getInputs();
-        Set<String> ss = inputs.keySet();
+        Set<String> ss = new HashSet<>();
+        if(inputs.size()>0){
+            for (Map.Entry<String, Map<String, String>> input:inputs.entrySet()) {
+                Map<String, String> value = input.getValue();
+                String concept = value.get("concept");
+                String[] splits = StringUtils.split(concept, ",");
+                for (String s:splits) {
+                    ss.add(s);
+                }
+            }
+        }
         logger.info("从分词系统接收到的词 :" + ss);
         String[] featureTypes = searchData.getFeatureType().split(",");
         List<String> featureTypeList = Arrays.asList(featureTypes);

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

@@ -1570,7 +1570,6 @@ public class Neo4jAPI {
                         while (run1.hasNext()) {
                             Record next = run1.next();
                             String name = next.get("name").toString();
-                            String text = next.get("text").toString();
                             results.add(name.replace("\"", ""));
                         }
                     } else if (3 == sort1) {

+ 17 - 0
graphdb/src/main/java/org/diagbot/repository/BaseNodeRepository.java

@@ -114,5 +114,22 @@ public interface BaseNodeRepository extends Neo4jRepository<BaseNode, Long> {
             "match(d:Indicators{name:{0}})-[r2:内容]->(n:Content)-[r3:项目]->(i:Item)\n" +
             "return r2.p as sort1 ,n.name as conten,r3.p as sort2,i.name as item,i.controlType as controlType,i.state as state,i.value as value,i.uint as uint,i.details as details order by sort1,sort2")
     List<Map<String,Object>> allSort(String ind);
+    //指标item详细
+    @Query("match(i:Item{name:{0}})-[r:详细]->(d:Detail)\n" +
+            "return d.name as name,d.state as state,d.value as value order by r.p")
+    List<Map<String,Object>> indItemDetail(String item);
+    //指标content详细
+    @Query("match(c:Content{name:{0}})-[r:结果]->(f:Result) return f.name as name,f.text as text order by r.p")
+    List<Map<String,Object>> indcontent(String item);
+
+    //推送管理评估,只有慢病才有
+    //糖尿病管理评估
+    @Query("match(d:Disease{name:{0}})-[r1:管理评估]-(m:Management)-[r2:疗效评估]->(e:Effect)-[r3:结果]-(u:Result)\n" +
+            "return d.name as dis,e.name as eff,u.name as res order by r2.p,r3.p")
+    List<Map<String,Object>> meAllQuery(String dis);
+    //计算血脂情况
+    @Query("match(e:Effect{name:{0}})-[r:指标]->(l:LIS)-[r1:计算结果]->(k:Result)\n" +
+            "return l.name as name,r1.between as between ,k.name as res")
+    List<Map<String,Object>> culXuezhi(String dis);
 
 }

File diff suppressed because it is too large
+ 601 - 300
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java


+ 1 - 4
push-web/src/main/java/org/diagbot/push/controller/AlgorithmController.java

@@ -8,6 +8,7 @@ import org.diagbot.common.javabean.Medicition;
 import org.diagbot.common.work.FeatureRate;
 import org.diagbot.common.work.ResponseData;
 import org.diagbot.common.work.SearchData;
+import org.diagbot.graphWeb.work.DiseaseCalculate;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.nlp.util.Constants;
@@ -118,7 +119,6 @@ public class AlgorithmController extends BaseController {
         Response<ResponseData> response = new Response();
         AlgorithmCore core = new AlgorithmCore();
         ResponseData bigDataResponseData = core.algorithm(request, searchData);
-
         LisPacsCalculate lisPacsCalculate = new LisPacsCalculate();
 
         GraphCalculate graphCalculate = new GraphCalculate();
@@ -147,13 +147,10 @@ public class AlgorithmController extends BaseController {
         //推送出的诊断信息作为参数传入知识图谱
         List<FeatureRate> pushDiags = new ArrayList<>();
         for (FeatureRate fr : bigDataResponseData.getDis()) {
-//            if(!"鉴别诊断".equals(fr.getDesc())){
                 pushDiags.add(fr);
-//            }
             logger.info("合并知识图谱、大数据后推送的诊断信息....: " + fr.getFeatureName());
         }
         searchData.setPushDiags(pushDiags);
-//        bigDataResponseData.setDiffDiag(graphResponseData.getDiffDiag());
 
         bigDataResponseData.setTreat(graphResponseData.getTreat());
         //量表和指标推送