ソースを参照

Merge branch 'develop' into dev/diagnose20210315

gaodm 4 年 前
コミット
b23de6d22d
24 ファイル変更590 行追加338 行削除
  1. 1 1
      cdssman-service/src/main/java/com/diagbot/dto/KlConceptInfoDTO.java
  2. 1 0
      cdssman-service/src/main/java/com/diagbot/dto/RuleDTO.java
  3. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/DeptConfig.java
  4. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/DiseaseConfig.java
  5. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/DrugConfig.java
  6. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/LisConfig.java
  7. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/OperationConfig.java
  8. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/PacsConfig.java
  9. 1 1
      cdssman-service/src/main/java/com/diagbot/entity/TransfusionConfig.java
  10. 52 0
      cdssman-service/src/main/java/com/diagbot/facade/DrugConfigFacade.java
  11. 47 8
      cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java
  12. 368 305
      cdssman-service/src/main/java/com/diagbot/facade/MedRuleConvertFacade.java
  13. 14 8
      cdssman-service/src/main/java/com/diagbot/facade/MedSearchDataFacade.java
  14. 2 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlConceptMapper.java
  15. 6 2
      cdssman-service/src/main/java/com/diagbot/mapper/KlLibraryInfoMapper.java
  16. 2 0
      cdssman-service/src/main/java/com/diagbot/service/KlConceptService.java
  17. 5 2
      cdssman-service/src/main/java/com/diagbot/service/KlLibraryInfoService.java
  18. 5 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlConceptServiceImpl.java
  19. 8 2
      cdssman-service/src/main/java/com/diagbot/service/impl/KlLibraryInfoServiceImpl.java
  20. 6 1
      cdssman-service/src/main/java/com/diagbot/vo/KlConceptInfoVO.java
  21. 16 0
      cdssman-service/src/main/java/com/diagbot/vo/KlLibraryInfoVO.java
  22. 32 0
      cdssman-service/src/main/resources/mapper/KlConceptMapper.xml
  23. 14 0
      cdssman-service/src/main/resources/mapper/KlLibraryInfoMapper.xml
  24. 4 2
      cdssman-service/src/main/resources/mapper/KlRuleMapper.xml

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/dto/KlConceptInfoDTO.java

@@ -15,7 +15,7 @@ import java.util.Date;
 public class KlConceptInfoDTO {
     private Long  conceptId;
     private String libName;
-    private String libType;
+    private Integer libType;
     private String typeName;
     private String synonymName;
     private Integer status;

+ 1 - 0
cdssman-service/src/main/java/com/diagbot/dto/RuleDTO.java

@@ -12,6 +12,7 @@ import lombok.Setter;
 @Setter
 public class RuleDTO {
     private Long ruleOrderNo;
+    private Integer ruleType;
     private Integer ruleLibType;
     private String ruleLibTypeName;
     private String ruleLibName;

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/DeptConfig.java

@@ -31,7 +31,7 @@ public class DeptConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/DiseaseConfig.java

@@ -26,7 +26,7 @@ public class DiseaseConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/DrugConfig.java

@@ -28,7 +28,7 @@ public class DrugConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/LisConfig.java

@@ -30,7 +30,7 @@ public class LisConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/OperationConfig.java

@@ -26,7 +26,7 @@ public class OperationConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/PacsConfig.java

@@ -26,7 +26,7 @@ public class PacsConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 1 - 1
cdssman-service/src/main/java/com/diagbot/entity/TransfusionConfig.java

@@ -26,7 +26,7 @@ public class TransfusionConfig implements Serializable {
     /**
      * 主键
      */
-    @TableId(value = "id", type = IdType.AUTO)
+    @TableId(value = "id", type = IdType.INPUT)
     private Long id;
 
     /**

+ 52 - 0
cdssman-service/src/main/java/com/diagbot/facade/DrugConfigFacade.java

@@ -458,6 +458,58 @@ public class DrugConfigFacade {
         return retMap;
     }
 
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return Map<uniqueName,Map<form,Map<hisName,List<id>>>>
+     */
+    public Map<String, Map<String,Map<String, List<Long>>>> getUniqueFormConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Map<String, List<Long>>>> retMap = new HashMap<>();
+        QueryWrapper<DrugConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<DrugConfig> records = drugConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+
+        records.forEach(record -> {
+            if (StringUtil.isBlank(record.getForm())) {
+                record.setForm("");
+            }
+        });
+
+        Map<String, List<DrugConfig>> uniqueNameMap = EntityUtil.makeEntityListMap(records, "uniqueName");
+        for (Map.Entry<String, List<DrugConfig>> entry : uniqueNameMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, Map<String, List<Long>>> subMap = new HashMap<>();
+                Map<String, List<DrugConfig>> hisNameMap
+                        = EntityUtil.makeEntityListMap(entry.getValue(), "form");
+                for (Map.Entry<String, List<DrugConfig>> hisEntry : hisNameMap.entrySet()) {
+                    if (ListUtil.isNotEmpty(hisEntry.getValue())) {
+                        Map<String, List<DrugConfig>> thirdMap = EntityUtil.makeEntityListMap(hisEntry.getValue(), "hisName");
+                        Map<String, List<Long>> idMap = new HashMap<>();
+                        for (Map.Entry<String, List<DrugConfig>> thirdEntry : thirdMap.entrySet()) {
+                            idMap.put(thirdEntry.getKey(), thirdEntry.getValue().stream().map(i -> i.getId()).distinct().collect(Collectors.toList()));
+                        }
+                        subMap.put(hisEntry.getKey(), idMap);
+                    }
+                }
+                retMap.put(entry.getKey(), subMap);
+            }
+        }
+        return retMap;
+    }
+
     /**
      * 获取映射关系-公表名
      *

+ 47 - 8
cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -37,6 +37,7 @@ import com.diagbot.vo.KlConceptInfoVO;
 import com.diagbot.vo.KlConceptSatarOrdisaVO;
 import com.diagbot.vo.KlConceptSaveSubVO;
 import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.KlLibraryInfoVO;
 import com.diagbot.vo.SearchConceptVO;
 import com.google.common.collect.Lists;
 import org.apache.commons.lang3.StringUtils;
@@ -88,14 +89,52 @@ public class KlConceptFacade extends KlConceptServiceImpl {
      * @return
      */
     public IPage<KlConceptInfoDTO> getConceptInfoPage(KlConceptInfoVO klConceptInfoVO) {
-        IPage<KlConceptInfoDTO> conceptPage = getConceptPage(klConceptInfoVO);
-        List<String> userIds = conceptPage.getRecords().stream()
-                .map(i -> i.getModifierId()).distinct().collect(Collectors.toList());
-        RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(userIds);
-        RespDTOUtil.respNGDealCover(respDTO, "获取用户信息失败");
-        conceptPage.getRecords().forEach(i -> {
-            i.setModifierName(respDTO.data.get(i.getModifierId()));
-        });
+        if (StringUtil.isNotBlank(klConceptInfoVO.getSynonymName())) {
+            KlLibraryInfoVO klLibraryInfoVO = new KlLibraryInfoVO();
+            BeanUtil.copyProperties(klConceptInfoVO, klLibraryInfoVO);
+            List<Long> conceptIdList = klLibraryInfoFacade.getLib(klLibraryInfoVO)
+                    .stream().map(KlLibraryInfo::getConceptId).distinct().collect(Collectors.toList());
+            if (ListUtil.isEmpty(conceptIdList)) {
+                conceptIdList.add(-999999999L);
+            }
+            klConceptInfoVO.setConceptIdList(conceptIdList);
+        }
+        IPage<KlConceptInfoDTO> conceptPage = this.getConceptPage2(klConceptInfoVO);
+
+        if (ListUtil.isNotEmpty(conceptPage.getRecords())) {
+            //获取用户
+            List<String> userIds = conceptPage.getRecords().stream()
+                    .map(KlConceptInfoDTO::getModifierId).distinct().collect(Collectors.toList());
+            RespDTO<Map<String, String>> respDTO = userServiceClient.getUserInfoByIds(userIds);
+            RespDTOUtil.respNGDealCover(respDTO, "获取用户信息失败");
+            //获取同义词
+            List<Long> conceptIds = conceptPage.getRecords().stream()
+                    .map(KlConceptInfoDTO::getConceptId).distinct().collect(Collectors.toList());
+            QueryWrapper<KlLibraryInfo> qw = new QueryWrapper<>();
+            qw.in("concept_id", conceptIds)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .orderByDesc("concept_id")
+                    .orderByDesc("is_concept");
+            Map<Long, List<KlLibraryInfo>> libMap = klLibraryInfoFacade.list(qw)
+                    .stream().collect(Collectors.groupingBy(KlLibraryInfo::getConceptId));
+            //获取类型
+            List<Integer> libTypes = conceptPage.getRecords().stream()
+                    .map(KlConceptInfoDTO::getLibType).distinct().collect(Collectors.toList());
+            QueryWrapper<KlLexicon> qwLib = new QueryWrapper<>();
+            qwLib.in("code", libTypes)
+                    .eq("is_deleted", IsDeleteEnum.N.getKey());
+            Map<Integer, String> lexiconMap = klLexiconFacade.list(qwLib)
+                    .stream().collect(Collectors.toMap(KlLexicon::getCode, KlLexicon::getName));
+            //组装结果
+            conceptPage.getRecords().forEach(i -> {
+                i.setTypeName(lexiconMap.get(i.getLibType()));
+                i.setSynonymName(libMap.get(i.getConceptId())
+                        .stream()
+                        .map(KlLibraryInfo::getName)
+                        .collect(Collectors.joining("、")));
+                i.setModifierName(respDTO.data.get(i.getModifierId()));
+            });
+        }
         return conceptPage;
     }
 

ファイルの差分が大きいため隠しています
+ 368 - 305
cdssman-service/src/main/java/com/diagbot/facade/MedRuleConvertFacade.java


+ 14 - 8
cdssman-service/src/main/java/com/diagbot/facade/MedSearchDataFacade.java

@@ -168,11 +168,6 @@ public class MedSearchDataFacade {
                     pacs.setName("胸部CT");
                     pacs.setUniqueName("胸部CT");
                     String pacsResult = result.getRuleLibName();
-                    /*if (result.getHasSubCond().equals(1)
-                            && result.getRuleBaseLibType().equals(LexiconEnum.PacsResult.getKey())
-                            && result.getRuleBaseType().equals(RuleBaseTypeEnum.Eq.getKey())) {
-                        pacsResult += "," + result.getRuleBaseLibName();
-                    }*/
                     pacs.setDesc(pacsResult);
                     pacs.setResult(pacsResult);
                     indicationPushVO.getPacs().add(pacs);
@@ -237,9 +232,20 @@ public class MedSearchDataFacade {
                     }
                 } else if (result.getRuleBaseLibType().equals(LexiconEnum.Vital.getKey())) {
                     if (result.getRuleBaseType().equals(RuleBaseTypeEnum.Compare.getKey())) {
-                        indicationPushVO.setVital(result.getRuleBaseLibName() + result.getRuleBaseInputValue()
-                                + (StringUtil.isNotBlank(result.getRuleBaseUnit()) ? result.getRuleBaseUnit() : "")
-                                + ",");
+                        String content = "";
+                        if (result.getRuleBaseLibName().equals("收缩压")) {
+                            content = "血压" + result.getRuleBaseInputValue() + "/80";
+                        } else if (result.getRuleBaseLibName().equals("舒张压")) {
+                            content = "血压120/" + result.getRuleBaseInputValue();
+                        } else if (result.getRuleBaseLibName().equals("体温")) {
+                            content = result.getRuleBaseLibName() + result.getRuleBaseInputValue() + (StringUtil.isBlank(result.getRuleBaseUnit()) ? "℃" : "");
+                        } else {
+                            content = result.getRuleBaseLibName() + result.getRuleBaseInputValue();
+                        }
+                        if (StringUtil.isNotBlank(result.getRuleBaseUnit())) {
+                            content += result.getRuleBaseUnit();
+                        }
+                        indicationPushVO.setVital(content);
                     }
                 } else if (result.getRuleBaseLibType().equals(LexiconEnum.VitalResult.getKey())) {
                     if (result.getRuleBaseType().equals(RuleBaseTypeEnum.Eq.getKey())) {

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/mapper/KlConceptMapper.java

@@ -23,4 +23,6 @@ public interface KlConceptMapper extends BaseMapper<KlConcept> {
     IPage<KlConceptInfoDTO> getConceptPage(KlConceptInfoVO klConceptInfoVO);
 
     List<KlConceptAllDTO> getConceptAll(KlConceptAllVO klConceptAllVO);
+
+    IPage<KlConceptInfoDTO> getConceptPage2(KlConceptInfoVO klConceptInfoVO);
 }

+ 6 - 2
cdssman-service/src/main/java/com/diagbot/mapper/KlLibraryInfoMapper.java

@@ -1,7 +1,11 @@
 package com.diagbot.mapper;
 
-import com.diagbot.entity.KlLibraryInfo;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.KlLibraryInfo;
+import com.diagbot.vo.KlConceptInfoVO;
+import com.diagbot.vo.KlLibraryInfoVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +16,5 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  * @since 2021-03-01
  */
 public interface KlLibraryInfoMapper extends BaseMapper<KlLibraryInfo> {
-
+    List<KlLibraryInfo> getLib(KlLibraryInfoVO klLibraryInfoVO);
 }

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/service/KlConceptService.java

@@ -22,4 +22,6 @@ import java.util.List;
 public interface KlConceptService extends IService<KlConcept> {
     public IPage<KlConceptInfoDTO> getConceptPage(KlConceptInfoVO klConceptInfoVO);
     public List<KlConceptAllDTO> getConceptAll(KlConceptAllVO klConceptAllVO);
+
+    IPage<KlConceptInfoDTO> getConceptPage2(KlConceptInfoVO klConceptInfoVO);
 }

+ 5 - 2
cdssman-service/src/main/java/com/diagbot/service/KlLibraryInfoService.java

@@ -1,7 +1,10 @@
 package com.diagbot.service;
 
-import com.diagbot.entity.KlLibraryInfo;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.KlLibraryInfo;
+import com.diagbot.vo.KlLibraryInfoVO;
+
+import java.util.List;
 
 /**
  * <p>
@@ -12,5 +15,5 @@ import com.baomidou.mybatisplus.extension.service.IService;
  * @since 2021-03-01
  */
 public interface KlLibraryInfoService extends IService<KlLibraryInfo> {
-
+    List<KlLibraryInfo> getLib(KlLibraryInfoVO klLibraryInfoVO);
 }

+ 5 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlConceptServiceImpl.java

@@ -35,4 +35,9 @@ public class KlConceptServiceImpl extends ServiceImpl<KlConceptMapper, KlConcept
     public List<KlConceptAllDTO> getConceptAll(KlConceptAllVO klConceptAllVO) {
         return baseMapper.getConceptAll(klConceptAllVO);
     }
+
+    @Override
+    public IPage<KlConceptInfoDTO> getConceptPage2(KlConceptInfoVO klConceptInfoVO){
+        return baseMapper.getConceptPage2(klConceptInfoVO);
+    }
 }

+ 8 - 2
cdssman-service/src/main/java/com/diagbot/service/impl/KlLibraryInfoServiceImpl.java

@@ -1,12 +1,15 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.entity.KlLibraryInfo;
 import com.diagbot.mapper.KlLibraryInfoMapper;
 import com.diagbot.service.KlLibraryInfoService;
-import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.KlLibraryInfoVO;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 术语表 服务实现类
@@ -18,5 +21,8 @@ import org.springframework.stereotype.Service;
 @Service
 @DS("med")
 public class KlLibraryInfoServiceImpl extends ServiceImpl<KlLibraryInfoMapper, KlLibraryInfo> implements KlLibraryInfoService {
-
+    @Override
+    public List<KlLibraryInfo> getLib(KlLibraryInfoVO klLibraryInfoVO) {
+        return baseMapper.getLib(klLibraryInfoVO);
+    }
 }

+ 6 - 1
cdssman-service/src/main/java/com/diagbot/vo/KlConceptInfoVO.java

@@ -1,9 +1,12 @@
 package com.diagbot.vo;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import java.util.List;
+
 /**
  * @author wangfeng
  * @Description:
@@ -13,7 +16,9 @@ import lombok.Setter;
 @Getter
 public class KlConceptInfoVO extends Page {
     private String libName;
-    private String libType;
+    private Integer libType;
     private String synonymName;
     private Integer status;
+    @ApiModelProperty(hidden = true)
+    List<Long> conceptIdList;
 }

+ 16 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlLibraryInfoVO.java

@@ -0,0 +1,16 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description:
+ * @date 2021-03-01 13:25
+ */
+@Setter
+@Getter
+public class KlLibraryInfoVO {
+    private Integer libType;
+    private String synonymName;
+}

+ 32 - 0
cdssman-service/src/main/resources/mapper/KlConceptMapper.xml

@@ -94,4 +94,36 @@
         </if>
         ORDER BY a.is_concept DESC
     </select>
+
+    <select id="getConceptPage2"
+            parameterType="com.diagbot.vo.KlConceptInfoVO" resultType="com.diagbot.dto.KlConceptInfoDTO">
+        SELECT
+        b.id AS conceptId,
+        b.lib_name as libName,
+        b.lib_type as libType,
+        "" AS typeName,
+        "" AS synonymName,
+        b.status,
+        b.modifier AS modifierId,
+        b.gmt_modified as gmtModified
+        FROM
+        kl_concept b
+        WHERE b.is_deleted = 'N'
+        <if test="libType != null">
+            AND b.lib_type = #{libType}
+        </if>
+        <if test="libName!=null and libName!=''">
+            AND UPPER(b.lib_name) LIKE CONCAT('%', UPPER(trim(#{libName})), '%')
+        </if>
+        <if test="status != null">
+            AND b.status = #{status}
+        </if>
+        <if test="conceptIdList != null and conceptIdList.size > 0">
+            and b.id in
+            <foreach item="conceptId" collection="conceptIdList" open="(" separator="," close=")">
+                #{conceptId}
+            </foreach>
+        </if>
+        ORDER BY b.status DESC ,b.gmt_modified DESC,b.id DESC
+    </select>
 </mapper>

+ 14 - 0
cdssman-service/src/main/resources/mapper/KlLibraryInfoMapper.xml

@@ -18,4 +18,18 @@
         <result column="remark" property="remark" />
     </resultMap>
 
+    <select id="getLib"
+            parameterType="com.diagbot.vo.KlLibraryInfoVO" resultType="com.diagbot.entity.KlLibraryInfo">
+        SELECT
+        *
+        FROM
+        kl_library_info a
+        WHERE a.is_deleted = 'N'
+        <if test="libType != null">
+            AND a.type_id = #{libType}
+        </if>
+        <if test="synonymName!=null and synonymName!=''">
+            AND UPPER(a.name) LIKE CONCAT('%', UPPER(trim(#{synonymName})), '%')
+        </if>
+    </select>
 </mapper>

+ 4 - 2
cdssman-service/src/main/resources/mapper/KlRuleMapper.xml

@@ -20,6 +20,7 @@
 
     <select id="getRules" resultType="com.diagbot.dto.RuleDTO">
         SELECT
+        t1.rule_type AS ruleType,
         t1.lib_type AS ruleLibType,
         t1.lib_type_name AS ruleLibTypeName,
         t1.lib_name AS ruleLibName,
@@ -29,7 +30,7 @@
         t1.has_sub_cond AS hasSubCond,
         t1.msg AS ruleMsg,
         t2.group_type AS groupType,
-        t2.rule_base_id AS ruleBaseId,
+        t3.id AS ruleBaseId,
         t3.description AS ruleBaseDescription,
         t3.eq_operator AS ruleBaseEqOperator,
         t3.eq_unit AS ruleBaseEqUnit,
@@ -56,7 +57,8 @@
         b.description,
         b.has_sub_cond,
         b.msg,
-        b.`status`
+        b.`status`,
+        b.rule_type
         FROM
         kl_concept a,
         kl_rule b,