소스 검색

Merge remote-tracking branch 'origin/dev/neo2mysql20210120' into dev/neo2mysql20210120

wangfeng 4 년 전
부모
커밋
d75f462885

+ 1 - 0
src/main/java/com/diagbot/dto/LisOtherDTO.java

@@ -18,4 +18,5 @@ public class LisOtherDTO {
     private List<String> diseaseMsg = new ArrayList<>(); // 诊断拼接提示语
     private List<String> groupMsg = new ArrayList<>(); // 人群拼接提示语
     private List<String> operationMsg = new ArrayList<>(); // 手术拼接提示语
+    private List<String> lisMsg = new ArrayList<>(); // 化验拼接提示语——暂无数据
 }

+ 0 - 3
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -4,7 +4,6 @@ import com.alibaba.fastjson.JSONArray;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.DrugNameDTO;
 import com.diagbot.dto.DrugTypeCacheDTO;
 import com.diagbot.dto.DrugTypeDTO;
@@ -29,7 +28,6 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.BillNeoVO;
 import com.diagbot.vo.DiseaseItemVO;
 import com.diagbot.vo.NeoPushVO;
 import com.diagbot.vo.StandConvert;
@@ -40,7 +38,6 @@ import com.diagbot.vo.neoPushEntity.PresentPushVo;
 import com.diagbot.vo.neoPushEntity.Symptom;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import io.github.lvyahui8.spring.facade.DataFacade;
 import org.apache.commons.collections.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;

+ 64 - 29
src/main/java/com/diagbot/rule/LisRule.java

@@ -43,14 +43,11 @@ public class LisRule {
     public void bill(List<Lis> inputLis, RuleBaseDTO ruleBaseDTO, List<BillMsg> billMsgList, String conType, RuleSimpleDTO ruleSimpleDTO) {
         if (ListUtil.isNotEmpty(inputLis) && StringUtil.isNotBlank(ruleBaseDTO.getBaseLibName())) {
             for (Lis lis : inputLis) {
-                String uniqueName = lis.getUniqueName();
-                if (StringUtil.isNotBlank(uniqueName) && uniqueName.equals(ruleBaseDTO.getBaseLibName())) {
-                    Map<String, Object> map = CoreUtil.compareLis(ruleBaseDTO, lis);
-                    if ((Boolean) map.get("flag") == true) {
-                        BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(ruleSimpleDTO.getInputName(),
-                                ruleSimpleDTO.getLibName(), (String) map.get("msg"), conType, ruleSimpleDTO.getLibTypeName());
-                        billMsgList.add(commonBillMsg);
-                    }
+                Map<String, Object> map = CoreUtil.compareLis(ruleBaseDTO, lis);
+                if (CoreUtil.getMapFlag(map)) {
+                    BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(ruleSimpleDTO.getInputName(),
+                            ruleSimpleDTO.getLibName(), (String) map.get("msg"), conType, ruleSimpleDTO.getLibTypeName());
+                    billMsgList.add(commonBillMsg);
                 }
             }
         }
@@ -67,13 +64,10 @@ public class LisRule {
     public void highOperation(List<Lis> inputLis, RuleBaseDTO ruleBaseDTO, List<BillMsg> highRiskList, RuleSimpleDTO ruleSimpleDTO) {
         if (ListUtil.isNotEmpty(inputLis) && StringUtil.isNotBlank(ruleBaseDTO.getBaseLibName())) {
             for (Lis lis : inputLis) {
-                String uniqueName = lis.getUniqueName();
-                if (StringUtil.isNotBlank(uniqueName) && uniqueName.equals(ruleBaseDTO.getBaseLibName())) {
-                    Map<String, Object> map = CoreUtil.compareLis(ruleBaseDTO, lis);
-                    if ((Boolean) map.get("flag") == true) {
-                        BillMsg billMsg = MsgUtil.getCommonHighRiskMsg((String) map.get("msg"), ruleSimpleDTO.getInputName(), ruleSimpleDTO.getLibTypeName());
-                        highRiskList.add(billMsg);
-                    }
+                Map<String, Object> map = CoreUtil.compareLis(ruleBaseDTO, lis);
+                if (CoreUtil.getMapFlag(map)) {
+                    BillMsg billMsg = MsgUtil.getCommonHighRiskMsg((String) map.get("msg"), ruleSimpleDTO.getInputName(), ruleSimpleDTO.getLibTypeName());
+                    highRiskList.add(billMsg);
                 }
             }
         }
@@ -99,10 +93,22 @@ public class LisRule {
                 switch (LexiconEnum.getEnum(ruleBaseDTO.getBaseLibType())) {
                     case LisSubName: // 化验细项
                         if (ruleBaseDTO.getBaseLibName().equals(lisBean.getUniqueName())) {
+                            // 化验自身
                             map = CoreUtil.compareLis(ruleBaseDTO, lisBean);
-                            if ((Boolean) map.get("flag") == true) {
+                            if (CoreUtil.getMapFlag(map)) {
+                                i++;
                                 lisOtherDTO.setName((String) map.get("msg"));
+                            } else {
+                                break;
+                            }
+                        } else {
+                            // 其他化验——暂无数据
+                            map = CoreUtil.compareLis(ruleBaseDTO, wordCrfDTO.getLis());
+                            if (CoreUtil.getMapFlag(map)) {
                                 i++;
+                                lisOtherDTO.setLisMsg((List<String>) map.get("msgList"));
+                            } else {
+                                break;
                             }
                         }
                         break;
@@ -120,7 +126,7 @@ public class LisRule {
                             i++;
                         }
                         break;
-                    case Medicine:
+                    case Medicine: // 药品
                         map = commonRule.compareItem(wordCrfDTO.getDrug(), ruleBaseDTO);
                         if (CoreUtil.getMapFlag(map)) {
                             lisOtherDTO.setDrugMsg((List<String>)map.get("msgList"));
@@ -156,7 +162,13 @@ public class LisRule {
                         otherList.add(billMsg);
                     }
                 }
-
+                // 化验
+                if (ListUtil.isNotEmpty(lisOtherDTO.getLisMsg())) {
+                    for (String str : lisOtherDTO.getLisMsg()) {
+                        BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.lis.getName(), lisOtherDTO.getName(), str, TypeEnum.lis.getName(), lisBean);
+                        otherList.add(billMsg);
+                    }
+                }
             }
         }
     }
@@ -182,10 +194,22 @@ public class LisRule {
                 switch (LexiconEnum.getEnum(ruleBaseDTO.getBaseLibType())) {
                     case LisSubName: // 化验细项
                         if (ruleBaseDTO.getBaseLibName().equals(lisBean.getUniqueName())) {
+                            // 化验自身
                             map = CoreUtil.compareLis(ruleBaseDTO, lisBean);
-                            if ((Boolean) map.get("flag") == true) {
-                                lisOtherDTO.setName((String)map.get("msg"));
+                            if (CoreUtil.getMapFlag(map)) {
                                 i++;
+                                lisOtherDTO.setName((String) map.get("msg"));
+                            } else {
+                                break;
+                            }
+                        } else {
+                            // 其他化验——暂无数据
+                            map = CoreUtil.compareLis(ruleBaseDTO, wordCrfDTO.getLis());
+                            if (CoreUtil.getMapFlag(map)) {
+                                i++;
+                                lisOtherDTO.setLisMsg((List<String>) map.get("msgList"));
+                            } else {
+                                break;
                             }
                         }
                         break;
@@ -217,12 +241,15 @@ public class LisRule {
         // 条件全部符合
         if (i == ruleBaseDTOList.size()) {
             if (StringUtil.isNotBlank(lisOtherDTO.getName())) {
-                // 化验本身符合,其他不符号
-                if (ListUtil.isEmpty(lisOtherDTO.getDiseaseMsg()) && ListUtil.isEmpty(lisOtherDTO.getOperationMsg())) {
+                // 化验本身符合,其他不符合
+                if (ListUtil.isEmpty(lisOtherDTO.getDiseaseMsg())
+                        && ListUtil.isEmpty(lisOtherDTO.getOperationMsg())
+                        && ListUtil.isEmpty(lisOtherDTO.getLisMsg())) {
                     BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.transfusion.getName(),
                             lisOtherDTO.getName(), msg, TypeEnum.lis.getName(), lisBean);
                     otherList.add(billMsg);
                 } else {
+                    // 诊断
                     if (ListUtil.isNotEmpty(lisOtherDTO.getDiseaseMsg())) {
                         for (String str : lisOtherDTO.getDiseaseMsg()) {
                             BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.transfusion.getName(),
@@ -230,6 +257,7 @@ public class LisRule {
                             otherList.add(billMsg);
                         }
                     }
+                    // 手术
                     if (ListUtil.isNotEmpty(lisOtherDTO.getOperationMsg())) {
                         for (String str : lisOtherDTO.getOperationMsg()) {
                             BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.transfusion.getName(),
@@ -237,6 +265,14 @@ public class LisRule {
                             otherList.add(billMsg);
                         }
                     }
+                    // 化验化验本身符合,其他不符合
+                    if (ListUtil.isNotEmpty(lisOtherDTO.getLisMsg())) {
+                        for (String str : lisOtherDTO.getLisMsg()) {
+                            BillMsg billMsg = MsgUtil.getCommonOtherMsg(TypeEnum.transfusion.getName(),
+                                    lisOtherDTO.getName() + "," + str, msg, TypeEnum.lis.getName(), lisBean);
+                            otherList.add(billMsg);
+                        }
+                    }
                     // // 药品暂未用
                     // if (ListUtil.isNotEmpty(lisOtherDTO.getDrugMsg())) {
                     //     for (String str : lisOtherDTO.getDrugMsg()) {
@@ -265,18 +301,17 @@ public class LisRule {
         int i = 0;
         for (RuleBaseDTO ruleBaseDTO : ruleBaseDTOList) {
             if (LexiconEnum.getEnum(ruleBaseDTO.getBaseLibType()) != null) { // 避免空指针
+                Map map = null;
                 switch (LexiconEnum.getEnum(ruleBaseDTO.getBaseLibType())) {
                     case LisSubName: // 化验细项
-                        if (ruleBaseDTO.getBaseLibName().equals(lisBean.getUniqueName())) {
-                            Map<String, Object> map = CoreUtil.compareLis(ruleBaseDTO, lisBean);
-                            if ((Boolean) map.get("flag") == true) {
-                                i++;
-                                msg = (String) map.get("msg");
-                            }
+                        map = CoreUtil.compareLis(ruleBaseDTO, lisBean);
+                        if ((Boolean) map.get("flag") == true) {
+                            i++;
+                            msg = (String) map.get("msg");
                         }
                         break;
                     case Group: // 人群
-                        Map map = groupRule.rule(wordCrfDTO, ruleBaseDTO);
+                        map = groupRule.rule(wordCrfDTO, ruleBaseDTO);
                         if (CoreUtil.getMapFlag(map)) {
                             i++;
                         }

+ 48 - 17
src/main/java/com/diagbot/util/CoreUtil.java

@@ -266,6 +266,33 @@ public class CoreUtil {
         }
     }
 
+    /**
+     * 比较化验是否匹配
+     *
+     * @param ruleBaseDTO
+     * @param lisList
+     * @return
+     */
+    public static Map<String, Object> compareLis(RuleBaseDTO ruleBaseDTO, List<Lis> lisList) {
+        Map<String, Object> map = new LinkedHashMap<>();
+        boolean flag = false;
+        if (ruleBaseDTO == null || ListUtil.isEmpty(lisList)) {
+            map.put("flag", flag);
+            return map;
+        }
+        List<String> msgList = new ArrayList<>();
+        for (Lis lis : lisList) {
+            Map mapLis = CoreUtil.compareLis(ruleBaseDTO, lis);
+            if (CoreUtil.getMapFlag(mapLis)) {
+                flag = true;
+                msgList.add((String)mapLis.get("msg"));
+            }
+        }
+        map.put("flag", flag);
+        map.put("msgList", msgList);
+        return map;
+    }
+
     /**
      * 比较化验是否匹配
      *
@@ -280,24 +307,28 @@ public class CoreUtil {
             map.put("flag", flag);
             return map;
         }
-        if (StringUtil.isNotBlank(lis.getOtherValue())) {
-            if (lis.getOtherValue().equals(ruleBaseDTO.getBaseEqValue())) {
-                // 套餐和明细名称一样,提示语只取其中一个
-                if (StringUtil.isNotBlank(lis.getName()) && lis.getName().equals(lis.getDetailName())) {
-                    map.put("msg", lis.getDetailName() + lis.getOtherValue());
-                } else {
-                    map.put("msg", lis.getName() + lis.getDetailName() + lis.getOtherValue());
+        String uniqueName = lis.getUniqueName();
+        // 标准名称相同
+        if (StringUtil.isNotBlank(uniqueName) && uniqueName.equals(ruleBaseDTO.getBaseLibName())) {
+            if (StringUtil.isNotBlank(lis.getOtherValue())) {
+                if (lis.getOtherValue().equals(ruleBaseDTO.getBaseEqValue())) {
+                    // 套餐和明细名称一样,提示语只取其中一个
+                    if (StringUtil.isNotBlank(lis.getName()) && lis.getName().equals(lis.getDetailName())) {
+                        map.put("msg", lis.getDetailName() + lis.getOtherValue());
+                    } else {
+                        map.put("msg", lis.getName() + lis.getDetailName() + lis.getOtherValue());
+                    }
+                    flag = true;
                 }
-                flag = true;
-            }
-        } else if (lis.getValue() != null) {
-            double value = lis.getValue();
-            flag = compareNum(ruleBaseDTO, value);
-            if (flag) {
-                if (StringUtil.isNotBlank(lis.getName()) && lis.getName().equals(lis.getDetailName())) {
-                    map.put("msg", lis.getDetailName() + subZeroAndDot(String.valueOf(lis.getValue())));
-                } else {
-                    map.put("msg", lis.getName() + lis.getDetailName() + subZeroAndDot(String.valueOf(lis.getValue())));
+            } else if (lis.getValue() != null) {
+                double value = lis.getValue();
+                flag = compareNum(ruleBaseDTO, value);
+                if (flag) {
+                    if (StringUtil.isNotBlank(lis.getName()) && lis.getName().equals(lis.getDetailName())) {
+                        map.put("msg", lis.getDetailName() + subZeroAndDot(String.valueOf(lis.getValue())));
+                    } else {
+                        map.put("msg", lis.getName() + lis.getDetailName() + subZeroAndDot(String.valueOf(lis.getValue())));
+                    }
                 }
             }
         }

+ 11 - 6
src/main/java/com/diagbot/util/MsgUtil.java

@@ -75,12 +75,17 @@ public class MsgUtil {
         String msg = "";
         switch (TypeEnum.getEnum(otherType)) {
             case lis: // 其他值提醒——化验
-                if (TypeEnum.disease.getName().equals(type)) {
-                    msg = String.format("该患者%s,患有%s,请留意", content, name);
-                } else if (TypeEnum.drug.getName().equals(type)) {
-                    msg = String.format("该患者%s,可能正在服用%s,请留意", content, name);
-                } else if (ConEnum.group.getName().equals(type)) {
-                    msg = String.format("该患者%s,%s,请留意", content, name);
+                switch (TypeEnum.getEnum(type)) {
+                    case disease: // 诊断
+                        msg = String.format("该患者%s,患有%s,请留意", content, name);
+                        break;
+                    case drug: // 药品
+                        msg = String.format("该患者%s,可能正在服用%s,请留意", content, name);
+                        break;
+                    case group: // 人群
+                    case lis: // 化验
+                        msg = String.format("该患者%s,%s,请留意", content, name);
+                        break;
                 }
                 billMsg.setType(type);
                 billMsg.setOrderName(lis.getName());

+ 3 - 3
src/main/java/com/diagbot/web/CacheController.java

@@ -34,9 +34,9 @@ public class CacheController {
     public RespDTO<Boolean> clear() {
         cacheFacade.clear();
         cacheFacade.loadDrugTypeCache();
-//        cacheFacade.getDiseaseCorrespondCache();
-//        cacheFacade.getdiseaseFilterCache();
-//        cacheFacade.loadAllRuleCache();
+        cacheFacade.getDiseaseCorrespondCache();
+        cacheFacade.getdiseaseFilterCache();
+        cacheFacade.loadAllRuleCache();
         //无用的缓存
 //        cacheFacade.loadDiseaseTypeCache();
 //        cacheFacade.getSymptomCache();