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

Merge remote-tracking branch 'origin/master'

gaodm 4 éve
szülő
commit
3c1ac2c947

+ 12 - 15
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -75,6 +75,7 @@ public class CommonFacade {
         }
         aiAnalyze.aiProcess(searchData, wordCrfDTO);
 
+        // 处理现病史中的化验和辅检,放入结构化
         processPresentLisPacs(wordCrfDTO);
         return wordCrfDTO;
     }
@@ -302,7 +303,6 @@ public class CommonFacade {
             Map<String, Map<String, Map<String, Long>>> configMap = lisConfigFacade.getConfigMap(wordCrfDTO.getHospitalId(), lisNames, null);
             if(configMap.size() > 0){
                 lises.stream().forEach(x ->{
-
                     String bigName = x.getBigItem().getName();//大项名
                     String detailName = x.getName();//小项名
                     String value = x.getPd().getValue();
@@ -310,33 +310,25 @@ public class CommonFacade {
                     if(configMap.containsKey(bigName)){
                         Map<String, Map<String, Long>> uniqueDetailMap = configMap.get(bigName);
                         if(uniqueDetailMap.containsKey(detailName)){
-
                             List<String> uniques = uniqueDetailMap.get(detailName).keySet().stream().collect(Collectors.toList());//所有的公表项
                             if(ListUtil.isNotEmpty(uniques)){
                                 List<Lis> lisStream = uniques.stream().map(z -> {
-                                    Lis lis = new Lis();
-                                    lis.setDetailName(detailName);
-                                    lis.setName(bigName);
-                                    lis.setUniqueName(z);
-                                    lis.setValue(Double.parseDouble(value));
-                                    lis.setUnits(unit);
-                                    return lis;
+                                    return getLis(bigName, detailName, value, unit, z);
                                 }).collect(Collectors.toList());
                                 lisList.addAll(lisStream);
                             }
-
                         }else {
-                            Lis lis = getLis(bigName, detailName, value, unit);
+                            Lis lis = getLis(bigName, detailName, value, unit, null);
                             lisList.add(lis);
                         }
                     }else {
-                        Lis lis = getLis(bigName, detailName, value, unit);
+                        Lis lis = getLis(bigName, detailName, value, unit, null);
                         lisList.add(lis);
                     }
                 });
             }else {
                 lises.stream().forEach(x ->{
-                    Lis lis = getLis(x.getBigItem().getName(), x.getName(), x.getPd().getValue(), x.getPd().getUnit());
+                    Lis lis = getLis(x.getBigItem().getName(), x.getName(), x.getPd().getValue(), x.getPd().getUnit(), null);
                     lisList.add(lis);
                 });
             }
@@ -400,12 +392,17 @@ public class CommonFacade {
         pacsLabel.getPacsNewList().addAll(packagePacs);
     }
 
-    private Lis getLis(String bigName, String detailName, String value, String unit) {
+    private Lis getLis(String bigName, String detailName, String value, String unit, String uniqueName) {
         Lis lis = new Lis();
         lis.setUnits(unit);
-        lis.setValue(Double.parseDouble(value));
+        if(StringUtils.isBlank(unit)){
+            lis.setOtherValue(value);
+        }else {
+            lis.setValue(Double.parseDouble(value));
+        }
         lis.setDetailName(detailName);
         lis.setName(bigName);
+        lis.setUniqueName(uniqueName);
         return lis;
     }
 }

+ 3 - 3
src/main/java/com/diagbot/process/BillProcess.java

@@ -120,7 +120,7 @@ public class BillProcess {
 
         //辅助检查描述
         PacsLabel pacsLabel = wordCrfDTO.getPacsLabel();
-        List<Item> pacsNewList = new ArrayList<>();
+        List<Item> pacsDescList = new ArrayList<>();
         pacsLabel.getPacsNewList().stream().filter(x -> ListUtil.isNotEmpty(x.getPacsResults()) || ListUtil.isNotEmpty(x.getDisease())).forEach(
                 x ->{
                     List<String> pacsResults = x.getPacsResults().stream().map(pacr -> pacr.getStandName()).collect(Collectors.toList());
@@ -130,7 +130,7 @@ public class BillProcess {
                         Item item = new Item();
                         item.setName(z);
                         item.setUniqueName(z);
-                        pacsNewList.add(item);
+                        pacsDescList.add(item);
                     });
                 }
         );
@@ -186,7 +186,7 @@ public class BillProcess {
             GroupRule.compareGroupWithBill(wordCrfDTO, bill, billMsgList, NeoEnum.group.getName());
 
             // 禁用辅助检查描述
-            CommonRule.compareItemWithBill(bill.getPacsDesc(), pacsNewList, bill, billMsgList, NeoEnum.pacsDesc.getName());
+            CommonRule.compareItemWithBill(bill.getPacsDesc(), pacsDescList, bill, billMsgList, NeoEnum.pacsDesc.getName());
         }
 
         // 24小时重复开单项

+ 2 - 2
src/main/java/com/diagbot/rule/CommonRule.java

@@ -73,11 +73,11 @@ public class CommonRule {
     public static <T> void compareItemWithBill(List<NodeNeoDTO> neoList, List<T> input, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
         Map<String, String> old_stand = new HashMap<>();
         if (ListUtil.isNotEmpty(neoList) && ListUtil.isNotEmpty(input)) {
-            List<String> dl = neoList.stream().map(x -> x.getName()).collect(Collectors.toList());
+            List<String> neoName = neoList.stream().map(x -> x.getName()).collect(Collectors.toList());
             for (T d : input) {
                 String c = (String) CoreUtil.getFieldValue(d, "uniqueName");
                 String c_name = (String) CoreUtil.getFieldValue(d, "name");
-                if (StringUtils.isNotBlank(c) && dl.contains(c)) {
+                if (StringUtils.isNotBlank(c) && neoName.contains(c)) {
                     old_stand.put(c_name, c);
                 }
             }

+ 19 - 55
src/main/java/com/diagbot/rule/DrugRule.java

@@ -6,13 +6,13 @@ 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 java.util.ArrayList;
 import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.stream.Collectors;
 
 /**
  * @description: 实验室检查和辅助检查规则
@@ -22,70 +22,34 @@ import java.util.stream.Collectors;
 public class DrugRule {
 
     /**
-     * 比较药品是否存在(图谱返回的是药品通用名,直接比较)
+     * 比较药品是否存在(图谱返回药品通用名或者药品分类,如果返回的是药品分类,再从redis获取药品通用名)
      *
-     * @param drugLises
-     * @param inputLises
+     * @param drugList
+     * @param inputList
      * @return
      */
-    public static <T> void compareDrugWithBill(List<NodeNeoDTO> drugLises, List<T> inputLises, BillNeoMaxDTO billNeoMaxDTO,
+    public static <T> void compareDrugWithBill(List<NodeNeoDTO> drugList, List<T> inputList, BillNeoMaxDTO billNeoMaxDTO,
                                                List<BillMsg> billMsgList, Map<String, List<String>> drugMap, String type) {
         Map<String, String> old_stand = new HashMap<>();
-        if (ListUtil.isNotEmpty(drugLises) && ListUtil.isNotEmpty(inputLises)) {
-            List<String> allDrug = 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) && allDrug.contains(c)) {
-                        old_stand.put(c_name, c);
-                    }
-                }
-            }
-            if (old_stand.size() > 0) {
-                for (Map.Entry<String, String> d : old_stand.entrySet()) {
-                    String message = "";
-                    if ("禁忌过敏药品".equals(type)) {
-                        message = d.getKey() + "过敏";
-                    } else {
-                        message = "已开" + d.getKey();
+        if (ListUtil.isNotEmpty(drugList) && ListUtil.isNotEmpty(inputList)) {
+            List<String> allDrug = new ArrayList<>();
+            for (NodeNeoDTO nodeNeoDTO : drugList) {
+                if (StringUtil.isBlank(nodeNeoDTO.getTermtype()) || "药品".equals(nodeNeoDTO.getTermtype())) {
+                    allDrug.add(nodeNeoDTO.getName());
+                } else if ("药品分类".equals(nodeNeoDTO.getTermtype())){
+                    String drugType = nodeNeoDTO.getName();
+                    if (drugMap.get(drugType) != null) {
+                        allDrug.addAll(drugMap.get(drugType));
                     }
-                    BillMsg commonBillMsg = CoreUtil.getCommonBillMsg(
-                            billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
-                            message, type);
-                    billMsgList.add(commonBillMsg);
-                }
-            }
-        }
-    }
-
-
-    /**
-     * 比较药品是否存在(图谱返回的是药品大类,需要从缓存中获取大类对应的药品名称)
-     *
-     * @param drugLises
-     * @param inputLises
-     * @return
-     */
-    public static <T> void compareDrugWithBillWithType(List<NodeNeoDTO> drugLises, List<T> inputLises, BillNeoMaxDTO billNeoMaxDTO,
-                                               List<BillMsg> billMsgList, Map<String, List<String>> drugMap, String type) {
-        Map<String, String> old_stand = new HashMap<>();
-        if (ListUtil.isNotEmpty(drugLises) && ListUtil.isNotEmpty(inputLises)) {
-            List<String> drugType = drugLises.stream().map(x -> x.getName()).collect(Collectors.toList());
-            List<String> allDrug = new ArrayList<>(); // 所有的药品名称
-            for (String drugT : drugType) {
-                if (drugMap.get(drugT) != null) {
-                    allDrug.addAll(drugMap.get(drugT));
                 }
             }
-            for (T d : inputLises) {
+            for (T d : inputList) {
                 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) && allDrug.contains(c)) {
-                        old_stand.put(c_name, c);
+                    String standName = (String) CoreUtil.getFieldValue(d, "standName");
+                    String name = (String) CoreUtil.getFieldValue(d, "name");
+                    if (StringUtils.isNotBlank(standName) && allDrug.contains(standName)) {
+                        old_stand.put(name, standName);
                     }
                 }
             }