浏览代码

Merge remote-tracking branch 'origin/master'

MarkHuang 4 年之前
父节点
当前提交
d29cfae04d

+ 1 - 2
src/main/java/com/diagbot/dto/CriticalNeoDTO.java

@@ -1,6 +1,5 @@
 package com.diagbot.dto;
 
-import com.diagbot.biz.push.entity.Lis;
 import lombok.Data;
 
 /**
@@ -20,7 +19,7 @@ public class CriticalNeoDTO {
     // 危急值数据
     private NodeNeoDTO critical;
 
-    // 类型,例如:“化验”,“体征”
+    // 类型,例如:“化验”,“辅检”,“体征”
     private String type;
 
 }

+ 9 - 0
src/main/java/com/diagbot/enums/TypeEnum.java

@@ -41,6 +41,15 @@ public enum TypeEnum implements KeyedNamed {
         return null;
     }
 
+    public static TypeEnum getEnum(String value) {
+        for (TypeEnum item : TypeEnum.values()) {
+            if (item.getName().equals(value)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
     public static String getName(int key) {
         TypeEnum item = getEnum(key);
         return item != null ? item.name : null;

+ 2 - 1
src/main/java/com/diagbot/facade/CriticalFacade.java

@@ -28,7 +28,7 @@ public class CriticalFacade {
     CriticalProcess criticalProcess;
 
     /**
-     * 高风险提示
+     * 危急值提示
      * @param
      * @return
      */
@@ -64,6 +64,7 @@ public class CriticalFacade {
         criticalNeoVO.setSex(wordCrfDTO.getSex());
         criticalNeoVO.setVitalLabel(wordCrfDTO.getVitalLabel());
         criticalNeoVO.setLis(wordCrfDTO.getLis());
+        criticalNeoVO.setPacsLabel(wordCrfDTO.getPacsLabel());
 
 
         return criticalNeoVO;

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

@@ -219,22 +219,22 @@ public class BillProcess {
         List<BillMsg> billMsgList = new ArrayList<>();
         for (BillNeoMaxDTO bill : billNeoMaxDTOList) {
             // 性别
-            sexRule.compareSexWithBill(wordCrfDTO, bill, billMsgList, NeoEnum.gender.getName());
+            sexRule.bill(wordCrfDTO, bill, billMsgList, NeoEnum.gender.getName());
 
             // 年龄
-            ageRule.compareAgeWithBill(wordCrfDTO, bill, billMsgList, NeoEnum.ageNeoDTO.getName());
+            ageRule.bill(wordCrfDTO, bill, billMsgList, NeoEnum.ageNeoDTO.getName());
 
             // 诊断
             commonRule.compareItemWithBill(bill.getDisease(), diags, bill, billMsgList, NeoEnum.disease.getName());
 
             // 化验
-            lisRule.compareLisWithBill(wordCrfDTO.getLis(), bill, billMsgList, NeoEnum.lis.getName());
+            lisRule.bill(wordCrfDTO.getLis(), bill, billMsgList, NeoEnum.lis.getName());
 
             // 体征
-            vitalRule.compareVitalWithBill(wordCrfDTO.getVitalLabel(), bill, billMsgList, NeoEnum.vitals.getName());
+            vitalRule.bill(wordCrfDTO.getVitalLabel(), bill, billMsgList, NeoEnum.vitals.getName());
 
             // 辅检
-            pacsRule.comparePacsWithBill(bill.getPacs(), wordCrfDTO.getPacs(), bill, billMsgList, NeoEnum.pacs.getName());
+            pacsRule.bill(bill.getPacs(), wordCrfDTO.getPacs(), bill, billMsgList, NeoEnum.pacs.getName());
 
             // 临床表现
             commonRule.compareNameWithBill(bill.getClinicfindings(), clinicals, bill, billMsgList, NeoEnum.clinicfindings.getName());
@@ -243,13 +243,13 @@ public class BillProcess {
             commonRule.compareNameWithBill(bill.getOperations(), operations_all, bill, billMsgList, NeoEnum.operations.getName());
 
             // 禁忌过敏药品(既往史)
-            drugRule.compareDrugWithBill(bill.getAllergicmeds(), pastLabel.getAllergyMedicines(), bill, billMsgList, NeoEnum.allergicmeds.getName());
+            drugRule.bill(bill.getAllergicmeds(), pastLabel.getAllergyMedicines(), bill, billMsgList, NeoEnum.allergicmeds.getName());
 
             // 服用药品(现病史一般情况后的药品)
-            drugRule.compareDrugWithBill(bill.getOralmeds(), allergyAll, bill, billMsgList, NeoEnum.oralmeds.getName());
+            drugRule.bill(bill.getOralmeds(), allergyAll, bill, billMsgList, NeoEnum.oralmeds.getName());
 
             // 禁用人群
-            groupRule.compareGroupWithBill(wordCrfDTO, bill, billMsgList, NeoEnum.group.getName());
+            groupRule.bill(wordCrfDTO, bill, billMsgList, NeoEnum.group.getName());
 
             // 禁用辅助检查描述
             commonRule.compareItemWithBill(bill.getPacsDesc(), pacsDescList, bill, billMsgList, NeoEnum.pacsDesc.getName());

+ 18 - 20
src/main/java/com/diagbot/process/CriticalProcess.java

@@ -1,18 +1,16 @@
 package com.diagbot.process;
 
-import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.CriticalNeoDTO;
 import com.diagbot.dto.IndicationDTO;
-import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.enums.TypeEnum;
-import com.diagbot.util.CoreUtil;
-import com.diagbot.util.MsgUtil;
+import com.diagbot.rule.LisRule;
+import com.diagbot.rule.PacsRule;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.List;
-import java.util.Map;
 
 /**
  * @Description: 危急值总入口
@@ -22,30 +20,30 @@ import java.util.Map;
 @Component
 public class CriticalProcess {
 
+    @Autowired
+    LisRule lisRule;
+    @Autowired
+    PacsRule pacsRule;
+
     /**
      * 处理业务
+     *
      * @param criticalNeoDTOList
+     * @param wordCrfDTO
      * @param res
      */
     public void process(List<CriticalNeoDTO> criticalNeoDTOList, WordCrfDTO wordCrfDTO, IndicationDTO res) {
         List<BillMsg> criticalList = res.getCriticalValList();
         for (CriticalNeoDTO critical : criticalNeoDTOList) {
-            NodeNeoDTO nodeNeoDTO = critical.getCritical();
-            // 化验
-            if (TypeEnum.lis.getName().equals(critical.getType())) {
-                List<Lis> lisList = wordCrfDTO.getLis();
-                for (Lis bean : lisList) {
-                    if (critical.getStandname().equals(bean.getUniqueName())) {
-                        Map<String, Object> map = CoreUtil.compareLis(nodeNeoDTO, bean);
-                        if ((Boolean) map.get("flag") == true) {
-                            BillMsg criticalMsg = MsgUtil.getCommonCriticalMsg((String)map.get("msg"), TypeEnum.lis.getName());
-                            criticalList.add(criticalMsg);
-                        }
-                    }
-                }
+            switch (TypeEnum.getEnum(critical.getType())) {
+                case lis: // 化验
+                    lisRule.critical(wordCrfDTO, critical, criticalList);
+                    break;
+                case pacs: // 辅检
+                    pacsRule.critical(critical, criticalList);
+                    break;
             }
-
-            // TODO 体征
         }
+        res.setCriticalValList(criticalList);
     }
 }

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

@@ -25,7 +25,7 @@ public class AgeRule {
      * @param billNeoMaxDTO
      * @return
      */
-    public void compareAgeWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
+    public void bill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
         NodeNeoDTO ageNeoDTO = billNeoMaxDTO.getAgeNeoDTO();
         Boolean flag = false;
         if (ageNeoDTO != null && wordCrfDTO.getAge() != null) {

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

@@ -36,7 +36,7 @@ public class DrugRule {
      * @param inputList
      * @return
      */
-    public <T> void compareDrugWithBill(List<NodeNeoDTO> drugList, List<T> inputList, BillNeoMaxDTO billNeoMaxDTO,
+    public <T> void bill(List<NodeNeoDTO> drugList, List<T> inputList, BillNeoMaxDTO billNeoMaxDTO,
                                                List<BillMsg> billMsgList, String type) {
         Map<String, String> old_stand = new HashMap<>();
         if (ListUtil.isNotEmpty(drugList) && ListUtil.isNotEmpty(inputList)) {

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

@@ -25,7 +25,7 @@ public class GroupRule {
      * @param billNeoMaxDTO
      * @return
      */
-    public void compareGroupWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
+    public void bill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
         List<NodeNeoDTO> group = billNeoMaxDTO.getGroup();
         for (NodeNeoDTO node : group) {
             // 妊娠目前从诊断里判断,包含“妊娠”

+ 25 - 2
src/main/java/com/diagbot/rule/LisRule.java

@@ -3,7 +3,10 @@ package com.diagbot.rule;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillNeoMaxDTO;
+import com.diagbot.dto.CriticalNeoDTO;
 import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.enums.TypeEnum;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.MsgUtil;
@@ -22,13 +25,13 @@ import java.util.Map;
 public class LisRule {
 
     /**
-     * 比较化验
+     * 比较化验——开单合理性
      *
      * @param inputLis
      * @param billNeoMaxDTO
      * @return
      */
-    public void compareLisWithBill(List<Lis> inputLis, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
+    public void bill(List<Lis> inputLis, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
         List<NodeNeoDTO> neoList = billNeoMaxDTO.getLis();
         if(ListUtil.isNotEmpty(neoList) && ListUtil.isNotEmpty(inputLis)){
             for (NodeNeoDTO neo : neoList) {
@@ -46,4 +49,24 @@ public class LisRule {
             }
         }
     }
+
+    /**
+     * 比较化验——危急值
+     *
+     * @param wordCrfDTO
+     * @param critical
+     */
+    public void critical(WordCrfDTO wordCrfDTO, CriticalNeoDTO critical, List<BillMsg> criticalList) {
+        List<Lis> lisList = wordCrfDTO.getLis();
+        NodeNeoDTO nodeNeoDTO = critical.getCritical();
+        for (Lis bean : lisList) {
+            if (critical.getStandname().equals(bean.getUniqueName())) {
+                Map<String, Object> map = CoreUtil.compareLis(nodeNeoDTO, bean);
+                if ((Boolean) map.get("flag") == true) {
+                    BillMsg criticalMsg = MsgUtil.getCommonCriticalMsg((String) map.get("msg"), TypeEnum.lis.getName());
+                    criticalList.add(criticalMsg);
+                }
+            }
+        }
+    }
 }

+ 29 - 15
src/main/java/com/diagbot/rule/PacsRule.java

@@ -2,7 +2,9 @@ package com.diagbot.rule;
 
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillNeoMaxDTO;
+import com.diagbot.dto.CriticalNeoDTO;
 import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.enums.TypeEnum;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.MsgUtil;
@@ -21,32 +23,44 @@ import java.util.stream.Collectors;
  */
 @Component
 public class PacsRule {
+
     /**
-     * 比较辅检
+     * 比较辅检——开单合理性
      *
-     * @param drugLis
-     * @param inputLis
+     * @param nodeList
+     * @param inputList
      * @return
      */
-    public <T> void comparePacsWithBill(List<NodeNeoDTO> drugLis, List<T> inputLis, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
-        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) && dl.contains(val)){
-                    old_stand.put(val_name,val);
+    public <T> void bill(List<NodeNeoDTO> nodeList, List<T> inputList, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
+        Map<String, String> old_stand = new HashMap<>();
+        if (ListUtil.isNotEmpty(nodeList) && ListUtil.isNotEmpty(inputList)) {
+            List<String> dl = nodeList.stream().map(x -> x.getName()).collect(Collectors.toList());
+            for (T lis : inputList) {
+                String val = (String) CoreUtil.getFieldValue(lis, "uniqueName");
+                String val_name = (String) CoreUtil.getFieldValue(lis, "name");
+                if (StringUtils.isNotBlank(val) && dl.contains(val)) {
+                    old_stand.put(val_name, val);
                 }
             }
         }
-        if(old_stand.size() > 0){
-            for (Map.Entry<String,String> d: old_stand.entrySet()) {
+        if (old_stand.size() > 0) {
+            for (Map.Entry<String, String> d : old_stand.entrySet()) {
                 BillMsg commonBillMsg = MsgUtil.getCommonBillMsg(
-                        billNeoMaxDTO.getOrderName(),billNeoMaxDTO.getOrderStandName(),
+                        billNeoMaxDTO.getOrderName(), billNeoMaxDTO.getOrderStandName(),
                         "已开" + d.getKey(), type, billNeoMaxDTO.getType());
                 billMsgList.add(commonBillMsg);
             }
         }
     }
+
+    /**
+     * 比较辅检——危急值
+     *
+     * @param critical
+     * @param criticalList
+     */
+    public void critical(CriticalNeoDTO critical, List<BillMsg> criticalList) {
+        BillMsg commonBillMsg = MsgUtil.getCommonCriticalMsg(critical.getName(), TypeEnum.pacs.getName());
+        criticalList.add(commonBillMsg);
+    }
 }

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

@@ -25,7 +25,7 @@ public class SexRule {
      * @param billNeoMaxDTO
      * @return
      */
-    public void compareSexWithBill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
+    public void bill(WordCrfDTO wordCrfDTO, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
         NodeNeoDTO nodeNeoDTO = billNeoMaxDTO.getGender();
         if (nodeNeoDTO != null && StringUtil.isNotBlank(nodeNeoDTO.getName()) && wordCrfDTO.getSex() != null) {
             String sex = nodeNeoDTO.getName();

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

@@ -29,7 +29,7 @@ public class VitalRule {
      * @param type 类型
      * @return
      */
-    public void compareVitalWithBill(VitalLabel vitalLabel, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
+    public void bill(VitalLabel vitalLabel, BillNeoMaxDTO billNeoMaxDTO, List<BillMsg> billMsgList, String type) {
         List<NodeNeoDTO> neoList = billNeoMaxDTO.getVitals();
         if(ListUtil.isNotEmpty(neoList)){
             for (NodeNeoDTO neo : neoList) {

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

@@ -19,6 +19,9 @@ public class MsgUtil {
     public static BillMsg getCommonCriticalMsg(String content, String type) {
         BillMsg billMsg = new BillMsg();
         String msg = String.format("该患者%s,请留意", content);
+        if (TypeEnum.pacs.getName().equals(type)) {
+            msg = String.format("该患者检查结果%s,请留意", content);
+        }
         billMsg.setMsg(msg);
         billMsg.setType(type);
         billMsg.setContent(content);

+ 4 - 2
src/main/java/com/diagbot/vo/CriticalNeoVO.java

@@ -1,13 +1,12 @@
 package com.diagbot.vo;
 
 import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.model.label.PacsLabel;
 import com.diagbot.model.label.VitalLabel;
 import lombok.Data;
 
 import java.util.ArrayList;
-import java.util.HashMap;
 import java.util.List;
-import java.util.Map;
 
 @Data
 public class CriticalNeoVO {
@@ -24,4 +23,7 @@ public class CriticalNeoVO {
     // 化验项目和结果
     private List<Lis> lis = new ArrayList<>();
 
+    // 辅检结果
+    private PacsLabel pacsLabel = new PacsLabel();
+
 }