Forráskód Böngészése

Merge remote-tracking branch 'origin/master'

# Conflicts:
#	src/main/java/com/diagbot/process/BillProcess.java
#	src/main/java/com/diagbot/rule/AgeRule.java
#	src/main/java/com/diagbot/rule/SexRule.java
zhoutg 4 éve
szülő
commit
6b5c766262

+ 1 - 1
src/main/java/com/diagbot/dto/BillNeoMaxDTO.java

@@ -46,7 +46,7 @@ public class BillNeoMaxDTO {
     private List<NodeNeoDTO> pacs = new ArrayList<>();
 
     // 禁忌疾病
-    private List<String> disease = new ArrayList<>();
+    private List<NodeNeoDTO> disease = new ArrayList<>();
 
     // 禁用人群
     private List<String> group = new ArrayList<>();

+ 10 - 9
src/main/java/com/diagbot/process/BillProcess.java

@@ -14,6 +14,7 @@ import com.diagbot.model.label.DiagLabel;
 import com.diagbot.model.label.PresentLabel;
 import com.diagbot.rule.AgeRule;
 import com.diagbot.rule.SexRule;
+import com.diagbot.rule.*;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
@@ -85,16 +86,16 @@ public class BillProcess {
             // CoreUtil.addBeanToList(billMsgList, billMsg_disease);
 
             // //化验
-            // BillMsg lisMsg = LisPacsRule.compareLisPacsWithBill(drug.getLis(), lis, bill.getName());
-            // CoreUtil.addBeanToList(drugBill, lisMsg);
+            BillMsg lisMsg = LisRule.compareLisWithBill(bill.getLis(), lis, bill.getName());
+            CoreUtil.addBeanToList(billMsgList, lisMsg);
             //
-            // //辅检
-            // BillMsg pacsMsg = LisPacsRule.compareLisPacsWithBill(drug.getPacs(), pacs, bill.getName());
-            // CoreUtil.addBeanToList(drugBill, pacsMsg);
-            //
-            // //临床表现
-            // BillMsg clinicalMsg = DiagRule.compareDiseaseWithBill(drug.getClinicfindings(), clinicals, bill.getName());
-            // CoreUtil.addBeanToList(drugBill, clinicalMsg);
+            //辅检
+            BillMsg pacsMsg = PacsRule.comparePacsWithBill(bill.getPacs(), pacs, bill.getName());
+            CoreUtil.addBeanToList(billMsgList, pacsMsg);
+
+            //临床表现
+            BillMsg clinicalMsg = DiagRule.compareDiseaseWithBill(bill.getClinicfindings(), clinicals, bill.getName());
+            CoreUtil.addBeanToList(billMsgList, clinicalMsg);
 
             // 年龄
             BillMsg ageMsg = AgeRule.compareAgeWithBill(bill.getAgeNeoDTO(), wordCrfDTO, bill);

+ 16 - 8
src/main/java/com/diagbot/rule/DiagRule.java

@@ -1,13 +1,19 @@
 package com.diagbot.rule;
 
 import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.model.entity.Negative;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
+import org.neo4j.ogm.annotation.NodeEntity;
 
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @description: 实验室检查和辅助检查规则
@@ -22,22 +28,24 @@ public class DiagRule {
      * @param inputLises
      * @return
      */
-    public static <T> BillMsg compareDiseaseWithBill(List<String> drugLises, List<T> inputLises, String name) {
-        List<String> reports = new ArrayList<>();
-        if(inputLises != null && ListUtil.isNotEmpty(inputLises)){
+    public static <T> BillMsg compareDiseaseWithBill(List<NodeNeoDTO> drugLises, List<T> inputLises, String name) {
+        Map<String,String> old_stand = new HashMap<>();
+        if(ListUtil.isNotEmpty(drugLises) && ListUtil.isNotEmpty(inputLises)){
+            List<String> dl = drugLises.stream().map(x -> x.getName()).collect(Collectors.toList());
             for (T d:inputLises) {
                 Negative val = (Negative)CoreUtil.getFieldValue(d, "negative");
                 if(val == null){
                     String c = (String) CoreUtil.getFieldValue(d, "standName");
                     String c_name = (String) CoreUtil.getFieldValue(d, "name");
-                    if(StringUtils.isNotBlank(c) && drugLises.contains(c)){
-                        reports.add(c_name);
+                    if(StringUtils.isNotBlank(c) && dl.contains(c)){
+                        old_stand.put(c_name,c);
                     }
                 }
             }
-            if(ListUtil.isNotEmpty(reports)){
-                String message = CoreUtil.listConvertString(reports);
-                BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name);
+            if(old_stand.size() > 0){
+                String message = StringUtils.join(old_stand.keySet(), ",");
+                String standNames = StringUtils.join(old_stand.values().stream().collect(Collectors.toList()),",");
+                BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name,standNames);
                 return commonBillMsg;
             }
         }

+ 63 - 0
src/main/java/com/diagbot/rule/LisRule.java

@@ -0,0 +1,63 @@
+package com.diagbot.rule;
+
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.util.CoreUtil;
+import com.diagbot.util.ListUtil;
+import org.apache.commons.lang3.StringUtils;
+
+import java.math.BigDecimal;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description: 化验规则
+ * @author: kwz
+ * @time: 2020/8/3 14:47
+ */
+public class LisRule {
+    /**
+     * 比较辅检
+     *
+     * @param drugLis
+     * @param inputLis
+     * @return
+     */
+    public static BillMsg compareLisWithBill(List<NodeNeoDTO> drugLis, List<Lis> inputLis, String name) {
+
+        Map<String,String> old_stand = new HashMap<>();
+        if(ListUtil.isNotEmpty(drugLis) && ListUtil.isNotEmpty(inputLis)){
+            Map<String, BigDecimal> nameMax = drugLis.stream().collect(Collectors.toMap(NodeNeoDTO::getName, NodeNeoDTO::getMax));
+            Map<String, BigDecimal> nameMin = drugLis.stream().collect(Collectors.toMap(NodeNeoDTO::getName, NodeNeoDTO::getMin));
+
+            for (Lis lis:inputLis) {
+                String val =lis.getUniqueName();
+                String val_name = lis.getDetailName();
+
+                if(StringUtils.isNotBlank(val)){
+                    if(nameMax.containsKey(val) && lis.getValue() > nameMax.get(val).doubleValue()){
+                        old_stand.put(val_name,"大于"+lis.getValue().toString());
+                    }
+                    if(nameMin.containsKey(val) && lis.getValue() < nameMin.get(val).doubleValue()){
+                        old_stand.put(val_name,"小于"+lis.getValue().toString());
+                    }
+
+                }
+            }
+        }
+        if(old_stand.size() > 0){
+            String message =null;
+            for (Map.Entry<String,String> ds:old_stand.entrySet()) {
+                message +=ds.getKey()+ds.getValue()+",";
+            }
+//            String message = StringUtils.join(old_stand.keySet(), ",");
+//            String standNames = StringUtils.join(old_stand.values().stream().collect(Collectors.toList()),",");
+            BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name,null);
+            return commonBillMsg;
+        }
+        return null;
+    }
+}

+ 16 - 17
src/main/java/com/diagbot/rule/LisPacsRule.java

@@ -1,47 +1,46 @@
 package com.diagbot.rule;
 
-import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.dto.BillMsg;
-import com.diagbot.dto.WordCrfDTO;
-import com.diagbot.model.entity.Diag;
-import com.diagbot.model.entity.Negative;
-import com.diagbot.model.label.DiagLabel;
+import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
-
-import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @description: 疾病规则
  * @author: kwz
  * @time: 2020/8/3 14:47
  */
-public class LisPacsRule {
+public class PacsRule {
     /**
-     * 比较化验和辅检
+     * 比较辅检
      *
      * @param drugLis
      * @param inputLis
      * @return
      */
-    public static <T> BillMsg compareLisPacsWithBill(List<String> drugLis, List<T> inputLis, String name) {
-        List<String> tipDiseases = new ArrayList<>();
+    public static <T> BillMsg comparePacsWithBill(List<NodeNeoDTO> drugLis, List<T> inputLis, String name) {
+
+        Map<String,String> old_stand = new HashMap<>();
         if(ListUtil.isNotEmpty(drugLis) && ListUtil.isNotEmpty(inputLis)){
+            List<String> dl = drugLis.stream().map(x -> x.getName()).collect(Collectors.toList());
             for (T lis:inputLis) {
                 String val = (String)CoreUtil.getFieldValue(lis, "uniqueName");
                 String val_name = (String)CoreUtil.getFieldValue(lis, "name");
-                if(StringUtils.isNotBlank(val) && drugLis.contains(val)){
-                    tipDiseases.add(val_name);
+                if(StringUtils.isNotBlank(val) && dl.contains(val)){
+                    old_stand.put(val_name,val);
                 }
             }
         }
-        if(ListUtil.isNotEmpty(tipDiseases)){
-            String message = CoreUtil.listConvertString(tipDiseases);
-            BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name);
+        if(old_stand.size() > 0){
+            String message = StringUtils.join(old_stand.keySet(), ",");
+            String standNames = StringUtils.join(old_stand.values().stream().collect(Collectors.toList()),",");
+            BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(message, name,standNames);
             return commonBillMsg;
         }
         return null;

+ 4 - 2
src/main/java/com/diagbot/util/CoreUtil.java

@@ -176,10 +176,12 @@ public class CoreUtil {
      * @param name 项目名称
      * @return
      */
-    public static BillMsg getCommonBillMsg(String errMsg, String name) {
+    public static BillMsg getCommonBillMsg(String errMsg, String name,String standName) {
         BillMsg billMsg = new BillMsg();
         String msg = String.format(errMsg + ",不宜开%s", name);
         billMsg.setMsg(msg);
+        billMsg.setCompareName(errMsg);
+        billMsg.setCompareStandName(standName);
         return billMsg;
     }
 
@@ -252,7 +254,7 @@ public class CoreUtil {
 
     public static void main(String[] args) {
 
-        System.out.println(getCommonBillMsg("男性", "尿常规"));
+        System.out.println(getCommonBillMsg("男性", "尿常规",""));
 
         List<Clinical> clinicals = new ArrayList<>();
         Clinical c1 = new Clinical();