Przeglądaj źródła

互斥项提示语

zhoutg 4 lat temu
rodzic
commit
d485341a11

+ 2 - 1
src/main/java/com/diagbot/enums/NeoEnum.java

@@ -25,7 +25,8 @@ public enum NeoEnum implements KeyedNamed {
     conflictmeds(12, "配伍禁忌"),
     vitals(13, "禁忌查体"),
     pacsDesc(14, "禁忌辅助检查描述"),
-    medEqu(15, "禁忌医疗器械及物品");
+    medEqu(15, "禁忌医疗器械及物品"),
+    exclusion(16, "开单项互斥");
 
     @Setter
     private int key;

+ 12 - 0
src/main/java/com/diagbot/process/BillProcess.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillNeoDTO;
 import com.diagbot.dto.BillNeoMaxDTO;
 import com.diagbot.dto.IndicationDTO;
+import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.enums.NeoEnum;
 import com.diagbot.enums.TypeEnum;
@@ -92,6 +93,16 @@ public class BillProcess {
             billNeoMaxDTO.setOrderName(billNeoDTO.getName()); // 开单名称
             billNeoMaxDTO.setOrderStandName(billNeoDTO.getStandname()); // 开单标准名称
             // TODO 测试数据开始
+            if (billNeoDTO.getStandname().equals("胸部CT")) {
+                NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
+                nodeNeoDTO.setName("心电图");
+                billNeoMaxDTO.getPacsOrder().add(nodeNeoDTO);
+            }
+            if (billNeoDTO.getStandname().equals("心电图")) {
+                NodeNeoDTO nodeNeoDTO = new NodeNeoDTO();
+                nodeNeoDTO.setName("胸部CT");
+                billNeoMaxDTO.getPacsOrder().add(nodeNeoDTO);
+            }
             // if (billNeoDTO.getName().equals("普通胃镜检查")) {
             //     NodeNeoDTO sexNeo = new NodeNeoDTO();
             //     sexNeo.setName("男");
@@ -268,6 +279,7 @@ public class BillProcess {
         commonRule.repeat24Bill(wordCrfDTO, billMsgList);
 
         // 互斥开单项
+        commonRule.exclusionBill(billNeoMaxDTOList, wordCrfDTO, billMsgList);
         indicationDTO.setBillMsgList(billMsgList);
     }
 

+ 29 - 3
src/main/java/com/diagbot/rule/CommonRule.java

@@ -6,6 +6,7 @@ import com.diagbot.dto.BillNeoMaxDTO;
 import com.diagbot.dto.HighRiskNeoDTO;
 import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.enums.NeoEnum;
 import com.diagbot.enums.TypeEnum;
 import com.diagbot.model.entity.Negative;
 import com.diagbot.util.CatalogueUtil;
@@ -22,8 +23,10 @@ import java.util.Collections;
 import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
+import java.util.LinkedHashSet;
 import java.util.List;
 import java.util.Map;
+import java.util.Set;
 import java.util.stream.Collectors;
 
 /**
@@ -117,9 +120,32 @@ public class CommonRule {
      * @param wordCrfDTO
      * @param billMsgList
      */
-    public void exclusionBill(WordCrfDTO wordCrfDTO, List<BillMsg> billMsgList) {
-        // 当前辅检开单项
+    public void exclusionBill(List<BillNeoMaxDTO> billNeoMaxDTOList, WordCrfDTO wordCrfDTO, List<BillMsg> billMsgList) {
+        // 辅检开单项互斥
         List<Pacs> pacsOrder = wordCrfDTO.getPacsOrder();
+        Set<String> set = new LinkedHashSet<>();    // A与B不宜同时进行, B与A不宜同时进行 只能提示一个
+        if (ListUtil.isNotEmpty(pacsOrder) && pacsOrder.size() > 1) {
+            Map<String, String> map = pacsOrder.stream().collect(Collectors.toMap(k -> k.getUniqueName(), v -> v.getName()));
+            for (BillNeoMaxDTO billNeoMaxDTO : billNeoMaxDTOList) {
+                List<NodeNeoDTO> nodeList = billNeoMaxDTO.getPacsOrder();
+                if (ListUtil.isNotEmpty(nodeList)) {
+                    for (NodeNeoDTO nodeNeoDTO : nodeList) {
+                        String orginName = map.get(nodeNeoDTO.getName());
+                        if (map.get(nodeNeoDTO.getName()) != null) {
+                            if (!set.contains(billNeoMaxDTO.getOrderName() + "******" + orginName)) {
+                                set.add(billNeoMaxDTO.getOrderName() + "******" + orginName);
+                                set.add(orginName + "******" + billNeoMaxDTO.getOrderName());
+                                BillMsg commonBillMsg = MsgUtil.getBillExclusionMsg(
+                                        billNeoMaxDTO.getOrderName(), orginName,
+                                        billNeoMaxDTO.getOrderName() + "," + orginName,
+                                        NeoEnum.exclusion.getName());
+                                billMsgList.add(commonBillMsg);
+                            }
+                        }
+                    }
+                }
+            }
+        }
     }
 
     /**
@@ -199,7 +225,7 @@ public class CommonRule {
      * @param highRiskNeoDTO
      * @param highRiskList
      */
-    public void highRiskComplex(NodeNeoDTO nodeNeoDTO, List<BillMsg> highRiskList,HighRiskNeoDTO highRiskNeoDTO) {
+    public void highRiskComplex(NodeNeoDTO nodeNeoDTO, List<BillMsg> highRiskList, HighRiskNeoDTO highRiskNeoDTO) {
         BillMsg billMsg = MsgUtil.getComplexOperationMsg( nodeNeoDTO.getVal(), highRiskNeoDTO.getName(),nodeNeoDTO.getTermtype());
         highRiskList.add(billMsg);
     }

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

@@ -638,8 +638,9 @@ public class CoreUtil {
      */
     public static Double convertAge(String ageStr) {
         try {
+            // 防止程序出错
             if (StringUtil.isEmpty(ageStr)) {
-                return 0.0;
+                return 20.0;
             }
             // 全是整形数字,当成年龄处理
             if (CatalogueUtil.numbersOnly(ageStr)) {
@@ -675,9 +676,9 @@ public class CoreUtil {
             }
         } catch (Exception e) {
             e.printStackTrace();
-            return 0.0;
+            return 20.0;
         }
-        return 0.0;
+        return 20.0;
     }
 
     /**

+ 19 - 0
src/main/java/com/diagbot/util/MsgUtil.java

@@ -92,6 +92,25 @@ public class MsgUtil {
         return billMsg;
     }
 
+    /**
+     * 开单合理性——互斥提示信息
+     *
+     * @param complexOrderName 多个开单项
+     * @param orderName 原开单项
+     * @param content 匹配内容
+     * @param type 类型
+     * @return
+     */
+    public static BillMsg getBillExclusionMsg(String orderName, String content, String complexOrderName, String type) {
+        BillMsg billMsg = new BillMsg();
+        String msg = String.format("检查项目互斥:%s与%s不宜同时进行", orderName, content);
+        billMsg.setMsg(msg);
+        billMsg.setOrderName(complexOrderName);
+        billMsg.setContent(content);
+        billMsg.setType(type);
+        return billMsg;
+    }
+
     /**
      * 复杂情况高危手术提示
      *