Prechádzať zdrojové kódy

修改治疗featureType为8

kongwz 6 rokov pred
rodič
commit
0565fa4926

+ 12 - 3
common-service/src/main/java/org/diagbot/common/work/ResponseData.java

@@ -24,16 +24,25 @@ public class ResponseData {
     private Map<String, Filnlly> treat = new HashMap<>();
     private List<FeatureRate> graphWords = new ArrayList<>(10);
     private List<MedicalIndication> medicalIndications;//量表和指标推送
-    private Map<String,JSONObject> managementEvaluation; //管理评估
+//    private Map<String,JSONObject> managementEvaluation; //管理评估
+    private Map managementEvaluation;
 
-    public Map<String, JSONObject> getManagementEvaluation() {
+    public Map getManagementEvaluation() {
         return managementEvaluation;
     }
 
-    public void setManagementEvaluation(Map<String, JSONObject> managementEvaluation) {
+    public void setManagementEvaluation(Map managementEvaluation) {
         this.managementEvaluation = managementEvaluation;
     }
 
+    //    public Map<String, JSONObject> getManagementEvaluation() {
+//        return managementEvaluation;
+//    }
+//
+//    public void setManagementEvaluation(Map<String, JSONObject> managementEvaluation) {
+//        this.managementEvaluation = managementEvaluation;
+//    }
+
     public List<MedicalIndication> getMedicalIndications() {
         return medicalIndications;
     }

+ 167 - 18
graph-web/src/main/java/org/diagbot/graphWeb/work/DiseaseCalculate.java

@@ -1,5 +1,6 @@
 package org.diagbot.graphWeb.work;
 
+import com.alibaba.fastjson.JSONObject;
 import org.diagbot.common.javabean.*;
 import org.diagbot.common.work.FeatureRate;
 import org.diagbot.common.work.ResponseData;
@@ -23,20 +24,34 @@ public class DiseaseCalculate {
         ResponseData responseData = new ResponseData();
         String[] featureSplits = searchData.getFeatureType().split(",");
         List<String> featureList = Arrays.asList(featureSplits);
-        String webDiag = searchData.getDiag();
+        Integer diseaseType = searchData.getDisType();
         PropertiesUtil propertiesUtil = new PropertiesUtil("url.properties");
         //调用图谱API
         HttpApi<ResponseData> api = new HttpApi<>();
         ResponseData diseaseResponse = api.doPost(propertiesUtil.getProperty("disease.http.url"), searchData,
                 ResponseData.class);
-        //走诊断推送
+        //走诊断推送(诊断推送包含诊断,指标和量表,管理评估)
         List<FeatureRate> dis = (List<FeatureRate>)diseaseResponse.getDis();
-        List<FeatureRate> diseaseName = getDisease(dis);
-        //走治疗推送
-        if(featureList.contains("8") && webDiag.trim()!=null && webDiag.trim()!="" ){
-            Map<String, Filnlly> treat = getTreat(diseaseResponse.getTreat());
-            responseData.setTreat(treat);
+        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);
         }
+
+        //走管理评估
+        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);
+        }
+        responseData.setTreat(treat);
         responseData.setDis(diseaseName);
         return responseData;
     }
@@ -63,32 +78,29 @@ public class DiseaseCalculate {
                 String dise = tm.getKey();
                 Filnlly value = tm.getValue();
                 List<Indicators> adverseEvent = value.getAdverseEvent();
-                ArrayList<Drugs> treatment = value.getTreatment();
                 List<Indicators> newAdverseEvent = new ArrayList<>();
-                ArrayList<Drugs> newTreatment = new ArrayList<>();
-                if(adverseEvent != null && adverseEvent.size()>0){
+                if(adverseEvent !=null && adverseEvent.size()>0){
                     for (Indicators i:adverseEvent) {
                         Indicators indicators = new Indicators();
-                        String name = i.getName();
-                        Integer controlType = i.getControlType();
+                        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) {
                                 Detail detail = new Detail();
-                                String name1 = d.getName();
-                                Integer value1 = d.getValue();
-                                detail.setName(name1);
-                                detail.setValue(value1);
+                                detail.setName(d.getName());
+                                detail.setValue(d.getValue());
                                 newDetails.add(detail);
                             }
                         }
-                        indicators.setName(name);
-                        indicators.setControlType(controlType);
                         indicators.setDetails(newDetails);
                         newAdverseEvent.add(indicators);
                     }
                 }
+
+                ArrayList<Drugs> treatment = value.getTreatment();
+                ArrayList<Drugs> newTreatment = new ArrayList<>();
                 if(treatment != null && treatment.size()>0){
                     for (Drugs d:treatment) {
                         Drugs drugs = new Drugs();
@@ -122,4 +134,141 @@ public class DiseaseCalculate {
         }
         return diseaseTreat;
     }
+
+    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) {
+                        MedicalIndicationDetail newMe = new MedicalIndicationDetail();
+                        newMe.setType(detail.getType());
+                        newMe.setContent(detail.getContent());
+                        newDetails.add(newMe);
+                    }
+                }
+                newMedicalIndication.setName(name);
+                newMedicalIndication.setDetails(newDetails);
+                newMedicalIndicationList.add(newMedicalIndication);
+            }
+        }
+        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("疗效评估");
+        Map newlixiao = new HashMap();
+        List<Map> lxRows = (ArrayList)lixiao.get("rows");
+        List<Map> newlxRows = new ArrayList();
+        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");
+                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"));
+                        newh.add(ll);
+                    }
+                }
+                k.put("details",newh);
+                newlxRows.add(k);
+            }
+        }
+        newlixiao.put("rows",newlxRows);
+
+        Map fenji = (HashMap)input.get("糖尿病分级管理");
+        Map newfenji = new HashMap();
+        List<Map> fjRows = (ArrayList)fenji.get("rows");
+        List<Map> newfjRows = new ArrayList();
+        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"));
+                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"));
+                        newh.add(ll);
+                    }
+                }
+                k.put("details", newh);
+                newfjRows.add(k);
+            }
+            }
+            newfenji.put("rows",newfjRows);
+        resultMap.put("疗效评估",newlixiao);
+        resultMap.put("糖尿病分级管理",newfenji);
+        return resultMap;
+    }
 }

+ 6 - 0
graphdb/pom.xml

@@ -77,6 +77,12 @@
             <artifactId>logstash-logback-encoder</artifactId>
             <version>5.2</version>
         </dependency>
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>fastjson</artifactId>
+            <version>1.2.47</version>
+            <scope>compile</scope>
+        </dependency>
 
     </dependencies>
 

+ 343 - 59
graphdb/src/main/java/org/diagbot/service/impl/KnowledgeServiceImpl.java

@@ -1,5 +1,6 @@
 package org.diagbot.service.impl;
 
+import com.alibaba.fastjson.JSONObject;
 import org.diagbot.entity.node.LIS;
 import org.diagbot.entity.node.Symptom;
 import org.diagbot.mapper.KnowledgeMapper;
@@ -201,10 +202,17 @@ public class KnowledgeServiceImpl implements KnowledgeService {
     @Override
     public ResponseData getDis(SearchData searchData) {
         ResponseData responseData = new ResponseData();
+        String[] featureTypes = searchData.getFeatureType().split(",");
+        List<String> featureTypeList = Arrays.asList(featureTypes);
+        logger.info("前端传来的features :"+featureTypeList);
         List<String> newList = new ArrayList<>();
         List<String> inputList = new ArrayList<>();
         Map<String, Map<String, String>> inputs = searchData.getInputs();
+        Integer diseaseType = searchData.getDisType();
+        logger.info("diseaseType为 :"+diseaseType);
         Set<String> ss = inputs.keySet();
+        logger.info("分词系统传来的词: "+ss);
+        logger.info("图谱开始根据传来的分词计算诊断.....");
         inputList.addAll(ss);
         //图谱计算是否有组合词
         List<Map<String, Object>> collectionWord = baseNodeRepository.getCollectionWord(inputList);
@@ -222,7 +230,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
             for (Map<String, Object> word:collectJYWord) {
                 String fild = word.get("fild").toString();
                 String[] typeCollect = (String[])word.get("typeCollect");
-                if(typeCollect.length == 1 && "近义词".equals(typeCollect[0].toString())){
+                if(typeCollect.length == 1 && "近义词".equals(typeCollect[0])){
                     List<Map<String, Object>> jyWord = baseNodeRepository.getJYWord(fild);
                     if(jyWord !=null && jyWord.size()>0){
                         for (Map<String, Object> ji:jyWord) {
@@ -260,25 +268,43 @@ public class KnowledgeServiceImpl implements KnowledgeService {
                 }
             }
         }
+        logger.info("图谱计算出来的诊断为: "+que);
         List<FeatureRate> featureRates = new ArrayList<>();
         if(que !=null && que.size()>0){
             for (String quezhen:que) {
-                FeatureRate featureRate = new FeatureRate();
-                featureRate.setFeatureName(quezhen);
-                featureRate.setExtraProperty("");
-                if("低血糖反应".equals(quezhen) || "胃肠道不良反应".equals(quezhen)){
-                    featureRate.setDesc("不良反应");
+                if(!"低血糖反应".equals(quezhen) && !"胃肠道不良反应".equals(quezhen)
+                        && !"肾功能不全".equals(quezhen)){
+                    FeatureRate featureRate = new FeatureRate();
+                    featureRate.setFeatureName(quezhen);
+                    featureRate.setExtraProperty("");
+                    featureRate.setDesc(quezhen);
+                    featureRate.setRate("neo4j");
+                    featureRates.add(featureRate);
                 }
-                featureRate.setDesc("");
-                featureRate.setRate("neo4j");
-                featureRates.add(featureRate);
             }
         }
         String webDiag = searchData.getDiag();
-        if(webDiag.trim()!=null){
-            Map<String, Filnlly> mulDiseaseTreat = processTreat(webDiag, ss);
+        logger.info("界面输入的诊断为: "+webDiag);
+        if(webDiag.trim()!=null && webDiag.trim() !="" && featureTypeList.contains("8")){
+            logger.info("界面有诊断,并且features包含8,可以走治疗方案");
+            Map<String, Filnlly> mulDiseaseTreat = processTreat(webDiag, ss,diseaseType,que);
             responseData.setTreat(mulDiseaseTreat);
         }
+        if(featureTypeList.contains("22") && que != null && que.size()>0){
+            logger.info("图谱推送有疑诊,并且features包含22,可以走右侧推送");
+            List<MedicalIndication> medicalIndicationList = new ArrayList<>();
+            MedicalIndication medicalIndication = this.getMedicalIndication(que);
+            medicalIndicationList.add(medicalIndication);
+            responseData.setMedicalIndications(medicalIndicationList);
+        }
+        if(featureTypeList.contains("11") && diseaseType == 1 && diseaseType !=null) {
+            logger.info("featureTypeList 包含11,走管理评估!!!");
+//            MangementEvaluation mangementEvaluation = this.getMangementEvaluation();
+//            Map<String, JSONObject> mangementEvaluation1 = mangementEvaluation.getMangementEvaluation();
+//            responseData.setManagementEvaluation(mangementEvaluation1);
+            Map test = this.getTest();
+            responseData.setManagementEvaluation(test);
+        }
         responseData.setDis(featureRates);
         return responseData;
     }
@@ -383,7 +409,7 @@ public class KnowledgeServiceImpl implements KnowledgeService {
      * 处理治疗
      * @param
      */
-    public Map<String, Filnlly> processTreat(String webDisease,Set<String> inputFilds){
+    public Map<String, Filnlly> processTreat(String webDisease,Set<String> inputFilds,Integer disType,List<String> que){
         Map<String, Filnlly> diagTreat = new HashMap<>();
         NumberFormat nf = NumberFormat.getPercentInstance();
         nf.setMinimumFractionDigits(0);//设置该百分比数字,保留2位小数;
@@ -528,59 +554,317 @@ public class KnowledgeServiceImpl implements KnowledgeService {
                 drugsList.add(drugs);
             }
             Filnlly filnlly = new Filnlly();
-            List<Indicators> indicatorsList1 = new ArrayList<>();
-            List<Detail> detailList1 = new ArrayList<>();
-            Detail detail1 = new Detail();
-            detail1.setName("无");
-            detail1.setValue(0);
-            Detail detail2 = new Detail();
-            detail2.setName("偶尔");
-            detail2.setValue(0);
-            Detail detail3 = new Detail();
-            detail3.setName("频");
-            detail3.setValue(0);
-            detailList1.add(detail1);
-            detailList1.add(detail2);
-            detailList1.add(detail3);
-            Indicators indicators1 = new Indicators();
-            indicators1.setName("低血糖反应");
-            indicators1.setControlType(2);
-            indicators1.setDetails(detailList1);
-            indicatorsList1.add(indicators1);
-
-            List<Detail> detailList2 = new ArrayList<>();
-            Detail detail11 = new Detail();
-            detail11.setName("腹胀");
-            detail11.setValue(0);
-            Detail detail12 = new Detail();
-            detail12.setName("厌食");
-            detail12.setValue(0);
-            Detail detail13 = new Detail();
-            detail13.setName("嗳气");
-            detail13.setValue(0);
-            Detail detail14 = new Detail();
-            detail14.setName("恶心");
-            detail14.setValue(0);
-            Detail detail15 = new Detail();
-            detail15.setName("呕吐");
-            detail15.setValue(0);
-            detailList2.add(detail11);
-            detailList2.add(detail12);
-            detailList2.add(detail13);
-            detailList2.add(detail14);
-            detailList2.add(detail15);
-            Indicators indicators11 = new Indicators();
-            indicators11.setName("胃肠道不良反应");
-            indicators11.setControlType(2);
-            indicators11.setDetails(detailList2);
-            indicatorsList1.add(indicators11);
-            filnlly.setAdverseEvent(indicatorsList1);
+            //走不良反应
+            if(disType !=null && 1==disType){
+                logger.info("disType=1,可以走不良反应!!");
+                List<Indicators> indicatorsList1 = new ArrayList<>();
+                Indicators indicators1 = getAdverse(que, "低血糖反应");
+                Indicators indicators2 = getAdverse(que, "胃肠道不良反应");
+                indicatorsList1.add(indicators1);
+                indicatorsList1.add(indicators2);
+                filnlly.setAdverseEvent(indicatorsList1);
+            }
             filnlly.setTreatment(drugsList);
             diagTreat.put(disFild.getKey(),filnlly);
         }
         return diagTreat;
     }
 
+    /**
+     *  量表和指标
+     * @param diseaseSet 图谱推出的诊断
+     * @return
+     */
+    public MedicalIndication getMedicalIndication(List<String> diseaseSet){
+        MedicalIndication medicalIndication = new MedicalIndication();
+        if(diseaseSet.contains("肾功能不全")){
+            logger.info("diseaseSet中包含肾功能不全");
+            //推送指标
+            medicalIndication.setName("肾功能不全");
+            List<MedicalIndicationDetail> medicalIndicationDetailList = new ArrayList<>();
+            //量表
+            MedicalIndicationDetail medicalIndicationDetail1 = new MedicalIndicationDetail();
+            medicalIndicationDetail1.setType(1);
+            JSONObject liangJson = new JSONObject();
+            liangJson.put("name","密西根糖尿病周围神经病评分(MDNS)");
+            medicalIndicationDetail1.setContent(liangJson);
+            //公式
+            MedicalIndicationDetail medicalIndicationDetail2 = new MedicalIndicationDetail();
+            medicalIndicationDetail2.setType(2);
+            JSONObject gongshiJson = new JSONObject();
+            gongshiJson.put("name","肾小球滤过率");
+            List<JSONObject> detailList = new ArrayList<>();
+            JSONObject ageJsonObject = new JSONObject();
+            ageJsonObject.put("controlType",2);
+            ageJsonObject.put("name","年龄");
+            ageJsonObject.put("value","");
+            ageJsonObject.put("uint","");
+            ageJsonObject.put("details",new ArrayList<>());
+            JSONObject indicationJsonObject = new JSONObject();
+            indicationJsonObject.put("controlType",2);
+            indicationJsonObject.put("name","血肌酐");
+            indicationJsonObject.put("value","");
+            indicationJsonObject.put("uint","mg/dL");
+            indicationJsonObject.put("details",new ArrayList<>());
+            JSONObject sexJson = new JSONObject();
+            sexJson.put("controlType",1);
+            sexJson.put("name","性别");
+            sexJson.put("value","");
+            sexJson.put("uint","");
+            List<JSONObject> sexList = new ArrayList<>();
+            JSONObject manJson = new JSONObject();
+            manJson.put("detailName","男");
+            manJson.put("value",1);
+            manJson.put("state",0);
+            JSONObject womanJson = new JSONObject();
+            womanJson.put("detailName","女");
+            womanJson.put("value",1.018);
+            womanJson.put("state",1);
+            sexList.add(manJson);
+            sexList.add(womanJson);
+            sexJson.put("details",sexList);
+            detailList.add(ageJsonObject);
+            detailList.add(indicationJsonObject);
+            detailList.add(sexJson);
+            gongshiJson.put("details",detailList);
+            JSONObject resultJson = new JSONObject();
+            resultJson.put("value","");
+            resultJson.put("unit","");
+            resultJson.put("text","");
+            gongshiJson.put("result",resultJson);
+            medicalIndicationDetail2.setContent(gongshiJson);
+            //其他
+            MedicalIndicationDetail medicalIndicationDetail3 = new MedicalIndicationDetail();
+            medicalIndicationDetail3.setType(3);
+            JSONObject shiFouJson = new JSONObject();
+            shiFouJson.put("name","是否");
+            shiFouJson.put("controlType",0);
+            List<JSONObject> shiFouList = new ArrayList<>();
+            JSONObject shiJsonObject = new JSONObject();
+            shiJsonObject.put("detailName","是");
+            shiJsonObject.put("state",0);
+            JSONObject fouJsonObject = new JSONObject();
+            fouJsonObject.put("detailName","否");
+            fouJsonObject.put("state",1);
+            shiFouList.add(shiJsonObject);
+            shiFouList.add(fouJsonObject);
+            shiFouJson.put("details",shiFouList);
+            medicalIndicationDetail3.setContent(shiFouJson);
+            medicalIndicationDetailList.add(medicalIndicationDetail1);
+            medicalIndicationDetailList.add(medicalIndicationDetail2);
+            medicalIndicationDetailList.add(medicalIndicationDetail3);
+            medicalIndication.setDetails(medicalIndicationDetailList);
+        }
+        return medicalIndication;
+    }
+
+    /**
+     * 管理评估
+     * @return
+     */
+    public MangementEvaluation getMangementEvaluation(){
+        MangementEvaluation mangementEvaluation = new MangementEvaluation();
+        Map<String,JSONObject> mangementMap = new HashMap<>();
+        JSONObject curativeJson = new JSONObject();
+        List<JSONObject> itemJson = new ArrayList<>();
+        JSONObject bloodPressure = new JSONObject();
+        bloodPressure.put("controltype",0);
+        bloodPressure.put("name","血压控制情况");
+        List<JSONObject> bloodPressureLevelList = new ArrayList<>();
+        String[] items= {"正常","1级","2级","3级"};
+        for (String item:items) {
+            JSONObject iJson = new JSONObject();
+            iJson.put("detailName",item);
+            iJson.put("state",0);
+            bloodPressureLevelList.add(iJson);
+        }
+        bloodPressure.put("details",bloodPressureLevelList);
+        itemJson.add(bloodPressure);
+
+        JSONObject bmiControl = new JSONObject();
+        bmiControl.put("controltype",0);
+        bmiControl.put("name","BMI控制情况");
+        List<JSONObject> bmiControlLevelList = new ArrayList<>();
+        String[] bmiControlitems= {"体重过低","体重达标","肥胖前期","肥胖"};
+        for (String item:bmiControlitems) {
+            JSONObject iJson = new JSONObject();
+            iJson.put("detailName",item);
+            iJson.put("state",0);
+            bmiControlLevelList.add(iJson);
+        }
+        bmiControl.put("details",bmiControlLevelList);
+        itemJson.add(bmiControl);
+
+        JSONObject bloodFatControl = new JSONObject();
+        bloodFatControl.put("controltype",0);
+        bloodFatControl.put("name","血脂控制情况");
+        List<JSONObject> bloodFatControlLevelList = new ArrayList<>();
+        String[] bloodFatControlitems= {"高血脂"};
+        for (String item:bloodFatControlitems) {
+            JSONObject iJson = new JSONObject();
+            iJson.put("detailName",item);
+            iJson.put("state",0);
+            bloodFatControlLevelList.add(iJson);
+        }
+        bloodFatControl.put("details",bmiControlLevelList);
+        itemJson.add(bloodFatControl);
+        curativeJson.put("rows",itemJson);
+        //分级管理
+        JSONObject gradeJson = new JSONObject();
+        List<JSONObject> gradItemJson = new ArrayList<>();
+        JSONObject bigGrad = new JSONObject();
+        bigGrad.put("name","血压控制情况");
+        bigGrad.put("controltype",0);
+        List<JSONObject> gradItemJ = new ArrayList<>();
+        String[] gradItem ={"常规管理","强化管理"};
+        for (String item:gradItem) {
+            JSONObject j =new JSONObject();
+            j.put("detailName",item);
+            j.put("state",0);
+            gradItemJ.add(j);
+        }
+        bigGrad.put("details",gradItemJ);
+        gradItemJson.add(bigGrad);
+        gradeJson.put("rows",gradItemJson);
+        mangementMap.put("疗效评估",curativeJson);
+        mangementMap.put("糖尿病分级管理",gradeJson);
+        mangementEvaluation.setMangementEvaluation(mangementMap);
+        return mangementEvaluation;
+    }
+
+    public Map getTest(){
+        Map result = new HashMap();
+        //疗效评估
+        Map liaoXiaoMap = new HashMap();
+        List<Map> rowList = new ArrayList<>();
+        Map item1 = new HashMap();
+        item1.put("controltype",0);
+        item1.put("name","血压控制情况");
+        List<Map> item1DetailList = new ArrayList<>();
+        Map de1= new HashMap();
+        de1.put("detailName","正常");
+        de1.put("state",1);
+        Map de2= new HashMap();
+        de2.put("detailName","1级");
+        de2.put("state",0);
+        Map de3= new HashMap();
+        de3.put("detailName","2级");
+        de3.put("state",0);
+        Map de4= new HashMap();
+        de4.put("detailName","3级");
+        de4.put("state",0);
+        item1DetailList.add(de1);
+        item1DetailList.add(de2);
+        item1DetailList.add(de3);
+        item1DetailList.add(de4);
+        item1.put("details",item1DetailList);
+
+        Map item2 = new HashMap();
+        item2.put("controltype",1);
+        item2.put("name","BMI控制情况");
+        List<Map> item2DetailList = new ArrayList<>();
+        Map be1= new HashMap();
+        be1.put("detailName","体重过低");
+        be1.put("state",1);
+        Map be2= new HashMap();
+        be2.put("detailName","体重达标");
+        be2.put("state",0);
+        Map be3= new HashMap();
+        be3.put("detailName","肥胖前期");
+        be3.put("state",0);
+        Map be4= new HashMap();
+        be4.put("detailName","肥胖");
+        be4.put("state",0);
+        item2DetailList.add(be1);
+        item2DetailList.add(be2);
+        item2DetailList.add(be3);
+        item2DetailList.add(be4);
+        item2.put("details",item2DetailList);
+
+        Map item3 = new HashMap();
+        item3.put("controltype",0);
+        item3.put("name","血脂控制情况");
+        List<Map> item3DetailList = new ArrayList<>();
+        Map xe1= new HashMap();
+        xe1.put("detailName","高血脂");
+        xe1.put("state",1);
+        item3DetailList.add(xe1);
+        item3.put("details",item3DetailList);
+
+        rowList.add(item1);
+        rowList.add(item2);
+        rowList.add(item3);
+        liaoXiaoMap.put("rows",rowList);
+        //分级管理
+        Map fenjiMap = new HashMap();
+        List<Map> ferowList = new ArrayList<>();
+        Map feitem1 = new HashMap();
+        feitem1.put("controltype",0);
+        feitem1.put("name","血压控制情况");
+        List<Map> feDetailList = new ArrayList<>();
+        Map fe1= new HashMap();
+        fe1.put("detailName","常规管理");
+        fe1.put("state",1);
+        Map fe2= new HashMap();
+        fe2.put("detailName","强化管理");
+        fe2.put("state",0);
+        feDetailList.add(fe1);
+        feDetailList.add(fe2);
+        feitem1.put("details",feDetailList);
+        ferowList.add(feitem1);
+        fenjiMap.put("rows",ferowList);
+
+        result.put("疗效评估",liaoXiaoMap);
+        result.put("糖尿病分级管理",fenjiMap);
+
+        return result;
+    }
+
+    /**
+     * 不良反应
+     * @param dis
+     * @param name
+     * @return
+     */
+    public Indicators getAdverse(List<String> dis,String name){
+        List<Detail> detailList1 = new ArrayList<>();
+        Indicators indicators1 = new Indicators();
+        indicators1.setName(name);
+        indicators1.setControlType(2);
+        Detail detail1 = new Detail();
+        detail1.setName("否");
+        detail1.setValue(0);
+        Detail detail2 = new Detail();
+        detail2.setName("是");
+        detail2.setValue(0);
+        if(dis.contains(name)){
+            detail2.setValue(1);
+        }
+        Detail detail3 = new Detail();
+        detail3.setName("轻度");
+        detail3.setValue(0);
+        Detail detail4 = new Detail();
+        detail4.setName("中度");
+        detail4.setValue(0);
+        Detail detail5 = new Detail();
+        detail5.setName("重度");
+        detail5.setValue(0);
+        Detail detail6 = new Detail();
+        detail6.setName("偶尔");
+        detail6.setValue(0);
+        Detail detail7 = new Detail();
+        detail7.setName("频繁");
+        detail7.setValue(0);
+        detailList1.add(detail1);
+        detailList1.add(detail2);
+        detailList1.add(detail3);
+        detailList1.add(detail4);
+        detailList1.add(detail5);
+        detailList1.add(detail6);
+        detailList1.add(detail7);
+        indicators1.setDetails(detailList1);
+        return indicators1;
+    }
     @Override
     public List<Map<String, Object>> getRecommendItem(QueryVo queryVo) {
         List<Map<String, Object>> list = relationRepository.getRecommendItem(queryVo.getDiseaselist());

+ 12 - 0
graphdb/src/main/java/org/diagbot/vo/domain/MangementEvaluation.java

@@ -0,0 +1,12 @@
+package org.diagbot.vo.domain;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Map;
+@Getter
+@Setter
+public class MangementEvaluation {
+    private Map<String,JSONObject> mangementEvaluation;
+}

+ 12 - 0
graphdb/src/main/java/org/diagbot/vo/domain/MedicalIndication.java

@@ -0,0 +1,12 @@
+package org.diagbot.vo.domain;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+@Getter
+@Setter
+public class MedicalIndication {
+    private String name;
+    private List<MedicalIndicationDetail> details;
+}

+ 12 - 0
graphdb/src/main/java/org/diagbot/vo/domain/MedicalIndicationDetail.java

@@ -0,0 +1,12 @@
+package org.diagbot.vo.domain;
+
+import com.alibaba.fastjson.JSONObject;
+import lombok.Getter;
+import lombok.Setter;
+
+@Getter
+@Setter
+public class MedicalIndicationDetail {
+    private Integer type;//1-量表,2-公式,3-其他指标
+    private JSONObject content;
+}

+ 4 - 0
graphdb/src/main/java/org/diagbot/vo/domain/ResponseData.java

@@ -1,5 +1,6 @@
 package org.diagbot.vo.domain;
 
+import com.alibaba.fastjson.JSONObject;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -21,4 +22,7 @@ public class ResponseData {
 
     private Map<String, Filnlly> treat = new HashMap<>();
     private List<FeatureRate> graphWords = new ArrayList<>(10);
+    private List<MedicalIndication> medicalIndications;//量表和指标推送
+//    private Map<String,JSONObject> managementEvaluation; //管理评估
+    private Map managementEvaluation;
 }

+ 1 - 1
graphdb/src/main/java/org/diagbot/vo/domain/SearchData.java

@@ -22,7 +22,7 @@ public class SearchData {
     //特征类别
     protected String featureType;
     //诊断类别
-    protected String diseaseType; //0:复诊,1:急诊
+    protected Integer disType; //0:复诊,1:急诊
     //特征类别对","进行分割后数据
     protected String[] featureTypes;
     //门诊 住院分类

+ 1 - 1
graphdb/src/main/java/org/diagbot/web/KnowledgeController.java

@@ -161,7 +161,7 @@ public class KnowledgeController {
         return kk;
     }
     /**
-     * 推送诊断(疑诊)
+     * 推送诊断(疑诊),治疗方案,不良反应,指标和量表
      */
     @RequestMapping("/getDisease")
     public ResponseData getDis(@Valid @RequestBody SearchData searchData){

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

@@ -6,6 +6,7 @@ import org.diagbot.common.javabean.Filnlly;
 import org.diagbot.common.javabean.MedicalIndication;
 import org.diagbot.common.javabean.Medicition;
 import org.diagbot.common.work.*;
+import org.diagbot.graphWeb.work.DiseaseCalculate;
 import org.diagbot.graphWeb.work.GraphCalculate;
 import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.pub.api.Response;
@@ -65,7 +66,6 @@ public class AlgorithmController extends BaseController {
 
         GraphCalculate graphCalculate = new GraphCalculate();
         ResponseData graphResponseData = graphCalculate.calculate(request, searchData);
-
         if (graphResponseData.getDis().size() > 0) {
             List<FeatureRate> disFeatureRates = new ArrayList<>();
             boolean isFind = false;