Преглед на файлове

Merge branch 'master' into his/common

# Conflicts:
#	src/main/java/com/diagbot/config/ResourceServerConfigurer.java
#	src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
liuqq преди 3 години
родител
ревизия
356d6979b6
променени са 33 файла, в които са добавени 514 реда и са изтрити 915 реда
  1. 2 0
      doc/004.20220519科室调用日志统计/cdss_init.sql
  2. 24 17
      src/main/java/com/diagbot/aggregate/AssembleAggregate.java
  3. 19 18
      src/main/java/com/diagbot/client/CdssCoreClient.java
  4. 23 18
      src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java
  5. 4 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  6. 4 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  7. 15 0
      src/main/java/com/diagbot/dto/DiseaseIndexDTO.java
  8. 28 0
      src/main/java/com/diagbot/dto/RuleBaseDTO.java
  9. 24 0
      src/main/java/com/diagbot/dto/RuleConditionDTO.java
  10. 21 0
      src/main/java/com/diagbot/dto/RuleDTO.java
  11. 19 0
      src/main/java/com/diagbot/dto/RuleQueryDTO.java
  12. 8 0
      src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java
  13. 16 0
      src/main/java/com/diagbot/dto/TranDeptLogDTO.java
  14. 11 0
      src/main/java/com/diagbot/entity/TranLog.java
  15. 8 842
      src/main/java/com/diagbot/facade/ConceptInfoFacade.java
  16. 17 0
      src/main/java/com/diagbot/facade/KlRuleFacade.java
  17. 16 0
      src/main/java/com/diagbot/facade/RetrievalFacade.java
  18. 21 0
      src/main/java/com/diagbot/facade/TranLogFacade.java
  19. 6 0
      src/main/java/com/diagbot/mapper/TranLogMapper.java
  20. 6 0
      src/main/java/com/diagbot/service/TranLogService.java
  21. 9 0
      src/main/java/com/diagbot/service/impl/TranLogServiceImpl.java
  22. 1 0
      src/main/java/com/diagbot/util/CdssLogUtil.java
  23. 2 0
      src/main/java/com/diagbot/vo/CdssLogBaseVO.java
  24. 26 0
      src/main/java/com/diagbot/vo/DiseaseIndexPageVO.java
  25. 29 0
      src/main/java/com/diagbot/vo/RuleQueryKeyVO.java
  26. 27 0
      src/main/java/com/diagbot/vo/RuleQueryVO.java
  27. 24 0
      src/main/java/com/diagbot/vo/StatistByDeptVO.java
  28. 1 0
      src/main/java/com/diagbot/vo/TranLogPageVO.java
  29. 1 1
      src/main/java/com/diagbot/web/KlDictionaryConller.java
  30. 29 0
      src/main/java/com/diagbot/web/KlRuleController.java
  31. 12 0
      src/main/java/com/diagbot/web/RetrievalController.java
  32. 18 0
      src/main/java/com/diagbot/web/TranLogController.java
  33. 43 19
      src/main/resources/mapper/TranLogMapper.xml

+ 2 - 0
doc/004.20220519科室调用日志统计/cdss_init.sql

@@ -0,0 +1,2 @@
+use `cdss`;
+ALTER TABLE `tran_log` ADD COLUMN `dept_name` VARCHAR(255) NULL COMMENT '部门名称' AFTER `hospital_id`; 

+ 24 - 17
src/main/java/com/diagbot/aggregate/AssembleAggregate.java

@@ -460,34 +460,41 @@ public class AssembleAggregate {
                     Map<String, Map<String, List<String>>> subMap = configMap.get(name);
                     if (subMap.containsKey(hisDetailName)) {
                         if (type.equals(ConceptTypeEnum.Drug.getKey())) {
-                            for (Map.Entry<String, List<String>> thirdEntry : subMap.get(hisDetailName).entrySet()) {
-                                if (ListUtil.isNotEmpty(thirdEntry.getValue())) {
-                                    for (String form : thirdEntry.getValue()) {
+                            if (MapUtils.isNotEmpty(subMap.get(hisDetailName))) {
+                                for (Map.Entry<String, List<String>> thirdEntry : subMap.get(hisDetailName).entrySet()) {
+                                    if (ListUtil.isNotEmpty(thirdEntry.getValue())) {
+                                        for (String form : thirdEntry.getValue()) {
+                                            T o = (T) item.getClass().newInstance();
+                                            BeanUtil.copyProperties(item, o);
+                                            Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
+                                            setUniqueName.invoke(o, thirdEntry.getKey());
+                                            Method setForm = o.getClass().getMethod("setForm", String.class);
+                                            setForm.invoke(o, form);
+                                            retList.add(o);
+                                        }
+                                    } else {
                                         T o = (T) item.getClass().newInstance();
                                         BeanUtil.copyProperties(item, o);
                                         Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
                                         setUniqueName.invoke(o, thirdEntry.getKey());
-                                        Method setForm = o.getClass().getMethod("setForm", String.class);
-                                        setForm.invoke(o, form);
                                         retList.add(o);
                                     }
-                                } else {
+                                }
+                            } else {
+                                retList.add(item);
+                            }
+                        } else {
+                            List<String> standNames = new ArrayList<>(subMap.get(hisDetailName).keySet());
+                            if (ListUtil.isNotEmpty(standNames)) {
+                                for (String stdName : standNames) {
                                     T o = (T) item.getClass().newInstance();
                                     BeanUtil.copyProperties(item, o);
                                     Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
-                                    setUniqueName.invoke(o, thirdEntry.getKey());
+                                    setUniqueName.invoke(o, stdName);
                                     retList.add(o);
                                 }
-                            }
-
-                        } else {
-                            List<String> standNames = new ArrayList<>(subMap.get(hisDetailName).keySet());
-                            for (String stdName : standNames) {
-                                T o = (T) item.getClass().newInstance();
-                                BeanUtil.copyProperties(item, o);
-                                Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
-                                setUniqueName.invoke(o, stdName);
-                                retList.add(o);
+                            } else {
+                                retList.add(item);
                             }
                         }
                     } else {

+ 19 - 18
src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -1,25 +1,9 @@
 package com.diagbot.client;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.hystrix.CdssCoreHystrix;
-import com.diagbot.dto.ConceptDetailDTO;
-import com.diagbot.dto.ConceptScaleDTO;
-import com.diagbot.dto.DictionaryInfoDTO;
-import com.diagbot.dto.GetAllForRelationDTO;
-import com.diagbot.dto.IndexBatchDTO;
-import com.diagbot.dto.IndicationDTO;
-import com.diagbot.dto.KlConceptStaticDTO;
-import com.diagbot.dto.KlRuleByIdParDTO;
-import com.diagbot.dto.KlRuleInfoDTO;
-import com.diagbot.dto.KllisDetailDTO;
-import com.diagbot.dto.PushDTO;
-import com.diagbot.dto.PushPlanDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.RetrievalDTO;
-import com.diagbot.dto.StaticKnowledgeDTO;
-import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.dto.StaticKnowledgeIndexPageDTO;
-import com.diagbot.dto.TermConceptDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.KlRuleMenuWrapper;
 import com.diagbot.vo.*;
 import org.springframework.cloud.openfeign.FeignClient;
@@ -59,6 +43,15 @@ public interface CdssCoreClient {
     @PostMapping("/retrieval/index")
     RespDTO<RetrievalDTO> index(@RequestBody @Valid RetrievalVO retrievalVO);
 
+    /**
+     * 疾病编码检索
+     *
+     * @param diseaseIndexPageVO
+     * @return
+     */
+    @PostMapping("/retrieval/diseaseIndex")
+    RespDTO<Page<DiseaseIndexDTO>> diseaseIndex(@RequestBody @Valid DiseaseIndexPageVO diseaseIndexPageVO);
+
     /**
      * 国药准字匹配
      *
@@ -267,4 +260,12 @@ public interface CdssCoreClient {
 
     @PostMapping("/term/termMatching")
     public RespDTO<List<TermConceptDTO>> getTermMatching(@Valid @RequestBody TermMatchingVO termMatchingVO);
+
+    //查询所有有效的规则
+    @PostMapping("/klRule/getRulePage")
+    RespDTO<Page<RuleQueryDTO>> getRulePage(@RequestBody RuleQueryVO ruleQueryVO);
+
+    //根据录入内容查询有效规则的明细
+    @PostMapping("/klRule/getRuleDetail")
+    RespDTO<RuleDTO> getRuleDetail(@RequestBody @Valid RuleQueryKeyVO ruleQueryKeyVO);
 }

+ 23 - 18
src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java

@@ -2,24 +2,7 @@ package com.diagbot.client.hystrix;
 
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
-import com.diagbot.dto.ConceptDetailDTO;
-import com.diagbot.dto.ConceptScaleDTO;
-import com.diagbot.dto.DictionaryInfoDTO;
-import com.diagbot.dto.GetAllForRelationDTO;
-import com.diagbot.dto.IndexBatchDTO;
-import com.diagbot.dto.IndicationDTO;
-import com.diagbot.dto.KlConceptStaticDTO;
-import com.diagbot.dto.KlRuleByIdParDTO;
-import com.diagbot.dto.KlRuleInfoDTO;
-import com.diagbot.dto.KllisDetailDTO;
-import com.diagbot.dto.PushDTO;
-import com.diagbot.dto.PushPlanDTO;
-import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.RetrievalDTO;
-import com.diagbot.dto.StaticKnowledgeDTO;
-import com.diagbot.dto.StaticKnowledgeIndexDTO;
-import com.diagbot.dto.StaticKnowledgeIndexPageDTO;
-import com.diagbot.dto.TermConceptDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.KlRuleMenuWrapper;
 import com.diagbot.vo.*;
 import lombok.extern.slf4j.Slf4j;
@@ -72,6 +55,16 @@ public class CdssCoreHystrix implements CdssCoreClient {
         return null;
     }
 
+    /**
+     * 编码检索疾病
+     * @param diseaseIndexPageVO
+     * @return
+     */
+    @Override
+    public RespDTO<Page<DiseaseIndexDTO>> diseaseIndex(@RequestBody @Valid DiseaseIndexPageVO diseaseIndexPageVO){
+        log.error("【hystrix】调用{}异常", "diseaseIndex");
+        return null;
+    }
 
     /**
      * 国药准字匹配
@@ -354,4 +347,16 @@ public class CdssCoreHystrix implements CdssCoreClient {
         log.error("【hystrix】调用{}异常", "getTermMatching");
         return null;
     }
+
+    @Override
+    public RespDTO<Page<RuleQueryDTO>> getRulePage(@RequestBody RuleQueryVO ruleQueryVO) {
+        log.error("【hystrix】调用{}异常", "getRulePage");
+        return null;
+    }
+
+    @Override
+    public RespDTO<RuleDTO> getRuleDetail(@RequestBody @Valid RuleQueryKeyVO ruleQueryKeyVO) {
+        log.error("【hystrix】调用{}异常", "getRuleDetail");
+        return null;
+    }
 }

+ 4 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -63,6 +63,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 //.antMatchers("/tran/hospitalInfo/saveRecord").permitAll()
                 .antMatchers("/tran/log/pageList").permitAll()
                 .antMatchers("/tran/log/getRecordById").permitAll()
+                .antMatchers("/tran/log/getStatistByDept").permitAll()
                 .antMatchers("/tran/hospitalInfo/getHospitalInfo").permitAll()
                 .antMatchers("/tran/hospitalInfo/getAllHospitalInfo").permitAll()
                 .antMatchers("/tran/hospitalInfo/getAllEnableHospitalInfo").permitAll()
@@ -95,6 +96,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 //.antMatchers("/sys/plan/revStopPlans").permitAll()
                 .antMatchers("/sys/tokenHospital/getTokenHospital").permitAll()
                 .antMatchers("/demo/retrieval/index").permitAll()
+                .antMatchers("/demo/retrieval/diseaseIndex").permitAll()
                 .antMatchers("/kl/conceptInfo/staticKnowledgeIndex").permitAll()
                 .antMatchers("/kl/conceptInfo/staticKnowledgeIndexWithoutInfo").permitAll()
                 .antMatchers("/kl/conceptInfo/getStaticKnowledge").permitAll()
@@ -137,6 +139,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/term/termMatching").permitAll()
                 .antMatchers("/sys/mr/testIndication").permitAll()
                 .antMatchers("/test/logTest").permitAll()
+                .antMatchers("/klRule/getRulePage").permitAll()
+                .antMatchers("/klRule/getRuleDetail").permitAll()
                 .antMatchers("/dataPage/docking/getDataService").permitAll()
                 .antMatchers("/dataPage/docking/getStaticKnowledge").permitAll()
                 .antMatchers("/dataPage/docking/getDataEngine").permitAll()

+ 4 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -105,6 +105,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/tran/mappingConfig/deleteRecords", request)
                 || matchers("/tran/log/pageList", request)
                 || matchers("/tran/log/getRecordById", request)
+                || matchers("/tran/log/getStatistByDept", request)
                 //|| matchers("/tran/hospitalInfo/saveRecord", request)
                 || matchers("/tran/hospitalInfo/getHospitalInfo", request)
                 || matchers("/tran/hospitalInfo/getAllHospitalInfo", request)
@@ -137,6 +138,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 //|| matchers("/sys/plan/revStopPlans", request)
                 || matchers("/sys/tokenHospital/getTokenHospital", request)
                 || matchers("/demo/retrieval/index", request)
+                || matchers("/demo/retrieval/diseaseIndex", request)
                 || matchers("/kl/conceptInfo/staticKnowledgeIndex", request)
                 || matchers("/kl/conceptInfo/staticKnowledgeIndexWithoutInfo", request)
                 || matchers("/kl/conceptInfo/getStaticKnowledge", request)
@@ -179,6 +181,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/term/termMatching", request)
                 || matchers("/sys/mr/testIndication", request)
                 || matchers("/test/logTest", request)
+                || matchers("/klRule/getRulePage", request)
+                || matchers("/klRule/getRuleDetail", request)
                 || matchers("/dataPage/docking/getDataService", request)
                 || matchers("/dataPage/docking/getStaticKnowledge", request)
                 || matchers("/dataPage/docking/getDataEngine", request)

+ 15 - 0
src/main/java/com/diagbot/dto/DiseaseIndexDTO.java

@@ -0,0 +1,15 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2022/4/8 13:52
+ */
+@Data
+public class DiseaseIndexDTO {
+    private Long id;
+    private String name;
+    private String code;
+}

+ 28 - 0
src/main/java/com/diagbot/dto/RuleBaseDTO.java

@@ -0,0 +1,28 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/2/3 16:25
+ */
+@Getter
+@Setter
+@ToString(includeFieldNames = false)
+public class RuleBaseDTO {
+    private String baseLibName = "";
+    private Integer baseLibType = 0;
+    private Integer baseType = 0;
+    private String baseMinOperator = "";
+    private String baseMinValue = "";
+    private String baseMinUnit = "";
+    private String baseMaxOperator = "";
+    private String baseMaxValue = "";
+    private String baseMaxUnit = "";
+    private String baseEqOperator = "";
+    private String baseEqValue = "";
+    private String baseEqUnit = "";
+}

+ 24 - 0
src/main/java/com/diagbot/dto/RuleConditionDTO.java

@@ -0,0 +1,24 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+import lombok.ToString;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/2/3 16:32
+ */
+@Getter
+@Setter
+@ToString(exclude = { "ruleGroup", "msg", "description" }, includeFieldNames = false)
+public class RuleConditionDTO {
+    private Integer hasSubCond;
+    private String ruleGroup;
+    private String msg;
+    private String description;
+    private List<RuleBaseDTO> ruleBaseDTOList = new ArrayList<>();
+}

+ 21 - 0
src/main/java/com/diagbot/dto/RuleDTO.java

@@ -0,0 +1,21 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/2/3 16:34
+ */
+@Getter
+@Setter
+public class RuleDTO {
+    private String libName;
+    private Integer libType;
+    private Integer ruleType;
+    private List<RuleConditionDTO> ruleConditionDTOList = new ArrayList<>();
+}

+ 19 - 0
src/main/java/com/diagbot/dto/RuleQueryDTO.java

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/12/30 13:21
+ */
+@Getter
+@Setter
+public class RuleQueryDTO {
+    private String libName;
+    private Integer libType;
+    private String libTypeName;
+    private Integer ruleType;
+    private String ruleTypeName;
+}

+ 8 - 0
src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java

@@ -23,6 +23,14 @@ public class StaticKnowledgeIndexDTO {
      * 编码
      */
     private String code;
+    /**
+     * 国临版编码
+     */
+    private String guocode;
+    /**
+     * 国临版名称
+     */
+    private String guoname;
     /**
      * 词性
      */

+ 16 - 0
src/main/java/com/diagbot/dto/TranDeptLogDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangfeng
+ * @time: 2022-05-19 13:06
+ */
+@Setter
+@Getter
+public class TranDeptLogDTO {
+    private String deptName;
+    private Integer sums;
+}

+ 11 - 0
src/main/java/com/diagbot/entity/TranLog.java

@@ -61,6 +61,9 @@ public class TranLog implements Serializable {
      */
     private Long hospitalId;
 
+
+    private String deptName;
+
     /**
      * 子医院编码
      */
@@ -108,6 +111,14 @@ public class TranLog implements Serializable {
      */
     private Integer successFlag;
 
+    public String getDeptName() {
+        return deptName;
+    }
+
+    public void setDeptName(String deptName) {
+        this.deptName = deptName;
+    }
+
     public Long getId() {
         return id;
     }

+ 8 - 842
src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -1,53 +1,26 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.client.CdssCoreClient;
-import com.diagbot.dto.ConceptDetailDTO;
-import com.diagbot.dto.ConceptInfoDTO;
-import com.diagbot.dto.DictionaryInfoDTO;
 import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.RespDTO;
-import com.diagbot.dto.StaticKnowledgeDTO;
-import com.diagbot.dto.StaticKnowledgeDetailDTO;
-import com.diagbot.dto.StaticKnowledgeHISDTO;
-import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.entity.ConceptDetail;
 import com.diagbot.entity.ConceptInfo;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.StatusEnum;
-import com.diagbot.exception.CommonErrorCode;
-import com.diagbot.exception.CommonException;
-import com.diagbot.service.ConceptDetailService;
 import com.diagbot.service.impl.ConceptInfoServiceImpl;
-import com.diagbot.util.BeanUtil;
-import com.diagbot.util.DateUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.util.SysUserUtils;
-import com.diagbot.vo.ChangeStatusVO;
-import com.diagbot.vo.ConceptDetailVO;
-import com.diagbot.vo.ConceptInfoPageVO;
-import com.diagbot.vo.ConceptInfoVO;
 import com.diagbot.vo.HasStaticKnowledgeVO;
-import com.diagbot.vo.IdVO;
 import com.diagbot.vo.SearchConceptVO;
 import com.diagbot.vo.StaticKnowledgeHISVO;
-import com.diagbot.vo.StaticKnowledgeIndexVO;
-import com.diagbot.vo.StaticKnowledgeNameVO;
-import com.diagbot.vo.StaticKnowledgeVO;
 import com.google.common.collect.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.beans.factory.annotation.Qualifier;
 import org.springframework.stereotype.Component;
 
-import java.util.Arrays;
-import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -62,541 +35,10 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
     @Autowired
     private CdssCoreClient cdssCoreClient;
     @Autowired
-    private DictionaryFacade dictionaryFacade;
-    @Autowired
     private ConceptDetailFacade conceptDetailFacade;
     @Autowired
-    @Qualifier("conceptDetailServiceImpl")
-    private ConceptDetailService conceptDetailService;
-    @Autowired
     private MappingConfigFacade mappingConfigFacade;
 
-    /**
-     * 返回带静态知识的检索结果
-     *
-     * @param staticKnowledgeIndexVO
-     * @return
-     */
-    public List<StaticKnowledgeIndexDTO> staticKnowledgeIndexWithInfo(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
-        staticKnowledgeIndexVO.setHasInfo(1);
-        List<StaticKnowledgeIndexDTO> staticKnowledgeIndexDTOList = staticKnowledgeIndex(staticKnowledgeIndexVO);
-        //过滤没有静态知识的检索结果
-        staticKnowledgeIndexDTOList = staticKnowledgeIndexDTOList
-                .stream()
-                .filter(i -> (i.getHasInfo().equals(1))
-                        && (i.getHasStaticKnowledge().equals(1)
-                        || i.getHasClinicalPathway().equals(1)
-                        || i.getHasNotice().equals(1)))
-                .collect(Collectors.toList());
-        return staticKnowledgeIndexDTOList;
-    }
-
-    /**
-     * 返回不带静态知识的检索结果
-     *
-     * @param staticKnowledgeIndexVO
-     * @return
-     */
-    public List<StaticKnowledgeIndexDTO> staticKnowledgeIndexWithoutInfo(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
-        staticKnowledgeIndexVO.setHasInfo(0);
-        List<StaticKnowledgeIndexDTO> staticKnowledgeIndexDTOList = staticKnowledgeIndex(staticKnowledgeIndexVO);
-        //过滤没有静态知识的检索结果
-        staticKnowledgeIndexDTOList = staticKnowledgeIndexDTOList
-                .stream()
-                .filter(i -> i.getHasInfo().equals(0))
-                .collect(Collectors.toList());
-        return staticKnowledgeIndexDTOList;
-    }
-
-    /**
-     * 医学知识(静态信息)检索
-     *
-     * @param staticKnowledgeIndexVO
-     * @return
-     */
-    public List<StaticKnowledgeIndexDTO> staticKnowledgeIndex(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
-        List<StaticKnowledgeIndexDTO> retList = Lists.newLinkedList();
-        //静态知识检索顺序
-        List<DictionaryInfoDTO> dicStaticIndexList = dictionaryFacade.getListByGroupType(7);
-        //页面术语类型和图谱映射
-        List<DictionaryInfoDTO> dicTypeMappingList = dictionaryFacade.getListByGroupType(8);
-        //静态知识类型
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-
-        List<StaticKnowledgeIndexDTO> staticKnowledgeIndexDTOList = Lists.newLinkedList();
-        RespDTO<List<StaticKnowledgeIndexDTO>> respDTO = cdssCoreClient.staticKnowledgeIndex(staticKnowledgeIndexVO);
-        RespDTOUtil.respNGDealCover(respDTO, "检索失败");
-        staticKnowledgeIndexDTOList = respDTO.data;
-        if (ListUtil.isNotEmpty(staticKnowledgeIndexDTOList)) {
-            //typeName转换
-            staticKnowledgeIndexDTOList.forEach(item -> {
-                item.setTypeName(convertTypeName(item.getTypeName(), 2, dicTypeMappingList));
-            });
-            if (staticKnowledgeIndexVO.getHasInfo().equals(1)) {
-                //是否有静态知识
-                List<String> conNameList = staticKnowledgeIndexDTOList
-                        .stream()
-                        .map(i -> i.getName())
-                        .collect(Collectors.toList());
-                QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
-                conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
-                conceptInfoQueryWrapper.in("name", conNameList);
-                conceptInfoQueryWrapper.eq("status", StatusEnum.Enable.getKey());
-                List<ConceptInfo> conceptInfoList = this.list(conceptInfoQueryWrapper);
-                if (ListUtil.isNotEmpty(conceptInfoList)) {
-                    //typeName转换
-                    conceptInfoList.forEach(item -> {
-                        item.setType(convertTypeName(item.getType(), 2, dicTypeMappingList));
-                    });
-                    Map<String, ConceptInfo> infoMap
-                            = EntityUtil.makeEntityMapByKeys(conceptInfoList, "_", "name", "type");
-                    for (StaticKnowledgeIndexDTO item : staticKnowledgeIndexDTOList) {
-                        if (infoMap.containsKey(item.getName() + "_" + item.getTypeName())) {
-                            item.setId(infoMap.get(item.getName() + "_" + item.getTypeName()).getId());
-                        }
-                    }
-                    List<Long> conceptIdList = conceptInfoList.stream()
-                            .map(i -> i.getId())
-                            .collect(Collectors.toList());
-                    if (ListUtil.isNotEmpty(conceptIdList)) {
-                        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-                        conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
-                        conceptDetailQueryWrapper.in("concept_id", conceptIdList);
-                        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
-                        Map<Long, List<ConceptDetail>> detailMap
-                                = EntityUtil.makeEntityListMap(conceptDetailList, "conceptId");
-                        for (StaticKnowledgeIndexDTO item : staticKnowledgeIndexDTOList) {
-                            if (item.getId() == null
-                                    || !detailMap.containsKey(item.getId())) {
-                                item.setHasInfo(0);
-                                item.setHasStaticKnowledge(0);
-                                item.setHasClinicalPathway(0);
-                                item.setHasNotice((0));
-                                item.setHasTreatInfo(0);
-                                continue;
-                            }
-                            for (ConceptDetail detail : detailMap.get(item.getId())) {
-                                item.setHasInfo(1);
-                                List<String> contentTypeList = Arrays.asList(detail.getContentType().split(","));
-                                if (contentTypeList.contains("1")) {
-                                    item.setHasStaticKnowledge(1);
-                                }
-                                if (contentTypeList.contains("2")) {
-                                    item.setHasNotice(1);
-                                }
-                                if (contentTypeList.contains("3")) {
-                                    item.setHasClinicalPathway(1);
-                                }
-                                if (contentTypeList.contains("4")) {
-                                    item.setHasTreatInfo(1);
-                                }
-                            }
-                        }
-                    }
-                }
-            }
-
-            //排序
-            Map<String, List<StaticKnowledgeIndexDTO>> map
-                    = EntityUtil.makeEntityListMap(staticKnowledgeIndexDTOList, "typeName");
-            Map<Integer, String> staticTypeDicMap =
-                    EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-            for (DictionaryInfoDTO dic : dicStaticIndexList) {
-                if (dic.getVal().equals("3")) {//检验
-                    //3-检验套餐、4-检验细项
-                    if (map.containsKey(staticTypeDicMap.get("3"))) {
-                        retList.addAll(map.get(staticTypeDicMap.get("3")));
-                    }
-                    if (map.containsKey(staticTypeDicMap.get("4"))) {
-                        retList.addAll(map.get(staticTypeDicMap.get("4")));
-                    }
-                } else if (dic.getVal().equals("5")) {//检查
-                    //5-检查、6-检查子项
-                    if (map.containsKey(staticTypeDicMap.get("5"))) {
-                        retList.addAll(map.get(staticTypeDicMap.get("5")));
-                    }
-                    if (map.containsKey(staticTypeDicMap.get("6"))) {
-                        retList.addAll(map.get(staticTypeDicMap.get("6")));
-                    }
-                } else if (map.containsKey(dic.getName())) {
-                    retList.addAll(map.get(dic.getName()));
-                }
-            }
-        }
-        return retList;
-    }
-
-
-    /**
-     * 页面获取静态知识
-     *
-     * @param staticKnowledgeVO
-     * @return
-     */
-    public StaticKnowledgeDTO getStaticKnowledge(StaticKnowledgeVO staticKnowledgeVO) {
-        StaticKnowledgeDTO staticKnowledgeDTO = new StaticKnowledgeDTO();
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-        Map<String, String> dicStaticTypeValNameMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        String typeName = dicStaticTypeValNameMap.get(staticKnowledgeVO.getType().toString());
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        typeName = convertTypeName(typeName, 1, dicList);
-
-        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
-        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("name", staticKnowledgeVO.getName())
-                .eq("status", StatusEnum.Enable.getKey())
-                .eq("type", typeName);
-        ConceptInfo conceptInfo = this.getOne(conceptInfoQueryWrapper, false);
-
-        if (conceptInfo == null) {
-            StaticKnowledgeNameVO superName = new StaticKnowledgeNameVO();
-            if (typeName.equals("实验室检查名称")) {
-                StaticKnowledgeNameVO staticKnowledgeNameVO = new StaticKnowledgeNameVO();
-                staticKnowledgeNameVO.setName(staticKnowledgeVO.getName());
-                staticKnowledgeNameVO.setType(staticKnowledgeVO.getType());
-                RespDTO<StaticKnowledgeNameVO> respDTO = cdssCoreClient.getSuperName(staticKnowledgeNameVO);
-                if (RespDTOUtil.respIsOK(respDTO)) {
-                    superName = respDTO.data;
-                }
-            } else if (typeName.equals("辅助检查名称")) {
-                StaticKnowledgeNameVO staticKnowledgeNameVO = new StaticKnowledgeNameVO();
-                staticKnowledgeNameVO.setName(staticKnowledgeVO.getName());
-                staticKnowledgeNameVO.setType(6);
-                RespDTO<StaticKnowledgeNameVO> respDTO = cdssCoreClient.getSuperName(staticKnowledgeNameVO);
-                if (RespDTOUtil.respIsOK(respDTO)) {
-                    superName = respDTO.data;
-                }
-            } else {
-                throw new CommonException(CommonErrorCode.IS_EXISTS, "缺少静态信息");
-            }
-            typeName = dicStaticTypeValNameMap.get(superName.getType().toString());
-            typeName = convertTypeName(typeName, 1, dicList);
-
-            conceptInfoQueryWrapper = new QueryWrapper<>();
-            conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("name", superName.getName())
-                    .eq("status", StatusEnum.Enable.getKey())
-                    .eq("type", typeName);
-            conceptInfo = this.getOne(conceptInfoQueryWrapper, false);
-
-            if (conceptInfo == null) {
-                throw new CommonException(CommonErrorCode.IS_EXISTS, "缺少静态信息");
-            }
-        }
-
-        BeanUtil.copyProperties(conceptInfo, staticKnowledgeDTO);
-        Long conceptId = conceptInfo.getId();
-        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-        conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("concept_id", conceptId);
-        if (ListUtil.isNotEmpty(staticKnowledgeVO.getContentTypes())) {
-            String sql = "";
-            for (Integer contentType : staticKnowledgeVO.getContentTypes()) {
-                if (contentType.equals(0)) {
-                    sql = "";
-                    break;
-                }
-                if (StringUtil.isNotBlank(sql)) {
-                    sql += " or ";
-                }
-                sql += "find_in_set(" + contentType + ",content_type)";
-            }
-            if (StringUtil.isNotBlank(sql)) {
-                sql = "(" + sql + ")";
-                conceptDetailQueryWrapper.apply(sql);
-            }
-        }
-        conceptDetailQueryWrapper.orderByAsc("order_no");
-        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
-        List<StaticKnowledgeDetailDTO> detailList
-                = BeanUtil.listCopyTo(conceptDetailList, StaticKnowledgeDetailDTO.class);
-        List<StaticKnowledgeDetailDTO> introduceList = detailList
-                .stream()
-                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("1"))
-                .collect(Collectors.toList());
-        List<StaticKnowledgeDetailDTO> noticeList = detailList
-                .stream()
-                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("2"))
-                .collect(Collectors.toList());
-        List<StaticKnowledgeDetailDTO> clinicalPathwayList = detailList
-                .stream()
-                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("3"))
-                .collect(Collectors.toList());
-        List<StaticKnowledgeDetailDTO> treatInfoList = detailList
-                .stream()
-                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("4"))
-                .collect(Collectors.toList());
-        Map<String, List<StaticKnowledgeDetailDTO>> detailMap = new HashMap<>();
-        if (ListUtil.isEmpty(staticKnowledgeVO.getContentTypes()) || staticKnowledgeVO.getContentTypes().contains(0)) {
-            if (ListUtil.isNotEmpty(introduceList)) {
-                detailMap.put("静态知识", introduceList);
-            }
-            if (ListUtil.isNotEmpty(noticeList)) {
-                detailMap.put("注意事项", noticeList);
-            }
-            if (ListUtil.isNotEmpty(clinicalPathwayList)) {
-                detailMap.put("临床路径", clinicalPathwayList);
-            }
-            if (ListUtil.isNotEmpty(treatInfoList)) {
-                detailMap.put("治疗方案", treatInfoList);
-            }
-        } else {
-            if (ListUtil.isNotEmpty(introduceList) && staticKnowledgeVO.getContentTypes().contains(1)) {
-                detailMap.put("静态知识", introduceList);
-            }
-            if (ListUtil.isNotEmpty(noticeList) && staticKnowledgeVO.getContentTypes().contains(2)) {
-                detailMap.put("注意事项", noticeList);
-            }
-            if (ListUtil.isNotEmpty(clinicalPathwayList) && staticKnowledgeVO.getContentTypes().contains(3)) {
-                detailMap.put("临床路径", clinicalPathwayList);
-            }
-            if (ListUtil.isNotEmpty(treatInfoList) && staticKnowledgeVO.getContentTypes().contains(4)) {
-                detailMap.put("治疗方案", treatInfoList);
-            }
-        }
-        staticKnowledgeDTO.setDetails(detailMap);
-        return staticKnowledgeDTO;
-    }
-
-    /**
-     * 医院端获取静态知识(对接)
-     *
-     * @param staticKnowledgeHISVO
-     * @return
-     */
-    public List<StaticKnowledgeHISDTO> getStaticKnowledgeForHIS(StaticKnowledgeHISVO staticKnowledgeHISVO) {
-
-        List<StaticKnowledgeHISDTO> retList = Lists.newArrayList();
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        Map<String, String> dicStaticTypeValNameMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-
-        List<String> typeNames = ListUtil.newArrayList();
-        List<Integer> types = ListUtil.newArrayList();
-        types.add(staticKnowledgeHISVO.getType());
-        if (staticKnowledgeHISVO.getType().equals(3)) {
-            types.add(4);
-        } else if (staticKnowledgeHISVO.getType().equals(4)) {
-            types.add(3);
-        }
-        if (staticKnowledgeHISVO.getType().equals(5)) {
-            types.add(6);
-        } else if (staticKnowledgeHISVO.getType().equals(6)) {
-            types.add(5);
-        }
-
-
-        for (Integer type : types) {
-            String typeName = dicStaticTypeValNameMap.get(type.toString());
-            typeName = convertTypeName(typeName, 1, dicList);
-            typeNames.add(typeName);
-        }
-
-        //术语映射
-        List<String> uniqueNameList = getUniqueNames(staticKnowledgeHISVO);
-        if (ListUtil.isEmpty(uniqueNameList)) {
-            return retList;
-        }
-        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
-        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("name", uniqueNameList)
-                .eq("status", StatusEnum.Enable.getKey())
-                .in("type", typeNames);
-        List<ConceptInfo> conceptList = this.list(conceptInfoQueryWrapper);
-        List<ConceptInfo> conceptInfoList = Lists.newLinkedList();
-        if (staticKnowledgeHISVO.getType().equals(3)) {
-            conceptInfoList.addAll(conceptList.stream().filter(i -> i.getType().equals("实验室检查套餐名")).collect(Collectors.toList()));
-            for (ConceptInfo info : conceptList) {
-                if (info.getType().equals("实验室检查名称")
-                        && ListUtil.isEmpty(conceptInfoList.stream().filter(i -> i.getName().equals(info.getName())).collect(Collectors.toList()))) {
-                    conceptInfoList.add(info);
-                }
-            }
-        }
-        if (staticKnowledgeHISVO.getType().equals(4)) {
-            conceptInfoList.addAll(conceptList.stream().filter(i -> i.getType().equals("实验室检查名称")).collect(Collectors.toList()));
-            for (ConceptInfo info : conceptList) {
-                if (info.getType().equals("实验室检查套餐名")
-                        && ListUtil.isEmpty(conceptInfoList.stream().filter(i -> i.getName().equals(info.getName())).collect(Collectors.toList()))) {
-                    conceptInfoList.add(info);
-                }
-            }
-        } else {
-            conceptInfoList.addAll(conceptList);
-        }
-
-        List<String> existUniqueNameList = Lists.newLinkedList();
-
-        if (ListUtil.isNotEmpty(conceptInfoList)) {
-            existUniqueNameList.addAll(conceptInfoList
-                    .stream()
-                    .map(i -> i.getName())
-                    .collect(Collectors.toList()));
-        }
-
-        //未匹配到静态知识
-        List<String> notExistUniqueNameList = Lists.newLinkedList();
-        uniqueNameList.forEach(name -> {
-            if (!existUniqueNameList.contains(name)) {
-                notExistUniqueNameList.add(name);
-            }
-        });
-
-        //获取上级静态知识
-        if (ListUtil.isNotEmpty(notExistUniqueNameList)) {
-            List<StaticKnowledgeNameVO> paramNames = Lists.newLinkedList();
-            List<StaticKnowledgeNameVO> superNames = Lists.newLinkedList();
-            for (String name : notExistUniqueNameList) {
-                StaticKnowledgeNameVO paramName = new StaticKnowledgeNameVO();
-                paramName.setName(name);
-                if (staticKnowledgeHISVO.getType().equals(3)) {
-                    paramName.setType(4);
-                } else if (staticKnowledgeHISVO.getType().equals(5)) {
-                    paramName.setType(6);
-                } else {
-                    paramName.setType(staticKnowledgeHISVO.getType());
-                }
-                paramNames.add(paramName);
-            }
-            RespDTO<List<StaticKnowledgeNameVO>> respDTO = cdssCoreClient.getSuperNameBatch(paramNames);
-            if (RespDTOUtil.respIsOK(respDTO)) {
-                superNames = respDTO.data;
-            }
-            if (ListUtil.isNotEmpty(superNames)) {
-                List<String> superNameList = superNames.stream().map(i -> i.getName()).distinct().collect(Collectors.toList());
-                List<Integer> superTypes = superNames.stream().map(i -> i.getType()).distinct().collect(Collectors.toList());
-                List<String> superTypeNames = Lists.newLinkedList();
-                for (Integer type : superTypes) {
-                    String typeName = dicStaticTypeValNameMap.get(type.toString());
-                    typeName = convertTypeName(typeName, 1, dicList);
-                    superTypeNames.add(typeName);
-                }
-                conceptInfoQueryWrapper = new QueryWrapper<>();
-                conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .in("name", superNameList)
-                        .eq("status", StatusEnum.Enable.getKey())
-                        .in("type", superTypeNames);
-                List<ConceptInfo> superConceptInfoList = this.list(conceptInfoQueryWrapper);
-                if (ListUtil.isNotEmpty(superConceptInfoList)) {
-                    conceptInfoList.addAll(superConceptInfoList);
-                }
-            }
-        }
-
-        conceptInfoList = conceptInfoList.stream().distinct().collect(Collectors.toList());
-
-        if (ListUtil.isEmpty(conceptInfoList)) {
-            return retList;
-        }
-
-        retList = BeanUtil.listCopyTo(conceptInfoList, StaticKnowledgeHISDTO.class);
-        List<Long> conceptIdList = conceptInfoList.stream().map(i -> i.getId()).collect(Collectors.toList());
-        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-        conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .in("concept_id", conceptIdList);
-        if (ListUtil.isNotEmpty(staticKnowledgeHISVO.getContentTypes())) {
-            String sql = "";
-            for (Integer contentType : staticKnowledgeHISVO.getContentTypes()) {
-                if (contentType.equals(0)) {
-                    sql = "";
-                    break;
-                }
-                if (StringUtil.isNotBlank(sql)) {
-                    sql += " or ";
-                }
-                sql += "find_in_set(" + contentType + ",content_type)";
-            }
-            if (StringUtil.isNotBlank(sql)) {
-                sql = "(" + sql + ")";
-            }
-            conceptDetailQueryWrapper.apply(sql);
-        }
-        conceptDetailQueryWrapper.orderByAsc("concept_id", "order_no");
-        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
-        List<StaticKnowledgeDetailDTO> detailList
-                = BeanUtil.listCopyTo(conceptDetailList, StaticKnowledgeDetailDTO.class);
-        Map<Long, List<StaticKnowledgeDetailDTO>> conceptMap
-                = EntityUtil.makeEntityListMap(detailList, "conceptId");
-        for (StaticKnowledgeHISDTO staticKnowledgeDTO : retList) {
-            staticKnowledgeDTO.setHisName(staticKnowledgeHISVO.getHisName());
-            staticKnowledgeDTO.setHisDetailName(staticKnowledgeHISVO.getHisDetailName());
-            List<StaticKnowledgeDetailDTO> subDetailList = conceptMap.get(staticKnowledgeDTO.getId());
-            if (ListUtil.isNotEmpty(subDetailList)) {
-                List<StaticKnowledgeDetailDTO> introduceList = subDetailList
-                        .stream()
-                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("1"))
-                        .collect(Collectors.toList());
-                List<StaticKnowledgeDetailDTO> noticeList = subDetailList
-                        .stream()
-                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("2"))
-                        .collect(Collectors.toList());
-                List<StaticKnowledgeDetailDTO> clinicalPathwayList = subDetailList
-                        .stream()
-                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("3"))
-                        .collect(Collectors.toList());
-                List<StaticKnowledgeDetailDTO> treatInfoList = subDetailList
-                        .stream()
-                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("4"))
-                        .collect(Collectors.toList());
-                Map<String, List<StaticKnowledgeDetailDTO>> subDetailMap = new HashMap<>();
-                if (ListUtil.isEmpty(staticKnowledgeHISVO.getContentTypes()) || staticKnowledgeHISVO.getContentTypes().contains(0)) {
-                    if (ListUtil.isNotEmpty(introduceList)) {
-                        subDetailMap.put("静态知识", introduceList);
-                    }
-                    if (ListUtil.isNotEmpty(noticeList)) {
-                        subDetailMap.put("注意事项", noticeList);
-                    }
-                    if (ListUtil.isNotEmpty(clinicalPathwayList)) {
-                        subDetailMap.put("临床路径", clinicalPathwayList);
-                    }
-                    if (ListUtil.isNotEmpty(treatInfoList)) {
-                        subDetailMap.put("治疗方案", treatInfoList);
-                    }
-                } else {
-                    if (ListUtil.isNotEmpty(introduceList) && staticKnowledgeHISVO.getContentTypes().contains(1)) {
-                        subDetailMap.put("静态知识", introduceList);
-                    }
-                    if (ListUtil.isNotEmpty(noticeList) && staticKnowledgeHISVO.getContentTypes().contains(2)) {
-                        subDetailMap.put("注意事项", noticeList);
-                    }
-                    if (ListUtil.isNotEmpty(clinicalPathwayList) && staticKnowledgeHISVO.getContentTypes().contains(3)) {
-                        subDetailMap.put("临床路径", clinicalPathwayList);
-                    }
-                    if (ListUtil.isNotEmpty(treatInfoList) && staticKnowledgeHISVO.getContentTypes().contains(4)) {
-                        subDetailMap.put("治疗方案", treatInfoList);
-                    }
-                }
-                staticKnowledgeDTO.setDetails(subDetailMap);
-            }
-        }
-        return retList;
-    }
-
-    /**
-     * 页面术语类型和图谱标签名称相互转换
-     *
-     * @param typeName
-     * @param flag     1-页面术语类型转图谱标签名称,2- 图谱标签名称转页面术语类型
-     * @param dicList
-     * @return
-     */
-    public String convertTypeName(String typeName, Integer flag, List<DictionaryInfoDTO> dicList) {
-        if (ListUtil.isNotEmpty(dicList)) {
-            Map<String, String> nameValMap = new HashMap<>();
-            if (flag.equals(1)) {
-                nameValMap = EntityUtil.makeMapWithKeyValue(dicList, "name", "val");
-            } else if (flag.equals(2)) {
-                nameValMap = EntityUtil.makeMapWithKeyValue(dicList, "val", "name");
-            }
-            if (nameValMap.containsKey(typeName)) {
-                return nameValMap.get(typeName);
-            }
-        }
-        return typeName;
-    }
-
     /**
      * @param staticKnowledgeHISVO
      * @return
@@ -608,7 +50,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 1:
                 Map<String, Map<String, Map<String, List<String>>>> disConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.Disease.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.Disease.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (disConfigMap != null
                         && disConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = disConfigMap.get(staticKnowledgeHISVO.getHisName())
@@ -620,7 +62,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 2:
                 Map<String, Map<String, Map<String, List<String>>>> drugConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.Drug.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.Drug.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (drugConfigMap != null
                         && drugConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = drugConfigMap.get(staticKnowledgeHISVO.getHisName())
@@ -633,7 +75,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 4:
                 Map<String, Map<String, Map<String, List<String>>>> lisConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.LisPack.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.LisPack.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (lisConfigMap != null) {
                     if (StringUtil.isBlank(staticKnowledgeHISVO.getHisDetailName())) {
                         staticKnowledgeHISVO.setHisDetailName("");
@@ -652,7 +94,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 6:
                 Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.Pacs.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.Pacs.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (pacsConfigMap != null
                         && pacsConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = pacsConfigMap.get(staticKnowledgeHISVO.getHisName())
@@ -664,7 +106,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 7:
                 Map<String, Map<String, Map<String, List<String>>>> operationConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.Operation.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.Operation.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (operationConfigMap != null &&
                         operationConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = operationConfigMap.get(staticKnowledgeHISVO.getHisName())
@@ -676,7 +118,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 8:
                 Map<String, Map<String, Map<String, List<String>>>> scaleConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.Scale.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.Scale.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (scaleConfigMap != null &&
                         scaleConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = scaleConfigMap.get(staticKnowledgeHISVO.getHisName())
@@ -688,7 +130,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             case 9:
                 Map<String, Map<String, Map<String, List<String>>>> nurseConfigMap
                         = mappingConfigFacade.groupByHisNameWithName(ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }),
-                        ConceptTypeEnum.Nurse.getKey(), hospitalId,StatusEnum.Enable.getKey());
+                        ConceptTypeEnum.Nurse.getKey(), hospitalId, StatusEnum.Enable.getKey());
                 if (nurseConfigMap != null &&
                         nurseConfigMap.get(staticKnowledgeHISVO.getHisName()) != null) {
                     nameList = nurseConfigMap.get(staticKnowledgeHISVO.getHisName())
@@ -710,285 +152,9 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         return nameList;
     }
 
-    /**
-     * 列表
-     *
-     * @param conceptInfoPageVO
-     * @return
-     */
-    @Override
-    public IPage<ConceptInfoDTO> getPage(ConceptInfoPageVO conceptInfoPageVO) {
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-        Map<Integer, String> dicStaticTypeValNameMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        Map<String, Integer> dicStaticTypeNameValMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "name", "val");
-        if (StringUtil.isNotBlank(conceptInfoPageVO.getType())) {
-            String typeName
-                    = convertTypeName(dicStaticTypeValNameMap.get(conceptInfoPageVO.getType()), 1, dicList);
-            conceptInfoPageVO.setTypeName(typeName);
-        }
-        IPage<ConceptInfoDTO> page = super.getPage(conceptInfoPageVO);
-        List<ConceptInfoDTO> records = page.getRecords();
-        if (ListUtil.isNotEmpty(records)) {
-            records.forEach(record -> {
-                String typeName = convertTypeName(record.getType(), 2, dicList);
-                record.setTypeName(typeName);
-                record.setType(String.valueOf(dicStaticTypeNameValMap.get(typeName)));
-            });
-        }
-        page.setRecords(records);
-        return page;
-    }
-
-    /**
-     * 保存记录(新增or修改)
-     *
-     * @param conceptInfoVO
-     * @return
-     */
-    public Boolean saveOrUpdateRecord(ConceptInfoVO conceptInfoVO) {
-        String userId = SysUserUtils.getCurrentPrincipleID();
-        Date now = DateUtil.now();
-        //术语类型映射
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        //静态知识类型
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-        Map<Integer, String> dicStaticTypeValNameMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        //术语类型转换
-        String typeName = convertTypeName(dicStaticTypeValNameMap.get(conceptInfoVO.getType()), 1, dicList);
-        conceptInfoVO.setTypeName(typeName);
-        ConceptInfo conceptInfo = new ConceptInfo();
-
-        if (conceptInfoVO.getId() != null) {
-            conceptInfo = this.getById(conceptInfoVO.getId());
-            if (conceptInfo != null
-                    && !conceptInfo.getName().equals(conceptInfoVO.getName())) {
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "标准术语名称不允许修改");
-            }
-        } else {
-            QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
-            conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("name", conceptInfoVO.getName())
-                    .eq("type", typeName);
-            conceptInfo = this.getOne(conceptInfoQueryWrapper, false);
-            //术语不存在,保存术语信息
-            if (conceptInfo == null) {
-                conceptInfo = new ConceptInfo();
-                conceptInfo.setCreator(userId);
-                conceptInfo.setGmtCreate(now);
-            }
-        }
-        conceptInfo.setName(conceptInfoVO.getName());
-        conceptInfo.setClinicalPathwayName(conceptInfoVO.getClinicalPathwayName());
-        conceptInfo.setNoticeName(conceptInfoVO.getNoticeName());
-        conceptInfo.setType(typeName);
-        conceptInfo.setModifier(userId);
-        conceptInfo.setGmtModified(now);
-
-        //是否包含静态信息
-        List<ConceptDetail> oldDetails = null;
-        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-        if (conceptInfo.getId() != null) {
-            conceptDetailQueryWrapper.eq("concept_id", conceptInfo.getId());
-            conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
-            oldDetails = conceptDetailFacade.list(conceptDetailQueryWrapper);
-        }
-        if (conceptInfoVO.getId() == null
-                && ListUtil.isNotEmpty(oldDetails)) {
-            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "静态信息已添加,不允许重复添加");
-        }
-        if (ListUtil.isEmpty(oldDetails)
-                && ListUtil.isNotEmpty(conceptInfoVO.getDetails())) {
-            //TODO 更新图谱是否有静态信息
-            HasStaticKnowledgeVO hasStaticKnowledgeVO = new HasStaticKnowledgeVO();
-            hasStaticKnowledgeVO.setName(conceptInfoVO.getName());
-            hasStaticKnowledgeVO.setType(typeName);
-            hasStaticKnowledgeVO.setHasInfo(1);
-            RespDTO<Boolean> respDTO = cdssCoreClient.updateHasInfoStatus(hasStaticKnowledgeVO);
-            //更新失败
-            if (RespDTOUtil.respIsNG(respDTO)) {
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "图谱更新静态知识状态失败");
-            }
-        }
-
-        //删除已有静态信息
-        if (conceptInfo.getId() != null) {
-            conceptDetailFacade.remove(conceptDetailQueryWrapper);
-        }
-
-        //更新术语信息
-        this.saveOrUpdate(conceptInfo);
-
-        //插入新的静态信息
-        List<ConceptDetail> conceptDetailList = Lists.newLinkedList();
-        if (ListUtil.isNotEmpty(conceptInfoVO.getDetails())) {
-            for (ConceptDetailVO detailVO : conceptInfoVO.getDetails()) {
-                ConceptDetail conceptDetail = new ConceptDetail();
-                BeanUtil.copyProperties(detailVO, conceptDetail);
-                conceptDetail.setConceptId(conceptInfo.getId());
-                conceptDetail.setCreator(userId);
-                conceptDetail.setGmtCreate(now);
-                conceptDetail.setModifier(userId);
-                conceptDetail.setGmtModified(now);
-                conceptDetailList.add(conceptDetail);
-            }
-            conceptDetailService.saveBatch(conceptDetailList);
-        }
-        return true;
-    }
-
-    /**
-     * 启用禁用
-     *
-     * @param changeStatusVO
-     * @return
-     */
-    public Boolean changeStatus(ChangeStatusVO changeStatusVO) {
-        String userId = SysUserUtils.getCurrentPrincipleID();
-        Date now = DateUtil.now();
-        //更新主表
-        UpdateWrapper<ConceptInfo> conceptInfoUpdateWrapper = new UpdateWrapper<>();
-        conceptInfoUpdateWrapper.eq("id", changeStatusVO.getId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .set("gmt_modified", now)
-                .set("modifier", userId)
-                .set("status", changeStatusVO.getStatus());
-        this.update(conceptInfoUpdateWrapper);
-        //更新明细表
-        UpdateWrapper<ConceptDetail> conceptDetailUpdateWrapper = new UpdateWrapper<>();
-        conceptDetailUpdateWrapper.eq("concept_id", changeStatusVO.getId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey())
-                .set("gmt_modified", now)
-                .set("modifier", userId);
-        conceptDetailService.update(conceptDetailUpdateWrapper);
-        return true;
-    }
-
-    /**
-     * 是否已存在
-     *
-     * @param conceptInfoVO
-     * @return
-     */
-    public Boolean isExist(ConceptInfoVO conceptInfoVO) {
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        //静态知识类型
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-        Map<Integer, String> dicStaticTypeValNameMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        //术语类型转换
-        String typeName = convertTypeName(dicStaticTypeValNameMap.get(conceptInfoVO.getType()), 1, dicList);
-        conceptInfoVO.setTypeName(typeName);
-        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
-        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("name", conceptInfoVO.getName())
-                .eq("type", typeName);
-        ConceptInfo conceptInfo = this.getOne(conceptInfoQueryWrapper, false);
-        if (conceptInfo == null) {
-            return false;
-        }
-        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-        conceptDetailQueryWrapper.eq("concept_id", conceptInfo.getId())
-                .eq("is_deleted", IsDeleteEnum.N.getKey());
-        List<ConceptDetail> conceptDetailList = conceptDetailService.list(conceptDetailQueryWrapper);
-        if (ListUtil.isEmpty(conceptDetailList)) {
-            return false;
-        }
-        return true;
-    }
-
-    /**
-     * 根据术语id获取静态信息
-     *
-     * @param idVO
-     * @return
-     */
-    public ConceptInfoDTO getRecordById(IdVO idVO) {
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        //静态知识类型
-        List<DictionaryInfoDTO> dicStaticTypeList = dictionaryFacade.getListByGroupType(10);
-        Map<Integer, String> dicStaticTypeValNameMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "val", "name");
-        Map<String, Integer> dicStaticTypeNameValMap =
-                EntityUtil.makeMapWithKeyValue(dicStaticTypeList, "name", "val");
-        ConceptInfoDTO conceptInfoDTO = new ConceptInfoDTO();
-        ConceptInfo conceptInfo = this.getById(idVO.getId());
-        if (conceptInfo == null) {
-            return null;
-        }
-        BeanUtil.copyProperties(conceptInfo, conceptInfoDTO);
-        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-        conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("concept_id", idVO.getId())
-                .orderByAsc("order_no");
-        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
-        if (ListUtil.isNotEmpty(conceptDetailList)) {
-            List<ConceptDetailDTO> details = BeanUtil.listCopyTo(conceptDetailList, ConceptDetailDTO.class);
-            conceptInfoDTO.setDetails(details);
-            //启用状态、修改人、修改时间为明细的内容
-            String typeName = convertTypeName(conceptInfoDTO.getType(), 2, dicList);
-            conceptInfoDTO.setTypeName(typeName);
-            conceptInfoDTO.setType(String.valueOf(dicStaticTypeNameValMap.get(typeName)));
-            conceptInfoDTO.setModifier(conceptDetailList.get(0).getModifier());
-            conceptInfoDTO.setGmtModified(conceptDetailList.get(0).getGmtModified());
-        }
-        return conceptInfoDTO;
-    }
-
-    /**
-     * 获取静态知识map Map<name_type,List<ConceptDetail>>
-     *
-     * @param nameList
-     * @return
-     */
-    public Map<String, List<ConceptDetail>> getDetailByConcept(List<String> nameList, List<Integer> contentTypes) {
-        Map<String, List<ConceptDetail>> retMap = new HashMap<>();
-        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
-        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
-        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                .eq("status", 1);
-        if (ListUtil.isNotEmpty(nameList)) {
-            conceptInfoQueryWrapper.in("name", nameList);
-        }
-        List<ConceptInfo> conceptInfoList = this.list(conceptInfoQueryWrapper);
-        Map<Long, ConceptInfo> conceptMap = EntityUtil.makeEntityMap(conceptInfoList, "id");
-
-        if (ListUtil.isNotEmpty(conceptInfoList)) {
-            List<Long> conceptIds = conceptInfoList.stream()
-                    .map(i -> i.getId())
-                    .collect(Collectors.toList());
-
-            QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
-            conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .in("concept_id", conceptIds);
-            if (ListUtil.isNotEmpty(contentTypes)) {
-                conceptDetailQueryWrapper.and(sql -> {
-                    for (int i = 0; i < contentTypes.size(); i++) {
-                        if (i > 0) {
-                            sql.or();
-                        }
-                        sql.apply("find_in_set({0},content_type)", contentTypes.get(i));
-                    }
-                });
-            }
-            List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
-            Map<Long, List<ConceptDetail>> detailMap
-                    = EntityUtil.makeEntityListMap(conceptDetailList, "conceptId");
-
-            for (Map.Entry<Long, ConceptInfo> entry : conceptMap.entrySet()) {
-                if (detailMap.containsKey(entry.getKey())) {
-                    retMap.put(entry.getValue().getName() + "_" + convertTypeName(entry.getValue().getType(), 2, dicList), detailMap.get(entry.getKey()));
-                }
-            }
-        }
-        return retMap;
-    }
-
     /**
      * 批量更新静态知识标志
+     *
      * @return
      */
     public Boolean updateHasInfoStatusBatch() {

+ 17 - 0
src/main/java/com/diagbot/facade/KlRuleFacade.java

@@ -1,16 +1,21 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
 import com.diagbot.dto.KlRuleByIdParDTO;
 import com.diagbot.dto.KlRuleInfoDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RuleDTO;
+import com.diagbot.dto.RuleQueryDTO;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.vo.KlRuleByIdVO;
 import com.diagbot.vo.KlRuleInfoClearVO;
 import com.diagbot.vo.KlRuleInfoSaveVO;
 import com.diagbot.vo.KlRuleInfoVO;
 import com.diagbot.vo.KlRuleSatartOrdisaVO;
+import com.diagbot.vo.RuleQueryKeyVO;
+import com.diagbot.vo.RuleQueryVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -62,4 +67,16 @@ public class KlRuleFacade {
         RespDTOUtil.respNGDeal(booleanRespDTO, "启用规则失败");
         return booleanRespDTO.data;
     }
+
+    public Page<RuleQueryDTO> getRulePage(RuleQueryVO ruleQueryVO) {
+        RespDTO<Page<RuleQueryDTO>> rulepageRespDTO = cdssCoreClient.getRulePage(ruleQueryVO);
+        RespDTOUtil.respNGDeal(rulepageRespDTO, "查询所有有效的规则失败");
+        return rulepageRespDTO.data;
+    }
+
+    public RuleDTO getRuleDetail(RuleQueryKeyVO ruleQueryKeyVO) {
+        RespDTO<RuleDTO> ruleDTORespDTO = cdssCoreClient.getRuleDetail(ruleQueryKeyVO);
+        RespDTOUtil.respNGDeal(ruleDTORespDTO, "查询规则明细失败");
+        return ruleDTORespDTO.data;
+    }
 }

+ 16 - 0
src/main/java/com/diagbot/facade/RetrievalFacade.java

@@ -1,6 +1,9 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
 import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.DiseaseIndexDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalConceptDTO;
 import com.diagbot.dto.RetrievalDTO;
@@ -8,6 +11,7 @@ import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
+import com.diagbot.vo.DiseaseIndexPageVO;
 import com.diagbot.vo.HospitalCheckVO;
 import com.diagbot.vo.RetrievalVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -88,4 +92,16 @@ public class RetrievalFacade {
         }
         return retrievalDTO;
     }
+
+    /**
+     * 疾病编码检索
+     *
+     * @param diseaseIndexPageVO
+     * @return
+     */
+    public IPage<DiseaseIndexDTO> diseaseIndex(DiseaseIndexPageVO diseaseIndexPageVO) {
+        RespDTO<Page<DiseaseIndexDTO>> respDTO = cdssCoreClient.diseaseIndex(diseaseIndexPageVO);
+        RespDTOUtil.respNGDealCover(respDTO, "检索失败");
+        return respDTO.data;
+    }
 }

+ 21 - 0
src/main/java/com/diagbot/facade/TranLogFacade.java

@@ -1,16 +1,20 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.TranDeptLogDTO;
 import com.diagbot.entity.TranLog;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.TranLogServiceImpl;
 import com.diagbot.util.SysUserUtils;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.StatistByDeptVO;
 import com.diagbot.vo.TranLogPageVO;
 import org.apache.commons.lang3.time.DateUtils;
 import org.springframework.stereotype.Component;
 
+import java.util.List;
+
 /**
  * @Description:
  * @author: gaodm
@@ -47,10 +51,27 @@ public class TranLogFacade extends TranLogServiceImpl {
 
     /**
      * 获取单条记录
+     *
      * @param idVO
      * @return
      */
     public TranLog getRecordById(IdVO idVO) {
         return this.getById(idVO.getId());
     }
+
+    public List<TranDeptLogDTO> getStatistByDeptName(StatistByDeptVO statistByDeptVO) {
+
+        String hospitalId = SysUserUtils.getCurrentHospitalID();
+        statistByDeptVO.setHospitalId(Long.valueOf(hospitalId));
+        if (statistByDeptVO.getStartGmtReq() != null && statistByDeptVO.getEndGmtReq() == null) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请输入完整时间区间");
+        }
+        if (statistByDeptVO.getStartGmtReq() == null && statistByDeptVO.getEndGmtReq() != null) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请输入完整时间区间");
+        }
+        if (statistByDeptVO.getEndGmtReq() != null) {
+            DateUtils.addMinutes(statistByDeptVO.getEndGmtReq(), 1);
+        }
+        return this.getStatisDeptAlls(statistByDeptVO);
+    }
 }

+ 6 - 0
src/main/java/com/diagbot/mapper/TranLogMapper.java

@@ -1,11 +1,15 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.TranDeptLogDTO;
 import com.diagbot.entity.TranLog;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.StatistByDeptVO;
 import com.diagbot.vo.TranLogPageVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统日志表 Mapper 接口
@@ -16,4 +20,6 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface TranLogMapper extends BaseMapper<TranLog> {
     IPage<TranLog> getPage(@Param("tranLogPageVO") TranLogPageVO tranLogPageVO);
+
+    List<TranDeptLogDTO> getStatisDeptAlls(StatistByDeptVO statistByDeptVO);
 }

+ 6 - 0
src/main/java/com/diagbot/service/TranLogService.java

@@ -1,11 +1,15 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.TranDeptLogDTO;
 import com.diagbot.entity.TranLog;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.StatistByDeptVO;
 import com.diagbot.vo.TranLogPageVO;
 import org.apache.ibatis.annotations.Param;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统日志表 服务类
@@ -16,4 +20,6 @@ import org.apache.ibatis.annotations.Param;
  */
 public interface TranLogService extends IService<TranLog> {
     IPage<TranLog> getPage(@Param("tranLogPageVO") TranLogPageVO tranLogPageVO);
+
+    List<TranDeptLogDTO> getStatisDeptAlls(StatistByDeptVO statistByDeptVO);
 }

+ 9 - 0
src/main/java/com/diagbot/service/impl/TranLogServiceImpl.java

@@ -1,14 +1,18 @@
 package com.diagbot.service.impl;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.TranDeptLogDTO;
 import com.diagbot.entity.TranLog;
 import com.diagbot.mapper.TranLogMapper;
 import com.diagbot.service.TranLogService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.StatistByDeptVO;
 import com.diagbot.vo.TranLogPageVO;
 import org.apache.ibatis.annotations.Param;
 import org.springframework.stereotype.Service;
 
+import java.util.List;
+
 /**
  * <p>
  * 系统日志表 服务实现类
@@ -23,4 +27,9 @@ public class TranLogServiceImpl extends ServiceImpl<TranLogMapper, TranLog> impl
     public IPage<TranLog> getPage(@Param("tranLogPageVO") TranLogPageVO tranLogPageVO) {
         return baseMapper.getPage(tranLogPageVO);
     }
+
+    @Override
+    public List<TranDeptLogDTO> getStatisDeptAlls(StatistByDeptVO statistByDeptVO) {
+        return baseMapper.getStatisDeptAlls(statistByDeptVO);
+    }
 }

+ 1 - 0
src/main/java/com/diagbot/util/CdssLogUtil.java

@@ -66,6 +66,7 @@ public class CdssLogUtil {
             if (o instanceof CdssLogBaseVO) {
                 CdssLogBaseVO p = (CdssLogBaseVO) o;
                 tranLog.setPatientId(p.getPatientId());
+                tranLog.setDeptName(p.getDeptName());
                 tranLog.setHospitalId(p.getHospitalId());
                 tranLog.setSubHospitalCode(p.getSubHospitalCode());
                 tranLog.setSubHospitalName(p.getSubHospitalName());

+ 2 - 0
src/main/java/com/diagbot/vo/CdssLogBaseVO.java

@@ -28,6 +28,8 @@ public class CdssLogBaseVO {
      */
     private String subHospitalCode;
 
+    private String deptName;
+
     /**
      * 子医院名称
      */

+ 26 - 0
src/main/java/com/diagbot/vo/DiseaseIndexPageVO.java

@@ -0,0 +1,26 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2022/4/8 13:49
+ */
+@Data
+public class DiseaseIndexPageVO extends Page {
+    /**
+     * 类型:1-Icd10编码,2-国临编码
+     */
+    @NotNull(message = "请输入检索类型")
+    private Integer type;
+    /**
+     * 检索内容
+     */
+    @NotBlank(message = "请输入检索内容")
+    private String inputStr;
+}

+ 29 - 0
src/main/java/com/diagbot/vo/RuleQueryKeyVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/12/30 13:21
+ */
+@Getter
+@Setter
+public class RuleQueryKeyVO {
+    @NotBlank(message = "医学标准术语不可为空")
+    private String libName;
+    @NotNull(message = "术语类型不可为空")
+    private Integer libType;
+    @NotNull(message = "规则类型不可为空")
+    private Integer ruleType;
+    //规则名称
+    private String description;
+    //基础医学标准术语
+    private String baseLibName;
+    //基础规则术语类型
+    private Integer baseLibType;
+}

+ 27 - 0
src/main/java/com/diagbot/vo/RuleQueryVO.java

@@ -0,0 +1,27 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: gaodm
+ * @time: 2021/12/30 13:21
+ */
+@Getter
+@Setter
+public class RuleQueryVO extends Page {
+    //医学标准术语
+    private String libName;
+    //术语类型
+    private Integer libType;
+    //规则类型
+    private Integer ruleType;
+    //规则名称
+    private String description;
+    //基础医学标准术语
+    private String baseLibName;
+    //基础规则术语类型
+    private Integer baseLibType;
+}

+ 24 - 0
src/main/java/com/diagbot/vo/StatistByDeptVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import io.swagger.annotations.ApiOperation;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @author: wangfeng
+ * @time: 2022-05-19 13:05
+ */
+@Setter
+@Getter
+public class StatistByDeptVO {
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+    @ApiModelProperty(hidden = true)
+    private String deptName;
+    private Date startGmtReq;
+    private Date endGmtReq;
+}

+ 1 - 0
src/main/java/com/diagbot/vo/TranLogPageVO.java

@@ -16,6 +16,7 @@ import java.util.Date;
 public class TranLogPageVO extends Page {
     @ApiModelProperty(hidden = true)
     private Long hospitalId;
+    private String deptName;
     private String patientId;
     private String sceneName;
     //@JsonFormat(pattern="yyyy-MM-dd HH:mm:ss.SSS",timezone = "GMT+8")

+ 1 - 1
src/main/java/com/diagbot/web/KlDictionaryConller.java

@@ -16,7 +16,7 @@ import java.util.Map;
 
 /**
  * @author wangfeng
- * @Description:
+ * @Description: 远程调用获取med_2021字典信息
  * @date 2021-03-17 13:14
  */
 @RestController

+ 29 - 0
src/main/java/com/diagbot/web/KlRuleController.java

@@ -6,12 +6,16 @@ import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.KlRuleByIdParDTO;
 import com.diagbot.dto.KlRuleInfoDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.RuleDTO;
+import com.diagbot.dto.RuleQueryDTO;
 import com.diagbot.facade.KlRuleFacade;
 import com.diagbot.vo.KlRuleByIdVO;
 import com.diagbot.vo.KlRuleInfoClearVO;
 import com.diagbot.vo.KlRuleInfoSaveVO;
 import com.diagbot.vo.KlRuleInfoVO;
 import com.diagbot.vo.KlRuleSatartOrdisaVO;
+import com.diagbot.vo.RuleQueryKeyVO;
+import com.diagbot.vo.RuleQueryVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -84,4 +88,29 @@ public class KlRuleController {
         return RespDTO.onSuc(klRuleFacade.startRuleInfos(klRuleSatartOrdisaVO));
     }
 
+    @ApiOperation(value = "查询所有有效的规则[by:gaodm]",
+            notes = "libName: 医学标准术语<br>" +
+                    "libType: 术语类型<br>" +
+                    "ruleType: 规则类型<br>" +
+                    "description: 规则名称<br>" +
+                    "baseLibName: 基础医学标准术语<br>" +
+                    "baseLibType: 基础规则术语类型")
+    @PostMapping("/getRulePage")
+    @SysLogger("getRulePage")
+    public RespDTO<Page<RuleQueryDTO>> getRulePage(@RequestBody RuleQueryVO ruleQueryVO) {
+        return RespDTO.onSuc(klRuleFacade.getRulePage(ruleQueryVO));
+    }
+
+    @ApiOperation(value = "根据录入内容查询有效规则的明细[by:zhoutg]",
+            notes = "libName: 医学标准术语<br>" +
+                    "libType: 术语类型<br>" +
+                    "ruleType: 规则类型<br>" +
+                    "description: 规则名称<br>" +
+                    "baseLibName: 基础医学标准术语<br>" +
+                    "baseLibType: 基础规则术语类型")
+    @PostMapping("/getRuleDetail")
+    @SysLogger("getRuleDetail")
+    public RespDTO<RuleDTO> getRuleDetail(@RequestBody @Valid RuleQueryKeyVO ruleQueryKeyVO) {
+        return RespDTO.onSuc(klRuleFacade.getRuleDetail(ruleQueryKeyVO));
+    }
 }

+ 12 - 0
src/main/java/com/diagbot/web/RetrievalController.java

@@ -1,8 +1,11 @@
 package com.diagbot.web;
 
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.DiseaseIndexDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
 import com.diagbot.facade.RetrievalFacade;
+import com.diagbot.vo.DiseaseIndexPageVO;
 import com.diagbot.vo.RetrievalVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -38,4 +41,13 @@ public class RetrievalController {
         RetrievalDTO data = retrievalFacade.index(retrievalVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "通过编码查询疾病[zhaops]",
+            notes = "type: 1-医保编码查询、2-国临编码查询<br>" +
+                    "inputStr: 检索内容<br>")
+    @PostMapping("/diseaseIndex")
+    public RespDTO<IPage<DiseaseIndexDTO>> diseaseIndex(@Valid @RequestBody DiseaseIndexPageVO diseaseIndexPageVO) {
+        IPage<DiseaseIndexDTO> data = retrievalFacade.diseaseIndex(diseaseIndexPageVO);
+        return RespDTO.onSuc(data);
+    }
 }

+ 18 - 0
src/main/java/com/diagbot/web/TranLogController.java

@@ -3,9 +3,11 @@ package com.diagbot.web;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.TranDeptLogDTO;
 import com.diagbot.entity.TranLog;
 import com.diagbot.facade.TranLogFacade;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.StatistByDeptVO;
 import com.diagbot.vo.TranLogPageVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
@@ -17,6 +19,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * @Description:
@@ -34,6 +37,7 @@ public class TranLogController {
     @ApiOperation(value = "调用记录[by:zhaops]",
             notes = "patientId:病人标识<br>" +
                     "sceneName:服务名<br>" +
+                    "deptName:部门名称"+
                     "startGmtReq:接收时间(起始区间),格式【yyyy-MM-dd HH:mm:ss】<br>" +
                     "endGmtReq:接收时间(结束区间),格式【yyyy-MM-dd HH:mm:ss】<br>" +
                     "startGmtResp:响应时间(起始区间),格式【yyyy-MM-dd HH:mm:ss】<br>" +
@@ -56,4 +60,18 @@ public class TranLogController {
         TranLog data = tranLogFacade.getRecordById(idVO);
         return RespDTO.onSuc(data);
     }
+
+    @ApiOperation(value = "根据医院部门查看统计数据[by:wangfeng]",
+            notes = " startGmtReq:接收时间(起始区间),格式【yyyy-MM-dd HH:mm:ss】<br>" +
+                    " endGmtReq:接收时间(结束区间),格式【yyyy-MM-dd HH:mm:ss】<br>")
+    @PostMapping("/getStatistByDept")
+    @SysLogger("getStatistByDept")
+    public RespDTO<List<TranDeptLogDTO>> getStatistByDept(@RequestBody @Valid StatistByDeptVO statistByDeptVO) {
+        List<TranDeptLogDTO> data = tranLogFacade.getStatistByDeptName(statistByDeptVO);
+        return RespDTO.onSuc(data);
+    }
+
+
+
+
 }

+ 43 - 19
src/main/resources/mapper/TranLogMapper.xml

@@ -4,23 +4,23 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.TranLog">
-        <id column="id" property="id" />
-        <result column="is_deleted" property="isDeleted" />
-        <result column="gmt_create" property="gmtCreate" />
-        <result column="gmt_modified" property="gmtModified" />
-        <result column="creator" property="creator" />
-        <result column="modifier" property="modifier" />
-        <result column="patient_id" property="patientId" />
-        <result column="hospital_id" property="hospitalId" />
-        <result column="sub_hospital_code" property="subHospitalCode" />
-        <result column="sub_hospital_name" property="subHospitalName" />
-        <result column="scene_name" property="sceneName" />
-        <result column="params" property="params" />
-        <result column="result" property="result" />
-        <result column="gmt_req" property="gmtReq" />
-        <result column="gmt_resp" property="gmtResp" />
-        <result column="exec_time" property="execTime" />
-        <result column="success_flag" property="successFlag" />
+        <id column="id" property="id"/>
+        <result column="is_deleted" property="isDeleted"/>
+        <result column="gmt_create" property="gmtCreate"/>
+        <result column="gmt_modified" property="gmtModified"/>
+        <result column="creator" property="creator"/>
+        <result column="modifier" property="modifier"/>
+        <result column="patient_id" property="patientId"/>
+        <result column="hospital_id" property="hospitalId"/>
+        <result column="sub_hospital_code" property="subHospitalCode"/>
+        <result column="sub_hospital_name" property="subHospitalName"/>
+        <result column="scene_name" property="sceneName"/>
+        <result column="params" property="params"/>
+        <result column="result" property="result"/>
+        <result column="gmt_req" property="gmtReq"/>
+        <result column="gmt_resp" property="gmtResp"/>
+        <result column="exec_time" property="execTime"/>
+        <result column="success_flag" property="successFlag"/>
     </resultMap>
 
     <select id="getPage" resultType="com.diagbot.entity.TranLog">
@@ -33,6 +33,9 @@
         <if test="tranLogPageVO.hospitalId != null">
             AND a.hospital_id = #{tranLogPageVO.hospitalId}
         </if>
+        <if test="tranLogPageVO.deptName != null and tranLogPageVO.deptName !=''">
+            AND a.dept_name LIKE CONCAT( '%', #{tranLogPageVO.deptName}, '%' )
+        </if>
         <if test="tranLogPageVO.patientId != null and tranLogPageVO.patientId != ''">
             AND a.patient_id LIKE CONCAT( '%', #{tranLogPageVO.patientId}, '%' )
         </if>
@@ -43,11 +46,13 @@
             AND a.sub_hospital_name LIKE CONCAT( '%', #{tranLogPageVO.subHospitalName}, '%' )
         </if>
         <if test="tranLogPageVO.startGmtReq != null and tranLogPageVO.endGmtReq != null">
-            AND DATE_FORMAT( a.gmt_req, '%Y-%m-%d %T' ) BETWEEN  DATE_FORMAT(#{tranLogPageVO.startGmtReq}, '%Y-%m-%d %T' )
+            AND DATE_FORMAT( a.gmt_req, '%Y-%m-%d %T' ) BETWEEN DATE_FORMAT(#{tranLogPageVO.startGmtReq}, '%Y-%m-%d %T'
+            )
             AND DATE_FORMAT(#{tranLogPageVO.endGmtReq}, '%Y-%m-%d %T' )
         </if>
         <if test="tranLogPageVO.startGmtResp != null and tranLogPageVO.endGmtResp != null">
-            AND DATE_FORMAT( a.gmt_resp, '%Y-%m-%d %T' ) BETWEEN DATE_FORMAT(#{tranLogPageVO.startGmtResp}, '%Y-%m-%d %T' )
+            AND DATE_FORMAT( a.gmt_resp, '%Y-%m-%d %T' ) BETWEEN DATE_FORMAT(#{tranLogPageVO.startGmtResp}, '%Y-%m-%d
+            %T' )
             AND DATE_FORMAT(#{tranLogPageVO.endGmtResp}, '%Y-%m-%d %T' )
         </if>
         <if test="tranLogPageVO.successFlag != null">
@@ -56,4 +61,23 @@
         ORDER BY
         a.gmt_modified DESC
     </select>
+    <select id="getStatisDeptAlls" resultType="com.diagbot.dto.TranDeptLogDTO">
+        SELECT dept_name as deptName,
+        COUNT(*) as sums
+        FROM tran_log
+        WHERE is_deleted = "N"
+        <if test="hospitalId != null">
+            AND hospital_id = #{hospitalId}
+        </if>
+        <if test="deptName != null and deptName !=''">
+            AND dept_name LIKE CONCAT( '%', #{deptName}, '%' )
+        </if>
+        <if test="startGmtReq != null and endGmtReq != null">
+            AND DATE_FORMAT( gmt_req, '%Y-%m-%d %T' ) BETWEEN DATE_FORMAT(#{startGmtReq}, '%Y-%m-%d %T'
+            )
+            AND DATE_FORMAT(#{endGmtReq}, '%Y-%m-%d %T' )
+        </if>
+        GROUP BY dept_name order by sums desc
+
+    </select>
 </mapper>