Browse Source

开单合理性接口重定义修改,提示信息暂时还有些问题

louhr 5 years ago
parent
commit
422e53328c

+ 0 - 9
common-push/src/main/java/org/diagbot/common/push/bean/CrisisDetail.java

@@ -5,7 +5,6 @@ package org.diagbot.common.push.bean;
  */
 public class CrisisDetail {
     private String remindText;
-    private String standardText = "";
     private String originText = "";
     private String typeId;
 
@@ -17,14 +16,6 @@ public class CrisisDetail {
         this.remindText = remindText;
     }
 
-    public String getStandardText() {
-        return standardText;
-    }
-
-    public void setStandardText(String standardText) {
-        this.standardText = standardText;
-    }
-
     public String getOriginText() {
         return originText;
     }

+ 9 - 0
common-push/src/main/java/org/diagbot/common/push/bean/ResponseData.java

@@ -32,6 +32,7 @@ public class ResponseData {
     private Map managementEvaluation;
     private List<String> diffDiag;//鉴别诊断
     private List<String> excludeDiag; //排除诊断
+    private String hasIndications = "0";  //是否有病情提示标识 包括危急值 开单合理项 默认无
 
     private Map<String, List<CrisisDetail>> crisisDetails = new HashMap<>();
 
@@ -180,4 +181,12 @@ public class ResponseData {
     public void setCrisisDetails(Map<String, List<CrisisDetail>> crisisDetails) {
         this.crisisDetails = crisisDetails;
     }
+
+    public String getHasIndications() {
+        return hasIndications;
+    }
+
+    public void setHasIndications(String hasIndications) {
+        this.hasIndications = hasIndications;
+    }
 }

+ 28 - 7
common-push/src/main/java/org/diagbot/common/push/filter/rule/PretreatmentRule.java

@@ -6,6 +6,7 @@ import org.diagbot.common.push.bean.SearchData;
 import org.diagbot.common.push.cache.ApplicationCacheUtil;
 import org.diagbot.nlp.rule.module.PreResult;
 import org.diagbot.nlp.rule.pretreat.*;
+import org.diagbot.nlp.util.NlpUtil;
 import org.springframework.util.StringUtils;
 
 import java.util.ArrayList;
@@ -98,7 +99,8 @@ public class PretreatmentRule {
         if (searchData.getLisOrder() != null && searchData.getLisOrder().size() > 0) {
             List<PreResult> preResults = searchData.getLisOrder();
             for (PreResult result : preResults) {
-                result.setUniqueName("开单--" + result.getUniqueName());
+                result.setValue(result.getUniqueName());
+                result.setUniqueName("开单--");
             }
             add2PreResultList(searchData.getLisOrder(), "", "lisOrder", searchData);
         }
@@ -106,7 +108,8 @@ public class PretreatmentRule {
         if (!StringUtils.isEmpty(searchData.getPacsOrder())) {
             List<PreResult> preResults = searchData.getPacsOrder();
             for (PreResult result : preResults) {
-                result.setUniqueName("开单--" + result.getUniqueName());
+                result.setValue(result.getUniqueName());
+                result.setUniqueName("开单--");
             }
             add2PreResultList(searchData.getPacsOrder(), "", "pacsOrder", searchData);
         }
@@ -114,7 +117,8 @@ public class PretreatmentRule {
         if (!StringUtils.isEmpty(searchData.getDiagOrder())) {
             List<PreResult> preResults = searchData.getDiagOrder();
             for (PreResult result : preResults) {
-                result.setUniqueName("开单--" + result.getUniqueName());
+                result.setValue(result.getUniqueName());
+                result.setUniqueName("开单--");
             }
             add2PreResultList(searchData.getDiagOrder(), "", "diagOrder", searchData);
         }
@@ -122,7 +126,8 @@ public class PretreatmentRule {
         if (!StringUtils.isEmpty(searchData.getDrugOrder())) {
             List<PreResult> preResults = searchData.getDrugOrder();
             for (PreResult result : preResults) {
-                result.setUniqueName("开单--" + result.getUniqueName());
+                result.setValue(result.getUniqueName());
+                result.setUniqueName("开单--");
             }
             add2PreResultList(searchData.getDrugOrder(), "", "drugOrder", searchData);
         }
@@ -130,7 +135,8 @@ public class PretreatmentRule {
         if (!StringUtils.isEmpty(searchData.getOperationOrder())) {
             List<PreResult> preResults = searchData.getOperationOrder();
             for (PreResult result : preResults) {
-                result.setUniqueName("开单--" + result.getUniqueName());
+                result.setValue(result.getUniqueName());
+                result.setUniqueName("开单--");
             }
             add2PreResultList(searchData.getOperationOrder(), "", "operationOrder", searchData);
         }
@@ -164,7 +170,22 @@ public class PretreatmentRule {
                     for (Rule rule : rules) {
                         boolean isSuit = suitRule(result, rule, content);
                         if (isSuit) {
-                            rule.setOriginText(result.getUniqueName() + ":" + result.getValue() + result.getUnits());
+                            if (!StringUtils.isEmpty(result.getDateValue())) {
+                                rule.setOriginText(result.getDateValue());
+                            }
+                            if (NlpUtil.isNumberString(result.getValue())) {
+                                if (StringUtils.isEmpty(rule.getOriginText())) {
+                                    rule.setOriginText(result.getName() + "--" + result.getDetailName() + ":" + result.getValue() + result.getUnits());
+                                } else {
+                                    rule.setOriginText(rule.getOriginText() + " " + result.getName() + "--" + result.getDetailName() + ":" + result.getValue() + result.getUnits());
+                                }
+                            } else {
+                                if (StringUtils.isEmpty(rule.getOriginText())) {
+                                    rule.setOriginText(result.getValue());
+                                } else {
+                                    rule.setOriginText(rule.getOriginText() + " " + result.getValue());
+                                }
+                            }
                             if (accord_rule_map.get(inputType) == null) {
                                 accord_rules = new ArrayList<>();
                             } else {
@@ -174,7 +195,7 @@ public class PretreatmentRule {
                             accord_rule_map.put(inputType, accord_rules);
                             searchData.setRules(accord_rule_map);
 
-                            content = content + (rule.getRemind() == null ? "" : rule.getSuffixInfo());
+                            content = content + (rule.getSuffixInfo() == null ? "" : rule.getSuffixInfo());
                         }
                     }
                 }

+ 9 - 0
common-push/src/main/java/org/diagbot/common/push/util/PushConstants.java

@@ -38,6 +38,15 @@ public class PushConstants {
     public final static String standard_info_relation_type_2 = "2";    //同义词
     public final static String standard_info_relation_type_3 = "3";    //大小类
 
+    //规则类型1:危急值提醒  2:开单合理性  3:管理评估  4:不良反应  5:药物推荐  6:病情提示
+    public final static String rule_app_type_id_1   = "1";
+    public final static String rule_app_type_id_2   = "2";
+    public final static String rule_app_type_id_3   = "3";
+    public final static String rule_app_type_id_4   = "4";
+    public final static String rule_app_type_id_5   = "5";
+    public final static String rule_app_type_id_6   = "6";
+
+
     public final static String result_mapping_vital = "resultMappingVitalMap";          //推送体征结果名称映射
     public final static String result_mapping_diag = "resultMappingDiagMap";          //推送疾病科室名称映射
     public final static String result_mapping_filter = "resultMappingFilterMap";          //推送结果年龄 性别过滤

+ 5 - 5
nlp/src/main/java/org/diagbot/nlp/rule/module/PreResult.java

@@ -6,7 +6,7 @@ package org.diagbot.nlp.rule.module;
 public class PreResult {
     protected String name = "";
     protected String uniqueName = "";
-    protected String dataValue = "";
+    protected String dateValue = "";
     private String detailName = "";
     private String maxValue = "";
     private String minValue = "";
@@ -79,12 +79,12 @@ public class PreResult {
         this.uniqueName = uniqueName;
     }
 
-    public String getDataValue() {
-        return dataValue;
+    public String getDateValue() {
+        return dateValue;
     }
 
-    public void setDataValue(String dataValue) {
-        this.dataValue = dataValue;
+    public void setDateValue(String dateValue) {
+        this.dateValue = dateValue;
     }
 
     public String getResult() {

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

@@ -8,17 +8,13 @@ import org.diagbot.common.push.bean.CrisisDetail;
 import org.diagbot.common.push.bean.FeatureRate;
 import org.diagbot.common.push.bean.ResponseData;
 import org.diagbot.common.push.bean.SearchData;
-import org.diagbot.common.push.bean.neo4j.Drugs;
-import org.diagbot.common.push.bean.neo4j.Filnlly;
-import org.diagbot.common.push.bean.neo4j.MedicalIndication;
-import org.diagbot.common.push.bean.neo4j.MedicalIndicationDetail;
-import org.diagbot.common.push.bean.neo4j.Medicition;
+import org.diagbot.common.push.bean.neo4j.*;
 import org.diagbot.common.push.cache.CacheUtil;
 import org.diagbot.common.push.filter.ClassifyDiag;
 import org.diagbot.common.push.filter.rule.PretreatmentRule;
+import org.diagbot.common.push.util.PushConstants;
 import org.diagbot.common.push.work.ParamsDataProxy;
 import org.diagbot.graphWeb.work.GraphCalculate;
-import org.diagbot.graphWeb.work.LisPacsCalculate;
 import org.diagbot.nlp.rule.pretreat.Pretreatment;
 import org.diagbot.nlp.rule.pretreat.PretreatmentLis;
 import org.diagbot.nlp.util.Constants;
@@ -147,7 +143,15 @@ public class AlgorithmController extends BaseController {
         pretreatmentRule.rule(searchData);
         //危机值
         CrisisApplication crisisApplication = new CrisisApplication();
-        responseData.setCrisisDetails(crisisApplication.crisisContent(searchData));
+        Map<String, List<CrisisDetail>> crisisDetailMap = crisisApplication.crisisContent(searchData);
+        responseData.setCrisisDetails(crisisDetailMap);
+        //判断是否有危急值或开单合理性数据
+        List<CrisisDetail> crisisDetails = crisisDetailMap.get("crisis");
+        for (CrisisDetail cd : crisisDetails) {
+            if (PushConstants.rule_app_type_id_1.equals(cd.getTypeId()) || PushConstants.rule_app_type_id_2.equals(cd.getTypeId())) {
+                responseData.setHasIndications("1");
+            }
+        }
 
         //大数据推送
 //        searchData.setLength(6);    //模型推送最多6个比较合理
@@ -158,8 +162,7 @@ public class AlgorithmController extends BaseController {
         bigDataResponseData.setPacs(new ArrayList<>());
 
         GraphCalculate graphCalculate = new GraphCalculate();
-        Map<String, List<CrisisDetail>> crisisDetails = responseData.getCrisisDetails();
-        ResponseData graphResponseData = graphCalculate.calculate(request, searchData,crisisDetails);
+        ResponseData graphResponseData = graphCalculate.calculate(request, searchData, crisisDetailMap);
         if (graphResponseData.getDis().size() > 0) {
             List<FeatureRate> disFeatureRates = new ArrayList<>();
             List<FeatureRate> bigdis = bigDataResponseData.getDis();
@@ -187,7 +190,7 @@ public class AlgorithmController extends BaseController {
         bigDataResponseData.setTreat(graphResponseData.getTreat());
 
         //量表和指标推送
-        List<MedicalIndication> crisisDetailsList = this.getCrisisDetails(crisisDetails);
+        List<MedicalIndication> crisisDetailsList = this.getCrisisDetails(crisisDetailMap);
         List<MedicalIndication> medicalIndications = graphResponseData.getMedicalIndications();
         if (medicalIndications == null) {
             medicalIndications = new ArrayList<>();
@@ -243,18 +246,18 @@ public class AlgorithmController extends BaseController {
             for (CrisisDetail crisisDetail : entry.getValue()) {
                 String originText = crisisDetail.getOriginText();//文本输入的数据
                 String remindText = crisisDetail.getRemindText();//危机警示指标
-                String standardText = crisisDetail.getStandardText();//评判标准
                 if (StringUtils.isNotEmpty(remindText)) {
                     MedicalIndication medicalIndication = new MedicalIndication();
                     List<MedicalIndicationDetail> crisisMid = new ArrayList<>();
                     MedicalIndicationDetail medicalIndicationDetail = new MedicalIndicationDetail();
                     JSONObject jsonObject = new JSONObject();
                     jsonObject.put("controlType", 2);
-                    jsonObject.put("name", standardText);
+                    jsonObject.put("name", originText);
                     medicalIndicationDetail.setType(4);
                     medicalIndicationDetail.setContent(jsonObject);
                     crisisMid.add(medicalIndicationDetail);
                     medicalIndication.setName(remindText);
+                    medicalIndication.setRule(originText);
                     medicalIndication.setDetails(crisisMid);
                     crisisDetailList.add(medicalIndication);
                 }

+ 0 - 1
rule/src/main/java/org/diagbot/rule/crisis/CrisisApplication.java

@@ -95,7 +95,6 @@ public class CrisisApplication {
             if (hasAppSuit) {
                 CrisisDetail crisisDetail = new CrisisDetail();
                 crisisDetail.setOriginText(appOriginText);
-//                crisisDetail.setStandardText(standardText);
                 crisisDetail.setRemindText(app.getValue().getRemind().replace("${remind}", appRemindVar));
                 crisisDetail.setTypeId(app.getValue().getTypeId());