Browse Source

Merge branch 'develop' into dev/mapping_20210824

gaodm 3 years ago
parent
commit
92f308e427

+ 2 - 4
src/main/java/com/diagbot/dto/BaseDiagnoseDTO.java

@@ -1,15 +1,13 @@
 package com.diagbot.dto;
 
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
 
 /**
  * @Description:
  * @author: gaodm
  * @time: 2021/3/15 10:49
  */
-@Getter
-@Setter
+@Data
 public class BaseDiagnoseDTO {
 
     /**

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

@@ -4,7 +4,12 @@ import com.diagbot.biz.push.entity.Item;
 import com.diagbot.biz.push.entity.Lis;
 import com.diagbot.client.CRFServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.*;
+import com.diagbot.dto.BillMsg;
+import com.diagbot.dto.RuleDTO;
+import com.diagbot.dto.RuleExtDTO;
+import com.diagbot.dto.StandConvertCrfBatchDTO;
+import com.diagbot.dto.StandConvertCrfDTO;
+import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.RedisEnum;
@@ -12,15 +17,38 @@ import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.model.ai.AIAnalyze;
+import com.diagbot.model.entity.BodyPart;
+import com.diagbot.model.entity.Clinical;
+import com.diagbot.model.entity.Modification;
 import com.diagbot.model.entity.Operation;
-import com.diagbot.model.entity.*;
-import com.diagbot.model.label.*;
+import com.diagbot.model.entity.Pacs;
+import com.diagbot.model.entity.Vital;
+import com.diagbot.model.label.ChiefLabel;
+import com.diagbot.model.label.DiagLabel;
+import com.diagbot.model.label.PacsLabel;
+import com.diagbot.model.label.PastLabel;
+import com.diagbot.model.label.PresentLabel;
+import com.diagbot.model.label.VitalLabel;
 import com.diagbot.rule.CommonRule;
-import com.diagbot.util.*;
-import com.diagbot.vo.*;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.CoreUtil;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RedisUtil;
+import com.diagbot.util.ReflectUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.NeoPushVO;
+import com.diagbot.vo.RuleVO;
+import com.diagbot.vo.SearchData;
+import com.diagbot.vo.StandConvert;
+import com.diagbot.vo.StandConvertCrfVO;
+import com.diagbot.vo.neoPushEntity.ChiefPushVo;
 import com.diagbot.vo.neoPushEntity.Diag;
+import com.diagbot.vo.neoPushEntity.DiagVo;
 import com.diagbot.vo.neoPushEntity.Drug;
-import com.diagbot.vo.neoPushEntity.*;
+import com.diagbot.vo.neoPushEntity.LisPushVo;
+import com.diagbot.vo.neoPushEntity.PacsPushVo;
+import com.diagbot.vo.neoPushEntity.PresentPushVo;
+import com.diagbot.vo.neoPushEntity.Symptom;
 import com.google.common.collect.Lists;
 import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
@@ -30,7 +58,11 @@ import org.springframework.stereotype.Component;
 
 import java.lang.reflect.Method;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 import java.util.stream.Collectors;
 
 /**
@@ -749,6 +781,7 @@ public class CommonFacade {
         if (ListUtil.isNotEmpty(lisHisNameList)) {
             Map<String, Map<String, Map<String, List<String>>>> lisConfigMap = mappingConfigFacade.groupByHisNameWithName(lisHisNameList, ConceptTypeEnum.LisPack.getKey(), wordCrfDTO.getHospitalId());
             setListProperty(wordCrfDTO, "lis", ConceptTypeEnum.LisPack.getKey(), "UniqueName", lisConfigMap);
+            setListProperty(wordCrfDTO, "lisOrder", ConceptTypeEnum.LisPack.getKey(), "UniqueName", lisConfigMap);
         }
 
     }
@@ -884,7 +917,6 @@ public class CommonFacade {
                                     retList.add(o);
                                 }
                             }
-
                         } else {
                             List<String> standNames = new ArrayList<>(subMap.get(hisDetailName).keySet());
                             for (String stdName : standNames) {
@@ -896,16 +928,11 @@ public class CommonFacade {
                             }
                         }
                     } else {
+                        setUniqueNameNoMapping(item, propertyName, name, hisDetailName);
                         retList.add(item);
                     }
                 } else {
-                    if (propertyName.equals("UniqueName")) {
-                        if (StringUtil.isNotBlank(hisDetailName)) {
-                            BeanUtils.copyProperty(item, "uniqueName", hisDetailName);
-                        } else {
-                            BeanUtils.copyProperty(item, "uniqueName", name);
-                        }
-                    }
+                    setUniqueNameNoMapping(item, propertyName, name, hisDetailName);
                     retList.add(item);
                 }
             }
@@ -915,6 +942,28 @@ public class CommonFacade {
         return retList;
     }
 
+    /**
+     * 映射没找到,如果有细项,就用细项;无细项用套餐
+     *
+     * @param item
+     * @param propertyName
+     * @param name
+     * @param detailName
+     */
+    public <T> void setUniqueNameNoMapping(T item, String propertyName, String name, String detailName) {
+        try {
+            if (propertyName.equals("UniqueName")) {
+                if (StringUtil.isNotBlank(detailName)) {
+                    BeanUtils.copyProperty(item, "uniqueName", detailName);
+                } else {
+                    BeanUtils.copyProperty(item, "uniqueName", name);
+                }
+            }
+        } catch (Exception e) {
+
+        }
+    }
+
     /**
      * 生成给图谱的入参(推送)
      */

+ 20 - 6
src/main/java/com/diagbot/facade/KlConceptStaticFacade.java

@@ -49,6 +49,7 @@ import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.Arrays;
+import java.util.Comparator;
 import java.util.Date;
 import java.util.HashMap;
 import java.util.List;
@@ -339,6 +340,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
 
     /**
      * 静态知识检索-分页返回
+     *
      * @param staticKnowledgeIndexPageVO
      * @return
      */
@@ -418,7 +420,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         List<KlConceptScale> scaleDetails = klConceptScaleFacade.list(new QueryWrapper<KlConceptScale>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .in("concept_id", conceptIds)
-                .orderByAsc("concept_id", "parent_id", "order_no"));
+                .orderByAsc("text_type", "group_num", "order_no"));
         Map<Long, List<KlConceptScale>> scaleDetailMap = scaleDetails.stream()
                 .collect(Collectors.groupingBy(KlConceptScale::getConceptId));
 
@@ -840,6 +842,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
 
     /**
      * 获取量表结构
+     *
      * @param conceptId
      * @return
      */
@@ -848,21 +851,21 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         List<KlConceptScale> scaleList = klConceptScaleFacade.list(new QueryWrapper<KlConceptScale>()
                 .eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("concept_id", conceptId)
-                .orderByAsc("parent_id", "order_no"));
+                .orderByAsc("text_type", "group_num", "order_no"));
         if (ListUtil.isEmpty(scaleList)) {
             return null;
         }
         List<ConceptScaleDetailDTO> scaleDetailList = BeanUtil.listCopyTo(scaleList, ConceptScaleDetailDTO.class);
         if (null != scaleVO) {
             List<String> codeList = new ArrayList<>();
-            codeList= scaleDetailList.stream().filter(s -> StringUtils.isNotBlank(s.getRuleCode())).map(ac -> ac.getRuleCode()).collect(Collectors.toList());
+            codeList = scaleDetailList.stream().filter(s -> StringUtils.isNotBlank(s.getRuleCode())).map(ac -> ac.getRuleCode()).collect(Collectors.toList());
             scaleVO.setCodeList(codeList);
             ScaleDTO scaleDTO = klRegulationBaseFacade.process(scaleVO);
             List<String> codeListNew = scaleDTO.getCodeList(); //Arrays.asList("100001", "100013");
             if (ListUtil.isNotEmpty(codeListNew)) {
                 for (String str : codeListNew) {
                     for (ConceptScaleDetailDTO data2 : scaleDetailList) {
-                        if (null!=data2.getRuleCode()&&data2.getRuleCode().equals(str)) {
+                        if (null != data2.getRuleCode() && data2.getRuleCode().equals(str)) {
                             data2.setMatch(1);
                         }
                     }
@@ -879,7 +882,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
             if (ListUtil.isNotEmpty(codeListNew)) {
                 for (String str : codeListNew) {
                     for (ConceptScaleDetailDTO data2 : scaleDetailList) {
-                        if (null!=data2.getRuleCode()&&data2.getRuleCode().equals(str)) {
+                        if (null != data2.getRuleCode() && data2.getRuleCode().equals(str)) {
                             data2.setMatch(1);
                         }
                     }
@@ -888,7 +891,7 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         }
 
         Map<Long, List<ConceptScaleDetailDTO>> parentMap
-                = scaleDetailList.stream().collect(Collectors.groupingBy(ConceptScaleDetailDTO::getParentId));
+                = scaleDetailList.stream().sorted(Comparator.comparing(ConceptScaleDetailDTO::getTextType).thenComparing(ConceptScaleDetailDTO::getGroupNum)).collect(Collectors.groupingBy(ConceptScaleDetailDTO::getParentId));
         List<ConceptScaleDetailDTO> retScacleDetailList = parentMap.get(-1L);
         if (ListUtil.isEmpty(retScacleDetailList)) {
             return null;
@@ -905,13 +908,24 @@ public class KlConceptStaticFacade extends KlConceptStaticServiceImpl {
         for (ConceptScaleSubDTO subDTO : retList) {
             scaleRecursion(subDTO, parentMap);
         }
+        //排序
+        for (ConceptScaleSubDTO data : retList) {
+            if (ListUtil.isNotEmpty(data.getDetailList())) {
+                for (ConceptScaleDetailDTO datasub : data.getDetailList()) {
+                    if (ListUtil.isNotEmpty(datasub.getSubList())) {
+                        datasub.setSubList(datasub.getSubList().stream().sorted(Comparator.comparing(ConceptScaleSubDTO::getGroupNum)).collect(Collectors.toList()));
+                    }
 
+                }
+            }
+        }
         retDTO.setScaleDetails(retList);
         return retDTO;
     }
 
     /**
      * 递归
+     *
      * @param item
      * @param treeMap
      */

+ 1 - 1
src/main/java/com/diagbot/facade/KlDiagnoseImportFacade.java

@@ -115,7 +115,7 @@ public class KlDiagnoseImportFacade {
     public Boolean verifyData(MultipartFile file, DiagnoseImportVO diagnoseImportVO, Map<String, Object> diagMessage, List<ImportDiagnoseResVO> allData) {
         Boolean allFlag = true;
         List<String> diagtypes = Lists.newArrayList("拟诊", "确诊", "警惕");
-        List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病", "人群", "辅助检查结果");
+        List<String> splitType = Lists.newArrayList("症状", "体格检查结果", "疾病", "人群", "辅助检查结果", "实验室检查子项目");
         // 获取标准词库Map
         Map<String, KlConcept> concept_map = getConceptMap();
 

+ 2 - 1
src/main/java/com/diagbot/util/MsgNewUtil.java

@@ -59,7 +59,8 @@ public class MsgNewUtil {
 
         // 放到最后统一替换【多处匹配】
         msg = msg.replaceAll("\\[匹配内容]", content);
-        msg = msg.replaceAll("\\[开单名称]", orderName);
+        String orderNameNew = orderName.replaceAll("\\\\","\\\\\\\\"); // 防止开单名称中有\\
+        msg = msg.replaceAll("\\[开单名称]", orderNameNew);
         msg = msg.replaceAll("\\[项目名称]", structName);
         billMsg.setMsg(msg);
         billMsg.setOrderName(orderName);