浏览代码

1、云平台静态知识维护

zhaops 4 年之前
父节点
当前提交
59223aeb24
共有 39 个文件被更改,包括 1884 次插入0 次删除
  1. 29 0
      cdssman-service/src/main/java/com/diagbot/client/CdssCoreClient.java
  2. 33 0
      cdssman-service/src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java
  3. 43 0
      cdssman-service/src/main/java/com/diagbot/dto/ConceptDetailDTO.java
  4. 57 0
      cdssman-service/src/main/java/com/diagbot/dto/ConceptInfoDTO.java
  5. 48 0
      cdssman-service/src/main/java/com/diagbot/dto/DictionaryInfoDTO.java
  6. 45 0
      cdssman-service/src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java
  7. 43 0
      cdssman-service/src/main/java/com/diagbot/dto/StaticKnowledgeDetailDTO.java
  8. 46 0
      cdssman-service/src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java
  9. 186 0
      cdssman-service/src/main/java/com/diagbot/entity/ConceptDetail.java
  10. 169 0
      cdssman-service/src/main/java/com/diagbot/entity/ConceptInfo.java
  11. 88 0
      cdssman-service/src/main/java/com/diagbot/entity/DictionaryInfo.java
  12. 54 0
      cdssman-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java
  13. 13 0
      cdssman-service/src/main/java/com/diagbot/facade/ConceptDetailFacade.java
  14. 349 0
      cdssman-service/src/main/java/com/diagbot/facade/ConceptInfoFacade.java
  15. 34 0
      cdssman-service/src/main/java/com/diagbot/facade/DictionaryFacade.java
  16. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/ConceptDetailMapper.java
  17. 26 0
      cdssman-service/src/main/java/com/diagbot/mapper/ConceptInfoMapper.java
  18. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/DictionaryInfoMapper.java
  19. 16 0
      cdssman-service/src/main/java/com/diagbot/service/ConceptDetailService.java
  20. 26 0
      cdssman-service/src/main/java/com/diagbot/service/ConceptInfoService.java
  21. 16 0
      cdssman-service/src/main/java/com/diagbot/service/DictionaryInfoService.java
  22. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/ConceptDetailServiceImpl.java
  23. 33 0
      cdssman-service/src/main/java/com/diagbot/service/impl/ConceptInfoServiceImpl.java
  24. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/DictionaryInfoServiceImpl.java
  25. 16 0
      cdssman-service/src/main/java/com/diagbot/vo/ChangeStatusVO.java
  26. 47 0
      cdssman-service/src/main/java/com/diagbot/vo/ConceptDetailVO.java
  27. 33 0
      cdssman-service/src/main/java/com/diagbot/vo/ConceptInfoPageVO.java
  28. 45 0
      cdssman-service/src/main/java/com/diagbot/vo/ConceptInfoVO.java
  29. 28 0
      cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeHISVO.java
  30. 26 0
      cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeIndexVO.java
  31. 30 0
      cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeVO.java
  32. 22 0
      cdssman-service/src/main/java/com/diagbot/web/ConceptDetailController.java
  33. 109 0
      cdssman-service/src/main/java/com/diagbot/web/ConceptInfoController.java
  34. 21 0
      cdssman-service/src/main/resources/mapper/ConceptDetailMapper.xml
  35. 63 0
      cdssman-service/src/main/resources/mapper/ConceptInfoMapper.xml
  36. 4 0
      config-server/src/main/resources/shared/cdssman-service-dev.yml
  37. 4 0
      config-server/src/main/resources/shared/cdssman-service-local.yml
  38. 5 0
      config-server/src/main/resources/shared/cdssman-service-pre.yml
  39. 5 0
      config-server/src/main/resources/shared/cdssman-service-pro.yml

+ 29 - 0
cdssman-service/src/main/java/com/diagbot/client/CdssCoreClient.java

@@ -0,0 +1,29 @@
+package com.diagbot.client;
+
+import com.diagbot.client.hystrix.CdssCoreHystrix;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.StaticKnowledgeIndexDTO;
+import com.diagbot.vo.StaticKnowledgeIndexVO;
+import org.springframework.cloud.openfeign.FeignClient;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/25 10:59
+ */
+@FeignClient(name = "cdss-core", url = "${cdss-core.url}", fallback = CdssCoreHystrix.class)
+public interface CdssCoreClient {
+    /**
+     * 静态知识检索
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    @PostMapping("/retrieval/staticKnowledgeIndex")
+    RespDTO<List<StaticKnowledgeIndexDTO>> staticKnowledgeIndex(@RequestBody @Valid StaticKnowledgeIndexVO staticKnowledgeIndexVO);
+}

+ 33 - 0
cdssman-service/src/main/java/com/diagbot/client/hystrix/CdssCoreHystrix.java

@@ -0,0 +1,33 @@
+package com.diagbot.client.hystrix;
+
+import com.diagbot.client.CdssCoreClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.StaticKnowledgeIndexDTO;
+import com.diagbot.vo.StaticKnowledgeIndexVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Component;
+import org.springframework.web.bind.annotation.RequestBody;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/25 10:59
+ */
+@Component
+@Slf4j
+public class CdssCoreHystrix implements CdssCoreClient {
+    /**
+     * 静态知识检索
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    @Override
+    public RespDTO<List<StaticKnowledgeIndexDTO>> staticKnowledgeIndex(@RequestBody @Valid StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+        log.error("【hystrix】调用{}异常", "staticKnowledgeIndex");
+        return null;
+    }
+}

+ 43 - 0
cdssman-service/src/main/java/com/diagbot/dto/ConceptDetailDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/21 10:28
+ */
+@Getter
+@Setter
+public class ConceptDetailDTO {
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
+     */
+    private String contentType;
+}

+ 57 - 0
cdssman-service/src/main/java/com/diagbot/dto/ConceptInfoDTO.java

@@ -0,0 +1,57 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/21 10:33
+ */
+@Getter
+@Setter
+public class ConceptInfoDTO {
+    /**
+     * 术语id
+     */
+    private Long id;
+    /**
+     * 术语名称
+     */
+    private String name;
+    /**
+     * 术语类型(词性)
+     */
+    private String type;
+    /**
+     * 术语类型(词性)
+     */
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+    /**
+     * 修改时间
+     */
+    private Date gmtModified;
+    /**
+     * 修改人
+     */
+    private String modifier;
+    /**
+     * 启用状态
+     */
+    private String isDeleted;
+    /**
+     * 明细
+     */
+    List<ConceptDetailDTO> details;
+}

+ 48 - 0
cdssman-service/src/main/java/com/diagbot/dto/DictionaryInfoDTO.java

@@ -0,0 +1,48 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * icss字典表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+@Getter
+@Setter
+public class DictionaryInfoDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 分组(值自定义)
+     */
+    private Long groupType;
+
+    /**
+     * 内容
+     */
+    private String name;
+
+    /**
+     * 值
+     */
+    private String val;
+
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 45 - 0
cdssman-service/src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java

@@ -0,0 +1,45 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/20 15:51
+ */
+@Getter
+@Setter
+public class StaticKnowledgeDTO {
+    /**
+     * 标准术语id
+     */
+    private Long id;
+    /**
+     * 标准术语
+     */
+    private String name;
+
+    /**
+     * 词性
+     */
+    private String type;
+
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    /**
+     * 静态知识明细
+     */
+    private Map<String, List<StaticKnowledgeDetailDTO>> details;
+}

+ 43 - 0
cdssman-service/src/main/java/com/diagbot/dto/StaticKnowledgeDetailDTO.java

@@ -0,0 +1,43 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/20 15:52
+ */
+@Getter
+@Setter
+public class StaticKnowledgeDetailDTO {
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
+     */
+    private String contentType;
+}

+ 46 - 0
cdssman-service/src/main/java/com/diagbot/dto/StaticKnowledgeIndexDTO.java

@@ -0,0 +1,46 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/18 15:59
+ */
+@Getter
+@Setter
+public class StaticKnowledgeIndexDTO {
+    /**
+     * 术语id
+     */
+    private Long id;
+    /**
+     * 术语名称
+     */
+    private String name;
+    /**
+     * 词性
+     */
+    private Integer type;
+    /**
+     * 词性
+     */
+    private String typeName;
+    /**
+     * 同义词
+     */
+    private String retrievalName;
+    /**
+     * 是否有静态知识
+     */
+    private Integer hasInfomation = 0;
+    /**
+     * 是否有临床路径
+     */
+    private Integer hasClinicalPathway = 0;
+    /**
+     * 是否有注意事项
+     */
+    private Integer hasNotice = 0;
+}

+ 186 - 0
cdssman-service/src/main/java/com/diagbot/entity/ConceptDetail.java

@@ -0,0 +1,186 @@
+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 zhaops
+ * @since 2020-08-18
+ */
+@TableName("graph_concept_detail")
+public class ConceptDetail 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 conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
+     */
+    private String contentType;
+
+    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 getConceptId() {
+        return conceptId;
+    }
+
+    public void setConceptId(Long conceptId) {
+        this.conceptId = conceptId;
+    }
+    public String getTitle() {
+        return title;
+    }
+
+    public void setTitle(String title) {
+        this.title = title;
+    }
+    public String getContent() {
+        return content;
+    }
+
+    public void setContent(String content) {
+        this.content = content;
+    }
+    public String getText() {
+        return text;
+    }
+
+    public void setText(String text) {
+        this.text = text;
+    }
+    public Integer getOrderNo() {
+        return orderNo;
+    }
+
+    public void setOrderNo(Integer orderNo) {
+        this.orderNo = orderNo;
+    }
+    public String getContentType() {
+        return contentType;
+    }
+
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
+    }
+
+    @Override
+    public String toString() {
+        return "ConceptDetail{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", conceptId=" + conceptId +
+            ", title=" + title +
+            ", content=" + content +
+            ", text=" + text +
+            ", orderNo=" + orderNo +
+            ", contentType=" + contentType +
+        "}";
+    }
+}

+ 169 - 0
cdssman-service/src/main/java/com/diagbot/entity/ConceptInfo.java

@@ -0,0 +1,169 @@
+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 zhaops
+ * @since 2020-08-18
+ */
+@TableName("graph_concept_info")
+public class ConceptInfo 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;
+
+    /**
+     * 标准术语
+     */
+    private String name;
+
+    /**
+     * 词性
+     */
+    private String type;
+
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    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 String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+
+    public String getType() {
+        return type;
+    }
+
+    public void setType(String type) {
+        this.type = type;
+    }
+
+    public String getClinicalPathwayName() {
+        return clinicalPathwayName;
+    }
+
+    public void setClinicalPathwayName(String clinicalPathwayName) {
+        this.clinicalPathwayName = clinicalPathwayName;
+    }
+
+    public String getNoticeName() {
+        return noticeName;
+    }
+
+    public void setNoticeName(String noticeName) {
+        this.noticeName = noticeName;
+    }
+
+    @Override
+    public String toString() {
+        return "ConceptInfo{" +
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", name=" + name +
+                ", type=" + type +
+                ", clinicalPathwayName=" + clinicalPathwayName +
+                ", noticeName=" + noticeName +
+                "}";
+    }
+}

+ 88 - 0
cdssman-service/src/main/java/com/diagbot/entity/DictionaryInfo.java

@@ -0,0 +1,88 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * CDSS字典表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+@TableName("sys_dictionary_info")
+@Getter
+@Setter
+public class DictionaryInfo 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;
+
+    /**
+     * 分组(值自定义)
+     */
+    private Long groupType;
+
+    /**
+     * 内容
+     */
+    private String name;
+
+    /**
+     * 值
+     */
+    private String val;
+
+    /**
+     * 返回类型(0: 都返回,1:后台维护返回 2:icss界面返回)
+     */
+    private Integer returnType;
+
+    /**
+     * 排序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 54 - 0
cdssman-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java

@@ -0,0 +1,54 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/18 16:30
+ */
+public enum ConceptTypeEnum implements KeyedNamed {
+    All(0, "全部"),
+    Disease(1, "诊断"),
+    Drug(2, "药品"),
+    Lis(3, "检验套餐"),
+    LisPack(4, "检验明细"),
+    Pacs(5, "检查"),
+    Opeartion(6, "手术和操作");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    ConceptTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ConceptTypeEnum getEnum(int key) {
+        for (ConceptTypeEnum item : ConceptTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        ConceptTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

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

@@ -0,0 +1,13 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.ConceptDetailServiceImpl;
+import org.springframework.stereotype.Component;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/19 14:19
+ */
+@Component
+public class ConceptDetailFacade extends ConceptDetailServiceImpl {
+}

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

@@ -0,0 +1,349 @@
+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.RespDTO;
+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.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.UserUtils;
+import com.diagbot.vo.ChangeStatusVO;
+import com.diagbot.vo.ConceptInfoPageVO;
+import com.diagbot.vo.ConceptInfoVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.StaticKnowledgeIndexVO;
+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;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/19 14:17
+ */
+@Component
+public class ConceptInfoFacade extends ConceptInfoServiceImpl {
+    @Autowired
+    private CdssCoreClient cdssCoreClient;
+    @Autowired
+    private DictionaryFacade dictionaryFacade;
+    @Autowired
+    private ConceptDetailFacade conceptDetailFacade;
+    @Autowired
+    @Qualifier("conceptDetailServiceImpl")
+    private ConceptDetailService conceptDetailService;
+
+    /**
+     * 返回不带静态知识的检索结果
+     *
+     * @param staticKnowledgeIndexVO
+     * @return
+     */
+    public List<StaticKnowledgeIndexDTO> staticKnowledgeIndexWithoutInfo(StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+        List<StaticKnowledgeIndexDTO> staticKnowledgeIndexDTOList = staticKnowledgeIndex(staticKnowledgeIndexVO);
+        //过滤没有静态知识的检索结果
+        staticKnowledgeIndexDTOList = staticKnowledgeIndexDTOList
+                .stream()
+                .filter(i -> i.getHasInfomation().equals(0)
+                        && i.getHasNotice().equals(0)
+                        && i.getHasClinicalPathway().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<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));
+            });
+            //是否有静态知识
+            List<String> conNameList = staticKnowledgeIndexDTOList
+                    .stream()
+                    .map(i -> i.getName())
+                    .collect(Collectors.toList());
+            QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
+            conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("name", conNameList);
+            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())
+                            .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.setHasInfomation(0);
+                            item.setHasClinicalPathway(0);
+                            item.setHasNotice((0));
+                            continue;
+                        }
+                        for (ConceptDetail detail : detailMap.get(item.getId())) {
+                            List<String> contentTypeList = Arrays.asList(detail.getContentType().split(","));
+                            if (contentTypeList.contains("1")) {
+                                item.setHasInfomation(1);
+                            }
+                            if (contentTypeList.contains("2")) {
+                                item.setHasNotice(1);
+                            }
+                            if (contentTypeList.contains("3")) {
+                                item.setHasClinicalPathway(1);
+                            }
+                        }
+                    }
+                }
+            }
+
+            //排序
+            Map<String, List<StaticKnowledgeIndexDTO>> map
+                    = EntityUtil.makeEntityListMap(staticKnowledgeIndexDTOList, "typeName");
+            for (DictionaryInfoDTO dic : dicStaticIndexList) {
+                if (dic.getName().equals("检验")) {
+                    if (map.containsKey("检验套餐")) {
+                        retList.addAll(map.get("检验套餐"));
+                    }
+                    if (map.containsKey("检验明细")) {
+                        retList.addAll(map.get("检验明细"));
+                    }
+                } else if (map.containsKey(dic.getName())) {
+                    retList.addAll(map.get(dic.getName()));
+                }
+            }
+        }
+        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 conceptInfoPageVO
+     * @return
+     */
+    public IPage<ConceptInfoDTO> getPage(ConceptInfoPageVO conceptInfoPageVO) {
+        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
+        if (StringUtil.isNotBlank(conceptInfoPageVO.getType())) {
+            String typeName
+                    = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(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 -> {
+                record.setTypeName(convertTypeName(record.getTypeName(), 2, dicList));
+            });
+        }
+        page.setRecords(records);
+        return page;
+    }
+
+    /**
+     * 保存记录(新增or修改)
+     *
+     * @param conceptInfoVO
+     * @return
+     */
+    public Boolean saveOrUpdateRecord(ConceptInfoVO conceptInfoVO) {
+        String userId = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
+        //术语类型转换
+        String typeName = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(conceptInfoVO.getType())), 1, dicList);
+        conceptInfoVO.setTypeName(typeName);
+        if (conceptInfoVO.getId() == null) {
+            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) {
+                conceptInfo = new ConceptInfo();
+                BeanUtil.copyProperties(conceptInfoVO, conceptInfo);
+                conceptInfo.setType(typeName);
+                conceptInfo.setCreator(userId);
+                conceptInfo.setGmtCreate(now);
+                conceptInfo.setModifier(userId);
+                conceptInfo.setGmtModified(now);
+                this.save(conceptInfo);
+            }
+            conceptInfoVO.setId(conceptInfo.getId());
+        }
+
+        //删除已有静态信息
+        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+        conceptDetailQueryWrapper.eq("concept_id", conceptInfoVO.getId());
+        conceptDetailFacade.remove(conceptDetailQueryWrapper);
+        //插入新的静态信息
+        List<ConceptDetail> conceptDetailList = Lists.newLinkedList();
+        if (ListUtil.isNotEmpty(conceptInfoVO.getDetails())) {
+            conceptInfoVO.getDetails().forEach(detail -> {
+                ConceptDetail conceptDetail = new ConceptDetail();
+                BeanUtil.copyProperties(detail, conceptDetail);
+                conceptDetail.setConceptId(conceptInfoVO.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 = UserUtils.getCurrentPrincipleID();
+        Date now = DateUtil.now();
+        UpdateWrapper<ConceptDetail> conceptDetailUpdateWrapper = new UpdateWrapper<>();
+        conceptDetailUpdateWrapper.eq("concept_id", changeStatusVO.getId())
+                .set("gmt_modified", now)
+                .set("modifier", userId)
+                .set("is_deleted", changeStatusVO.getIsDeleted());
+        conceptDetailService.update(conceptDetailUpdateWrapper);
+        return true;
+    }
+
+    /**
+     * 是否已存在
+     *
+     * @param conceptInfoVO
+     * @return
+     */
+    public Boolean isExist(ConceptInfoVO conceptInfoVO) {
+        List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
+        //术语类型转换
+        String typeName = convertTypeName(ConceptTypeEnum.getName(Integer.valueOf(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());
+        List<ConceptDetail> conceptDetailList = conceptDetailService.list(conceptDetailQueryWrapper);
+        if (ListUtil.isEmpty(conceptDetailList)) {
+            return false;
+        }
+        return true;
+    }
+
+    /**
+     * 根据术语id获取静态信息
+     *
+     * @param idVO
+     * @return
+     */
+    public ConceptInfoDTO getRecordById(IdVO idVO) {
+        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);
+            //启用状态、修改人、修改时间为明细的内容
+            conceptInfoDTO.setModifier(conceptDetailList.get(0).getModifier());
+            conceptInfoDTO.setGmtModified(conceptDetailList.get(0).getGmtModified());
+            conceptInfoDTO.setIsDeleted(conceptDetailList.get(0).getIsDeleted());
+        }
+        return conceptInfoDTO;
+    }
+}

+ 34 - 0
cdssman-service/src/main/java/com/diagbot/facade/DictionaryFacade.java

@@ -0,0 +1,34 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.DictionaryInfoDTO;
+import com.diagbot.entity.DictionaryInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.DictionaryInfoServiceImpl;
+import com.diagbot.util.BeanUtil;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2018/11/23 11:37
+ */
+@Component
+public class DictionaryFacade extends DictionaryInfoServiceImpl {
+    /**
+     * 返回指定字典信息
+     *
+     * @param groupType
+     * @return
+     */
+    public List<DictionaryInfoDTO> getListByGroupType(Integer groupType) {
+        List<DictionaryInfo> list = this.list(new QueryWrapper<DictionaryInfo>()
+                .eq("group_type", groupType)
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .orderByAsc("order_no"));
+        List<DictionaryInfoDTO> listRes = BeanUtil.listCopyTo(list, DictionaryInfoDTO.class);
+        return listRes;
+    }
+}

+ 16 - 0
cdssman-service/src/main/java/com/diagbot/mapper/ConceptDetailMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.ConceptDetail;
+
+/**
+ * <p>
+ * 静态知识内容表 Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+public interface ConceptDetailMapper extends BaseMapper<ConceptDetail> {
+
+}

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/mapper/ConceptInfoMapper.java

@@ -0,0 +1,26 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.ConceptInfoDTO;
+import com.diagbot.entity.ConceptInfo;
+import com.diagbot.vo.ConceptInfoPageVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 静态知识标准术语表 Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+public interface ConceptInfoMapper extends BaseMapper<ConceptInfo> {
+    /**
+     * 列表
+     *
+     * @param conceptInfoPageVO
+     * @return
+     */
+    IPage<ConceptInfoDTO> getPage(@Param("conceptInfoPageVO") ConceptInfoPageVO conceptInfoPageVO);
+}

+ 16 - 0
cdssman-service/src/main/java/com/diagbot/mapper/DictionaryInfoMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.DictionaryInfo;
+
+/**
+ * <p>
+ * CDSS字典表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+public interface DictionaryInfoMapper extends BaseMapper<DictionaryInfo> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.ConceptDetail;
+
+/**
+ * <p>
+ * 静态知识内容表 服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+public interface ConceptDetailService extends IService<ConceptDetail> {
+
+}

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

@@ -0,0 +1,26 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.ConceptInfoDTO;
+import com.diagbot.entity.ConceptInfo;
+import com.diagbot.vo.ConceptInfoPageVO;
+import org.apache.ibatis.annotations.Param;
+
+/**
+ * <p>
+ * 静态知识标准术语表 服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+public interface ConceptInfoService extends IService<ConceptInfo> {
+    /**
+     * 列表
+     *
+     * @param conceptInfoPageVO
+     * @return
+     */
+    IPage<ConceptInfoDTO> getPage(@Param("conceptInfoPageVO") ConceptInfoPageVO conceptInfoPageVO);
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.DictionaryInfo;
+
+/**
+ * <p>
+ * CDSS字典表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+public interface DictionaryInfoService extends IService<DictionaryInfo> {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.ConceptDetail;
+import com.diagbot.mapper.ConceptDetailMapper;
+import com.diagbot.service.ConceptDetailService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 静态知识内容表 服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+@Service
+public class ConceptDetailServiceImpl extends ServiceImpl<ConceptDetailMapper, ConceptDetail> implements ConceptDetailService {
+
+}

+ 33 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/ConceptInfoServiceImpl.java

@@ -0,0 +1,33 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.ConceptInfoDTO;
+import com.diagbot.entity.ConceptInfo;
+import com.diagbot.mapper.ConceptInfoMapper;
+import com.diagbot.service.ConceptInfoService;
+import com.diagbot.vo.ConceptInfoPageVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 静态知识标准术语表 服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+@Service
+public class ConceptInfoServiceImpl extends ServiceImpl<ConceptInfoMapper, ConceptInfo> implements ConceptInfoService {
+    /**
+     * 列表
+     *
+     * @param conceptInfoPageVO
+     * @return
+     */
+    @Override
+    public IPage<ConceptInfoDTO> getPage(@Param("conceptInfoPageVO") ConceptInfoPageVO conceptInfoPageVO) {
+        return baseMapper.getPage(conceptInfoPageVO);
+    }
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.DictionaryInfo;
+import com.diagbot.mapper.DictionaryInfoMapper;
+import com.diagbot.service.DictionaryInfoService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * CDSS字典表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-12-25
+ */
+@Service
+public class DictionaryInfoServiceImpl extends ServiceImpl<DictionaryInfoMapper, DictionaryInfo> implements DictionaryInfoService {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/24 17:23
+ */
+@Getter
+@Setter
+public class ChangeStatusVO {
+    private Long id;
+    private String isDeleted;
+}

+ 47 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptDetailVO.java

@@ -0,0 +1,47 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/24 16:06
+ */
+@Getter
+@Setter
+public class ConceptDetailVO {
+    /**
+     * 明细id
+     */
+    private Long id;
+    /**
+     * 提示概念id
+     */
+    private Long conceptId;
+
+    /**
+     * 提示明细标题
+     */
+    private String title;
+
+    /**
+     * 提示明细内容
+     */
+    private String content;
+
+    /**
+     * 纯文本
+     */
+    private String text;
+
+    /**
+     * 提示明细序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
+     */
+    private String contentType;
+}

+ 33 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptInfoPageVO.java

@@ -0,0 +1,33 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/21 14:53
+ */
+@Getter
+@Setter
+public class ConceptInfoPageVO extends Page {
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private String type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 启用状态
+     */
+    private String isDeleted;
+}

+ 45 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptInfoVO.java

@@ -0,0 +1,45 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/24 16:04
+ */
+@Getter
+@Setter
+public class ConceptInfoVO {
+    private Long id;
+    /**
+     * 标准术语
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    private String type;
+    /**
+     * 术语类型
+     */
+    @ApiModelProperty(hidden = true)
+    private String typeName;
+    /**
+     * 临床路径名称
+     */
+    private String clinicalPathwayName;
+
+    /**
+     * 注意事项名称
+     */
+    private String noticeName;
+
+    /**
+     * 静态知识明细
+     */
+    private List<ConceptDetailVO> details;
+}

+ 28 - 0
cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeHISVO.java

@@ -0,0 +1,28 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/20 14:54
+ */
+@Getter
+@Setter
+public class StaticKnowledgeHISVO extends StaticKnowledgeVO {
+    /**
+     * his名称
+     */
+    private String hisName;
+    /**
+     * his明细名称
+     */
+    private String hisDetailName;
+    /**
+     * 医院id
+     */
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;
+}

+ 26 - 0
cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeIndexVO.java

@@ -0,0 +1,26 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/18 15:52
+ */
+@Getter
+@Setter
+public class StaticKnowledgeIndexVO {
+    /**
+     * 检索内容
+     */
+    private String inputStr;
+    /**
+     * 检索类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作
+     */
+    @NotNull(message = "请输入检索类型")
+    private List<Integer> types;
+}

+ 30 - 0
cdssman-service/src/main/java/com/diagbot/vo/StaticKnowledgeVO.java

@@ -0,0 +1,30 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/8/20 14:50
+ */
+@Getter
+@Setter
+public class StaticKnowledgeVO {
+    /**
+     * 标准术语名称
+     */
+    private String name;
+    /**
+     * 术语类型
+     */
+    @NotNull(message = "请输入术语类型")
+    private Integer type;
+    /**
+     * 内容类型
+     */
+    private List<Integer> contentTypes;
+}

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/web/ConceptDetailController.java

@@ -0,0 +1,22 @@
+package com.diagbot.web;
+
+
+import io.swagger.annotations.Api;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+/**
+ * <p>
+ * 静态知识内容表 前端控制器
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+@RestController
+@RequestMapping("/conceptDetail")
+@Api(value = "静态知识内容相关API", tags = { "静态知识内容相关API" })
+@SuppressWarnings("unchecked")
+public class ConceptDetailController {
+
+}

+ 109 - 0
cdssman-service/src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -0,0 +1,109 @@
+package com.diagbot.web;
+
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.ConceptInfoDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.StaticKnowledgeDTO;
+import com.diagbot.dto.StaticKnowledgeIndexDTO;
+import com.diagbot.facade.ConceptInfoFacade;
+import com.diagbot.vo.ChangeStatusVO;
+import com.diagbot.vo.ConceptInfoPageVO;
+import com.diagbot.vo.ConceptInfoVO;
+import com.diagbot.vo.IdVO;
+import com.diagbot.vo.StaticKnowledgeHISVO;
+import com.diagbot.vo.StaticKnowledgeIndexVO;
+import com.diagbot.vo.StaticKnowledgeVO;
+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.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+
+/**
+ * <p>
+ * 静态知识标准术语表 前端控制器
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-08-18
+ */
+@RestController
+@RequestMapping("/graph/conceptInfo")
+@Api(value = "静态知识标准术语相关API", tags = { "静态知识标准术语相关API" })
+@SuppressWarnings("unchecked")
+public class ConceptInfoController {
+
+    @Autowired
+    private ConceptInfoFacade conceptInfoFacade;
+
+    @ApiOperation(value = "医学术语检索-新增静态知识[zhaops]",
+            notes = "types: 类型(多选):0-全部、1-诊断、2-药品、3-检验、5-检查、6-手术和操作 <br>" +
+                    "inputStr: 检索内容<br>")
+    @PostMapping("/staticKnowledgeIndexWithoutInfo")
+    @SysLogger("staticKnowledgeIndexWithoutInfo")
+    public RespDTO<List<StaticKnowledgeIndexDTO>> staticKnowledgeIndexWithoutInfo(@Valid @RequestBody StaticKnowledgeIndexVO staticKnowledgeIndexVO) {
+        List<StaticKnowledgeIndexDTO> data = conceptInfoFacade.staticKnowledgeIndexWithoutInfo(staticKnowledgeIndexVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "获取静态知识列表[zhaops]",
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>" +
+                    "name: 术语名称<br>" +
+                    "isDeleted: 启用状态:N-启用中、Y-已删除<br>")
+    @PostMapping("/getPage")
+    @SysLogger("getPage")
+    public RespDTO<IPage<ConceptInfoDTO>> getPage(@Valid @RequestBody ConceptInfoPageVO conceptInfoPageVO) {
+        IPage<ConceptInfoDTO> data = conceptInfoFacade.getPage(conceptInfoPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "保存静态知识-新增或修改[zhaops]",
+            notes = "id: id <br>" +
+                    "name: 术语名称 <br>" +
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>" +
+                    "clinicalPathwayName: 临床路径名称<br>" +
+                    "noticeName: 注意事项名称<br>" +
+                    "details: 明细<br>")
+    @PostMapping("/saveOrUpdateRecord")
+    @SysLogger("saveOrUpdateRecord")
+    public RespDTO<Boolean> saveOrUpdateRecord(@Valid @RequestBody ConceptInfoVO conceptInfoVO) {
+        Boolean data = conceptInfoFacade.saveOrUpdateRecord(conceptInfoVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "静态知识启用禁用[zhaops]",
+            notes = "id: 术语id <br>" +
+                    "isDeleted: 启用状态:N-启用中、Y-已删除<br>")
+    @PostMapping("/changeStatus")
+    @SysLogger("changeStatus")
+    public RespDTO<Boolean> changeStatus(@Valid @RequestBody ChangeStatusVO changeStatusVO) {
+        Boolean data = conceptInfoFacade.changeStatus(changeStatusVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "静态知识是否存在[zhaops]",
+            notes = "name: 术语名称 <br>" +
+                    "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>")
+    @PostMapping("/isExist")
+    @SysLogger("isExist")
+    public RespDTO<Boolean> isExist(@Valid @RequestBody ConceptInfoVO conceptInfoVO) {
+        Boolean data = conceptInfoFacade.isExist(conceptInfoVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "根据术语id获取静态信息[zhaops]",
+            notes = "id: 术语id <br>")
+    @PostMapping("/getRecordById")
+    @SysLogger("getRecordById")
+    public RespDTO<ConceptInfoDTO> getRecordById(@Valid @RequestBody IdVO idVO) {
+        ConceptInfoDTO data = conceptInfoFacade.getRecordById(idVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 21 - 0
cdssman-service/src/main/resources/mapper/ConceptDetailMapper.xml

@@ -0,0 +1,21 @@
+<?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.ConceptDetailMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ConceptDetail">
+        <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="concept_id" property="conceptId" />
+        <result column="title" property="title" />
+        <result column="content" property="content" />
+        <result column="text" property="text" />
+        <result column="order_no" property="orderNo" />
+        <result column="content_type" property="contentType" />
+    </resultMap>
+
+</mapper>

+ 63 - 0
cdssman-service/src/main/resources/mapper/ConceptInfoMapper.xml

@@ -0,0 +1,63 @@
+<?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.ConceptInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ConceptInfo">
+        <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="name" property="name" />
+        <result column="type" property="type" />
+        <result column="clinical_pathway_name" property="clinicalPathwayName" />
+        <result column="notice_name" property="noticeName" />
+    </resultMap>
+
+    <!-- 分页查询 -->
+    <select id="getPage" resultType="com.diagbot.dto.ConceptInfoDTO">
+        SELECT
+        t1.id,
+        t1.NAME,
+        t1.clinicalPathwayName,
+        t1.noticeName,
+        t1.type,
+        t1.isDeleted,
+        t1.title,
+        t1.gmtModified,
+        t2.linkman AS modifier
+        FROM
+        (
+        SELECT
+        a.id,
+        a.NAME,
+        a.clinical_pathway_name AS clinicalPathwayName,
+        a.notice_name AS noticeName,
+        a.type,
+        b.is_deleted AS isDeleted,
+        GROUP_CONCAT( b.title SEPARATOR '、' ) AS title,
+        b.gmt_modified AS gmtModified,
+        b.modifier
+        FROM
+        graph_concept_info a,
+        graph_concept_detail b
+        WHERE
+        a.id = b.concept_id
+        <if test="conceptInfoPageVO.isDeleted!=null and conceptInfoPageVO.isDeleted!=''">
+            AND b.is_deleted = #{conceptInfoPageVO.isDeleted}
+        </if>
+        <if test="conceptInfoPageVO.name!=null and conceptInfoPageVO.name!=''">
+            AND a.name like concat('%', #{conceptInfoPageVO.name},'%')
+        </if>
+        <if test="conceptInfoPageVO.typeName!=null and conceptInfoPageVO.typeName!=''">
+            AND a.type = #{conceptInfoPageVO.typeName}
+        </if>
+        GROUP BY
+        a.id
+        ) t1
+        LEFT JOIN sys_user t2 ON t1.modifier = t2.id
+    </select>
+
+</mapper>

+ 4 - 0
config-server/src/main/resources/shared/cdssman-service-dev.yml

@@ -83,3 +83,7 @@ mybatis-plus:
 
 imageUrl:
   prefix: http://192.168.2.236:82
+
+#CDSS核心地址
+cdss-core:
+  url: http://192.168.2.236:7010

+ 4 - 0
config-server/src/main/resources/shared/cdssman-service-local.yml

@@ -83,3 +83,7 @@ mybatis-plus:
 
 imageUrl:
   prefix: http://192.168.2.236:82
+
+#CDSS核心地址
+cdss-core:
+  url: http://192.168.2.236:7010

+ 5 - 0
config-server/src/main/resources/shared/cdssman-service-pre.yml

@@ -83,3 +83,8 @@ mybatis-plus:
 
 imageUrl:
   prefix: http://192.168.2.121:82
+
+#CDSS核心地址
+cdss-core:
+  url: http://192.168.2.121:7010
+

+ 5 - 0
config-server/src/main/resources/shared/cdssman-service-pro.yml

@@ -83,3 +83,8 @@ mybatis-plus:
 
 imageUrl:
   prefix: http://192.168.2.122:82
+
+#CDSS核心地址
+cdss-core:
+  url: http://192.168.2.122:7010
+