Browse Source

静态知识映射测试

zhaops 4 years ago
parent
commit
ada370918f
27 changed files with 1429 additions and 12 deletions
  1. 23 0
      cdssman-service/src/main/java/com/diagbot/dto/CaseStaticResultDTO.java
  2. 17 0
      cdssman-service/src/main/java/com/diagbot/dto/ExportCommonStaticTestDTO.java
  3. 30 0
      cdssman-service/src/main/java/com/diagbot/dto/ExportCommonTestDTO.java
  4. 17 0
      cdssman-service/src/main/java/com/diagbot/dto/ExportLisStaticTestDTO.java
  5. 32 0
      cdssman-service/src/main/java/com/diagbot/dto/ExportLisTestDTO.java
  6. 37 10
      cdssman-service/src/main/java/com/diagbot/entity/CaseInfo.java
  7. 173 0
      cdssman-service/src/main/java/com/diagbot/entity/ResultStaticInfo.java
  8. 225 0
      cdssman-service/src/main/java/com/diagbot/entity/ResultStaticKnowledge.java
  9. 66 0
      cdssman-service/src/main/java/com/diagbot/enums/StaticKnowledgeEnum.java
  10. 25 0
      cdssman-service/src/main/java/com/diagbot/facade/ConceptInfoFacade.java
  11. 13 0
      cdssman-service/src/main/java/com/diagbot/facade/ResultStaticInfoFacade.java
  12. 377 0
      cdssman-service/src/main/java/com/diagbot/facade/ResultStaticKnowledgeFacade.java
  13. 13 0
      cdssman-service/src/main/java/com/diagbot/facade/StaticKnowledgeTestFacade.java
  14. 2 2
      cdssman-service/src/main/java/com/diagbot/mapper/CaseInfoMapper.java
  15. 20 0
      cdssman-service/src/main/java/com/diagbot/mapper/ResultStaticInfoMapper.java
  16. 19 0
      cdssman-service/src/main/java/com/diagbot/mapper/ResultStaticKnowledgeMapper.java
  17. 20 0
      cdssman-service/src/main/java/com/diagbot/service/ResultStaticInfoService.java
  18. 19 0
      cdssman-service/src/main/java/com/diagbot/service/ResultStaticKnowledgeService.java
  19. 26 0
      cdssman-service/src/main/java/com/diagbot/service/impl/ResultStaticInfoServiceImpl.java
  20. 25 0
      cdssman-service/src/main/java/com/diagbot/service/impl/ResultStaticKnowledgeServiceImpl.java
  21. 18 0
      cdssman-service/src/main/java/com/diagbot/vo/ResultStaticPageVO.java
  22. 23 0
      cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeTestVO.java
  23. 124 0
      cdssman-service/src/main/java/com/diagbot/web/StaticKnowledgeTestController.java
  24. 2 0
      cdssman-service/src/main/resources/mapper/CaseInfoMapper.xml
  25. 1 0
      cdssman-service/src/main/resources/mapper/ResultInfoMapper.xml
  26. 41 0
      cdssman-service/src/main/resources/mapper/ResultStaticInfoMapper.xml
  27. 41 0
      cdssman-service/src/main/resources/mapper/ResultStaticKnowledgeMapper.xml

+ 23 - 0
cdssman-service/src/main/java/com/diagbot/dto/CaseStaticResultDTO.java

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 10:16
+ */
+@Getter
+@Setter
+public class CaseStaticResultDTO {
+    private String caseName;
+    private Long resultId;
+    private Integer caseNo;
+    private Integer totleNum;
+    private Integer unMappingNum;
+    private Integer withoutKnowledgeNum;
+    private Date gmtModified;
+}

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/dto/ExportCommonStaticTestDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 11:44
+ */
+@Getter
+@Setter
+public class ExportCommonStaticTestDTO extends ExportCommonTestDTO {
+    @Excel(name = "静态知识标识", width = 20, orderNum = "5", replace = { "无_0", "有_1" })
+    private Integer hasStaticKnowledge;
+}

+ 30 - 0
cdssman-service/src/main/java/com/diagbot/dto/ExportCommonTestDTO.java

@@ -0,0 +1,30 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 11:43
+ */
+@Getter
+@Setter
+public class ExportCommonTestDTO {
+    @Excel(name = "测试时间", width = 40, orderNum = "1", format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date gmtModified;
+    @Excel(name = "医院术语", width = 40, orderNum = "2")
+    private String hisName;
+    private String hisDetailName;
+    @Excel(name = "标准术语", width = 40, orderNum = "4")
+    private String name;
+    /**
+     * 是否有标准词(0:无,1:有)
+     */
+    private Integer hasStandName;
+}

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/dto/ExportLisStaticTestDTO.java

@@ -0,0 +1,17 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 11:30
+ */
+@Getter
+@Setter
+public class ExportLisStaticTestDTO extends ExportLisTestDTO {
+    @Excel(name = "静态知识标识", width = 20, orderNum = "5", replace = { "无_0", "有_1" })
+    private Integer hasStaticKnowledge;
+}

+ 32 - 0
cdssman-service/src/main/java/com/diagbot/dto/ExportLisTestDTO.java

@@ -0,0 +1,32 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.fasterxml.jackson.annotation.JsonFormat;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 11:31
+ */
+@Getter
+@Setter
+public class ExportLisTestDTO {
+
+    @Excel(name = "测试时间", width = 40, orderNum = "1", format = "yyyy-MM-dd HH:mm:ss")
+    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss", timezone = "GMT+8")
+    private Date gmtModified;
+    @Excel(name = "医院术语(检验套餐)", width = 40, orderNum = "2")
+    private String hisName;
+    @Excel(name = "医院术语(检验细项)", width = 40, orderNum = "3")
+    private String hisDetailName;
+    @Excel(name = "标准术语", width = 40, orderNum = "4")
+    private String name;
+    /**
+     * 是否有标准词(0:无,1:有)
+     */
+    private Integer hasStandName;
+}

+ 37 - 10
cdssman-service/src/main/java/com/diagbot/entity/CaseInfo.java

@@ -1,18 +1,19 @@
 package com.diagbot.entity;
 
-import com.baomidou.mybatisplus.annotation.TableName;
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
-import java.time.LocalDateTime;
+import com.baomidou.mybatisplus.annotation.TableName;
+
 import java.io.Serializable;
+import java.util.Date;
 
 /**
  * <p>
  * 
  * </p>
  *
- * @author zhaops
- * @since 2021-01-06
+ * @author gaodm
+ * @since 2021-01-22
  */
 @TableName("test_case_info")
 public class CaseInfo implements Serializable {
@@ -33,12 +34,12 @@ public class CaseInfo implements Serializable {
     /**
      * 记录创建时间
      */
-    private LocalDateTime gmtCreate;
+    private Date gmtCreate;
 
     /**
      * 记录修改时间,如果时间是1970年则表示纪录未修改
      */
-    private LocalDateTime gmtModified;
+    private Date gmtModified;
 
     /**
      * 创建人,0表示无创建人值
@@ -55,6 +56,16 @@ public class CaseInfo implements Serializable {
      */
     private String caseName;
 
+    /**
+     * 测试组
+     */
+    private Integer caseGroup;
+
+    /**
+     * 测试编号
+     */
+    private Integer caseNo;
+
     public Long getId() {
         return id;
     }
@@ -69,18 +80,18 @@ public class CaseInfo implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
-    public LocalDateTime getGmtCreate() {
+    public Date getGmtCreate() {
         return gmtCreate;
     }
 
-    public void setGmtCreate(LocalDateTime gmtCreate) {
+    public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
-    public LocalDateTime getGmtModified() {
+    public Date getGmtModified() {
         return gmtModified;
     }
 
-    public void setGmtModified(LocalDateTime gmtModified) {
+    public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
     public String getCreator() {
@@ -104,6 +115,20 @@ public class CaseInfo implements Serializable {
     public void setCaseName(String caseName) {
         this.caseName = caseName;
     }
+    public Integer getCaseGroup() {
+        return caseGroup;
+    }
+
+    public void setCaseGroup(Integer caseGroup) {
+        this.caseGroup = caseGroup;
+    }
+    public Integer getCaseNo() {
+        return caseNo;
+    }
+
+    public void setCaseNo(Integer caseNo) {
+        this.caseNo = caseNo;
+    }
 
     @Override
     public String toString() {
@@ -115,6 +140,8 @@ public class CaseInfo implements Serializable {
             ", creator=" + creator +
             ", modifier=" + modifier +
             ", caseName=" + caseName +
+            ", caseGroup=" + caseGroup +
+            ", caseNo=" + caseNo +
         "}";
     }
 }

+ 173 - 0
cdssman-service/src/main/java/com/diagbot/entity/ResultStaticInfo.java

@@ -0,0 +1,173 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-22
+ */
+@TableName("test_result_static_info")
+public class ResultStaticInfo implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 医院id
+     */
+    private Long hospitalId;
+
+    /**
+     * 测试案例编号
+     */
+    private Integer caseNo;
+
+    /**
+     * 映射关系总数
+     */
+    private Integer totleNum;
+
+    /**
+     * 术语未匹配条数
+     */
+    private Integer unMappingNum;
+
+    /**
+     * 缺少静态知识条数
+     */
+    private Integer withoutKnowledgeNum;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public Integer getCaseNo() {
+        return caseNo;
+    }
+
+    public void setCaseNo(Integer caseNo) {
+        this.caseNo = caseNo;
+    }
+    public Integer getTotleNum() {
+        return totleNum;
+    }
+
+    public void setTotleNum(Integer totleNum) {
+        this.totleNum = totleNum;
+    }
+    public Integer getUnMappingNum() {
+        return unMappingNum;
+    }
+
+    public void setUnMappingNum(Integer unMappingNum) {
+        this.unMappingNum = unMappingNum;
+    }
+    public Integer getWithoutKnowledgeNum() {
+        return withoutKnowledgeNum;
+    }
+
+    public void setWithoutKnowledgeNum(Integer withoutKnowledgeNum) {
+        this.withoutKnowledgeNum = withoutKnowledgeNum;
+    }
+
+    @Override
+    public String toString() {
+        return "ResultStaticInfo{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", hospitalId=" + hospitalId +
+            ", caseNo=" + caseNo +
+            ", totleNum=" + totleNum +
+            ", unMappingNum=" + unMappingNum +
+            ", withoutKnowledgeNum=" + withoutKnowledgeNum +
+        "}";
+    }
+}

+ 225 - 0
cdssman-service/src/main/java/com/diagbot/entity/ResultStaticKnowledge.java

@@ -0,0 +1,225 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-22
+ */
+@TableName("test_result_static_knowledge")
+public class ResultStaticKnowledge implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 测试结果id
+     */
+    private Long resultId;
+
+    /**
+     * 术语类型(1:诊断、2:检验、3:检查、4:药品、5:手术/操作)
+     */
+    private Integer type;
+
+    /**
+     * 术语标签
+     */
+    private String label;
+
+    /**
+     * 标准术语名称
+     */
+    private String name;
+
+    /**
+     * 医院术语
+     */
+    private String hisName;
+
+    /**
+     * 医院术语-细项
+     */
+    private String hisDetailName;
+
+    /**
+     * 是否有标准词(0:无,1:有)
+     */
+    private Integer hasStandName;
+
+    /**
+     * 是否有静态知识(0:无,1:有)
+     */
+    private Integer hasStaticKnowledge;
+
+    /**
+     * 提示信息(异常提醒)
+     */
+    private String message;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getResultId() {
+        return resultId;
+    }
+
+    public void setResultId(Long resultId) {
+        this.resultId = resultId;
+    }
+    public Integer getType() {
+        return type;
+    }
+
+    public void setType(Integer type) {
+        this.type = type;
+    }
+    public String getLabel() {
+        return label;
+    }
+
+    public void setLabel(String label) {
+        this.label = label;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getHisName() {
+        return hisName;
+    }
+
+    public void setHisName(String hisName) {
+        this.hisName = hisName;
+    }
+    public String getHisDetailName() {
+        return hisDetailName;
+    }
+
+    public void setHisDetailName(String hisDetailName) {
+        this.hisDetailName = hisDetailName;
+    }
+    public Integer getHasStandName() {
+        return hasStandName;
+    }
+
+    public void setHasStandName(Integer hasStandName) {
+        this.hasStandName = hasStandName;
+    }
+    public Integer getHasStaticKnowledge() {
+        return hasStaticKnowledge;
+    }
+
+    public void setHasStaticKnowledge(Integer hasStaticKnowledge) {
+        this.hasStaticKnowledge = hasStaticKnowledge;
+    }
+    public String getMessage() {
+        return message;
+    }
+
+    public void setMessage(String message) {
+        this.message = message;
+    }
+
+    @Override
+    public String toString() {
+        return "ResultStaticKnowledge{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", resultId=" + resultId +
+            ", type=" + type +
+            ", label=" + label +
+            ", name=" + name +
+            ", hisName=" + hisName +
+            ", hisDetailName=" + hisDetailName +
+            ", hasStandName=" + hasStandName +
+            ", hasStaticKnowledge=" + hasStaticKnowledge +
+            ", message=" + message +
+        "}";
+    }
+}

+ 66 - 0
cdssman-service/src/main/java/com/diagbot/enums/StaticKnowledgeEnum.java

@@ -0,0 +1,66 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/21 15:44
+ */
+public enum StaticKnowledgeEnum implements KeyedNamed {
+    Disease(1, "诊断"),
+    Lis(2, "检验"),
+    Pacs(3, "检查"),
+    Drug(4, "药品"),
+    Operation(5, "手术/操作");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    StaticKnowledgeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static StaticKnowledgeEnum getEnum(int key) {
+        for (StaticKnowledgeEnum item : StaticKnowledgeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static StaticKnowledgeEnum getEnum(String name) {
+        for (StaticKnowledgeEnum item : StaticKnowledgeEnum.values()) {
+            if (item.name.equals(name)) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        StaticKnowledgeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    public static Integer getKey(String name) {
+        StaticKnowledgeEnum item = getEnum(name);
+        return item != null ? item.key : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 25 - 0
cdssman-service/src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -60,6 +60,31 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
     @Qualifier("conceptDetailServiceImpl")
     private ConceptDetailService conceptDetailService;
 
+    /**
+     * 获取全静态知识
+     *
+     * @return
+     */
+    public List<ConceptInfo> getAllConceptInfo() {
+        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
+        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<ConceptInfo> infoList = this.list(conceptInfoQueryWrapper);
+
+        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+        conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<ConceptDetail> detailsList = conceptDetailFacade.list(conceptDetailQueryWrapper);
+
+        List<Long> conceptIds = detailsList.stream().map(i -> i.getConceptId()).distinct().collect(Collectors.toList());
+
+        List<ConceptInfo> retList = Lists.newArrayList();
+        infoList.forEach(info -> {
+            if (conceptIds.contains(info.getId())) {
+                retList.add(info);
+            }
+        });
+        return infoList;
+    }
+
     /**
      * 返回不带静态知识的检索结果
      *

+ 13 - 0
cdssman-service/src/main/java/com/diagbot/facade/ResultStaticInfoFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.ResultStaticInfoServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 10:30
+ */
+@Component
+public class ResultStaticInfoFacade extends ResultStaticInfoServiceImpl {
+}

+ 377 - 0
cdssman-service/src/main/java/com/diagbot/facade/ResultStaticKnowledgeFacade.java

@@ -0,0 +1,377 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.ExportCommonStaticTestDTO;
+import com.diagbot.dto.ExportCommonTestDTO;
+import com.diagbot.dto.ExportLisStaticTestDTO;
+import com.diagbot.dto.ExportLisTestDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.ConceptInfo;
+import com.diagbot.entity.DiseaseConfig;
+import com.diagbot.entity.DrugConfig;
+import com.diagbot.entity.LisConfig;
+import com.diagbot.entity.OperationConfig;
+import com.diagbot.entity.PacsConfig;
+import com.diagbot.entity.ResultStaticInfo;
+import com.diagbot.entity.ResultStaticKnowledge;
+import com.diagbot.entity.TransfusionConfig;
+import com.diagbot.entity.node.LisName;
+import com.diagbot.entity.relationship.LisNameLisSet;
+import com.diagbot.enums.ConceptTypeEnum;
+import com.diagbot.enums.GraphLabelEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.repository.LisNameRepository;
+import com.diagbot.service.ResultStaticInfoService;
+import com.diagbot.service.ResultStaticKnowledgeService;
+import com.diagbot.service.impl.ResultStaticKnowledgeServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.ConceptVO;
+import com.diagbot.vo.ResultStaticPageVO;
+import com.diagbot.vo.StaticKnowledgeTestVO;
+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 org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import java.util.Date;
+import java.util.List;
+import java.util.Map;
+import java.util.Set;
+import java.util.stream.Collectors;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/21 15:20
+ */
+@Component
+public class ResultStaticKnowledgeFacade extends ResultStaticKnowledgeServiceImpl {
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
+    @Autowired
+    private ConceptInfoFacade conceptInfoFacade;
+
+    @Autowired
+    private LisConfigFacade lisConfigFacade;
+    @Autowired
+    private PacsConfigFacade pacsConfigFacade;
+    @Autowired
+    private DrugConfigFacade drugConfigFacade;
+    @Autowired
+    private DiseaseConfigFacade diseaseConfigFacade;
+    @Autowired
+    private OperationConfigFacade operationConfigFacade;
+    @Autowired
+    private TransfusionConfigFacade transfusionConfigFacade;
+
+    @Autowired
+    private LisNameRepository lisNameRepository;
+    @Autowired
+    @Qualifier("resultStaticKnowledgeServiceImpl")
+    private ResultStaticKnowledgeService resultStaticKnowledgeService;
+    @Autowired
+    @Qualifier("resultStaticInfoServiceImpl")
+    private ResultStaticInfoService resultStaticInfoService;
+
+
+    public Boolean allTest(StaticKnowledgeTestVO testVO) {
+        Long hospitalId = testVO.getHospitalId();
+        List<LisConfig> lisConfigList = lisConfigFacade.getListByHospitalId(hospitalId);
+        List<PacsConfig> pacsConfigList = pacsConfigFacade.getListByHospitalId(hospitalId);
+        List<DrugConfig> drugConfigList = drugConfigFacade.getListByHospitalId(hospitalId);
+        List<DiseaseConfig> diseaseConfigList = diseaseConfigFacade.getListByHospitalId(hospitalId);
+        List<OperationConfig> operationConfigList = operationConfigFacade.getListByHospitalId(hospitalId);
+        List<TransfusionConfig> transfusionConfigList = transfusionConfigFacade.getListByHospitalId(hospitalId);
+        Map<String, Map<String, Map<String, List<Long>>>> lisConfigMap = lisConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> pacsConfigMap = pacsConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, Map<String, List<Long>>>> drugConfigMap = drugConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> diseaseConfigMap = diseaseConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> operationConfigMap = operationConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+        Map<String, Map<String, List<Long>>> transfusionConfigMap = transfusionConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+
+
+        return true;
+    }
+
+
+    /**
+     * 化验静态知识测试
+     *
+     * @param file
+     * @param testVO
+     * @return
+     */
+    public Boolean lisTest(MultipartFile file, StaticKnowledgeTestVO testVO) {
+        List<ResultStaticKnowledge> saveList = Lists.newLinkedList();
+        //从Excel读取数据
+        List<LisConfig> lisConfigList = ExcelUtils.importExcel(file, 0, 1, LisConfig.class);
+
+        Long hospitalId = testVO.getHospitalId();
+        Date now = DateUtil.now();
+
+        //1、数据完整性校验
+        //2、去除前后空格
+        //过滤空数据,保留重复数据,方便计行
+        lisConfigList = lisConfigList.stream()
+                .filter(i -> StringUtil.isNotBlank(i.getHisName())
+                        || StringUtil.isNotBlank(i.getHisDetailName())
+                        || StringUtil.isNotBlank(i.getUniqueCode())
+                        || StringUtil.isNotBlank(i.getUniqueName()))
+                .collect(Collectors.toList());
+        if (ListUtil.isEmpty(lisConfigList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,测试数据不能为空");
+        }
+        //数据预处理
+        List<String> emptyNumList = Lists.newLinkedList();
+        for (int i = 0; i < lisConfigList.size(); i++) {
+            if (StringUtil.isBlank(lisConfigList.get(i).getHisName())
+                    || StringUtil.isBlank(lisConfigList.get(i).getUniqueName())) {
+                emptyNumList.add(String.valueOf(i + 2));
+            }
+            if (StringUtil.isNotBlank(lisConfigList.get(i).getHisName())) {
+                lisConfigList.get(i).setHisName(lisConfigList.get(i).getHisName().trim());
+            }
+            if (StringUtil.isNotBlank(lisConfigList.get(i).getHisDetailName())) {
+                lisConfigList.get(i).setHisDetailName(lisConfigList.get(i).getHisDetailName().trim());
+            }
+            if (StringUtil.isNotBlank(lisConfigList.get(i).getUniqueName())) {
+                lisConfigList.get(i).setUniqueName(lisConfigList.get(i).getUniqueName().trim());
+            }
+            if (StringUtil.isNotBlank(lisConfigList.get(i).getUniqueCode())) {
+                lisConfigList.get(i).setUniqueCode(lisConfigList.get(i).getUniqueCode().trim());
+            } else {
+                lisConfigList.get(i).setUniqueCode(null);
+            }
+        }
+
+        if (ListUtil.isNotEmpty(emptyNumList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "以下行数(不计入空行)存在不完整数据:"
+                    + emptyNumList.stream().collect(Collectors.joining("、"))
+                    + "。测试取消,请修改后再试。\n");
+        }
+
+        //重复数据过滤
+        lisConfigList = lisConfigList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+        if (ListUtil.isEmpty(lisConfigList)) {
+            throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "校验失败,测试数据不能为空");
+        }
+
+        //标准术语查询
+        List<String> uniqueNames = lisConfigList
+                .stream()
+                .map(i -> i.getUniqueName())
+                .collect(Collectors.toList());
+        ConceptVO conceptVO = new ConceptVO();
+        conceptVO.setNames(uniqueNames);
+        conceptVO.setType(ConceptTypeEnum.LisPack.getKey());
+        RespDTO<List<String>> respLisPackDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTOUtil.respNGDealCover(respLisPackDTO, "标准术语校验失败");
+        List<String> lisPackNames = respLisPackDTO.data;
+        conceptVO.setType(ConceptTypeEnum.Lis.getKey());
+        RespDTO<List<String>> respLisDTO = cdssCoreClient.getConceptNames(conceptVO);
+        RespDTOUtil.respNGDealCover(respLisDTO, "标准术语校验失败");
+        List<String> lisNames = respLisDTO.data;
+
+
+        // 已存在数据
+        Map<String, Map<String, Map<String, List<Long>>>> hisConfigMap = lisConfigFacade.getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, List<Long>>>> uniqueConfigMap = lisConfigFacade.getUniqueConfigMap(hospitalId, null, null);
+
+        //静态知识
+        List<ConceptInfo> infoList = conceptInfoFacade.getAllConceptInfo();
+        if (ListUtil.isEmpty(infoList)) {
+            return true;
+        }
+        List<String> lisStaticNames = infoList.stream()
+                .filter(i -> i.getType().equals(GraphLabelEnum.LisName.getName()))
+                .map(i -> i.getName())
+                .distinct()
+                .collect(Collectors.toList());
+        List<String> lisPackStaticNames = infoList.stream()
+                .filter(i -> i.getType().equals(GraphLabelEnum.LisSet.getName()))
+                .map(i -> i.getName())
+                .distinct()
+                .collect(Collectors.toList());
+
+        for (LisConfig config : lisConfigList) {
+            ResultStaticKnowledge result = new ResultStaticKnowledge();
+            result.setGmtCreate(now);
+            result.setGmtModified(now);
+            result.setMessage("");
+            result.setHisName(config.getHisName());
+            result.setHisDetailName(config.getHisDetailName());
+            result.setName(config.getUniqueName());
+
+            //映射关系是否已存在
+            if (hisConfigMap.containsKey(result.getHisName()) &&
+                    hisConfigMap.get(result.getHisName()).containsKey(result.getHisDetailName())
+                    && hisConfigMap.get(result.getHisName()).get(result.getHisDetailName()).keySet().contains(result.getName())) {
+                if (lisPackNames.contains(result.getName()) || lisNames.contains(result.getName())) {
+                    result.setHasStandName(1);
+                } else {
+                    result.setHasStandName(0);
+                    result.setMessage("标准术语不存在;");
+                }
+            } else {
+                result.setHasStandName(0);
+                result.setMessage(result.getMessage() + "映射关系不存在;");
+            }
+
+            //静态知识是否存在
+            if (lisStaticNames.contains(result.getName())
+                    || lisPackStaticNames.contains(result.getName())) {
+                result.setHasStaticKnowledge(1);
+            } else {
+                //查找上级静态知识是否存在
+                List<LisName> lisNameList = lisNameRepository.findByNameIs(result.getName());
+                if (ListUtil.isEmpty(lisNameList)) {
+                    result.setHasStaticKnowledge(0);
+                    result.setMessage(result.getMessage() + "缺少静态知识;");
+                } else {
+                    lisNameList.forEach(lisName -> {
+                        Boolean isExist = false;
+                        Set<LisNameLisSet> lisNameLisSetSet = lisName.getLisNamelissets();
+                        if (lisNameLisSetSet != null && lisNameLisSetSet.size() > 0) {
+                            List<String> lisPacks = lisNameLisSetSet.stream().map(i -> i.getLisSet()).collect(Collectors.toList())
+                                    .stream().map(i -> i.getName()).sorted().collect(Collectors.toList());
+                            for (String lisPack : lisPacks) {
+                                if (lisPackNames.contains(lisPack)) {
+                                    isExist = true;
+                                    result.setMessage(result.getMessage() + "取上级(" + lisPack + ")静态知识;");
+                                    break;
+                                }
+                            }
+                        }
+                        if (isExist) {
+                            result.setHasStaticKnowledge(1);
+                        } else {
+                            result.setHasStaticKnowledge(0);
+                            result.setMessage(result.getMessage() + "缺少静态知识;");
+                        }
+                    });
+                }
+            }
+            saveList.add(result);
+        }
+
+        //保存
+        saveResult(saveList, testVO);
+        return true;
+    }
+
+    /**
+     * 保存静态知识测试结果
+     *
+     * @param list
+     * @param testVO
+     * @return
+     */
+    public Boolean saveResult(List<ResultStaticKnowledge> list, StaticKnowledgeTestVO testVO) {
+        Date now = new Date();
+        Integer totleNum = list.size();
+        Integer unMappingNum = list.stream().filter(i -> i.getHasStandName().equals(0)).collect(Collectors.toList()).size();
+        Integer withoutKnowledgeNum = list.stream().filter(i -> i.getHasStaticKnowledge().equals(0)).collect(Collectors.toList()).size();
+        QueryWrapper<ResultStaticInfo> resultStaticInfoQueryWrapper = new QueryWrapper<>();
+        resultStaticInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", testVO.getHospitalId())
+                .eq("case_no", testVO.getCaseNo());
+        ResultStaticInfo resultInfo = resultStaticInfoService.getOne(resultStaticInfoQueryWrapper, false);
+        if (resultInfo == null) {
+            resultInfo = new ResultStaticInfo();
+            resultInfo.setHospitalId(testVO.getHospitalId());
+            resultInfo.setCaseNo(testVO.getCaseNo());
+            resultInfo.setGmtCreate(now);
+        }
+        resultInfo.setGmtModified(now);
+        resultInfo.setTotleNum(totleNum);
+        resultInfo.setUnMappingNum(unMappingNum);
+        resultInfo.setWithoutKnowledgeNum(withoutKnowledgeNum);
+        resultStaticInfoService.saveOrUpdate(resultInfo);
+
+        QueryWrapper<ResultStaticKnowledge> resultStaticKnowledgeQueryWrapper = new QueryWrapper<>();
+        resultStaticKnowledgeQueryWrapper.eq("result_id", resultInfo.getId());
+        resultStaticKnowledgeService.remove(resultStaticKnowledgeQueryWrapper);
+
+        for (ResultStaticKnowledge result : list) {
+            result.setType(testVO.getType());
+            result.setResultId(resultInfo.getId());
+        }
+
+        resultStaticKnowledgeService.saveOrUpdateBatch(list);
+        return true;
+    }
+
+    //region --------------------------导出------------------------------
+
+    /**
+     * 数据导出
+     *
+     * @param response
+     * @param resultStaticPageVO
+     */
+    public void exportLisExcel(HttpServletResponse response, ResultStaticPageVO resultStaticPageVO) {
+        resultStaticPageVO.setSize(-1L);
+        IPage<ResultStaticKnowledge> page = this.getPage(resultStaticPageVO);
+        String fileName = "检验映射测试结果导出.xls";
+        List<ExportLisTestDTO> records = BeanUtil.listCopyTo(page.getRecords(), ExportLisTestDTO.class);
+        ExcelUtils.exportExcel(records, null, "sheet1", ExportLisTestDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 数据导出
+     *
+     * @param response
+     * @param resultStaticPageVO
+     */
+    public void exportLisStaticExcel(HttpServletResponse response, ResultStaticPageVO resultStaticPageVO) {
+        resultStaticPageVO.setSize(-1L);
+        IPage<ResultStaticKnowledge> page = this.getPage(resultStaticPageVO);
+        String fileName = "检验静态知识测试结果导出.xls";
+        List<ExportLisStaticTestDTO> records = BeanUtil.listCopyTo(page.getRecords(), ExportLisStaticTestDTO.class);
+        ExcelUtils.exportExcel(records, null, "sheet1", ExportLisStaticTestDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 数据导出
+     *
+     * @param response
+     * @param resultStaticPageVO
+     */
+    public void exportCommonExcel(HttpServletResponse response, ResultStaticPageVO resultStaticPageVO) {
+        resultStaticPageVO.setSize(-1L);
+        IPage<ResultStaticKnowledge> page = this.getPage(resultStaticPageVO);
+        String fileName = "通用映射测试结果导出.xls";
+        List<ExportCommonTestDTO> records = BeanUtil.listCopyTo(page.getRecords(), ExportCommonTestDTO.class);
+        ExcelUtils.exportExcel(records, null, "sheet1", ExportCommonTestDTO.class, fileName, response, 12.8f);
+    }
+
+    /**
+     * 数据导出
+     *
+     * @param response
+     * @param resultStaticPageVO
+     */
+    public void exportCommonStaticExcel(HttpServletResponse response, ResultStaticPageVO resultStaticPageVO) {
+        resultStaticPageVO.setSize(-1L);
+        IPage<ResultStaticKnowledge> page = this.getPage(resultStaticPageVO);
+        String fileName = "通用静态知识测试结果导出.xls";
+        List<ExportCommonStaticTestDTO> records = BeanUtil.listCopyTo(page.getRecords(), ExportCommonStaticTestDTO.class);
+        ExcelUtils.exportExcel(records, null, "sheet1", ExportCommonStaticTestDTO.class, fileName, response, 12.8f);
+    }
+
+    //endregion --------------------------导出------------------------------
+}

+ 13 - 0
cdssman-service/src/main/java/com/diagbot/facade/StaticKnowledgeTestFacade.java

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/21 15:19
+ */
+@Component
+public class StaticKnowledgeTestFacade {
+
+}

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

@@ -8,8 +8,8 @@ import com.baomidou.mybatisplus.core.mapper.BaseMapper;
  *  Mapper 接口
  * </p>
  *
- * @author zhaops
- * @since 2021-01-06
+ * @author gaodm
+ * @since 2021-01-22
  */
 public interface CaseInfoMapper extends BaseMapper<CaseInfo> {
 

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/mapper/ResultStaticInfoMapper.java

@@ -0,0 +1,20 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.CaseStaticResultDTO;
+import com.diagbot.entity.ResultStaticInfo;
+import com.diagbot.vo.HospitalIdVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-22
+ */
+public interface ResultStaticInfoMapper extends BaseMapper<ResultStaticInfo> {
+    List<CaseStaticResultDTO> getCaseResultList(HospitalIdVO hospitalIdVO);
+}

+ 19 - 0
cdssman-service/src/main/java/com/diagbot/mapper/ResultStaticKnowledgeMapper.java

@@ -0,0 +1,19 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.entity.ResultStaticKnowledge;
+import com.diagbot.vo.ResultStaticPageVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-22
+ */
+public interface ResultStaticKnowledgeMapper extends BaseMapper<ResultStaticKnowledge> {
+    IPage<ResultStaticKnowledge> getPage(@Param("resultStaticPageVO") ResultStaticPageVO resultStaticPageVO);
+}

+ 20 - 0
cdssman-service/src/main/java/com/diagbot/service/ResultStaticInfoService.java

@@ -0,0 +1,20 @@
+package com.diagbot.service;
+
+import com.diagbot.dto.CaseStaticResultDTO;
+import com.diagbot.entity.ResultStaticInfo;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.HospitalIdVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-22
+ */
+public interface ResultStaticInfoService extends IService<ResultStaticInfo> {
+    List<CaseStaticResultDTO> getCaseResultList(HospitalIdVO hospitalIdVO);
+}

+ 19 - 0
cdssman-service/src/main/java/com/diagbot/service/ResultStaticKnowledgeService.java

@@ -0,0 +1,19 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.ResultStaticKnowledge;
+import com.diagbot.vo.ResultStaticPageVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-21
+ */
+public interface ResultStaticKnowledgeService extends IService<ResultStaticKnowledge> {
+    IPage<ResultStaticKnowledge> getPage(@Param("resultStaticPageVO") ResultStaticPageVO resultStaticPageVO);
+}

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/ResultStaticInfoServiceImpl.java

@@ -0,0 +1,26 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.CaseStaticResultDTO;
+import com.diagbot.entity.ResultStaticInfo;
+import com.diagbot.mapper.ResultStaticInfoMapper;
+import com.diagbot.service.ResultStaticInfoService;
+import com.diagbot.vo.HospitalIdVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-22
+ */
+@Service
+public class ResultStaticInfoServiceImpl extends ServiceImpl<ResultStaticInfoMapper, ResultStaticInfo> implements ResultStaticInfoService {
+    public List<CaseStaticResultDTO> getCaseResultList(HospitalIdVO hospitalIdVO) {
+        return baseMapper.getCaseResultList(hospitalIdVO);
+    }
+}

+ 25 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/ResultStaticKnowledgeServiceImpl.java

@@ -0,0 +1,25 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.ResultStaticKnowledge;
+import com.diagbot.mapper.ResultStaticKnowledgeMapper;
+import com.diagbot.service.ResultStaticKnowledgeService;
+import com.diagbot.vo.ResultStaticPageVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2021-01-21
+ */
+@Service
+public class ResultStaticKnowledgeServiceImpl extends ServiceImpl<ResultStaticKnowledgeMapper, ResultStaticKnowledge> implements ResultStaticKnowledgeService {
+    public IPage<ResultStaticKnowledge> getPage(@Param("resultStaticPageVO") ResultStaticPageVO resultStaticPageVO) {
+        return baseMapper.getPage(resultStaticPageVO);
+    }
+}

+ 18 - 0
cdssman-service/src/main/java/com/diagbot/vo/ResultStaticPageVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/22 11:14
+ */
+@Getter
+@Setter
+public class ResultStaticPageVO extends Page {
+    private Long resultId;
+    private Integer hasStandName;
+    private Integer hasStaticKnowledge;
+}

+ 23 - 0
cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeTestVO.java

@@ -0,0 +1,23 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/21 15:29
+ */
+@Getter
+@Setter
+public class StaticKnowledgeTestVO extends HospitalIdVO {
+    /**
+     * 术语类型(1:诊断、2:检验、3:检查、4:药品、5:手术/操作)
+     */
+    @NotNull(message = "请输入术语类型(1:诊断、2:检验、3:检查、4:药品、5:手术/操作)")
+    private Integer type;
+    @NotNull(message = "请输入测试编号")
+    private Integer caseNo;
+}

+ 124 - 0
cdssman-service/src/main/java/com/diagbot/web/StaticKnowledgeTestController.java

@@ -0,0 +1,124 @@
+package com.diagbot.web;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.CaseStaticResultDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.ResultStaticKnowledge;
+import com.diagbot.facade.ResultStaticInfoFacade;
+import com.diagbot.facade.ResultStaticKnowledgeFacade;
+import com.diagbot.vo.HospitalIdVO;
+import com.diagbot.vo.ResultStaticPageVO;
+import com.diagbot.vo.StaticKnowledgeTestVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.multipart.MultipartFile;
+
+import javax.servlet.http.HttpServletResponse;
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2021/1/21 15:18
+ */
+@RestController
+@RequestMapping("/test/staticKnowledge")
+@Api(value = "静态知识测试相关API", tags = { "静态知识测试相关API" })
+public class StaticKnowledgeTestController {
+
+    @Autowired
+    private ResultStaticInfoFacade resultStaticInfoFacade;
+    @Autowired
+    private ResultStaticKnowledgeFacade resultStaticKnowledgeFacade;
+
+    @ApiOperation(value = "静态知识测试总览列表[zhaops]",
+            notes = "hospitalId: 医院Id <br>")
+    @PostMapping("/getCaseResultList")
+    @SysLogger("getCaseResultList")
+    public RespDTO<List<CaseStaticResultDTO>> getCaseResultList(@Valid @RequestBody HospitalIdVO hospitalIdVO) {
+        List<CaseStaticResultDTO> data = resultStaticInfoFacade.getCaseResultList(hospitalIdVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "化验静态知识测试[zhaops]",
+            notes = "hospitalId: 医院Id <br>" +
+                    " type:术语类型(1:诊断、2:检验、3:检查、4:药品、5:手术/操作)<br>" +
+                    "caseNo:测试编号<br>")
+    @PostMapping("/lisTest")
+    @SysLogger("lisTest")
+    public RespDTO<Boolean> lisTest(@RequestParam("file") MultipartFile file,
+                                    @RequestParam("hospitalId") Long hospitalId,
+                                    @RequestParam("type") Integer type,
+                                    @RequestParam("caseNo") Integer caseNo) {
+        StaticKnowledgeTestVO testVO = new StaticKnowledgeTestVO();
+        testVO.setHospitalId(hospitalId);
+        testVO.setType(type);
+        testVO.setCaseNo(caseNo);
+        Boolean data = resultStaticKnowledgeFacade.lisTest(file, testVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "静态知识测试结果明细列表[zhaops]",
+            notes = "resultId: 结果id <br>" +
+                    "hasStandName: 是否映射到标准术语(0:否,1:是) <br>" +
+                    "hasStaticKnowledge: 是否有静态知识(0:无,1:有) <br>")
+    @PostMapping("/getPage")
+    @SysLogger("getPage")
+    public RespDTO<IPage<ResultStaticKnowledge>> getPage(@Valid @RequestBody ResultStaticPageVO resultStaticPageVO) {
+        IPage<ResultStaticKnowledge> data = resultStaticKnowledgeFacade.getPage(resultStaticPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    //region --------------------------导出------------------------------
+
+    @ApiOperation(value = "通用未映射到标准术语测试结果导出[by:zhaops]",
+            notes = "resultId: 结果id <br>" +
+                    "hasStandName: 是否映射到标准术语(0:否,1:是) <br>" +
+                    "hasStaticKnowledge: 是否有静态知识(0:无,1:有) <br>")
+    @PostMapping("/exportCommonExcel")
+    @SysLogger("exportCommonExcel")
+    public void exportCommonExcel(HttpServletResponse response, @RequestBody @Valid ResultStaticPageVO resultStaticPageVO) {
+        resultStaticKnowledgeFacade.exportCommonExcel(response, resultStaticPageVO);
+    }
+
+    @ApiOperation(value = "通用缺少静态知识测试结果导出[by:zhaops]",
+            notes = "resultId: 结果id <br>" +
+                    "hasStandName: 是否映射到标准术语(0:否,1:是) <br>" +
+                    "hasStaticKnowledge: 是否有静态知识(0:无,1:有) <br>")
+    @PostMapping("/exportCommonStaticExcel")
+    @SysLogger("exportCommonStaticExcel")
+    public void exportCommonStaticExcel(HttpServletResponse response, @RequestBody @Valid ResultStaticPageVO resultStaticPageVO) {
+        resultStaticKnowledgeFacade.exportCommonStaticExcel(response, resultStaticPageVO);
+    }
+
+    @ApiOperation(value = "检验未映射到标准术语测试结果导出[by:zhaops]",
+            notes = "resultId: 结果id <br>" +
+                    "hasStandName: 是否映射到标准术语(0:否,1:是) <br>" +
+                    "hasStaticKnowledge: 是否有静态知识(0:无,1:有) <br>")
+    @PostMapping("/exportLisExcel")
+    @SysLogger("exportLisExcel")
+    public void exportLisExcel(HttpServletResponse response, @RequestBody @Valid ResultStaticPageVO resultStaticPageVO) {
+        resultStaticKnowledgeFacade.exportLisExcel(response, resultStaticPageVO);
+    }
+
+    @ApiOperation(value = "检验缺少静态知识测试结果导出[by:zhaops]",
+            notes = "resultId: 结果id <br>" +
+                    "hasStandName: 是否映射到标准术语(0:否,1:是) <br>" +
+                    "hasStaticKnowledge: 是否有静态知识(0:无,1:有) <br>")
+    @PostMapping("/exportLisStaticExcel")
+    @SysLogger("exportLisStaticExcel")
+    public void exportLisStaticExcel(HttpServletResponse response, @RequestBody @Valid ResultStaticPageVO resultStaticPageVO) {
+        resultStaticKnowledgeFacade.exportLisStaticExcel(response, resultStaticPageVO);
+    }
+
+    //endregion --------------------------导出------------------------------
+
+}

+ 2 - 0
cdssman-service/src/main/resources/mapper/CaseInfoMapper.xml

@@ -11,6 +11,8 @@
         <result column="creator" property="creator" />
         <result column="modifier" property="modifier" />
         <result column="case_name" property="caseName" />
+        <result column="case_group" property="caseGroup" />
+        <result column="case_no" property="caseNo" />
     </resultMap>
 
 </mapper>

+ 1 - 0
cdssman-service/src/main/resources/mapper/ResultInfoMapper.xml

@@ -35,6 +35,7 @@
         </if>
         WHERE
         a.is_deleted = 'N'
+        and a.case_group = 1
     </select>
 
 </mapper>

+ 41 - 0
cdssman-service/src/main/resources/mapper/ResultStaticInfoMapper.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.ResultStaticInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ResultStaticInfo">
+        <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="hospital_id" property="hospitalId" />
+        <result column="case_no" property="caseNo" />
+        <result column="totle_num" property="totleNum" />
+        <result column="un_mapping_num" property="unMappingNum" />
+        <result column="without_knowledge_num" property="withoutKnowledgeNum" />
+    </resultMap>
+
+    <!--静态知识测试结果列表-->
+    <select id="getCaseResultList" resultType="com.diagbot.dto.CaseStaticResultDTO">
+        SELECT
+        a.case_name AS caseName,
+        b.id AS resultId,
+        a.case_no AS caseNo,
+        b.totle_num AS totleNum,
+        b.un_mapping_num AS unMappingNum,
+        b.without_knowledge_num AS withoutKnowledgeNum,
+        b.gmt_modified AS gmtModified
+        FROM
+        test_case_info a
+        LEFT JOIN test_result_static_info b ON a.case_no = b.case_no
+        <if test="hospitalId != null">
+            AND b.hospital_id = #{hospitalId}
+        </if>
+        WHERE
+        a.is_deleted = 'N'
+        and a.case_group = 2
+    </select>
+
+</mapper>

+ 41 - 0
cdssman-service/src/main/resources/mapper/ResultStaticKnowledgeMapper.xml

@@ -0,0 +1,41 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.ResultStaticKnowledgeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ResultStaticKnowledge">
+        <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="result_id" property="resultId" />
+        <result column="type" property="type" />
+        <result column="label" property="label" />
+        <result column="name" property="name" />
+        <result column="his_name" property="hisName" />
+        <result column="his_detail_name" property="hisDetailName" />
+        <result column="has_stand_name" property="hasStandName" />
+        <result column="has_static_knowledge" property="hasStaticKnowledge" />
+        <result column="message" property="message" />
+    </resultMap>
+
+    <!-- 分页查询 -->
+    <select id="getPage" resultType="com.diagbot.entity.ResultStaticKnowledge">
+        select a.*
+        from test_result_static_knowledge a
+        where a.is_deleted='N'
+        <if test="resultStaticPageVO.resultId != null">
+            and a.result_id = #{resultStaticPageVO.resultId}
+        </if>
+        <if test="resultStaticPageVO.hasStandName != null">
+            and a.has_stand_name = #{resultStaticPageVO.hasStandName}
+        </if>
+
+        <if test="resultStaticPageVO.hasStaticKnowledge != null">
+            and a.has_static_knowledge = #{resultStaticPageVO.hasStaticKnowledge}
+        </if>
+    </select>
+
+</mapper>