Przeglądaj źródła

Merge remote-tracking branch 'origin/gdb' into gdb

gaodm 4 lat temu
rodzic
commit
207feb1a0b

+ 5 - 2
src/main/java/com/diagbot/aggregate/IndicationAggregate.java

@@ -6,6 +6,7 @@ import com.diagbot.facade.BillFacade;
 import com.diagbot.facade.CriticalFacade;
 import com.diagbot.facade.HighRiskFacade;
 import com.diagbot.util.CoreUtil;
+import com.diagbot.util.StringUtil;
 import com.diagbot.vo.IndicationPushVO;
 import io.github.lvyahui8.spring.annotation.DataConsumer;
 import io.github.lvyahui8.spring.annotation.DataProvider;
@@ -75,8 +76,10 @@ public class IndicationAggregate {
                 billFacade.billFac(indicationPushVO, wordCrfDTO, res);
                 CoreUtil.getDebugStr(start, "开单规则耗时", res.getDebug());
             } catch (Exception e) {
-                log.error("【开单规则出错】" + e.getMessage());
-                CoreUtil.getDebugStr("【开单规则出错】", e.getMessage(), res.getDebug());
+                String errMsg = StringUtil.isNotBlank(indicationPushVO.getIdNum()) ?
+                        "行号【" + indicationPushVO.getIdNum() + "】" : "";
+                log.error("【开单规则出错】" + errMsg + e.getMessage());
+                CoreUtil.getDebugStr("【开单规则出错】", errMsg + e.getMessage(), res.getDebug());
             }
             return res;
         }

+ 2 - 2
src/main/java/com/diagbot/config/CacheDeleteInit.java

@@ -29,7 +29,7 @@ public class CacheDeleteInit implements CommandLineRunner {
         cacheFacade.clear();
         log.info("CDSS-CORE服务启动清除redis缓存成功!");
 
-        // neoFacade.getDrugCache();
-        // log.info("CDSS-CORE服务启动加载药品缓存成功!");
+        neoFacade.getDrugCache();
+        log.info("CDSS-CORE服务启动加载药品缓存成功!");
     }
 }

+ 3 - 0
src/main/java/com/diagbot/dto/BillNeoDTO.java

@@ -28,6 +28,9 @@ public class BillNeoDTO {
     // 手术和操作开单合理性项目
     private OperationBillNeoDTO operationBillNeoDTO;
 
+    // 联合项目开单合理性项目
+    private CombiOpBillNeoDTO combiOpBillNeoDTO;
+
     // 输血开单合理性项目
     private TransfusionBillNeoDTO transfusionBillNeoDTO;
 }

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

@@ -63,6 +63,8 @@ public class NeoFacade {
     @Autowired
     YiBaoDiseaseRepository yiBaoDiseaseRepository;
     @Autowired
+    CombiOperationRepository combiOperationRepository;
+    @Autowired
     ChiefPresentSimilarityServiceClient chiefPresentSimilarityServiceClient;
     @Autowired
     NeoFacade self;
@@ -169,6 +171,7 @@ public class NeoFacade {
             billNeoDTOs.addAll(getLisDetailBill(billNeoVO.getLisDetailList()));
             billNeoDTOs.addAll(getLisBill(billNeoVO.getLisList()));
             billNeoDTOs.addAll(getOperationBill(billNeoVO.getOperationList()));
+            billNeoDTOs.addAll(getCombiOpBill(billNeoVO.getCombiopList()));
         }
         catch (Exception ex) {
             ex.printStackTrace();
@@ -266,6 +269,18 @@ public class NeoFacade {
     }
 
 
+    /**
+     * 处理联合项目开单合理性
+     */
+    public List<BillNeoDTO> getCombiOpBill(Map<String, String> combiterm) {
+
+        CombiOperationNode combiNode = new CombiOperationNode();
+        List<BillNeoDTO> billNeoDTOS = combiNode.getCombiOpBill(combiterm, combiOperationRepository);
+
+        return billNeoDTOS;
+    }
+
+
     /**
      * 推送疾病信息
      *

+ 31 - 31
src/main/java/com/diagbot/facade/TestFacade.java

@@ -53,7 +53,7 @@ public class TestFacade {
             indicationPushVO.setIdNum(bean.getIdNum());
             if (StringUtil.isNotBlank(bean.getOrderType())) {
                 switch (bean.getOrderType()) {
-                    case "实验室检查" : // 细项
+                    case "实验室检查名称" : // 细项
                         List<Lis> lisDetailOrder = new ArrayList<>();
                         Lis lisDetailBean = new Lis();
                         lisDetailBean.setName(bean.getStandName());
@@ -62,7 +62,7 @@ public class TestFacade {
                         lisDetailOrder.add(lisDetailBean);
                         indicationPushVO.setLisOrder(lisDetailOrder);
                         break;
-                    case "辅助检查" :
+                    case "辅助检查名称" :
                         List<Pacs> pacsOrder = new ArrayList<>();
                         Pacs pacsBean = new Pacs();
                         pacsBean.setName(bean.getStandName());
@@ -70,7 +70,7 @@ public class TestFacade {
                         pacsOrder.add(pacsBean);
                         indicationPushVO.setPacsOrder(pacsOrder);
                         break;
-                    case "实验室检查套餐" :
+                    case "实验室检查套餐" :
                         List<Lis> lisOrder = new ArrayList<>();
                         Lis lisBean = new Lis();
                         lisBean.setName(bean.getStandName());
@@ -78,7 +78,7 @@ public class TestFacade {
                         lisOrder.add(lisBean);
                         indicationPushVO.setLisOrder(lisOrder);
                         break;
-                    case "手术和操作" :
+                    case "医保手术和操作名称" :
                         List<Item> operationOrder = new ArrayList<>();
                         Item operationItem = new Item();
                         operationItem.setName(bean.getStandName());
@@ -100,7 +100,7 @@ public class TestFacade {
                     //         indicationPushVO.setSex(2);
                     //     }
                     //     break;
-                    // case "2" : // 化验, 示例:血小板计数,<,50,*10~9L
+                    // case "2" : // 化验, 示例:血小板计数,<,50,10^9/L
                     //     String lisStr = bean.getNeoName();
                     //     String[] lisArr = lisStr.split(",");
                     //
@@ -129,32 +129,32 @@ public class TestFacade {
                     //     symptom.append(bean.getNeoName()).append("。");
                     //     indicationPushVO.setSymptom(symptom.toString());
                     //     break;
-                    case "12": // 体征
-                        StringBuffer sbVital = new StringBuffer();
-                        String[] vitalArr = bean.getNeoName().split(",");
-                        if (vitalArr.length > 1) {
-                            if ("收缩压".equals(vitalArr[0]) || "舒张压".equals(vitalArr[0])) {
-                                if ("收缩压".equals(vitalArr[0])) {
-                                    sbVital.append("血压");
-                                    sbVital.append(getValue(vitalArr) + "/100mmHg");
-                                    indicationPushVO.setVital(sbVital.toString());
-                                } else if ("舒张压".equals(vitalArr[0])) {
-                                    sbVital.append("血压");
-                                    sbVital.append("100/" + getValue(vitalArr) + "mmHg");
-                                    indicationPushVO.setVital(sbVital.toString());
-                                }
-                            } else {
-                                // 其他数值类型
-                                sbVital.append(vitalArr[0]);
-                                sbVital.append(getValue(vitalArr));
-                                sbVital.append(vitalArr[3]);
-                                indicationPushVO.setVital(sbVital.toString());
-                            }
-                        } else {
-                            sbVital.append(vitalArr[0]);
-                            indicationPushVO.setVital(sbVital.toString());
-                        }
-                        break;
+                    // case "12": // 体征
+                    //     StringBuffer sbVital = new StringBuffer();
+                    //     String[] vitalArr = bean.getNeoName().split(",");
+                    //     if (vitalArr.length > 1) {
+                    //         if ("收缩压".equals(vitalArr[0]) || "舒张压".equals(vitalArr[0])) {
+                    //             if ("收缩压".equals(vitalArr[0])) {
+                    //                 sbVital.append("血压");
+                    //                 sbVital.append(getValue(vitalArr) + "/100mmHg");
+                    //                 indicationPushVO.setVital(sbVital.toString());
+                    //             } else if ("舒张压".equals(vitalArr[0])) {
+                    //                 sbVital.append("血压");
+                    //                 sbVital.append("100/" + getValue(vitalArr) + "mmHg");
+                    //                 indicationPushVO.setVital(sbVital.toString());
+                    //             }
+                    //         } else {
+                    //             // 其他数值类型
+                    //             sbVital.append(vitalArr[0]);
+                    //             sbVital.append(getValue(vitalArr));
+                    //             sbVital.append(vitalArr[3]);
+                    //             indicationPushVO.setVital(sbVital.toString());
+                    //         }
+                    //     } else {
+                    //         sbVital.append(vitalArr[0]);
+                    //         indicationPushVO.setVital(sbVital.toString());
+                    //     }
+                    //     break;
                     default:
                         continue;
                 }

+ 2 - 1
src/main/java/com/diagbot/process/BillProcess.java

@@ -14,6 +14,7 @@ import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -109,7 +110,7 @@ public class BillProcess {
     // 规则处理
     public void processRule(List<BillNeoMaxDTO> billNeoMaxDTOList, WordCrfDTO wordCrfDTO, IndicationDTO indicationDTO) {
         // 获取药品缓存
-        Map<String, List<String>> drugMap = neoFacade.getDrugCache();
+        Map<String, List<String>> drugMap = new LinkedHashMap<>();
         DiagLabel diagLabel = wordCrfDTO.getDiagLabel();
         ChiefLabel chiefLabel = wordCrfDTO.getChiefLabel();
         PresentLabel presentLabel = wordCrfDTO.getPresentLabel();

+ 42 - 6
src/main/java/com/diagbot/repository/CombiOperationNode.java

@@ -1,7 +1,9 @@
 package com.diagbot.repository;
 
+import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.CombiOpBillNeoDTO;
 import com.diagbot.entity.node.*;
+import com.diagbot.util.ListUtil;
 import com.diagbot.util.NeoUtil;
 
 import java.util.*;
@@ -18,7 +20,7 @@ public class CombiOperationNode {
 		if (null!=gender) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(gender.getName());
-			nodeInfo.setTypeval("性别");
+			nodeInfo.setTypeval(Constants.gender);
 			combiOpBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -27,7 +29,7 @@ public class CombiOperationNode {
 		for (Group group : groups) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(group.getName());
-
+			nodeInfo.setTypeval(Constants.group);
 			combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -36,7 +38,7 @@ public class CombiOperationNode {
 		for (Lis lis : lislist) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(lis.getName());
-
+			nodeInfo.setTypeval(Constants.lis);
 			combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -45,7 +47,7 @@ public class CombiOperationNode {
 		for (PacsDescribe pacsdesc : pacsDescribes) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(pacsdesc.getName());
-
+			nodeInfo.setTypeval(Constants.pacsdesc);
 			combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -54,7 +56,7 @@ public class CombiOperationNode {
 		for (Disease dis : diseases) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(dis.getName());
-
+			nodeInfo.setTypeval(Constants.disease);
 			combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -63,7 +65,7 @@ public class CombiOperationNode {
 		for (MedAllergen medallergen : medAllergens) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(medallergen.getName());
-
+			nodeInfo.setTypeval(Constants.medallergen);
 			combiOpBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -71,5 +73,39 @@ public class CombiOperationNode {
 
 		return combiOpBillNeoDTO;
 	}
+
+
+	/**
+	 * 获取联合项目开单合理性
+	 */
+	public List<BillNeoDTO> getCombiOpBill(Map<String, String> combiterm, CombiOperationRepository combiRepository) {
+
+		List<BillNeoDTO> billNeoDTOs = new ArrayList<>();
+		BillNeoDTO billNeoDTO;
+
+		CombiOpBillNeoDTO combiOpBillNeoDTO;
+
+		List<CombiOperation> oplist;
+		String opname;
+
+		for (String term : combiterm.keySet()) {
+			billNeoDTO = new BillNeoDTO();
+			opname = combiterm.get(term);
+			billNeoDTO.setName(term);
+			billNeoDTO.setStandname(opname);
+
+			oplist = combiRepository.findByNameIs(opname);
+
+			if (ListUtil.isNotEmpty(oplist)) {
+				combiOpBillNeoDTO = CombiOptoCombiOpDTO(oplist.get(0));
+
+				billNeoDTO.setCombiOpBillNeoDTO(combiOpBillNeoDTO);
+
+				billNeoDTOs.add(billNeoDTO);
+			}
+		}
+
+		return billNeoDTOs;
+	}
 }
 

+ 2 - 1
src/main/java/com/diagbot/repository/LisNameNode.java

@@ -21,7 +21,7 @@ public class LisNameNode {
 		if (null!=gender) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(gender.getName());
-			nodeInfo.setTypeval("性别");
+			nodeInfo.setTypeval(Constants.gender);
 			lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 
@@ -111,6 +111,7 @@ public class LisNameNode {
 		for (Group group : groups) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(group.getName());
+			nodeInfo.setTypeval(Constants.group);
 
 			lisBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
 		}

+ 1 - 1
src/main/java/com/diagbot/repository/LisSetNode.java

@@ -21,7 +21,7 @@ public class LisSetNode {
 		if (null!=gender) {
 			nodeInfo = new NodeInfo();
 			nodeInfo.setName(gender.getName());
-			nodeInfo.setTypeval("性别");
+			nodeInfo.setTypeval(Constants.gender);
 			lisBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
 		}
 

+ 11 - 3
src/main/java/com/diagbot/repository/PacsNameNode.java

@@ -22,6 +22,7 @@ public class PacsNameNode {
         if (gender!=null) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(gender.getName());
+            nodeInfo.setTypeval(Constants.gender);
             pacsBillNeoDTO.setGender(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -35,6 +36,7 @@ public class PacsNameNode {
             nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(clinicalfinding.getMaxval()));
             nodeInfo.setUnit(clinicalfinding.getUnit());
             nodeInfo.setRange(clinicalfinding.getRange());
+            nodeInfo.setTypeval(Constants.clinicalfinding);
             pacsBillNeoDTO.getClinicfindings().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -48,6 +50,7 @@ public class PacsNameNode {
             nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(vital.getMaxval()));
             nodeInfo.setUnit(vital.getUnit());
             nodeInfo.setRange(vital.getRange());
+            nodeInfo.setTypeval(Constants.vital);
             pacsBillNeoDTO.getVitals().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -60,6 +63,7 @@ public class PacsNameNode {
             nodeInfo.setMaxval(NeoUtil.DoubletoBigDecimal(lis.getMaxval()));
             nodeInfo.setUnit(lis.getUnit());
             nodeInfo.setRange(lis.getRange());
+            nodeInfo.setTypeval(Constants.lis);
             pacsBillNeoDTO.getLis().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -68,7 +72,7 @@ public class PacsNameNode {
         for (PacsDescribe pacsdesc : conflict_pacsdesc) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(pacsdesc.getName());
-
+            nodeInfo.setTypeval(Constants.pacsdesc);
             pacsBillNeoDTO.getPacsDesc().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -77,7 +81,7 @@ public class PacsNameNode {
         for (Group group : groups) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(group.getName());
-
+            nodeInfo.setTypeval(Constants.group);
             pacsBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -86,6 +90,7 @@ public class PacsNameNode {
         for (OralMedicine conflict_medicine : conflict_medicines) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(conflict_medicine.getName());
+            nodeInfo.setTypeval(Constants.oralmed);
             pacsBillNeoDTO.getOralmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -94,6 +99,7 @@ public class PacsNameNode {
         for (MedAllergen medAllergen : medAllergens) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(medAllergen.getName());
+            nodeInfo.setTypeval(Constants.medallergen);
             pacsBillNeoDTO.getAllergicmeds().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -102,7 +108,7 @@ public class PacsNameNode {
         for (Disease disease : diseases) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(disease.getName());
-
+            nodeInfo.setTypeval(Constants.disease);
             pacsBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -111,6 +117,7 @@ public class PacsNameNode {
         for (Allergen allergen : allergens) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(allergen.getName());
+            nodeInfo.setTypeval(Constants.allergen);
             pacsBillNeoDTO.getOperations().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -119,6 +126,7 @@ public class PacsNameNode {
         for (ConflictDevice conflictDevice : conflictDevices) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(conflictDevice.getName());
+            nodeInfo.setTypeval(Constants.conflictdevice);
             pacsBillNeoDTO.getProcedures().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 

+ 3 - 2
src/main/java/com/diagbot/repository/PacsSubNameNode.java

@@ -22,7 +22,7 @@ public class PacsSubNameNode {
         for (Group group : groups) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(group.getName());
-
+            nodeInfo.setTypeval(Constants.group);
             pacsBillNeoDTO.getGroup().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -31,7 +31,7 @@ public class PacsSubNameNode {
         for (Disease disease : diseases) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(disease.getName());
-
+            nodeInfo.setTypeval(Constants.disease);
             pacsBillNeoDTO.getDisease().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 
@@ -40,6 +40,7 @@ public class PacsSubNameNode {
         for (MedAllergen medAllergen : medAllergens) {
             nodeInfo = new NodeInfo();
             nodeInfo.setName(medAllergen.getName());
+            nodeInfo.setTypeval(Constants.medallergen);
             pacsBillNeoDTO.getOperations().add(NeoUtil.updateNodeInfo(nodeInfo));
         }
 

+ 1 - 1
src/main/java/com/diagbot/rule/DrugRule.java

@@ -34,7 +34,7 @@ public class DrugRule {
         if (ListUtil.isNotEmpty(drugList) && ListUtil.isNotEmpty(inputList)) {
             List<String> allDrug = new ArrayList<>();
             for (NodeNeoDTO nodeNeoDTO : drugList) {
-                if (StringUtil.isBlank(nodeNeoDTO.getTermtype()) || "药品".equals(nodeNeoDTO.getTermtype())) {
+                if (StringUtil.isBlank(nodeNeoDTO.getTermtype()) || "服用药品".equals(nodeNeoDTO.getTermtype())) {
                     allDrug.add(nodeNeoDTO.getName());
                 } else if ("药品分类".equals(nodeNeoDTO.getTermtype())){
                     String drugType = nodeNeoDTO.getName();

+ 3 - 0
src/main/java/com/diagbot/vo/BillNeoVO.java

@@ -26,6 +26,9 @@ public class BillNeoVO {
     // 手术和操作入参
     private Map<String, String> operationList = new HashMap<>();
 
+    // 联合项目入参
+    private Map<String, String> combiopList = new HashMap<>();
+
     // 输血开单项
     private Map<String, String> transfusionList = new HashMap<>();
 }