Browse Source

处理血肌酐和慢病的合并症

kongwz 5 years ago
parent
commit
e4eecb943b

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

@@ -70,6 +70,9 @@ public class GraphCalculate {
         String webDiag = searchData.getDiag();
         logger.info("页面诊断为 :"+webDiag);
         String[] webDiagList = webDiag.split(",|,|、|;|:|;");
+        //处理血肌酐
+        List<PreResult> lisArr = searchData.getLisArr();
+        String serumCreatinine = processSerumcreatinine(lisArr);
 
         //计算诊断
         Map<String, Object> condition =null;
@@ -139,7 +142,7 @@ public class GraphCalculate {
             logger.info("featureTypeList 包含22,走指标推送!!!,图谱推出的指标为:" + indSet);
             List<MedicalIndication> idn =null;
             if(newindSet.contains("肾功能不全")){
-                idn = neo4jAPI.getIdn(newindSet, age, sex);
+                idn = neo4jAPI.getIdn(newindSet, age, sex,serumCreatinine);
                 if(idn!= null && idn.size()>0){
                     idns.addAll(idn);
                 }
@@ -247,4 +250,19 @@ public class GraphCalculate {
         Map<String, List<FeatureRate>> lisPacs = neo4jAPI.getLisPacs(searchData);
         return lisPacs;
     }
+    /**
+     * 处理血肌酐
+     * @return
+     */
+    public String processSerumcreatinine(List<PreResult> lisArr){
+        String sc = "";
+        if(lisArr !=null && lisArr.size()>0){
+            for (PreResult pre:lisArr) {
+                if("肾功能测定--肌酐(Cr)".equals(pre.getUniqueName()) && StringUtils.isNotEmpty(pre.getValue())){
+                    sc = String.valueOf(Integer.parseInt(pre.getValue())*0.01131);
+                }
+            }
+        }
+        return sc;
+    }
 }

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

@@ -1517,7 +1517,7 @@ public class Neo4jAPI {
      * @param sex    性别
      * @return
      */
-    public List<MedicalIndication> getIdn(Set<String> idnSet, Integer age, String sex) {
+    public List<MedicalIndication> getIdn(Set<String> idnSet, Integer age, String sex,String serumCreatinine) {
         String query = "";
         Session session = null;
         StatementResult result = null;
@@ -1585,6 +1585,9 @@ public class Neo4jAPI {
                             ageJsonObject.put("isShow", 0);
                         } else if ("性别".equals(item.replace("\"", ""))) {
                             ageJsonObject.put("isShow", 0);
+                        }else if("血肌酐".equals(item.replace("\"", ""))){
+                            ageJsonObject.put("value", serumCreatinine);
+                            ageJsonObject.put("isShow", 0);
                         } else {
                             ageJsonObject.put("isShow", 1);
                         }

+ 27 - 15
graph/src/main/java/org/diagbot/graph/medicationProcess/PushTreat.java

@@ -220,6 +220,7 @@ public class PushTreat {
     }
     private List<TreatDetail> processMedication_he(Map<String,Map<String,Object>> disDrugs,Map<String,Integer> conditionDesign,List<String> allFilds,Driver driver){
         List<TreatDetail> treatDetailList = new ArrayList<>();
+        Map<String,Set<String>> dis_Drugs =new HashMap<>();
         if(disDrugs != null && disDrugs.size()>0){
             for (Map.Entry<String,Map<String,Object>> ds:disDrugs.entrySet()) {
                 String key = ds.getKey();
@@ -227,33 +228,44 @@ public class PushTreat {
                 List<String> cateList = (List<String>) values.get("cate");
                 List<String> disList = (List<String>)values.get("dis");
                 List<Object> collList = (List<Object>)values.get("coll");
-
                 if(cateList.contains("合并症")){
                     List<Integer> indexList = same(cateList, "合并症");
                     if(indexList.size()>0){
                         for (Integer i:indexList) {
-                            TreatDetail treatDetail = new TreatDetail();
                             String mainDis = disList.get(i);
                             List<String> o = (List<String>)collList.get(i);
                             List<String> yinhao = yinhao(o);
-                            //根据类找药
-                            List<Drugs> drugs = searchMedication(yinhao,allFilds,driver);
-                            List<MeditionDetail> meditionDetails = new ArrayList<>();
-                            MeditionDetail meditionDetail = new MeditionDetail();
-                            meditionDetail.setDescription("");
-                            meditionDetail.setTreatment(drugs);
-                            meditionDetails.add(meditionDetail);
-
-                            treatDetail.setTitle(mainDis);
-                            treatDetail.setMeditionDetails(meditionDetails);
-
-                            treatDetailList.add(treatDetail);
+                            if(dis_Drugs.containsKey(mainDis)){
+                                Set<String> strings = dis_Drugs.get(mainDis);
+                                strings.addAll(yinhao);
+                                dis_Drugs.put(mainDis,strings);
+                            }else {
+                                Set<String> strings = new HashSet<>();
+                                strings.addAll(yinhao);
+                                dis_Drugs.put(mainDis,strings);
+                            }
                         }
                     }
-
                 }
             }
         }
+        if(dis_Drugs != null && dis_Drugs.size()>0){
+            for (Map.Entry<String,Set<String>> dd:dis_Drugs.entrySet()) {
+                TreatDetail treatDetail = new TreatDetail();
+                String mainDis = dd.getKey();
+                Set<String> drugs = dd.getValue();
+                //根据类找药
+                List<Drugs> drugsList = searchMedication(new ArrayList<>(drugs),allFilds,driver);
+                List<MeditionDetail> meditionDetails = new ArrayList<>();
+                MeditionDetail meditionDetail = new MeditionDetail();
+                meditionDetail.setDescription("");
+                meditionDetail.setTreatment(drugsList);
+                meditionDetails.add(meditionDetail);
+                treatDetail.setTitle(mainDis);
+                treatDetail.setMeditionDetails(meditionDetails);
+                treatDetailList.add(treatDetail);
+            }
+        }
         return treatDetailList;
     }