소스 검색

Merge branch 'develop' into dev/ruleTest20210601

gaodm 4 년 전
부모
커밋
c383339497
100개의 변경된 파일5980개의 추가작업 그리고 378개의 파일을 삭제
  1. 27 10
      cdssman-service/src/main/java/com/diagbot/dto/KlConceptAllDTO.java
  2. 35 0
      cdssman-service/src/main/java/com/diagbot/dto/KlConceptSimDTO.java
  3. 151 0
      cdssman-service/src/main/java/com/diagbot/dto/KlDiseaseDTO.java
  4. 26 0
      cdssman-service/src/main/java/com/diagbot/dto/KlDrugDTO.java
  5. 26 0
      cdssman-service/src/main/java/com/diagbot/dto/KlDrugExportDTO.java
  6. 95 0
      cdssman-service/src/main/java/com/diagbot/dto/KlDrugMappingDTO.java
  7. 135 0
      cdssman-service/src/main/java/com/diagbot/dto/KlDrugRegisterDTO.java
  8. 78 0
      cdssman-service/src/main/java/com/diagbot/dto/KlLisDTO.java
  9. 33 0
      cdssman-service/src/main/java/com/diagbot/dto/KlOperationDTO.java
  10. 63 0
      cdssman-service/src/main/java/com/diagbot/dto/KlPacsDTO.java
  11. 89 0
      cdssman-service/src/main/java/com/diagbot/dto/KlSymptomDTO.java
  12. 27 0
      cdssman-service/src/main/java/com/diagbot/dto/KlTcmDiseaseDTO.java
  13. 23 0
      cdssman-service/src/main/java/com/diagbot/dto/KlTcmSyndromeDTO.java
  14. 40 0
      cdssman-service/src/main/java/com/diagbot/dto/KlVitalResultDTO.java
  15. 20 0
      cdssman-service/src/main/java/com/diagbot/entity/CommonParam.java
  16. 19 0
      cdssman-service/src/main/java/com/diagbot/entity/Ex.java
  17. 118 97
      cdssman-service/src/main/java/com/diagbot/entity/KlDisease.java
  18. 73 0
      cdssman-service/src/main/java/com/diagbot/entity/KlDrugMapping.java
  19. 301 0
      cdssman-service/src/main/java/com/diagbot/entity/KlDrugRegister.java
  20. 34 78
      cdssman-service/src/main/java/com/diagbot/entity/KlLis.java
  21. 75 0
      cdssman-service/src/main/java/com/diagbot/entity/KlOperation.java
  22. 128 0
      cdssman-service/src/main/java/com/diagbot/entity/KlPacs.java
  23. 118 0
      cdssman-service/src/main/java/com/diagbot/entity/KlSymptom.java
  24. 69 0
      cdssman-service/src/main/java/com/diagbot/entity/KlTcmDisease.java
  25. 68 0
      cdssman-service/src/main/java/com/diagbot/entity/KlTcmSyndrome.java
  26. 75 0
      cdssman-service/src/main/java/com/diagbot/entity/KlVitalResult.java
  27. 50 0
      cdssman-service/src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java
  28. 5 0
      cdssman-service/src/main/java/com/diagbot/enums/LexiconEnum.java
  29. 6 1
      cdssman-service/src/main/java/com/diagbot/enums/RelationLibTypeEnum.java
  30. 183 44
      cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java
  31. 64 57
      cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java
  32. 47 49
      cdssman-service/src/main/java/com/diagbot/facade/KlDrugFacade.java
  33. 51 0
      cdssman-service/src/main/java/com/diagbot/facade/KlDrugMappingFacade.java
  34. 284 0
      cdssman-service/src/main/java/com/diagbot/facade/KlDrugRegisterFacade.java
  35. 44 1
      cdssman-service/src/main/java/com/diagbot/facade/KlLisFacade.java
  36. 62 0
      cdssman-service/src/main/java/com/diagbot/facade/KlOperationFacade.java
  37. 70 0
      cdssman-service/src/main/java/com/diagbot/facade/KlPacsFacade.java
  38. 185 0
      cdssman-service/src/main/java/com/diagbot/facade/KlRelationFacade.java
  39. 95 0
      cdssman-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java
  40. 57 0
      cdssman-service/src/main/java/com/diagbot/facade/KlTcmDiseaseFacade.java
  41. 57 0
      cdssman-service/src/main/java/com/diagbot/facade/KlTcmSyndromeFacade.java
  42. 63 0
      cdssman-service/src/main/java/com/diagbot/facade/KlVitalResFacade.java
  43. 47 0
      cdssman-service/src/main/java/com/diagbot/facade/UserClientFacade.java
  44. 619 0
      cdssman-service/src/main/java/com/diagbot/facade/XLSXCovertCSVReader.java
  45. 5 1
      cdssman-service/src/main/java/com/diagbot/mapper/KlConceptMapper.java
  46. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlDrugMappingMapper.java
  47. 32 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlDrugRegisterMapper.java
  48. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlOperationMapper.java
  49. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlPacsMapper.java
  50. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlSymptomMapper.java
  51. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlTcmDiseaseMapper.java
  52. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlTcmSyndromeMapper.java
  53. 16 0
      cdssman-service/src/main/java/com/diagbot/mapper/KlVitalResultMapper.java
  54. 5 2
      cdssman-service/src/main/java/com/diagbot/service/KlConceptService.java
  55. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlDrugMappingService.java
  56. 32 0
      cdssman-service/src/main/java/com/diagbot/service/KlDrugRegisterService.java
  57. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlOperationService.java
  58. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlPacsService.java
  59. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlSymptomService.java
  60. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlTcmDiseaseService.java
  61. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlTcmSyndromeService.java
  62. 16 0
      cdssman-service/src/main/java/com/diagbot/service/KlVitalResultService.java
  63. 7 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlConceptServiceImpl.java
  64. 22 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlDrugMappingServiceImpl.java
  65. 50 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlDrugRegisterServiceImpl.java
  66. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlOperationServiceImpl.java
  67. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlPacsServiceImpl.java
  68. 22 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java
  69. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlTcmDiseaseServiceImpl.java
  70. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlTcmSyndromeServiceImpl.java
  71. 20 0
      cdssman-service/src/main/java/com/diagbot/service/impl/KlVitalResultServiceImpl.java
  72. 127 0
      cdssman-service/src/main/java/com/diagbot/util/ReflectUtil.java
  73. 17 0
      cdssman-service/src/main/java/com/diagbot/vo/ConceptRelationVO.java
  74. 18 0
      cdssman-service/src/main/java/com/diagbot/vo/ImportVO.java
  75. 6 5
      cdssman-service/src/main/java/com/diagbot/vo/KlConceptAllVO.java
  76. 38 7
      cdssman-service/src/main/java/com/diagbot/vo/KlConceptSaveVO.java
  77. 152 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDiseaseVO.java
  78. 29 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugMappingGetVO.java
  79. 24 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterDelVO.java
  80. 24 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterGetVO.java
  81. 66 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterImportExVO.java
  82. 99 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterPageVO.java
  83. 104 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterSaveVO.java
  84. 71 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterTestVO.java
  85. 24 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugSearchVO.java
  86. 26 0
      cdssman-service/src/main/java/com/diagbot/vo/KlDrugVO.java
  87. 83 0
      cdssman-service/src/main/java/com/diagbot/vo/KlLisVO.java
  88. 38 0
      cdssman-service/src/main/java/com/diagbot/vo/KlOperationVO.java
  89. 68 0
      cdssman-service/src/main/java/com/diagbot/vo/KlPacsVO.java
  90. 93 0
      cdssman-service/src/main/java/com/diagbot/vo/KlSymptomVO.java
  91. 22 0
      cdssman-service/src/main/java/com/diagbot/vo/KlTcmDiseaseVO.java
  92. 22 0
      cdssman-service/src/main/java/com/diagbot/vo/KlTcmSyndromeVO.java
  93. 45 0
      cdssman-service/src/main/java/com/diagbot/vo/KlVitalResultVO.java
  94. 27 0
      cdssman-service/src/main/java/com/diagbot/vo/SearchVO.java
  95. 122 4
      cdssman-service/src/main/java/com/diagbot/web/KlConceptController.java
  96. 118 0
      cdssman-service/src/main/java/com/diagbot/web/KlDrugRegisterController.java
  97. 31 12
      cdssman-service/src/main/resources/mapper/KlConceptMapper.xml
  98. 33 10
      cdssman-service/src/main/resources/mapper/KlDiseaseMapper.xml
  99. 19 0
      cdssman-service/src/main/resources/mapper/KlDrugMappingMapper.xml
  100. 0 0
      cdssman-service/src/main/resources/mapper/KlDrugRegisterMapper.xml

+ 27 - 10
cdssman-service/src/main/java/com/diagbot/dto/KlConceptAllDTO.java

@@ -1,7 +1,5 @@
 package com.diagbot.dto;
 
-import com.diagbot.vo.KlConceptSaveSubVO;
-import io.swagger.models.auth.In;
 import lombok.Getter;
 import lombok.Setter;
 
@@ -28,14 +26,33 @@ public class KlConceptAllDTO {
     private Integer isHasCommon;
     private Double minAge;
     private Double maxAge;
-    private Double minVal;
-    private Double maxVal;
-    private String unit;
-    private Integer scopeType;
-    private String  icdCode;
     private String remark;
-    private Integer drug;
-    private Long deptId;
-    private String deptName;
     private List<KlConceptAllSubDTO> klConceptSub;
+
+    // 疾病扩展信息
+    private KlDiseaseDTO klDiseaseDTO;
+
+    // 药品扩展信息
+    private KlDrugDTO klDrugDTO;
+
+    // 症状扩展信息
+    private KlSymptomDTO klSymptomDTO;
+
+    //化验扩展信息
+    private KlLisDTO klLisDTO;
+
+    //辅检扩展信息
+    private KlPacsDTO klPacsDTO;
+
+    //手术扩展信息
+    private KlOperationDTO klOperationDTO;
+
+    //体征结果扩展信息
+    private KlVitalResultDTO klVitalResultDTO;
+
+    // 中医疾病扩展信息
+    private KlTcmDiseaseDTO klTcmDiseaseDTO;
+
+    // 中医证候扩展信息
+    private KlTcmSyndromeDTO klTcmSyndromeDTO;
 }

+ 35 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlConceptSimDTO.java

@@ -0,0 +1,35 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 概念表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-03-01
+ */
+@Data
+public class KlConceptSimDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键,概念id
+     */
+    private Long id;
+
+    /**
+     * 概念名称(冗余)
+     */
+    private String libName;
+
+    /**
+     * 概念词性type(冗余)
+     */
+    private Integer libType;
+
+}

+ 151 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlDiseaseDTO.java

@@ -0,0 +1,151 @@
+package com.diagbot.dto;
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 疾病表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDiseaseDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 科室概念id
+     */
+    private Long deptId;
+
+    /**
+     * ICD10编号
+     */
+    private String icd10Code;
+
+    /**
+     * 病程
+     */
+    private String course;
+
+    /**
+     * 诱因
+     */
+    private String inducement;
+
+    /**
+     * 饮食禁忌
+     */
+    private String foodProhibition;
+
+    /**
+     * 危险因素
+     */
+    private String hazard;
+
+    /**
+     * 治愈性
+     */
+    private String healing;
+
+    /**
+     * 危害性
+     */
+    private String pernicious;
+
+    /**
+     * 临床分类
+     */
+    private String clinicType;
+
+    /**
+     * 好发地区
+     */
+    private String vulArea;
+
+    /**
+     * 好发人群
+     */
+    private String vulCrowd;
+
+    /**
+     * 发病率
+     */
+    private Double incidence;
+
+    /**
+     * 是否传染(0:否,1:是)
+     */
+    private Integer isInfect;
+
+    /**
+     * 并发症
+     */
+    private String complication;
+
+    /**
+     * 病因
+     */
+    private String pathogeny;
+
+    /**
+     * 疾病分型
+     */
+    private String disType;
+
+    /**
+     * 中西医疾病(0:通用,1:西,2:中)
+     */
+    private Integer chWestern;
+
+    /**
+     * 是否常见病(0:否,1:是)
+     */
+    private Integer isCommonDis;
+
+    /**
+     * 是否遗传(0:否,1:是)
+     */
+    private Integer isHeredity;
+
+    /**
+     * 简称
+     */
+    private String nameSimple;
+
+    /**
+     * 英文简称
+     */
+    private String enNameSimple;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 肿瘤细胞类型
+     */
+    private String tumorCellType;
+
+    /**
+     * 形态学分类代码
+     */
+    private String morphology;
+
+    // 科室列表
+    private List<KlConceptSimDTO> deptList = Lists.newLinkedList();
+
+    // 部位列表
+    private List<KlConceptSimDTO> partList = Lists.newLinkedList();
+
+    // 疾病系统分类列表
+    private List<KlConceptSimDTO> systemTypeList = Lists.newLinkedList();
+
+}

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

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    // 药品类别(0:西药,1:中成药)
+    private Integer drug;
+
+    // 通用药品名关联注册药品
+    // private List<KlDrugMappingDTO> klDrugMappingDTOList = Lists.newLinkedList();
+
+}

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

@@ -0,0 +1,26 @@
+package com.diagbot.dto;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品通用名导出
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugExportDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 注册名称
+     */
+    @Excel(name = "药品通用名", orderNum = "1")
+    private String name;
+}

+ 95 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlDrugMappingDTO.java

@@ -0,0 +1,95 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugMappingDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 药品代码
+     */
+    private String drugCode;
+
+    /**
+     * 注册名称
+     */
+    private String name;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 商品名称
+     */
+    private String tradeName;
+
+    /**
+     * 药品剂型
+     */
+    private String form;
+
+    /**
+     * 注册规格
+     */
+    private String specification;
+
+    /**
+     * 最小包装数量
+     */
+    private String minPackQuantity;
+
+    /**
+     * 最小包装单位
+     */
+    private String minPackUnit;
+
+    /**
+     * 药品企业
+     */
+    private String company;
+
+    /**
+     * 批准文号
+     */
+    private String approval;
+
+    /**
+     * 药品本位码
+     */
+    private String standardCode;
+
+    /**
+     * 医保类型
+     */
+    private String insuranceType;
+
+    /**
+     * 医保备注
+     */
+    private String insuranceRemrk;
+
+    /**
+     * 药品类别
+     */
+    private String drugType;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 135 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlDrugRegisterDTO.java

@@ -0,0 +1,135 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    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 drugCode;
+
+    /**
+     * 注册名称
+     */
+    private String name;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 商品名称
+     */
+    private String tradeName;
+
+    /**
+     * 药品剂型
+     */
+    private String form;
+
+    /**
+     * 注册规格
+     */
+    private String specification;
+
+    /**
+     * 最小包装数量
+     */
+    private String minPackQuantity;
+
+    /**
+     * 最小包装单位
+     */
+    private String minPackUnit;
+
+    /**
+     * 药品企业
+     */
+    private String company;
+
+    /**
+     * 批准文号
+     */
+    private String approval;
+
+    /**
+     * 药品本位码
+     */
+    private String standardCode;
+
+    /**
+     * 医保类型
+     */
+    private String insuranceType;
+
+    /**
+     * 医保备注
+     */
+    private String insuranceRemrk;
+
+    /**
+     * 药品类别
+     */
+    private String drugType;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 药品通用名
+     */
+    private Long drugConceptId;
+
+    /**
+     * 药品通用名
+     */
+    private String drugName;
+}

+ 78 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlLisDTO.java

@@ -0,0 +1,78 @@
+package com.diagbot.dto;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+;
+
+/**
+ * <p>
+ * 化验表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlLisDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 最小值
+     */
+    private Double minValue;
+
+    /**
+     * 最大值
+     */
+    private Double maxValue;
+
+    /**
+     * 类型(0:范围内;1:范围外)
+     */
+    private Integer type;
+
+    /**
+     * 单位概念id
+     */
+
+    private String unit;
+
+    /**
+     * 检查标本
+     */
+    private String checkSpecimen;
+
+    /**
+     * 检查方法
+     */
+    private String checkMethod;
+
+    /**
+     * 影响因素
+     */
+    private String influenceFac;
+
+    /**
+     * 临床意义
+     */
+    private String clinicalSig;
+
+    /**
+     * 定性(阴、阳性)
+     */
+    private String qualitative;
+
+    /**
+     * 所属类别
+     */
+    private String category;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+}

+ 33 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlOperationDTO.java

@@ -0,0 +1,33 @@
+package com.diagbot.dto;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+;
+
+/**
+ * <p>
+ * 手术表
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlOperationDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 手术级别(0,1,2,3,4)
+     */
+    private Integer operationLevel;
+
+    /**
+     * 手术操作码
+     */
+    private String operationCode;
+
+}

+ 63 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlPacsDTO.java

@@ -0,0 +1,63 @@
+package com.diagbot.dto;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+;
+
+/**
+ * <p>
+ * 辅检表
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlPacsDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 检查方法
+     */
+    private String checkMethod;
+
+    /**
+     * 项目定义
+     */
+    private String definition;
+
+    /**
+     * 检查目的
+     */
+    private String checkObjective;
+
+    /**
+     * 检查技术
+     */
+    private String checkSkillful;
+
+    /**
+     * 禁忌症和局限性
+     */
+    private String condLimit;
+
+    /**
+     * 适应症
+     */
+    private String interventional;
+
+    /**
+     * 危急标识(0:不危急,1:危急)
+     */
+    private Integer emergencySign;
+
+    /**
+     * 检查前准备
+     */
+    private String checkPrepare;
+
+}

+ 89 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlSymptomDTO.java

@@ -0,0 +1,89 @@
+package com.diagbot.dto;
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 症状扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Data
+public class KlSymptomDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 阳性症状(0:否,1:是)
+     */
+    private Integer isPositive;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 定义
+     */
+    private String definition;
+
+    /**
+     * 中西医症状(0:通用,1:西,2:中)
+     */
+    private Integer chWestern;
+
+    /**
+     * 缓解因素
+     */
+    private String mitigatingFac;
+
+    /**
+     * 加重因素
+     */
+    private String aggravateFac;
+
+    /**
+     * 症状起因
+     */
+    private String cause;
+
+    /**
+     * 常见疾病
+     */
+    private String commonDis;
+
+    /**
+     * 预防措施
+     */
+    private String preMeasures;
+
+    /**
+     * 饮食禁忌
+     */
+    private String foodProhibition;
+
+    /**
+     * 通俗解释
+     */
+    private String commonExplain;
+
+    // 科室列表
+    private List<KlConceptSimDTO> deptList = Lists.newLinkedList();
+
+    // 部位列表
+    private List<KlConceptSimDTO> partList = Lists.newLinkedList();
+
+    // 常见伴随症状列表
+    private List<KlConceptSimDTO> conSymptomList = Lists.newLinkedList();
+
+    // 性质列表
+    private List<KlConceptSimDTO> natureList = Lists.newLinkedList();
+
+}

+ 27 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlTcmDiseaseDTO.java

@@ -0,0 +1,27 @@
+package com.diagbot.dto;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+;
+
+/**
+ * <p>
+ * 中医疾病
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlTcmDiseaseDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编码
+     */
+    private String code;
+}

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

@@ -0,0 +1,23 @@
+package com.diagbot.dto;
+
+import lombok.Data;
+
+import java.io.Serializable;
+/**
+ * <p>
+ * 中医证候
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlTcmSyndromeDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 编码
+     */
+    private String code;
+}

+ 40 - 0
cdssman-service/src/main/java/com/diagbot/dto/KlVitalResultDTO.java

@@ -0,0 +1,40 @@
+package com.diagbot.dto;
+
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+;
+
+/**
+ * <p>
+ * 手术表
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlVitalResultDTO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 不适宜人群
+     */
+    private String suitablePopNo;
+
+    /**
+     * 操作方法
+     */
+    private String checkMethod;
+
+    // 科室列表
+    private List<KlConceptSimDTO> deptList = Lists.newLinkedList();
+
+    // 部位列表
+    private List<KlConceptSimDTO> partList = Lists.newLinkedList();
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.entity;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @Description:
+ * @Author: ztg
+ * @Date: 2018/12/14 14:15
+ */
+@Getter
+@Setter
+public class CommonParam {
+    private String person;     //操作人
+    private Date now;          //当前时间
+    private Long conceptId;    //conceptId
+    private int insertOrUpdate;//更新或新增标识
+}

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

@@ -0,0 +1,19 @@
+package com.diagbot.entity;
+
+import java.lang.annotation.Documented;
+import java.lang.annotation.ElementType;
+import java.lang.annotation.Retention;
+import java.lang.annotation.RetentionPolicy;
+import java.lang.annotation.Target;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2021/5/21 13:49
+ */
+@Target(value = { ElementType.TYPE, ElementType.FIELD })
+@Documented
+@Retention(RetentionPolicy.RUNTIME)
+public @interface Ex {
+    public String name();
+}

+ 118 - 97
cdssman-service/src/main/java/com/diagbot/entity/KlDisease.java

@@ -2,6 +2,7 @@ package com.diagbot.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -11,9 +12,10 @@ import java.util.Date;
  * 疾病表
  * </p>
  *
- * @author wangfeng
- * @since 2021-03-01
+ * @author zhoutg
+ * @since 2021-05-11
  */
+@Data
 public class KlDisease implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -54,109 +56,128 @@ public class KlDisease implements Serializable {
      */
     private Long conceptId;
 
+    /**
+     * 科室概念id
+     */
     private Long deptId;
+
     /**
      * ICD10编号
      */
     private String icd10Code;
 
+    /**
+     * 病程
+     */
+    private String course;
+
+    /**
+     * 诱因
+     */
+    private String inducement;
+
+    /**
+     * 饮食禁忌
+     */
+    private String foodProhibition;
+
+    /**
+     * 危险因素
+     */
+    private String hazard;
+
+    /**
+     * 治愈性
+     */
+    private String healing;
+
+    /**
+     * 危害性
+     */
+    private String pernicious;
+
+    /**
+     * 临床分类
+     */
+    private String clinicType;
+
+    /**
+     * 好发地区
+     */
+    private String vulArea;
+
+    /**
+     * 好发人群
+     */
+    private String vulCrowd;
+
+    /**
+     * 发病率
+     */
+    private Double incidence;
+
+    /**
+     * 是否传染(0:否,1:是)
+     */
+    private Integer isInfect;
+
+    /**
+     * 并发症
+     */
+    private String complication;
+
+    /**
+     * 病因
+     */
+    private String pathogeny;
+
+    /**
+     * 疾病分型
+     */
+    private String disType;
+
+    /**
+     * 中西医疾病(0:通用,1:西,2:中)
+     */
+    private Integer chWestern;
+
+    /**
+     * 是否常见病(0:否,1:是)
+     */
+    private Integer isCommonDis;
+
+    /**
+     * 是否遗传(0:否,1:是)
+     */
+    private Integer isHeredity;
+
+    /**
+     * 简称
+     */
+    private String nameSimple;
+
+    /**
+     * 英文简称
+     */
+    private String enNameSimple;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 肿瘤细胞类型
+     */
+    private String tumorCellType;
+
+    /**
+     * 形态学分类代码
+     */
+    private String morphology;
+
     /**
      * 备注
      */
     private String remark;
-
-    public Long getDeptId() {
-        return deptId;
-    }
-
-    public void setDeptId(Long deptId) {
-        this.deptId = deptId;
-    }
-
-    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 getIcd10Code() {
-        return icd10Code;
-    }
-
-    public void setIcd10Code(String icd10Code) {
-        this.icd10Code = icd10Code;
-    }
-
-    public String getRemark() {
-        return remark;
-    }
-
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
-
-    @Override
-    public String toString() {
-        return "KlDisease{" +
-                "id=" + id +
-                ", isDeleted=" + isDeleted +
-                ", gmtCreate=" + gmtCreate +
-                ", gmtModified=" + gmtModified +
-                ", creator=" + creator +
-                ", modifier=" + modifier +
-                ", conceptId=" + conceptId +
-                ", icd10Code=" + icd10Code +
-                ", remark=" + remark +
-                "}";
-    }
 }

+ 73 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlDrugMapping.java

@@ -0,0 +1,73 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 药品通用名和注册名映射表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugMapping 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;
+
+    /**
+     * 药品通用名conceptId
+     */
+    private Long drugConcept;
+
+    /**
+     * 药品注册名Id
+     */
+    private Long registerId;
+
+    /**
+     * 顺序号
+     */
+    private Integer orderNo;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 301 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlDrugRegister.java

@@ -0,0 +1,301 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+public class KlDrugRegister 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 drugCode;
+
+    /**
+     * 注册名称
+     */
+    private String name;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 商品名称
+     */
+    private String tradeName;
+
+    /**
+     * 药品剂型
+     */
+    private String form;
+
+    /**
+     * 注册规格
+     */
+    private String specification;
+
+    /**
+     * 最小包装数量
+     */
+    private String minPackQuantity;
+
+    /**
+     * 最小包装单位
+     */
+    private String minPackUnit;
+
+    /**
+     * 药品企业
+     */
+    private String company;
+
+    /**
+     * 批准文号
+     */
+    private String approval;
+
+    /**
+     * 药品本位码
+     */
+    private String standardCode;
+
+    /**
+     * 医保类型
+     */
+    private String insuranceType;
+
+    /**
+     * 医保备注
+     */
+    private String insuranceRemrk;
+
+    /**
+     * 药品类别
+     */
+    private String drugType;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    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 getDrugCode() {
+        return drugCode;
+    }
+
+    public void setDrugCode(String drugCode) {
+        this.drugCode = drugCode;
+    }
+    public String getName() {
+        return name;
+    }
+
+    public void setName(String name) {
+        this.name = name;
+    }
+    public String getEnName() {
+        return enName;
+    }
+
+    public void setEnName(String enName) {
+        this.enName = enName;
+    }
+    public String getTradeName() {
+        return tradeName;
+    }
+
+    public void setTradeName(String tradeName) {
+        this.tradeName = tradeName;
+    }
+    public String getForm() {
+        return form;
+    }
+
+    public void setForm(String form) {
+        this.form = form;
+    }
+    public String getSpecification() {
+        return specification;
+    }
+
+    public void setSpecification(String specification) {
+        this.specification = specification;
+    }
+    public String getMinPackQuantity() {
+        return minPackQuantity;
+    }
+
+    public void setMinPackQuantity(String minPackQuantity) {
+        this.minPackQuantity = minPackQuantity;
+    }
+    public String getMinPackUnit() {
+        return minPackUnit;
+    }
+
+    public void setMinPackUnit(String minPackUnit) {
+        this.minPackUnit = minPackUnit;
+    }
+    public String getCompany() {
+        return company;
+    }
+
+    public void setCompany(String company) {
+        this.company = company;
+    }
+    public String getApproval() {
+        return approval;
+    }
+
+    public void setApproval(String approval) {
+        this.approval = approval;
+    }
+    public String getStandardCode() {
+        return standardCode;
+    }
+
+    public void setStandardCode(String standardCode) {
+        this.standardCode = standardCode;
+    }
+    public String getInsuranceType() {
+        return insuranceType;
+    }
+
+    public void setInsuranceType(String insuranceType) {
+        this.insuranceType = insuranceType;
+    }
+    public String getInsuranceRemrk() {
+        return insuranceRemrk;
+    }
+
+    public void setInsuranceRemrk(String insuranceRemrk) {
+        this.insuranceRemrk = insuranceRemrk;
+    }
+    public String getDrugType() {
+        return drugType;
+    }
+
+    public void setDrugType(String drugType) {
+        this.drugType = drugType;
+    }
+    public String getRemark() {
+        return remark;
+    }
+
+    public void setRemark(String remark) {
+        this.remark = remark;
+    }
+
+    @Override
+    public String toString() {
+        return "KlDrugRegister{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", drugCode=" + drugCode +
+            ", name=" + name +
+            ", enName=" + enName +
+            ", tradeName=" + tradeName +
+            ", form=" + form +
+            ", specification=" + specification +
+            ", minPackQuantity=" + minPackQuantity +
+            ", minPackUnit=" + minPackUnit +
+            ", company=" + company +
+            ", approval=" + approval +
+            ", standardCode=" + standardCode +
+            ", insuranceType=" + insuranceType +
+            ", insuranceRemrk=" + insuranceRemrk +
+            ", drugType=" + drugType +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 34 - 78
cdssman-service/src/main/java/com/diagbot/entity/KlLis.java

@@ -2,6 +2,8 @@ package com.diagbot.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Getter;
+import lombok.Setter;
 
 import java.io.Serializable;
 import java.util.Date;
@@ -14,6 +16,8 @@ import java.util.Date;
  * @author wangfeng
  * @since 2021-03-01
  */
+@Setter
+@Getter
 public class KlLis implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -76,94 +80,46 @@ public class KlLis implements Serializable {
     private String unit;
 
     /**
-     * 备注
+     * 检查标本
      */
-    private String remark;
-
-    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;
-    }
+    private String checkSpecimen;
 
-    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;
-    }
+    /**
+     * 检查方法
+     */
+    private String checkMethod;
 
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-    public String getModifier() {
-        return modifier;
-    }
+    /**
+     * 影响因素
+     */
+    private String influenceFac;
 
-    public void setModifier(String modifier) {
-        this.modifier = modifier;
-    }
-    public Long getConceptId() {
-        return conceptId;
-    }
+    /**
+     * 临床意义
+     */
+    private String clinicalSig;
 
-    public void setConceptId(Long conceptId) {
-        this.conceptId = conceptId;
-    }
-    public Double getMinValue() {
-        return minValue;
-    }
+    /**
+     * 定性(阴、阳性)
+     */
+    private String qualitative;
 
-    public void setMinValue(Double minValue) {
-        this.minValue = minValue;
-    }
-    public Double getMaxValue() {
-        return maxValue;
-    }
+    /**
+     * 所属类别
+     */
+    private String category;
 
-    public void setMaxValue(Double maxValue) {
-        this.maxValue = maxValue;
-    }
-    public Integer getType() {
-        return type;
-    }
+    /**
+     * 英文名称
+     */
+    private String enName;
 
-    public void setType(Integer type) {
-        this.type = type;
-    }
-    public String getUnit() {
-        return unit;
-    }
+    /**
+     * 备注
+     */
+    private String remark;
 
-    public void setUnit(String unit) {
-        this.unit = unit;
-    }
-    public String getRemark() {
-        return remark;
-    }
 
-    public void setRemark(String remark) {
-        this.remark = remark;
-    }
 
     @Override
     public String toString() {

+ 75 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlOperation.java

@@ -0,0 +1,75 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 手术扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Data
+public class KlOperation 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;
+
+    /**
+     * 手术级别(0,1,2,3,4)
+     */
+    private Integer operationLevel;
+
+    /**
+     * 手术操作码
+     */
+    private String operationCode;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 128 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlPacs.java

@@ -0,0 +1,128 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 辅检扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Data
+public class KlPacs 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 checkMethod;
+
+    /**
+     * 项目定义
+     */
+    private String definition;
+
+    /**
+     * 检查目的
+     */
+    private String checkObjective;
+
+    /**
+     * 检查技术
+     */
+    private String checkSkillful;
+
+    /**
+     * 禁忌症和局限性
+     */
+    private String condLimit;
+
+    /**
+     * 适应症
+     */
+    private String interventional;
+
+    /**
+     * 危急标识(0:不危急,1:危急)
+     */
+    private Integer emergencySign;
+
+    /**
+     * 检查前准备
+     */
+    private String checkPrepare;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+
+
+    @Override
+    public String toString() {
+        return "KlPacs{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", conceptId=" + conceptId +
+            ", checkMethod=" + checkMethod +
+            ", definition=" + definition +
+            ", checkObjective=" + checkObjective +
+            ", checkSkillful=" + checkSkillful +
+            ", condLimit=" + condLimit +
+            ", interventional=" + interventional +
+            ", emergencySign=" + emergencySign +
+            ", checkPrepare=" + checkPrepare +
+            ", remark=" + remark +
+        "}";
+    }
+}

+ 118 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlSymptom.java

@@ -0,0 +1,118 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 症状扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Data
+public class KlSymptom 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;
+
+    /**
+     * 阳性症状(0:否,1:是)
+     */
+    private Integer isPositive;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 定义
+     */
+    private String definition;
+
+    /**
+     * 中西医症状(0:通用,1:西,2:中)
+     */
+    private Integer chWestern;
+
+    /**
+     * 缓解因素
+     */
+    private String mitigatingFac;
+
+    /**
+     * 加重因素
+     */
+    private String aggravateFac;
+
+    /**
+     * 症状起因
+     */
+    private String cause;
+
+    /**
+     * 常见疾病
+     */
+    private String commonDis;
+
+    /**
+     * 预防措施
+     */
+    private String preMeasures;
+
+    /**
+     * 饮食禁忌
+     */
+    private String foodProhibition;
+
+    /**
+     * 通俗解释
+     */
+    private String commonExplain;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 69 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlTcmDisease.java

@@ -0,0 +1,69 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 中医疾病表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+@Data
+public class KlTcmDisease 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 code;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 68 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlTcmSyndrome.java

@@ -0,0 +1,68 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 中医证候表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+@Data
+public class KlTcmSyndrome 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 code;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 75 - 0
cdssman-service/src/main/java/com/diagbot/entity/KlVitalResult.java

@@ -0,0 +1,75 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 体征结果扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Data
+public class KlVitalResult 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 suitablePopNo;
+
+    /**
+     * 操作方法
+     */
+    private String checkMethod;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 50 - 0
cdssman-service/src/main/java/com/diagbot/enums/InsertOrUpdateEnum.java

@@ -0,0 +1,50 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author wangfeng
+ * @Description: TODO
+ * @date 2018年11月21日 下午2:31:42
+ */
+public enum InsertOrUpdateEnum implements KeyedNamed {
+    Insert(1, "新增"),
+    Update(2, "修改");
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    InsertOrUpdateEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static InsertOrUpdateEnum getEnum(int key) {
+        for (InsertOrUpdateEnum item : InsertOrUpdateEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        InsertOrUpdateEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}
+

+ 5 - 0
cdssman-service/src/main/java/com/diagbot/enums/LexiconEnum.java

@@ -36,6 +36,10 @@ public enum LexiconEnum implements KeyedNamed {
     Nurse(123,"护理"),
     Scale(124,"量表"),
     Unit(125,"单位"),
+    Nature(126,"性质"),
+    Tcmdisease(127, "中医疾病"),
+    Tcmsyndrome(128, "中医证候"),
+    Inducement(129, "诱因"),
     ICD10Class(300,"ICD10疾病类别"),
     MedChemClass(301,"药品化学物质类别"),
     MedZhiLiaoClass(302,"药品治疗学类别"),
@@ -43,6 +47,7 @@ public enum LexiconEnum implements KeyedNamed {
     MedJiePouClass(304,"药品解剖学类别"),
     SymptomClass(305,"症状类别"),
     OperationClass(306,"手术和操作类别"),
+    DisSysType(307,"疾病系统分类"),
     ICD10ClassNode(400,"ICD10疾病类别根节点"),
     DeptDiseaseNode(401,"科室疾病类别根节点"),
     MedChemClassNode(402,"药品化学物质类别根节点"),

+ 6 - 1
cdssman-service/src/main/java/com/diagbot/enums/RelationLibTypeEnum.java

@@ -20,7 +20,12 @@ public enum RelationLibTypeEnum implements KeyedNamed {
     disOperator(507, "106"),
     disDifferentDis(508, "100"),
     disLiangbiao(509,"124"),
-    disNurse(510,"123");
+    disNurse(510,"123"),
+    relationDept(511,"115"),
+    relationPart(512,"122"),
+    relationSystem(513,"307"),
+    relationAccSymptom(514,"103"),
+    relationNature(515,"126");
 
 
     @Setter

+ 183 - 44
cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -8,12 +8,15 @@ import com.diagbot.dto.GetAllForRelationDTO;
 import com.diagbot.dto.KlConceptAllDTO;
 import com.diagbot.dto.KlConceptAllSubDTO;
 import com.diagbot.dto.KlConceptInfoDTO;
+import com.diagbot.dto.KlConceptSimDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlConceptCommon;
 import com.diagbot.entity.KlConceptStatic;
 import com.diagbot.entity.KlDiagnose;
 import com.diagbot.entity.KlDiagnoseBase;
+import com.diagbot.entity.KlDrugMapping;
 import com.diagbot.entity.KlLexicon;
 import com.diagbot.entity.KlLibraryInfo;
 import com.diagbot.entity.KlRelation;
@@ -21,16 +24,19 @@ import com.diagbot.entity.KlRule;
 import com.diagbot.entity.KlRuleBase;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconEnum;
+import com.diagbot.enums.RelationLibTypeEnum;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.service.impl.KlConceptServiceImpl;
 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.ConceptRelationVO;
 import com.diagbot.vo.GetAllForRelationVO;
 import com.diagbot.vo.KlConceptAllVO;
 import com.diagbot.vo.KlConceptClearVO;
@@ -40,14 +46,15 @@ import com.diagbot.vo.KlConceptSaveSubVO;
 import com.diagbot.vo.KlConceptSaveVO;
 import com.diagbot.vo.KlLibraryInfoVO;
 import com.diagbot.vo.SearchConceptVO;
+import com.diagbot.vo.SearchVO;
 import com.google.common.collect.Lists;
+import com.google.common.collect.Maps;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.Date;
-import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.Random;
@@ -86,6 +93,20 @@ public class KlConceptFacade extends KlConceptServiceImpl {
     KlDiagnoseBaseFacade klDiagnoseBaseFacade;
     @Autowired
     KlDrugFacade klDrugFacade;
+    @Autowired
+    KlSymptomFacade klSymptomFacade;
+    @Autowired
+    KlPacsFacade klPacsFacade;
+    @Autowired
+    KlOperationFacade klOperationFacade;
+    @Autowired
+    KlVitalResFacade klVitalResFacade;
+    @Autowired
+    KlDrugMappingFacade klDrugMappingFacade;
+    @Autowired
+    KlTcmDiseaseFacade klTcmDiseaseFacade;
+    @Autowired
+    KlTcmSyndromeFacade klTcmSyndromeFacade;
 
     /**
      * @param klConceptInfoVO
@@ -146,21 +167,14 @@ public class KlConceptFacade extends KlConceptServiceImpl {
      * @return
      */
     public KlConceptAllDTO getConceptAlls(KlConceptAllVO klConceptAllVO) {
-        //获取科室;
-        QueryWrapper<KlConcept> klConceptQuer = new QueryWrapper<>();
-        klConceptQuer.eq("is_deleted", IsDeleteEnum.N.getKey()).eq("lib_type", LexiconEnum.Dept.getKey());
-        List<KlConcept> klConceptsDept = list(klConceptQuer);
-        Map<Long, String> deptMap = klConceptsDept.stream().collect(HashMap::new,
-                (m, v) -> m.put(v.getId(), v.getLibName()), HashMap::putAll);
+        Long conceptId = klConceptAllVO.getConceptId();
         List<KlConceptAllDTO> conceptAll = getConceptAll(klConceptAllVO);
+
         KlConceptAllDTO klConceptAll = new KlConceptAllDTO();
         List<KlConceptAllSubDTO> klConceptSub = new ArrayList<>();
         if (ListUtil.isNotEmpty(conceptAll)) {
             for (KlConceptAllDTO data : conceptAll) {
                 if (data.getIsConcept().equals(1)) {
-                    if (null != data.getDeptId()) {
-                        data.setDeptName(deptMap.get(data.getDeptId()));
-                    }
                     BeanUtil.copyProperties(data, klConceptAll);
                 } else {
                     KlConceptAllSubDTO klConceptAllSubDTO = new KlConceptAllSubDTO();
@@ -170,6 +184,43 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             }
         }
         klConceptAll.setKlConceptSub(klConceptSub);
+
+        LexiconEnum lexiconEnum = LexiconEnum.getEnum(klConceptAllVO.getLibType());
+        if (lexiconEnum != null) {
+            ConceptRelationVO conceptRelationVO = new ConceptRelationVO();
+            conceptRelationVO.setConceptId(conceptId);
+            switch (lexiconEnum) {
+                case Disease: // 疾病扩展 kl_disease, kl_relation,kl_relation_order
+                    klDiseaseFacade.getKlDisease(conceptId, klConceptAll);
+                    break;
+                case Symptom: // 症状扩展 kl_symptom, kl_relation,kl_relation_order
+                    klSymptomFacade.getKlSymptom(conceptId, klConceptAll);
+                    break;
+                case Medicine: // 药品扩展 kl_drug
+                    klDrugFacade.getKlDrug(conceptId, klConceptAll);
+                    break;
+                case LisName:
+                case LisSubName: // 化验扩展 kl_lis
+                    klLisFacade.getKlLis(conceptId, klConceptAll);
+                    break;
+                case PacsName:
+                case PacsSubName: // 辅检扩展 kl_pacs
+                    klPacsFacade.getKlPacs(conceptId, klConceptAll);
+                    break;
+                case Operation: // 手术扩展 kl_operation
+                    klOperationFacade.getKlOperation(conceptId, klConceptAll);
+                    break;
+                case VitalResult: //体征结果扩展 kl_vital_result, kl_relation,kl_relation_order
+                    klVitalResFacade.getKlVitalResult(conceptId, klConceptAll);
+                    break;
+                case Tcmdisease: // 中医疾病
+                    klTcmDiseaseFacade.getKlTcmDisease(conceptId, klConceptAll);
+                    break;
+                case Tcmsyndrome: // 中医证候
+                    klTcmSyndromeFacade.getKlTcmSyndrome(conceptId, klConceptAll);
+                    break;
+            }
+        }
         return klConceptAll;
     }
 
@@ -179,6 +230,8 @@ public class KlConceptFacade extends KlConceptServiceImpl {
      */
     public Boolean saveConceptInfo(KlConceptSaveVO klConceptSaveVO) {
         Date now = DateUtil.now();
+
+        CommonParam commonParam = initCommonParam();
         boolean res = false;
         // 校验名称是否相同
         checkConcept(klConceptSaveVO);
@@ -191,6 +244,7 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         klLibraryInfoFacade.checkLibraryInfoData(paesubVO);
         //先判断是新加的,还是修改
         if (null != klConceptSaveVO.getConceptId() && null != klConceptSaveVO.getLibId()) {
+            commonParam.setConceptId(klConceptSaveVO.getConceptId());
             //更新标准词
             res = updateAll(klConceptSaveVO);
             //更新同义词
@@ -237,11 +291,12 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             klConceptPare.setGmtCreate(now);
             klConceptPare.setGmtModified(now);
             res = save(klConceptPare);
+            commonParam.setConceptId(klConceptPare.getId()); // 赋值conceptId
             if (res) {
                 //2.再把标准词d的conceptId保存到kl_library_info表 生成libId,
                 Long conceptId = klConceptPare.getId();
                 KlLibraryInfo klLibraryInfoSub = new KlLibraryInfo();
-                klLibraryInfoSub.setConceptId(conceptId);
+                klLibraryInfoSub.setConceptId(commonParam.getConceptId());
                 klLibraryInfoSub.setName(klConceptSaveVO.getLibName());
                 klLibraryInfoSub.setSpell(klConceptSaveVO.getSpell());
                 klLibraryInfoSub.setTypeId(klConceptSaveVO.getLibType());
@@ -274,32 +329,53 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                 conceptCommon.setGmtModified(now);
                 klConceptCommonFacade.save(conceptCommon);
             }
-            //更新kl_disease
-            if (null != klConceptSaveVO.getIcdCode()) {
-                res = klDiseaseFacade.saveAll(klConceptPare, klConceptSaveVO);
-            }
-
-            //更新kl_lis
-            if (null != klConceptSaveVO.getScopeType()) {
-                res = klLisFacade.saveAll(klConceptPare, klConceptSaveVO);
-            }
-            if (null != klConceptSaveVO.getDrug()) {
-                res = klDrugFacade.saveAll(klConceptPare, klConceptSaveVO);
-            }
             //增加同义词
             List<KlConceptSaveSubVO> klConceptSub = klConceptSaveVO.getKlConceptSub();
             if (ListUtil.isNotEmpty(klConceptSub)) {
                 for (KlConceptSaveSubVO subVO : klConceptSub) {
                     if (subVO.getLibId() == null) {
-
                         klLibraryInfoFacade.checkLibraryInfoData(subVO);
-
                         res = klLibraryInfoFacade.savekLibraryInfoData(klConceptPare.getId(), subVO);
                     }
                 }
             }
+        }
 
-
+        LexiconEnum lexiconEnum = LexiconEnum.getEnum(klConceptSaveVO.getLibType().intValue());
+        if (lexiconEnum != null) {
+            switch (lexiconEnum) {
+                case Disease: // 疾病扩展 kl_disease, kl_relation,kl_relation_order
+                    res = klDiseaseFacade.saveAll(commonParam, klConceptSaveVO.getKlDiseaseVO());
+                    klRelationFacade.saveKlDisease(commonParam, klConceptSaveVO.getKlDiseaseVO());
+                    break;
+                case Symptom: // 症状扩展 kl_symptom, kl_relation,kl_relation_order
+                    klSymptomFacade.saveAll(commonParam, klConceptSaveVO.getKlSymptomVO());
+                    klRelationFacade.saveKlSymptom(commonParam, klConceptSaveVO.getKlSymptomVO());
+                    break;
+                case Medicine: //  药品通用名扩展 kl_drug
+                    klDrugFacade.saveKlDrug(commonParam, klConceptSaveVO.getKlDrugVO());
+                    break;
+                case LisName: // 实验室检查套餐
+                case LisSubName: // 实验室检查子项目
+                    klLisFacade.saveAll(commonParam, klConceptSaveVO.getKlLisVO());
+                    break;
+                case PacsSubName: // 辅助检查子项目
+                case PacsName: // 辅助检查项目
+                    klPacsFacade.saveAll(commonParam, klConceptSaveVO.getKlPacsVO());
+                    break;
+                case Operation: // 手术和操作
+                    klOperationFacade.saveAll(commonParam, klConceptSaveVO.getKlOperationVO());
+                    break;
+                case VitalResult: // 体征结果
+                    klRelationFacade.saveKlVitalRes(commonParam, klConceptSaveVO.getKlVitalResultVO());
+                    break;
+                case Tcmdisease: // 中医疾病
+                    klTcmDiseaseFacade.saveAll(commonParam, klConceptSaveVO.getKlTcmDiseaseVO());
+                    break;
+                case Tcmsyndrome: // 中医证候
+                    klTcmSyndromeFacade.saveAll(commonParam, klConceptSaveVO.getKlTcmSyndromeVO());
+                    break;
+            }
         }
         return res;
     }
@@ -330,18 +406,6 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             //当是疾病的时候才保存性别和年龄大小的数据
             res = klConceptCommonFacade.saveOrUpdateAll(klConceptSaveVO);
         }
-        //更新kl_disease
-        if (null != klConceptSaveVO.getIcdCode()) {
-            //当icd10编码不为空
-            res = klDiseaseFacade.saveOrUpdateAll(klConceptSaveVO);
-        }
-        //更新kl_lis
-        if (null != klConceptSaveVO.getScopeType()) {
-            res = klLisFacade.saveOrUpdateAll(klConceptSaveVO);
-        }
-        if (null != klConceptSaveVO.getDrug()) {
-            klDrugFacade.saveOrUpdateAll(klConceptSaveVO);
-        }
         return res;
     }
 
@@ -379,6 +443,12 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return retList;
     }
 
+    /**
+     * 根据类型和名称查找术语,名称和类型不能为空
+     *
+     * @param searchConceptVO
+     * @return
+     */
     public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchConceptVO searchConceptVO) {
         List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
         String name = searchConceptVO.getName();
@@ -405,6 +475,34 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return getAllForRelationDTOS;
     }
 
+    /**
+     * 根据类型和名称查找术语,名称可为空
+     *
+     * @param SearchVO
+     * @return
+     */
+    public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchVO SearchVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
+        List<Long> excludedConceptIds = SearchVO.getExcludedConceptIds();
+        List<KlConcept> conceptList = this.list(new QueryWrapper<KlConcept>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("lib_type", SearchVO.getLibType())
+                .eq("status", StatusEnum.Enable.getKey())
+                .like(StringUtil.isNotBlank(SearchVO.getName()), "lib_name", SearchVO.getName())
+                .notIn(ListUtil.isNotEmpty(excludedConceptIds), "id", excludedConceptIds));
+        if (ListUtil.isNotEmpty(conceptList)) {
+            getAllForRelationDTOS = conceptList.stream().map(x -> {
+                GetAllForRelationDTO getAllForRelationDTO = new GetAllForRelationDTO();
+                getAllForRelationDTO.setConceptNameType(x.getLibName());
+                getAllForRelationDTO.setConceptName(x.getLibName());
+                getAllForRelationDTO.setConceptId(x.getId());
+                getAllForRelationDTO.setLibType(x.getLibType());
+                return getAllForRelationDTO;
+            }).collect(Collectors.toList());
+        }
+        return getAllForRelationDTOS;
+    }
+
     /**
      * 筛选符合类型的概念id
      *
@@ -451,11 +549,17 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             }
 
             //kl_relation
-            int relationsum = klRelationFacade.count(new QueryWrapper<KlRelation>().eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("start_id", klConceptSatarOrdisaVO.getConceptId()).or()
-                    .eq("end_id", klConceptSatarOrdisaVO.getConceptId()));
+            List<Integer> notRelationList = Lists.newArrayList(RelationLibTypeEnum.relationDept.getKey(),
+                    RelationLibTypeEnum.relationPart.getKey(), RelationLibTypeEnum.relationSystem.getKey(),
+                    RelationLibTypeEnum.relationAccSymptom.getKey(), RelationLibTypeEnum.relationNature.getKey());
+            int relationsum = klRelationFacade.count(new QueryWrapper<KlRelation>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .and(r -> r.eq("end_id", klConceptSatarOrdisaVO.getConceptId())
+                            .or(r1 -> r1.eq("start_id", klConceptSatarOrdisaVO.getConceptId()).notIn("relation_id", notRelationList))
+                    )
+            );
             if (relationsum > 0) {
-                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与树形结构或疾病相关存在关系!");
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与树形结构或疾病相关或扩展信息存在关系!");
             }
             //kl_rule
             int rulesum = klRuleFacade.count(new QueryWrapper<KlRule>().eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -481,12 +585,19 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             if (diagnoseBasesum > 0) {
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与诊断依据维护明细存在关系!");
             }
+            //kl_drug_mapping
+            int drugMappingSum = klDrugMappingFacade.count(new QueryWrapper<KlDrugMapping>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("drug_concept", klConceptSatarOrdisaVO.getConceptId()));
+            if (drugMappingSum > 0) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "该医学标准术语与注册药品存在关系!");
+            }
         }
         UpdateWrapper<KlConcept> klLibraryUpdate = new UpdateWrapper<>();
         klLibraryUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("id", klConceptSatarOrdisaVO.getConceptId())
-                .set("status", status).set("gmt_modified", now)
-                .set("modifier", UserUtils.getCurrentPrincipleID());
+                .set("status", status).set("gmt_modified", now);
+        // .set("modifier", UserUtils.getCurrentPrincipleID()
+        // );
         return this.update(klLibraryUpdate);
 
     }
@@ -526,4 +637,32 @@ public class KlConceptFacade extends KlConceptServiceImpl {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "医学标准术语名称已存在同义词");
         }
     }
+
+    /**
+     * 根据conceptId和relationId获取关联数据(通用方法)
+     *
+     * @param conceptRelationVO
+     * @return
+     */
+    public Map<Integer, List<KlConceptSimDTO>> getRelationConceptFac(ConceptRelationVO conceptRelationVO) {
+        Map<Integer, List<KlConceptSimDTO>> map = Maps.newLinkedHashMap();
+        List<KlConceptSimDTO> relationConcept = this.getRelationConcept(conceptRelationVO);
+        if (ListUtil.isNotEmpty(relationConcept)) {
+            map = EntityUtil.makeEntityListMap(relationConcept, "libType");
+        }
+        return map;
+    }
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        String person = UserUtils.getCurrentPrincipleID();
+        param.setNow(DateUtil.now());
+        param.setPerson(person);
+        return param;
+    }
 }

+ 64 - 57
cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java

@@ -1,7 +1,6 @@
 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.UserServiceClient;
 import com.diagbot.dto.DiseaseAllDetailDTO;
@@ -9,37 +8,41 @@ import com.diagbot.dto.DiseaseDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.dto.DiseaseSubDetailDTO;
 import com.diagbot.dto.DiseaseTreeDetailDTO;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDiseaseDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlDisease;
 import com.diagbot.entity.KlLexiconRelationship;
 import com.diagbot.enums.DiseaseRelationTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.LexiconEnum;
 import com.diagbot.enums.RelationLibTypeEnum;
 import com.diagbot.service.impl.KlDiseaseServiceImpl;
-import com.diagbot.util.DateUtil;
+import com.diagbot.util.BeanUtil;
 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.ConceptRelationVO;
 import com.diagbot.vo.DiseaseDeleteVO;
 import com.diagbot.vo.DiseasePageVO;
 import com.diagbot.vo.GetDiseaseDetailVO;
-import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.KlDiseaseVO;
+import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections4.MapUtils;
-import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
-
 import java.util.ArrayList;
 import java.util.Arrays;
-import java.util.Date;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
 
+
 /**
  * @author wangfeng
  * @Description:
@@ -172,58 +175,62 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
         return diseaseTreeDetailDTO;
     }
 
-
-    public boolean saveOrUpdateAll(KlConceptSaveVO klConceptSaveVO) {
-        Date now = DateUtil.now();
-        boolean res = false;
-        if (null != klConceptSaveVO.getConceptId()) {
-            //校验
-            int countLis = this.count(new QueryWrapper<KlDisease>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("concept_id", klConceptSaveVO.getConceptId()));
-            if (countLis > 0) {
-                UpdateWrapper<KlDisease> klDiseaseQuerySub = new UpdateWrapper<>();
-                klDiseaseQuerySub.eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .eq("concept_id", klConceptSaveVO.getConceptId())
-                        .set("gmt_modified", now)
-                        .set("modifier", UserUtils.getCurrentPrincipleID())
-                        .set("dept_id", klConceptSaveVO.getDeptId())
-                        .set(StringUtil.isNotBlank(klConceptSaveVO.getIcdCode()), "icd10_code", klConceptSaveVO.getIcdCode());
-                res = this.update(new KlDisease(), klDiseaseQuerySub);
-            } else {
-                KlDisease kllDiseaseSub = new KlDisease();
-                kllDiseaseSub.setConceptId(klConceptSaveVO.getConceptId());
-                kllDiseaseSub.setGmtModified(now);
-                kllDiseaseSub.setDeptId(klConceptSaveVO.getDeptId());
-                kllDiseaseSub.setModifier(UserUtils.getCurrentPrincipleID());
-                kllDiseaseSub.setIcd10Code(klConceptSaveVO.getIcdCode());
-                res = this.save(kllDiseaseSub);
-            }
-
-        } else {
-            KlDisease kllDiseaseSub = new KlDisease();
-            kllDiseaseSub.setConceptId(klConceptSaveVO.getConceptId());
-            kllDiseaseSub.setGmtModified(now);
-            kllDiseaseSub.setDeptId(klConceptSaveVO.getDeptId());
-            kllDiseaseSub.setModifier(UserUtils.getCurrentPrincipleID());
-            kllDiseaseSub.setIcd10Code(klConceptSaveVO.getIcdCode());
-            res = this.save(kllDiseaseSub);
-        }
-        return res;
+    /**
+     * 保存疾病扩展表
+     *
+     * @param commonParam
+     * @param klDiseaseVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlDiseaseVO klDiseaseVO) {
+        // 先删除疾病扩展表
+        this.remove(new QueryWrapper<KlDisease>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlDisease klDisease = new KlDisease();
+        BeanUtil.copyProperties(klDiseaseVO, klDisease);
+        klDisease.setConceptId(commonParam.getConceptId());
+        klDisease.setGmtModified(commonParam.getNow());
+        klDisease.setGmtCreate(commonParam.getNow());
+        klDisease.setCreator(commonParam.getPerson());
+        klDisease.setModifier(commonParam.getPerson());
+        return this.save(klDisease);
     }
 
-    public boolean saveAll(KlConcept klConceptPare, KlConceptSaveVO klConceptSaveVO) {
-        Date now = DateUtil.now();
-        KlDisease kllDiseaseSub = new KlDisease();
-        kllDiseaseSub.setConceptId(klConceptPare.getId());
-        kllDiseaseSub.setGmtModified(now);
-        kllDiseaseSub.setDeptId(klConceptSaveVO.getDeptId());
-        kllDiseaseSub.setIcd10Code(klConceptSaveVO.getIcdCode());
-        kllDiseaseSub.setCreator(UserUtils.getCurrentPrincipleID());
-        kllDiseaseSub.setModifier(UserUtils.getCurrentPrincipleID());
-        kllDiseaseSub.setGmtCreate(now);
-        kllDiseaseSub.setGmtModified(now);
-        return this.save(kllDiseaseSub);
+    /**
+     * 疾病扩展获取
+     *
+     * @param conceptId
+     * @param klConceptAllDTO
+     */
+    public void getKlDisease(Long conceptId, KlConceptAllDTO klConceptAllDTO) {
+        KlDisease klDisease = this.getOne(new QueryWrapper<KlDisease>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if (klDisease == null) {
+            return;
+        }
+        KlDiseaseDTO klDiseaseDTO = new KlDiseaseDTO();
+        BeanUtil.copyProperties(klDisease, klDiseaseDTO);
+
+        List<Integer> relationIdList = Lists.newArrayList(
+                RelationLibTypeEnum.relationDept.getKey(),
+                RelationLibTypeEnum.relationPart.getKey(),
+                RelationLibTypeEnum.relationSystem.getKey()
+        );
+        ConceptRelationVO conceptRelationVO = new ConceptRelationVO();
+        conceptRelationVO.setConceptId(conceptId);
+        conceptRelationVO.setRelationList(relationIdList);
+        Map<Integer, List<KlConceptSimDTO>> map = klConceptFacade.getRelationConceptFac(conceptRelationVO);
+        if (map.get(LexiconEnum.Part.getKey()) != null) { // 关联部位
+            klDiseaseDTO.setPartList(map.get(LexiconEnum.Part.getKey()));
+        }
+        if (map.get(LexiconEnum.Dept.getKey()) != null) { // 关联部位
+            klDiseaseDTO.setDeptList(map.get(LexiconEnum.Dept.getKey()));
+        }
+        if (map.get(LexiconEnum.DisSysType.getKey()) != null) { // 关联诊断系统分类
+            klDiseaseDTO.setSystemTypeList(map.get(LexiconEnum.DisSysType.getKey()));
+        }
+        klConceptAllDTO.setKlDiseaseDTO(klDiseaseDTO);
     }
 }
 

+ 47 - 49
cdssman-service/src/main/java/com/diagbot/facade/KlDrugFacade.java

@@ -1,18 +1,16 @@
 package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
-import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
-import com.diagbot.entity.KlConcept;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlDrugDTO;
+import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.KlDrug;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.KlDrugServiceImpl;
-import com.diagbot.util.DateUtil;
-import com.diagbot.util.UserUtils;
-import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.KlDrugVO;
+import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.Date;
-
 /**
  * @author wangfeng
  * @Description:
@@ -21,55 +19,55 @@ import java.util.Date;
 @Component
 public class KlDrugFacade extends KlDrugServiceImpl {
 
+    @Autowired
+    KlDrugRegisterFacade klDrugRegisterFacade;
 
-    public boolean saveOrUpdateAll(KlConceptSaveVO klConceptSaveVO) {
+    /**
+     * 疾病扩展获取
+     *
+     * @param conceptId
+     * @param klConceptAllDTO
+     */
+    public void getKlDrug(Long conceptId, KlConceptAllDTO klConceptAllDTO) {
+        KlDrugDTO klDrugDTO = new KlDrugDTO();
 
-        Date now = DateUtil.now();
-        boolean res = false;
-        if (null != klConceptSaveVO.getConceptId()) {
-            //校验
-            int countLis = this.count(new QueryWrapper<KlDrug>()
-                    .eq("is_deleted", IsDeleteEnum.N.getKey())
-                    .eq("concept_id", klConceptSaveVO.getConceptId()));
-            if (countLis > 0) {
-                UpdateWrapper<KlDrug> klDrugUpdate = new UpdateWrapper<>();
-                klDrugUpdate.eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .eq("concept_id", klConceptSaveVO.getConceptId())
-                        .set("gmt_modified", now)
-                        .set("modifier", UserUtils.getCurrentPrincipleID())
-                        .set("drug", klConceptSaveVO.getDrug());
-                res = this.update(klDrugUpdate);
-            } else {
-                KlDrug klDrug = new KlDrug();
-                klDrug.setConceptId(klConceptSaveVO.getConceptId());
-                klDrug.setDrug(klConceptSaveVO.getDrug());
-                klDrug.setGmtModified(now);
-                klDrug.setModifier(UserUtils.getCurrentPrincipleID());
-                res = this.save(klDrug);
-            }
-        } else {
-            KlDrug klDrug = new KlDrug();
-            klDrug.setConceptId(klConceptSaveVO.getConceptId());
-            klDrug.setDrug(klConceptSaveVO.getDrug());
-            klDrug.setGmtModified(now);
-            klDrug.setModifier(UserUtils.getCurrentPrincipleID());
-            res = this.save(klDrug);
+        // 获取药品类别(0:西药,1:中成药)
+        KlDrug klDrug = this.getOne(new QueryWrapper<KlDrug>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if (klDrug != null) {
+            klDrugDTO.setDrug(klDrug.getDrug());
         }
 
-        return res;
+        // 获取关联注册药品信息(这里先不展示关联的注册药品)
+        // KlDrugMappingGetVO klDrugMappingGetVO = new KlDrugMappingGetVO();
+        // klDrugMappingGetVO.setDrugConcept(conceptId);
+        // List<KlDrugMappingDTO> klDrugMappingDTOList = klDrugRegisterFacade.getMappingRegister(klDrugMappingGetVO);
+        // klDrugDTO.setKlDrugMappingDTOList(klDrugMappingDTOList);
 
+        klConceptAllDTO.setKlDrugDTO(klDrugDTO);
     }
 
-    public boolean saveAll(KlConcept klConceptPare, KlConceptSaveVO klConceptSaveVO) {
-        Date now = DateUtil.now();
-        KlDrug klDrug = new KlDrug();
-        klDrug.setConceptId(klConceptPare.getId());
-        klDrug.setDrug(klConceptSaveVO.getDrug());
-        klDrug.setCreator(UserUtils.getCurrentPrincipleID());
-        klDrug.setModifier(UserUtils.getCurrentPrincipleID());
-        klDrug.setGmtCreate(now);
-        klDrug.setGmtModified(now);
-        return this.save(klDrug);
+    /**
+     *
+     * @param commonParam
+     * @param klDrugVO
+     */
+    public void saveKlDrug(CommonParam commonParam, KlDrugVO klDrugVO) {
+        // 先删除
+        this.remove(new QueryWrapper<KlDrug>().eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", commonParam.getConceptId()));
+
+        if (klDrugVO != null) {
+            KlDrug klDrug = new KlDrug();
+            klDrug.setConceptId(commonParam.getConceptId());
+            klDrug.setDrug(klDrugVO.getDrug());
+            klDrug.setCreator(commonParam.getPerson());
+            klDrug.setModifier(commonParam.getPerson());
+            klDrug.setGmtCreate(commonParam.getNow());
+            klDrug.setGmtModified(commonParam.getNow());
+            this.save(klDrug);
+        }
     }
 
 }

+ 51 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlDrugMappingFacade.java

@@ -0,0 +1,51 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.KlDrugMappingService;
+import com.diagbot.service.impl.KlDrugMappingServiceImpl;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.beans.factory.annotation.Qualifier;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2021-04-13 10:41
+ */
+@Component
+public class KlDrugMappingFacade extends KlDrugMappingServiceImpl {
+
+    @Autowired
+    @Qualifier("klDrugMappingServiceImpl")
+    KlDrugMappingService klDrugMappingService;
+
+    // /**
+    //  * 保存药品通用名称和注册名称扩展表
+    //  *
+    //  * @param commonParam
+    //  * @param klDrugVO
+    //  * @return
+    //  */
+    // public void saveAll(CommonParam commonParam, KlDrugVO klDrugVO) {
+    //     // 先删除药品通用名和注册名关联扩展表
+    //     this.remove(new QueryWrapper<KlDrugMapping>().eq("drug_concept", commonParam.getConceptId()));
+    //
+    //     // 新增关联
+    //     List<KlDrugMapping> klDrugMappingList = Lists.newLinkedList();
+    //     if (klDrugVO != null) {
+    //         int i = 1;
+    //         for (Long registerId : klDrugVO.getRegisterIdList()) {
+    //             KlDrugMapping klDrugMapping = new KlDrugMapping();
+    //             klDrugMapping.setDrugConcept(commonParam.getConceptId());
+    //             klDrugMapping.setRegisterId(registerId);
+    //             klDrugMapping.setOrderNo(i++);
+    //             klDrugMapping.setGmtModified(commonParam.getNow());
+    //             klDrugMapping.setGmtCreate(commonParam.getNow());
+    //             klDrugMapping.setCreator(commonParam.getPerson());
+    //             klDrugMapping.setModifier(commonParam.getPerson());
+    //             klDrugMappingList.add(klDrugMapping);
+    //         }
+    //         klDrugMappingService.saveBatch(klDrugMappingList);
+    //     }
+    // }
+
+}

+ 284 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlDrugRegisterFacade.java

@@ -0,0 +1,284 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDrugExportDTO;
+import com.diagbot.dto.KlDrugRegisterDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlDrugMapping;
+import com.diagbot.entity.KlDrugRegister;
+import com.diagbot.enums.InsertOrUpdateEnum;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.KlDrugMappingService;
+import com.diagbot.service.KlDrugRegisterService;
+import com.diagbot.service.impl.KlDrugRegisterServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.ExcelUtils;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.KlDrugMappingGetVO;
+import com.diagbot.vo.KlDrugRegisterDelVO;
+import com.diagbot.vo.KlDrugRegisterGetVO;
+import com.diagbot.vo.KlDrugRegisterPageVO;
+import com.diagbot.vo.KlDrugRegisterSaveVO;
+import com.diagbot.vo.KlDrugRegisterTestVO;
+import com.diagbot.vo.KlDrugSearchVO;
+import com.google.common.collect.Lists;
+import org.apache.commons.collections4.map.LinkedMap;
+import org.apache.commons.lang3.StringUtils;
+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.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2021-04-13 10:41
+ */
+@Component
+public class KlDrugRegisterFacade extends KlDrugRegisterServiceImpl {
+
+    @Autowired
+    @Qualifier("klDrugMappingServiceImpl")
+    KlDrugMappingService klDrugMappingService;
+    @Autowired
+    KlConceptFacade klConceptFacade;
+    @Autowired
+    @Qualifier("klDrugRegisterServiceImpl")
+    KlDrugRegisterService klDrugRegisterService;
+    @Autowired
+    UserFacade userFacade;
+    @Autowired
+    UserClientFacade userClientFacade;
+
+    /**
+     * 保存或更新
+     *
+     * @param klDrugRegisterSaveVO
+     */
+    public void saveOrUpdate(KlDrugRegisterSaveVO klDrugRegisterSaveVO) {
+        CommonParam param = initCommonParam();
+        KlDrugRegister klDrugRegister = new KlDrugRegister();
+        if (klDrugRegisterSaveVO.getId() != null) {
+            klDrugRegister = this.getOne(new QueryWrapper<KlDrugRegister>()
+                    .eq("id", klDrugRegisterSaveVO.getId())
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()), false);
+            if (klDrugRegister == null) { //校验
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "数据不存在");
+            }
+            param.setInsertOrUpdate(InsertOrUpdateEnum.Update.getKey());
+        }
+        BeanUtil.copyProperties(klDrugRegisterSaveVO, klDrugRegister);
+        // 重复校验
+        // int count = this.count(new QueryWrapper<KlDrugRegister>()
+        //         .eq("is_deleted", IsDeleteEnum.N.getKey())
+        //         .eq("drug_code", klDrugRegisterSaveVO.getDrugCode())
+        //         .ne("id", klDrugRegisterSaveVO.getId() == null ? -1 : klDrugRegisterSaveVO.getId()));
+        // if (count > 0) {
+        //     throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "药品代码已存在");
+        // }
+        if (InsertOrUpdateEnum.Insert.getKey() == param.getInsertOrUpdate()) {
+            klDrugRegister.setCreator(param.getPerson()); //创建人
+            klDrugRegister.setGmtCreate(param.getNow());//创建时间
+        }
+        klDrugRegister.setGmtModified(param.getNow());//修改时间
+        klDrugRegister.setModifier(param.getPerson());//修改人
+        this.saveOrUpdate(klDrugRegister);
+
+        // 保存药品通用名和注册名映射关系
+        klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>()
+                .eq("register_id", klDrugRegister.getId()));
+
+        // 保存药品通用名和注册药品的关联
+        if (klDrugRegister.getId() != null) {
+            KlDrugMapping klDrugMapping = new KlDrugMapping();
+            klDrugMapping.setRegisterId(klDrugRegister.getId());
+            klDrugMapping.setDrugConcept(klDrugRegisterSaveVO.getDrugConceptId());
+            klDrugMapping.setCreator(param.getPerson());
+            klDrugMapping.setModifier(param.getPerson());
+            klDrugMapping.setGmtModified(param.getNow());
+            klDrugMapping.setGmtCreate(param.getNow());
+            klDrugMappingService.save(klDrugMapping);
+        }
+    }
+
+    /**
+     * 初始化参数
+     *
+     * @return
+     */
+    public CommonParam initCommonParam() {
+        CommonParam param = new CommonParam();
+        String person = UserUtils.getCurrentPrincipleID();
+        param.setNow(DateUtil.now());
+        param.setPerson(person);
+        param.setInsertOrUpdate(InsertOrUpdateEnum.Insert.getKey());
+        return param;
+    }
+
+    /**
+     * 分页
+     *
+     * @param klDrugRegisterPageVO
+     * @return
+     */
+    public IPage<KlDrugRegisterDTO> getPageFac(KlDrugRegisterPageVO klDrugRegisterPageVO) {
+        IPage<KlDrugRegisterDTO> res = this.getPage(klDrugRegisterPageVO);
+
+        // 设置操作人姓名
+        userClientFacade.setUserName(res.getRecords());
+        return res;
+    }
+
+    /**
+     * 根据id删除标签
+     *
+     * @param klDrugRegisterDelVO
+     * @return
+     */
+    public void deleteByIdFac(KlDrugRegisterDelVO klDrugRegisterDelVO) {
+        List<KlDrugMapping> klDrugMappingList = klDrugMappingService.list(new QueryWrapper<KlDrugMapping>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("register_id", klDrugRegisterDelVO.getId()));
+        if (ListUtil.isNotEmpty(klDrugMappingList)) {
+            // 校验是否有关联
+            // List<Long> idList = klDrugMappingList.stream().map(r -> r.getDrugConcept()).collect(Collectors.toList());
+            // List<KlConcept> klConceptList = klConceptFacade.list(new QueryWrapper<KlConcept>()
+            //         .eq("is_deleted", IsDeleteEnum.N.getKey()).in("id", idList));
+            // if (ListUtil.isNotEmpty(klConceptList)) {
+            //     String errMsg = klConceptList.stream().map(r -> r.getLibName()).distinct().collect(Collectors.joining(","));
+            //     if (StringUtil.isNotBlank(errMsg)) {
+            //         throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "已关联药品通用名:" + errMsg);
+            //     }
+            // }
+            klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>().in("register_id", klDrugRegisterDelVO.getId()));
+        }
+        this.remove(new QueryWrapper<KlDrugRegister>().eq("id", klDrugRegisterDelVO.getId()));
+    }
+
+    /**
+     * 根据参数返回数据
+     *
+     * @param klDrugRegisterGetVO 获取标签内容参数
+     * @return 标签内容
+     */
+    public KlDrugRegisterDTO getByParam(KlDrugRegisterGetVO klDrugRegisterGetVO) {
+        KlDrugRegisterDTO klDrugRegisterDTO = new KlDrugRegisterDTO();
+        KlDrugRegister klDrugRegister = this.getOne(new QueryWrapper<KlDrugRegister>()
+                .eq("id", klDrugRegisterGetVO.getId())
+                .eq("is_deleted", IsDeleteEnum.N.getKey()), false);
+        if (klDrugRegister != null) {
+            BeanUtil.copyProperties(klDrugRegister, klDrugRegisterDTO);
+        }
+
+        // 获取注册对应的药品通用名
+        KlDrugMappingGetVO klDrugMappingGetVO = new KlDrugMappingGetVO();
+        klDrugMappingGetVO.setRegisterId(klDrugRegister.getId());
+        List<KlConceptSimDTO> klConceptSimDTOList = this.getMappingDrug(klDrugMappingGetVO);
+        if (ListUtil.isNotEmpty(klConceptSimDTOList)) {
+            KlConceptSimDTO conceptSimDTO = klConceptSimDTOList.get(0);
+            klDrugRegisterDTO.setDrugName(conceptSimDTO.getLibName());
+            klDrugRegisterDTO.setDrugConceptId(conceptSimDTO.getId());
+        }
+        return klDrugRegisterDTO;
+    }
+
+    /**
+     * 药品注册名检索药品通用名
+     *
+     * @param klDrugSearchVO
+     * @return
+     */
+    public List<KlConceptSimDTO> searchDrugFac(KlDrugSearchVO klDrugSearchVO) {
+        return this.searchDrug(klDrugSearchVO);
+    }
+
+    /**
+     * 注册药品导入
+     *
+     * @param file
+     * @return
+     */
+    public void importRegister(MultipartFile file, HttpServletResponse response) {
+        Map res = new LinkedMap();
+        Long t1 = System.currentTimeMillis();
+        List<KlDrugRegisterTestVO> list = XLSXCovertCSVReader.readData(file, "注册药品",
+                30, KlDrugRegisterTestVO.class);
+        Long t2 = System.currentTimeMillis();
+        res.put("读取sheet耗时:", (t2 - t1) / 1000.0 + "秒");
+        try {
+            List<KlConcept> klConceptList = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey()).eq("lib_type", 101));
+            Map<String, Long> druMap = klConceptList.stream().collect(Collectors.toMap(k -> k.getLibName(), v -> v.getId(), (r1, r2) -> (r2)));
+            List<String> errMsg = Lists.newArrayList();
+            List<KlDrugRegister> drugRegisterList = Lists.newLinkedList();
+            // int i = 2;
+            for (KlDrugRegisterTestVO  klDrugRegisterTestVO : list) {
+                KlDrugRegister klDrugRegister = new KlDrugRegister();
+                BeanUtil.copyProperties(klDrugRegisterTestVO, klDrugRegister);
+                String drugName = klDrugRegisterTestVO.getDrugName();
+                klDrugRegister.setRemark(drugName);
+                drugRegisterList.add(klDrugRegister);
+                if (druMap.get(drugName) == null) {
+                    errMsg.add(drugName);
+                }
+                // if (StringUtil.isBlank(drugName)) {
+                //     errMsg.add(String.format("第%s行药品通用名为空", i));
+                // } else if (druMap.get(drugName) == null) {
+                //     errMsg.add(String.format("第%s行【%s】不是标准词", i, drugName));
+                // }
+                // i++;
+            }
+            if (ListUtil.isNotEmpty(errMsg)) {
+                errMsg = errMsg.stream().distinct().collect(Collectors.toList());
+                List<KlDrugExportDTO> klDrugExportDTOList = Lists.newLinkedList();
+                for (String s : errMsg) {
+                    KlDrugExportDTO klDrugExportDTO = new KlDrugExportDTO();
+                    klDrugExportDTO.setName(s);
+                    klDrugExportDTOList.add(klDrugExportDTO);
+                }
+                ExcelUtils.exportExcel(klDrugExportDTOList, null, "药品通用名", KlDrugExportDTO.class,
+                        "未校验通过的药品通用名", response, 12.8f);
+                res.put("错误", StringUtils.join(errMsg, ";"));
+                return;
+            }
+            this.remove(new QueryWrapper<KlDrugRegister>()); // 删除主表
+            Long t3 = System.currentTimeMillis();
+            klDrugRegisterService.saveBatch(drugRegisterList);
+            Long t4 = System.currentTimeMillis();
+            res.put("保存DrugRegister表耗时:", (t4 - t3) / 1000.0 + "秒");
+
+            List<KlDrugMapping> klDrugMappingList = ListUtil.newArrayList();
+            for (KlDrugRegister klDrugRegister : drugRegisterList) {
+                KlDrugMapping klDrugMapping = new KlDrugMapping();
+                klDrugMapping.setRegisterId(klDrugRegister.getId());
+                klDrugMapping.setDrugConcept(druMap.get(klDrugRegister.getRemark()));
+                klDrugMappingList.add(klDrugMapping);
+            }
+            klDrugMappingService.remove(new QueryWrapper<KlDrugMapping>());
+            Long t5 = System.currentTimeMillis();
+            klDrugMappingService.saveBatch(klDrugMappingList);
+            Long t6 = System.currentTimeMillis();
+            res.put("保存mapping表耗时:", (t6 - t5) / 1000.0 + "秒");
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        Long end = System.currentTimeMillis();
+        res.put("总耗时:", (end - t1) / 1000.0 + "秒");
+    }
+
+    public static void main(String[] args) {
+
+    }
+}

+ 44 - 1
cdssman-service/src/main/java/com/diagbot/facade/KlLisFacade.java

@@ -2,13 +2,20 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlLisDTO;
+import com.diagbot.entity.CommonParam;
 import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlDisease;
 import com.diagbot.entity.KlLis;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.service.impl.KlLisServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.KlDiseaseVO;
+import com.diagbot.vo.KlLisVO;
 import org.springframework.stereotype.Component;
 
 import java.util.Date;
@@ -21,7 +28,7 @@ import java.util.Date;
 @Component
 public class KlLisFacade extends KlLisServiceImpl {
 
-    public boolean saveOrUpdateAll(KlConceptSaveVO klConceptSaveVO) {
+    /*public boolean saveOrUpdateAll(KlConceptSaveVO klConceptSaveVO) {
         Date now = DateUtil.now();
         boolean res = false;
         if (null != klConceptSaveVO.getConceptId()) {
@@ -79,5 +86,41 @@ public class KlLisFacade extends KlLisServiceImpl {
         klLisSub.setGmtCreate(now);
         klLisSub.setGmtModified(now);
         return this.save(klLisSub);
+    }*/
+
+    /**
+     * 保存化验扩展表
+     *
+     * @param commonParam
+     * @param klLisVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlLisVO klLisVO) {
+        if(klLisVO == null){
+            return false;
+        }
+        // 先删除疾病扩展表
+        this.remove(new QueryWrapper<KlLis>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlLis klLis = new KlLis();
+        BeanUtil.copyProperties(klLisVO, klLis);
+        klLis.setConceptId(commonParam.getConceptId());
+        klLis.setGmtModified(commonParam.getNow());
+        klLis.setGmtCreate(commonParam.getNow());
+        klLis.setCreator(commonParam.getPerson());
+        klLis.setModifier(commonParam.getPerson());
+        return this.save(klLis);
+    }
+
+    public void getKlLis(Long conceptId, KlConceptAllDTO klConceptAll) {
+        KlLis klLis = this.getOne(new QueryWrapper<KlLis>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if (klLis == null) {
+            return;
+        }
+        KlLisDTO klLisDTO = new KlLisDTO();
+        BeanUtil.copyProperties(klLis,klLisDTO);
+        klConceptAll.setKlLisDTO(klLisDTO);
     }
 }

+ 62 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlOperationFacade.java

@@ -0,0 +1,62 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlOperationDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlOperation;
+import com.diagbot.entity.KlPacs;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.KlOperationServiceImpl;
+import com.diagbot.service.impl.KlPacsServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.KlOperationVO;
+import com.diagbot.vo.KlPacsVO;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author kwz
+ * @Description:
+ * @date 2021-03-18 16:38
+ */
+@Component
+public class KlOperationFacade extends KlOperationServiceImpl {
+
+
+
+    /**
+     * 保存手术扩展表
+     *
+     * @param commonParam
+     * @param klOperationVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlOperationVO klOperationVO) {
+        if(klOperationVO == null){
+            return false;
+        }
+        // 先删除手术扩展表
+        this.remove(new QueryWrapper<KlOperation>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlOperation klOperation = new KlOperation();
+        BeanUtil.copyProperties(klOperationVO, klOperation);
+        klOperation.setConceptId(commonParam.getConceptId());
+        klOperation.setGmtModified(commonParam.getNow());
+        klOperation.setGmtCreate(commonParam.getNow());
+        klOperation.setCreator(commonParam.getPerson());
+        klOperation.setModifier(commonParam.getPerson());
+        return this.save(klOperation);
+    }
+
+    public void getKlOperation(Long conceptId, KlConceptAllDTO klConceptAll) {
+        KlOperation klOperation = this.getOne(new QueryWrapper<KlOperation>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if(klOperation == null){
+            return;
+        }
+        KlOperationDTO klOperationDTO = new KlOperationDTO();
+        BeanUtil.copyProperties(klOperation,klOperationDTO);
+        klConceptAll.setKlOperationDTO(klOperationDTO);
+    }
+}

+ 70 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlPacsFacade.java

@@ -0,0 +1,70 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.UpdateWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlPacsDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlConcept;
+import com.diagbot.entity.KlLis;
+import com.diagbot.entity.KlPacs;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.KlLisServiceImpl;
+import com.diagbot.service.impl.KlPacsServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.UserUtils;
+import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.KlLisVO;
+import com.diagbot.vo.KlPacsVO;
+import org.springframework.stereotype.Component;
+
+import java.util.Date;
+
+/**
+ * @author kwz
+ * @Description:
+ * @date 2021-03-18 16:38
+ */
+@Component
+public class KlPacsFacade extends KlPacsServiceImpl {
+
+
+
+    /**
+     * 保存辅检扩展表
+     *
+     * @param commonParam
+     * @param klPacsVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlPacsVO klPacsVO) {
+        if(klPacsVO == null){
+            return false;
+        }
+        // 先删除辅检扩展表
+        this.remove(new QueryWrapper<KlPacs>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlPacs klPacs = new KlPacs();
+        BeanUtil.copyProperties(klPacsVO, klPacs);
+        klPacs.setConceptId(commonParam.getConceptId());
+        klPacs.setGmtModified(commonParam.getNow());
+        klPacs.setGmtCreate(commonParam.getNow());
+        klPacs.setCreator(commonParam.getPerson());
+        klPacs.setModifier(commonParam.getPerson());
+        return this.save(klPacs);
+    }
+
+    public void getKlPacs(Long conceptId, KlConceptAllDTO klConceptAll) {
+        KlPacs klPacs = this.getOne(new QueryWrapper<KlPacs>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if(klPacs == null){
+            return;
+        }
+        KlPacsDTO klPacsDTO = new KlPacsDTO();
+        BeanUtil.copyProperties(klPacs,klPacsDTO);
+        klConceptAll.setKlPacsDTO(klPacsDTO);
+
+    }
+}

+ 185 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlRelationFacade.java

@@ -1,18 +1,35 @@
 package com.diagbot.facade;
 
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.dto.RelationDTO;
 import com.diagbot.dto.TreeAllDTO;
 import com.diagbot.dto.TreeDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlRelation;
+import com.diagbot.entity.KlRelationOrder;
+import com.diagbot.entity.KlVitalResult;
+import com.diagbot.enums.RelationLibTypeEnum;
+import com.diagbot.service.KlRelationOrderService;
+import com.diagbot.service.KlRelationService;
+import com.diagbot.service.KlVitalResultService;
 import com.diagbot.service.impl.KlRelationServiceImpl;
+import com.diagbot.util.BeanUtil;
 import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.vo.KlDiseaseVO;
+import com.diagbot.vo.KlSymptomVO;
+import com.diagbot.vo.KlVitalResultVO;
 import com.diagbot.vo.RelationVO;
 import com.diagbot.vo.TreeVO;
+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.ArrayList;
 import java.util.List;
 import java.util.Map;
+import java.util.stream.Collectors;
 
 /**
  * @Description:
@@ -21,6 +38,22 @@ import java.util.Map;
  */
 @Component
 public class KlRelationFacade extends KlRelationServiceImpl {
+
+    @Autowired
+    @Qualifier("klRelationOrderServiceImpl")
+    KlRelationOrderService klRelationOrderService;
+
+    @Autowired
+    @Qualifier("klRelationServiceImpl")
+    KlRelationService klRelationService;
+
+    @Autowired
+    KlConceptFacade klConceptFacade;
+
+    @Qualifier("klVitalResultServiceImpl")
+    @Autowired
+    KlVitalResultService klVitalResultService;
+;
     public TreeAllDTO getTree(TreeVO treeVO) {
         List<Long[]> pList = new ArrayList<>();
         pList.add(new Long[] { 402L, 600L, 301L, 600L, 101L });//药品化学物质类别
@@ -78,4 +111,156 @@ public class KlRelationFacade extends KlRelationServiceImpl {
         }
         return treeAllDTO;
     }
+
+    /**
+     * 疾病扩展
+     *
+     * @param commonParam
+     * @param klDiseaseVO
+     */
+    public void saveKlDisease(CommonParam commonParam, KlDiseaseVO klDiseaseVO) {
+        // 疾病关联科室,部位,关联系统统一处理。先查找全部数据,删除关联排序表,再删除关联表
+        List<Integer> relationIdList = Lists.newArrayList(
+                RelationLibTypeEnum.relationDept.getKey(),
+                RelationLibTypeEnum.relationPart.getKey(),
+                RelationLibTypeEnum.relationSystem.getKey()
+        );
+        klRelationRemove(commonParam, relationIdList);
+
+        if (klDiseaseVO != null) {
+            // 【科室关联】
+            klRelationSave(commonParam, klDiseaseVO.getDeptList(), RelationLibTypeEnum.relationDept.getKey());
+            // 【部位关联】
+            klRelationSave(commonParam, klDiseaseVO.getPartList(), RelationLibTypeEnum.relationPart.getKey());
+            // 【疾病系统分类关联】
+            klRelationSave(commonParam, klDiseaseVO.getSystemTypeList(), RelationLibTypeEnum.relationSystem.getKey());
+        }
+    }
+
+    /**
+     * 症状扩展
+     *
+     * @param commonParam
+     * @param klSymptomVO
+     */
+    public void saveKlSymptom(CommonParam commonParam, KlSymptomVO klSymptomVO) {
+        // 症状关联科室,部位,伴随症状,性质统一处理。先查找全部数据,删除关联排序表,再删除关联表
+        List<Integer> relationIdList = Lists.newArrayList(
+                RelationLibTypeEnum.relationDept.getKey(),
+                RelationLibTypeEnum.relationPart.getKey(),
+                RelationLibTypeEnum.relationAccSymptom.getKey(),
+                RelationLibTypeEnum.relationNature.getKey()
+        );
+        klRelationRemove(commonParam, relationIdList);
+
+        if (klSymptomVO != null) {
+            // 【科室关联】
+            klRelationSave(commonParam, klSymptomVO.getDeptList(), RelationLibTypeEnum.relationDept.getKey());
+            // 【部位关联】
+            klRelationSave(commonParam, klSymptomVO.getPartList(), RelationLibTypeEnum.relationPart.getKey());
+            // 【常见伴随症状关联】
+            klRelationSave(commonParam, klSymptomVO.getConSymptomList(), RelationLibTypeEnum.relationAccSymptom.getKey());
+            // 【性质关联】
+            klRelationSave(commonParam, klSymptomVO.getNatureList(), RelationLibTypeEnum.relationNature.getKey());
+        }
+    }
+
+    /**
+     * 体征结果扩展
+     * @param commonParam
+     * @param klVitalResultVO
+     */
+    public void saveKlVitalRes(CommonParam commonParam, KlVitalResultVO klVitalResultVO) {
+        if(klVitalResultVO == null){
+            return;
+        }
+        // 先删除体征结果扩展表
+        klVitalResultService.remove(new QueryWrapper<KlVitalResult>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlVitalResult klVitalResult = new KlVitalResult();
+        BeanUtil.copyProperties(klVitalResultVO, klVitalResult);
+        klVitalResult.setConceptId(commonParam.getConceptId());
+        klVitalResult.setGmtModified(commonParam.getNow());
+        klVitalResult.setGmtCreate(commonParam.getNow());
+        klVitalResult.setCreator(commonParam.getPerson());
+        klVitalResult.setModifier(commonParam.getPerson());
+        klVitalResultService.save(klVitalResult);
+
+        // 体征结果关联科室,部位统一处理。先查找全部数据,删除关联排序表,再删除关联表
+        List<Integer> relationIdList = Lists.newArrayList(
+                RelationLibTypeEnum.relationDept.getKey(),
+                RelationLibTypeEnum.relationPart.getKey()
+        );
+        klRelationRemove(commonParam, relationIdList);
+
+        if (klVitalResultVO != null) {
+            // 【科室关联】
+            klRelationSave(commonParam, klVitalResultVO.getDeptList(), RelationLibTypeEnum.relationDept.getKey());
+            // 【部位关联】
+            klRelationSave(commonParam, klVitalResultVO.getPartList(), RelationLibTypeEnum.relationPart.getKey());
+        }
+    }
+
+    /**
+     * 删除关联表和关联排序表
+     *
+     * @param commonParam 通用参数
+     * @param relationList 关联类型列表
+     */
+    public void klRelationRemove(CommonParam commonParam, List<Integer> relationList) {
+        List<KlRelation> klRelationList = this.list(new QueryWrapper<KlRelation>()
+                .eq("start_id", commonParam.getConceptId())
+                .in("relation_id", relationList)
+        );
+        if (ListUtil.isNotEmpty(klRelationList)) {
+            List<Long> idList = klRelationList.stream().map(r -> r.getId()).collect(Collectors.toList());
+            // 删除关联排序表
+            klRelationOrderService.remove(new QueryWrapper<KlRelationOrder>().in("t_relation_id", idList));
+            // 删除关联表
+            this.remove(new QueryWrapper<KlRelation>().in("id", idList));
+        }
+    }
+
+    /**
+     * 保存关联表和关联排序表
+     *
+     * @param commonParam
+     * @param idList
+     * @param relationId
+     */
+    public void klRelationSave(CommonParam commonParam, List<Long> idList, Integer relationId) {
+        if (ListUtil.isEmpty(idList)) {
+            return;
+        }
+        List<KlRelation> relationSaveList = Lists.newArrayList();
+        for (Long endId : idList) {
+            KlRelation klRelation = new KlRelation();
+            klRelation.setStartId(commonParam.getConceptId());
+            klRelation.setRelationId(relationId);
+            klRelation.setEndId(endId);
+            klRelation.setGmtModified(commonParam.getNow());
+            klRelation.setGmtCreate(commonParam.getNow());
+            klRelation.setCreator(commonParam.getPerson());
+            klRelation.setModifier(commonParam.getPerson());
+            relationSaveList.add(klRelation);
+        }
+        klRelationService.saveBatch(relationSaveList);
+
+        // 【科室关联排序】
+        List<KlRelationOrder> OrderSaveList = Lists.newArrayList();
+        int i = 1;
+        for (KlRelation klRelation : relationSaveList) {
+            KlRelationOrder klRelationOrder = new KlRelationOrder();
+            klRelationOrder.settRelationId(klRelation.getId());
+            klRelationOrder.setOrderNo(i++);
+            klRelation.setGmtModified(commonParam.getNow());
+            klRelation.setGmtCreate(commonParam.getNow());
+            klRelation.setCreator(commonParam.getPerson());
+            klRelation.setModifier(commonParam.getPerson());
+            OrderSaveList.add(klRelationOrder);
+        }
+        klRelationOrderService.saveBatch(OrderSaveList);
+    }
+
+
 }

+ 95 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java

@@ -0,0 +1,95 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlSymptomDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlSymptom;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.LexiconEnum;
+import com.diagbot.enums.RelationLibTypeEnum;
+import com.diagbot.service.impl.KlSymptomServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.ConceptRelationVO;
+import com.diagbot.vo.KlSymptomVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2021-04-13 10:41
+ */
+@Component
+public class KlSymptomFacade extends KlSymptomServiceImpl {
+
+    @Autowired
+    KlConceptFacade klConceptFacade;
+
+    /**
+     * 保存症状扩展表
+     *
+     * @param commonParam
+     * @param klSymptomVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlSymptomVO klSymptomVO) {
+        // 先删除疾病扩展表
+        this.remove(new QueryWrapper<KlSymptom>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlSymptom klSymptom = new KlSymptom();
+        BeanUtil.copyProperties(klSymptomVO, klSymptom);
+        klSymptom.setConceptId(commonParam.getConceptId());
+        klSymptom.setGmtModified(commonParam.getNow());
+        klSymptom.setGmtCreate(commonParam.getNow());
+        klSymptom.setCreator(commonParam.getPerson());
+        klSymptom.setModifier(commonParam.getPerson());
+        return this.save(klSymptom);
+    }
+
+    /**
+     * 疾病扩展获取
+     *
+     * @param conceptId
+     * @param klConceptAllDTO
+     */
+    public void getKlSymptom(Long conceptId, KlConceptAllDTO klConceptAllDTO) {
+        KlSymptom klSymptom = this.getOne(new QueryWrapper<KlSymptom>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if (klSymptom == null) {
+            return;
+        }
+        KlSymptomDTO klSymptomDTO = new KlSymptomDTO();
+        BeanUtil.copyProperties(klSymptom, klSymptomDTO);
+
+        List<Integer> relationIdList = Lists.newArrayList(
+                RelationLibTypeEnum.relationDept.getKey(),
+                RelationLibTypeEnum.relationPart.getKey(),
+                RelationLibTypeEnum.relationAccSymptom.getKey(),
+                RelationLibTypeEnum.relationNature.getKey()
+        );
+        ConceptRelationVO conceptRelationVO = new ConceptRelationVO();
+        conceptRelationVO.setConceptId(conceptId);
+        conceptRelationVO.setRelationList(relationIdList);
+        Map<Integer, List<KlConceptSimDTO>> map = klConceptFacade.getRelationConceptFac(conceptRelationVO);
+        if (map.get(LexiconEnum.Part.getKey()) != null) { // 关联部位
+            klSymptomDTO.setPartList(map.get(LexiconEnum.Part.getKey()));
+        }
+        if (map.get(LexiconEnum.Dept.getKey()) != null) { // 关联科室
+            klSymptomDTO.setDeptList(map.get(LexiconEnum.Dept.getKey()));
+        }
+        if (map.get(LexiconEnum.Symptom.getKey()) != null) { // 关联伴随症状
+            klSymptomDTO.setConSymptomList(map.get(LexiconEnum.Symptom.getKey()));
+        }
+        if (map.get(LexiconEnum.Nature.getKey()) != null) { // 关联性质
+            klSymptomDTO.setNatureList(map.get(LexiconEnum.Nature.getKey()));
+        }
+        klConceptAllDTO.setKlSymptomDTO(klSymptomDTO);
+    }
+}

+ 57 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlTcmDiseaseFacade.java

@@ -0,0 +1,57 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlTcmDiseaseDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlTcmDisease;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.KlTcmDiseaseServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.KlTcmDiseaseVO;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2021-03-18 16:38
+ */
+@Component
+public class KlTcmDiseaseFacade extends KlTcmDiseaseServiceImpl {
+
+    /**
+     * 保存中医疾病扩展表
+     *
+     * @param commonParam
+     * @param klTcmDiseaseVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlTcmDiseaseVO klTcmDiseaseVO) {
+        if (klTcmDiseaseVO == null) {
+            return false;
+        }
+        // 先删除扩展表
+        this.remove(new QueryWrapper<KlTcmDisease>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlTcmDisease klTcmDisease = new KlTcmDisease();
+        BeanUtil.copyProperties(klTcmDiseaseVO, klTcmDisease);
+        klTcmDisease.setConceptId(commonParam.getConceptId());
+        klTcmDisease.setGmtModified(commonParam.getNow());
+        klTcmDisease.setGmtCreate(commonParam.getNow());
+        klTcmDisease.setCreator(commonParam.getPerson());
+        klTcmDisease.setModifier(commonParam.getPerson());
+        return this.save(klTcmDisease);
+    }
+
+    public void getKlTcmDisease(Long conceptId, KlConceptAllDTO klConceptAll) {
+        KlTcmDisease klTcmDisease = this.getOne(new QueryWrapper<KlTcmDisease>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if (klTcmDisease == null) {
+            return;
+        }
+        KlTcmDiseaseDTO klTcmDiseaseDTO = new KlTcmDiseaseDTO();
+        BeanUtil.copyProperties(klTcmDisease, klTcmDiseaseDTO);
+        klConceptAll.setKlTcmDiseaseDTO(klTcmDiseaseDTO);
+    }
+}

+ 57 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlTcmSyndromeFacade.java

@@ -0,0 +1,57 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlTcmSyndromeDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlTcmSyndrome;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.KlTcmSyndromeServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.KlTcmSyndromeVO;
+import org.springframework.stereotype.Component;
+
+/**
+ * @author zhoutg
+ * @Description:
+ * @date 2021-03-18 16:38
+ */
+@Component
+public class KlTcmSyndromeFacade extends KlTcmSyndromeServiceImpl {
+
+    /**
+     * 保存中医症候扩展表
+     *
+     * @param commonParam
+     * @param klTcmSyndromeVO
+     * @return
+     */
+    public boolean saveAll(CommonParam commonParam, KlTcmSyndromeVO klTcmSyndromeVO) {
+        if (klTcmSyndromeVO == null) {
+            return false;
+        }
+        // 先删除扩展表
+        this.remove(new QueryWrapper<KlTcmSyndrome>().eq("concept_id", commonParam.getConceptId()));
+        // 重新插入扩展表
+        KlTcmSyndrome klTcmSyndrome = new KlTcmSyndrome();
+        BeanUtil.copyProperties(klTcmSyndromeVO, klTcmSyndrome);
+        klTcmSyndrome.setConceptId(commonParam.getConceptId());
+        klTcmSyndrome.setGmtModified(commonParam.getNow());
+        klTcmSyndrome.setGmtCreate(commonParam.getNow());
+        klTcmSyndrome.setCreator(commonParam.getPerson());
+        klTcmSyndrome.setModifier(commonParam.getPerson());
+        return this.save(klTcmSyndrome);
+    }
+
+    public void getKlTcmSyndrome(Long conceptId, KlConceptAllDTO klConceptAll) {
+        KlTcmSyndrome KlTcmSyndrome = this.getOne(new QueryWrapper<KlTcmSyndrome>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if (KlTcmSyndrome == null) {
+            return;
+        }
+        KlTcmSyndromeDTO klTcmSyndromeDTO = new KlTcmSyndromeDTO();
+        BeanUtil.copyProperties(KlTcmSyndrome, klTcmSyndromeDTO);
+        klConceptAll.setKlTcmSyndromeDTO(klTcmSyndromeDTO);
+    }
+}

+ 63 - 0
cdssman-service/src/main/java/com/diagbot/facade/KlVitalResFacade.java

@@ -0,0 +1,63 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.KlConceptAllDTO;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlVitalResultDTO;
+import com.diagbot.entity.CommonParam;
+import com.diagbot.entity.KlOperation;
+import com.diagbot.entity.KlVitalResult;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.enums.LexiconEnum;
+import com.diagbot.enums.RelationLibTypeEnum;
+import com.diagbot.service.impl.KlOperationServiceImpl;
+import com.diagbot.service.impl.KlVitalResultServiceImpl;
+import com.diagbot.util.BeanUtil;
+import com.diagbot.vo.ConceptRelationVO;
+import com.diagbot.vo.KlOperationVO;
+import com.diagbot.vo.KlVitalResultVO;
+import com.google.common.collect.Lists;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author kwz
+ * @Description:
+ * @date 2021-03-18 16:38
+ */
+@Component
+public class KlVitalResFacade extends KlVitalResultServiceImpl {
+
+    @Autowired
+    KlConceptFacade klConceptFacade;
+
+
+    public void getKlVitalResult(Long conceptId, KlConceptAllDTO klConceptAll) {
+        KlVitalResult klVitalResult = this.getOne(new QueryWrapper<KlVitalResult>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("concept_id", conceptId), false);
+        if(klVitalResult == null){
+            return;
+        }
+        KlVitalResultDTO klVitalResultDTO = new KlVitalResultDTO();
+        BeanUtil.copyProperties(klVitalResult,klVitalResultDTO);
+        List<Integer> relationIdList = Lists.newArrayList(
+                RelationLibTypeEnum.relationDept.getKey(),
+                RelationLibTypeEnum.relationPart.getKey()
+        );
+        ConceptRelationVO conceptRelationVO = new ConceptRelationVO();
+        conceptRelationVO.setConceptId(conceptId);
+        conceptRelationVO.setRelationList(relationIdList);
+        Map<Integer, List<KlConceptSimDTO>> map = klConceptFacade.getRelationConceptFac(conceptRelationVO);
+        if (map.get(LexiconEnum.Part.getKey()) != null) {
+            klVitalResultDTO.setPartList(map.get(LexiconEnum.Part.getKey()));
+        }
+        if (map.get(LexiconEnum.Dept.getKey()) != null) {
+            klVitalResultDTO.setDeptList(map.get(LexiconEnum.Dept.getKey()));
+        }
+        klConceptAll.setKlVitalResultDTO(klVitalResultDTO);
+    }
+}

+ 47 - 0
cdssman-service/src/main/java/com/diagbot/facade/UserClientFacade.java

@@ -0,0 +1,47 @@
+package com.diagbot.facade;
+
+import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.util.ListUtil;
+import com.diagbot.util.ReflectUtil;
+import com.diagbot.util.RespDTOUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.List;
+import java.util.Map;
+import java.util.stream.Collectors;
+
+/**
+ * @description: 通用方法
+ * @author: zhoutg
+ * @time: 2021/6/3 18:56
+ */
+@Component
+public class UserClientFacade {
+
+    @Autowired
+    UserServiceClient userServiceClient;
+
+    /**
+     * 设置操作人姓名
+     *
+     * @param tList
+     * @param <T>
+     */
+    public <T> void setUserName(List<T> tList) {
+        if (ListUtil.isEmpty(tList)) {
+            return;
+        }
+        List<String> userIdList = ReflectUtil.getPropertyList(tList, "modifier");
+        if (ListUtil.isNotEmpty(userIdList)) {
+            userIdList = userIdList.stream().distinct().collect(Collectors.toList());
+            RespDTO<Map<String, String>> mapRespDTO = userServiceClient.getUserInfoByIds(userIdList);
+            RespDTOUtil.respNGDealCover(mapRespDTO, "获取操作人失败");
+            Map<String, String> data = mapRespDTO.data;
+            for (T t : tList) {
+                ReflectUtil.setFieldValue(t, "modifier", data.get(ReflectUtil.getProperty(t, "modifier")));
+            }
+        }
+    }
+}

+ 619 - 0
cdssman-service/src/main/java/com/diagbot/facade/XLSXCovertCSVReader.java

@@ -0,0 +1,619 @@
+package com.diagbot.facade;
+
+import com.diagbot.entity.Ex;
+import com.diagbot.util.ReflectUtil;
+import com.diagbot.util.StringUtil;
+import com.google.common.collect.Lists;
+import org.apache.commons.collections4.map.LinkedMap;
+import org.apache.poi.hssf.usermodel.HSSFDateUtil;
+import org.apache.poi.openxml4j.exceptions.OpenXML4JException;
+import org.apache.poi.openxml4j.opc.OPCPackage;
+import org.apache.poi.openxml4j.opc.PackageAccess;
+import org.apache.poi.ss.usermodel.BuiltinFormats;
+import org.apache.poi.ss.usermodel.DataFormatter;
+import org.apache.poi.xssf.eventusermodel.ReadOnlySharedStringsTable;
+import org.apache.poi.xssf.eventusermodel.XSSFReader;
+import org.apache.poi.xssf.model.StylesTable;
+import org.apache.poi.xssf.usermodel.XSSFCellStyle;
+import org.apache.poi.xssf.usermodel.XSSFRichTextString;
+import org.springframework.web.multipart.MultipartFile;
+import org.xml.sax.Attributes;
+import org.xml.sax.InputSource;
+import org.xml.sax.SAXException;
+import org.xml.sax.XMLReader;
+import org.xml.sax.helpers.DefaultHandler;
+
+import javax.xml.parsers.ParserConfigurationException;
+import javax.xml.parsers.SAXParser;
+import javax.xml.parsers.SAXParserFactory;
+import java.io.IOException;
+import java.io.InputStream;
+import java.io.PrintStream;
+import java.lang.reflect.Field;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2021/5/19 16:34
+ */
+public class XLSXCovertCSVReader {
+    /**
+     * The type of the data value is indicated by an attribute on the cell. The
+     * value is usually in a "v" element within the cell.
+     */
+    enum xssfDataType {
+        BOOL, ERROR, FORMULA, INLINESTR, SSTINDEX, NUMBER,
+    }
+
+    /**
+     * 使用xssf_sax_API处理Excel,请参考: http://poi.apache.org/spreadsheet/how-to.html#xssf_sax_api
+     * <p/>
+     * Also see Standard ECMA-376, 1st edition, part 4, pages 1928ff, at
+     * http://www.ecma-international.org/publications/standards/Ecma-376.htm
+     * <p/>
+     * A web-friendly version is http://openiso.org/Ecma/376/Part4
+     */
+    class MyXSSFSheetHandler extends DefaultHandler {
+
+        /**
+         * Table with styles
+         */
+        private StylesTable stylesTable;
+
+        /**
+         * Table with unique strings
+         */
+        private ReadOnlySharedStringsTable sharedStringsTable;
+
+        /**
+         * Destination for data
+         */
+        private final PrintStream output;
+
+        /**
+         * Number of columns to read starting with leftmost
+         */
+        private final int minColumnCount;
+
+        // Set when V start element is seen
+        private boolean vIsOpen;
+
+        // Set when cell start element is seen;
+        // used when cell close element is seen.
+        private xssfDataType nextDataType;
+
+        // Used to format numeric cell values.
+        private short formatIndex;
+        private String formatString;
+        private final DataFormatter formatter;
+
+        private int thisColumn = -1;
+        // The last column printed to the output stream
+        private int lastColumnNumber = -1;
+
+        // Gathers characters as they are seen.
+        private StringBuffer value;
+        private String[] record;
+        private List<String[]> rows = new ArrayList<String[]>();
+        private boolean isCellNull = false;
+
+        /**
+         * Accepts objects needed while parsing.
+         *
+         * @param styles  Table of styles
+         * @param strings Table of shared strings
+         * @param cols    Minimum number of columns to show
+         * @param target  Sink for output
+         */
+        public MyXSSFSheetHandler(StylesTable styles,
+                                  ReadOnlySharedStringsTable strings, int cols, PrintStream target) {
+            this.stylesTable = styles;
+            this.sharedStringsTable = strings;
+            this.minColumnCount = cols;
+            this.output = target;
+            this.value = new StringBuffer();
+            this.nextDataType = xssfDataType.NUMBER;
+            this.formatter = new DataFormatter();
+            record = new String[this.minColumnCount];
+            rows.clear();// 每次读取都清空行集合
+        }
+
+        /*
+         * (non-Javadoc)
+         *
+         * @see
+         * org.xml.sax.helpers.DefaultHandler#startElement(java.lang.String,
+         * java.lang.String, java.lang.String, org.xml.sax.Attributes)
+         */
+        public void startElement(String uri, String localName, String name,
+                                 Attributes attributes) throws SAXException {
+
+            if ("inlineStr".equals(name) || "v".equals(name)) {
+                vIsOpen = true;
+                // Clear contents cache
+                value.setLength(0);
+            }
+            // c => cell
+            else if ("c".equals(name)) {
+                // Get the cell reference
+                String r = attributes.getValue("r");
+                int firstDigit = -1;
+                for (int c = 0; c < r.length(); ++c) {
+                    if (Character.isDigit(r.charAt(c))) {
+                        firstDigit = c;
+                        break;
+                    }
+                }
+                thisColumn = nameToColumn(r.substring(0, firstDigit));
+
+                // Set up defaults.
+                this.nextDataType = xssfDataType.NUMBER;
+                this.formatIndex = -1;
+                this.formatString = null;
+                String cellType = attributes.getValue("t");
+                String cellStyleStr = attributes.getValue("s");
+                if ("b".equals(cellType)) {
+                    nextDataType = xssfDataType.BOOL;
+                } else if ("e".equals(cellType)) {
+                    nextDataType = xssfDataType.ERROR;
+                } else if ("inlineStr".equals(cellType)) {
+                    nextDataType = xssfDataType.INLINESTR;
+                } else if ("s".equals(cellType)) {
+                    nextDataType = xssfDataType.SSTINDEX;
+                } else if ("str".equals(cellType)) {
+                    nextDataType = xssfDataType.FORMULA;
+                } else if (cellStyleStr != null) {
+                    // It's a number, but almost certainly one
+                    // with a special style or format
+                    int styleIndex = Integer.parseInt(cellStyleStr);
+                    XSSFCellStyle style = stylesTable.getStyleAt(styleIndex);
+                    this.formatIndex = style.getDataFormat();
+                    this.formatString = style.getDataFormatString();
+                    if (this.formatString == null) {
+                        this.formatString = BuiltinFormats
+                                .getBuiltinFormat(this.formatIndex);
+                    }
+                }
+            }
+
+        }
+
+        /*
+         * (non-Javadoc)
+         *
+         * @see org.xml.sax.helpers.DefaultHandler#endElement(java.lang.String,
+         * java.lang.String, java.lang.String)
+         */
+        public void endElement(String uri, String localName, String name)
+                throws SAXException {
+
+            String thisStr = null;
+
+            // v => contents of a cell
+            if ("v".equals(name)) {
+                // Process the value contents as required.
+                // Do now, as characters() may be called more than once
+                switch (nextDataType) {
+
+                    case BOOL:
+                        char first = value.charAt(0);
+                        thisStr = first == '0' ? "FALSE" : "TRUE";
+                        break;
+
+                    case ERROR:
+                        thisStr = "ERROR:" + value.toString();
+                        break;
+
+                    case FORMULA:
+                        // A formula could result in a string value,
+                        // so always add double-quote characters.
+                        thisStr = value.toString();
+                        break;
+
+                    case INLINESTR:
+                        // TODO: have seen an example of this, so it's untested.
+                        XSSFRichTextString rtsi = new XSSFRichTextString(
+                                value.toString());
+                        thisStr = rtsi.toString();
+                        break;
+
+                    case SSTINDEX:
+                        String sstIndex = value.toString();
+                        try {
+                            int idx = Integer.parseInt(sstIndex);
+                            XSSFRichTextString rtss = new XSSFRichTextString(
+                                    sharedStringsTable.getEntryAt(idx));
+                            thisStr = rtss.toString();
+                        } catch (NumberFormatException ex) {
+                            output.println("Failed to parse SST index '" + sstIndex
+                                    + "': " + ex.toString());
+                        }
+                        break;
+
+                    case NUMBER:
+                        String n = value.toString();
+                        // 判断是否是日期格式
+                        if (HSSFDateUtil.isADateFormat(this.formatIndex, n)) {
+                            Double d = Double.parseDouble(n);
+                            Date date = HSSFDateUtil.getJavaDate(d);
+                            thisStr = formateDateToString(date);
+                        } else if (this.formatString != null) {
+                            thisStr = formatter.formatRawCellContents(
+                                    Double.parseDouble(n), this.formatIndex,
+                                    this.formatString);
+                        } else {
+                            thisStr = n;
+                        }
+                        break;
+
+                    default:
+                        thisStr = "(TODO: Unexpected type: " + nextDataType + ")";
+                        break;
+                }
+
+                // Output after we've seen the string contents
+                // Emit commas for any fields that were missing on this row
+                if (lastColumnNumber == -1) {
+                    lastColumnNumber = 0;
+                }
+                //判断单元格的值是否为空
+                if (thisStr == null || "".equals(isCellNull)) {
+                    isCellNull = true;// 设置单元格是否为空值
+                }
+                // trim()
+                if (thisStr != null) {
+                    thisStr = thisStr.trim();
+                }
+                record[thisColumn] = thisStr;
+                // Update column
+                if (thisColumn > -1) {
+                    lastColumnNumber = thisColumn;
+                }
+
+            } else if ("row".equals(name)) {
+                // Print out any missing commas if needed
+                if (minColumns > 0) {
+                    // Columns are 0 based
+                    if (lastColumnNumber == -1) {
+                        lastColumnNumber = 0;
+                    }
+                    if (isCellNull == false && record[0] != null
+                            && record[1] != null)// 判断是否空行
+                    {
+                        rows.add(record.clone());
+                        isCellNull = false;
+                        for (int i = 0; i < record.length; i++) {
+                            record[i] = null;
+                        }
+                    }
+                }
+                lastColumnNumber = -1;
+            }
+
+        }
+
+        public List<String[]> getRows() {
+            return rows;
+        }
+
+        public void setRows(List<String[]> rows) {
+            this.rows = rows;
+        }
+
+        /**
+         * Captures characters only if a suitable element is open. Originally
+         * was just "v"; extended for inlineStr also.
+         */
+        public void characters(char[] ch, int start, int length)
+                throws SAXException {
+            if (vIsOpen) {
+                value.append(ch, start, length);
+            }
+        }
+
+        /**
+         * Converts an Excel column name like "C" to a zero-based index.
+         *
+         * @param name
+         * @return Index corresponding to the specified name
+         */
+        private int nameToColumn(String name) {
+            int column = -1;
+            for (int i = 0; i < name.length(); ++i) {
+                int c = name.charAt(i);
+                column = (column + 1) * 26 + c - 'A';
+            }
+            return column;
+        }
+
+        private String formateDateToString(Date date) {
+            SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//格式化日期
+            return sdf.format(date);
+
+        }
+
+    }
+
+    // /
+
+    private OPCPackage xlsxPackage;
+    private int minColumns;
+    private PrintStream output;
+    private String sheetName;
+
+    /**
+     * Creates a new XLSX -> CSV converter
+     *
+     * @param pkg        The XLSX package to process
+     * @param output     The PrintStream to output the CSV to
+     * @param minColumns The minimum number of columns to output, or -1 for no minimum
+     */
+    public XLSXCovertCSVReader(OPCPackage pkg, PrintStream output,
+                               String sheetName, int minColumns) {
+        this.xlsxPackage = pkg;
+        this.output = output;
+        this.minColumns = minColumns;
+        this.sheetName = sheetName;
+    }
+
+    /**
+     * Parses and shows the content of one sheet using the specified styles and
+     * shared-strings tables.
+     *
+     * @param styles
+     * @param strings
+     * @param sheetInputStream
+     */
+    public List<String[]> processSheet(StylesTable styles,
+                                       ReadOnlySharedStringsTable strings, InputStream sheetInputStream)
+            throws IOException, ParserConfigurationException, SAXException {
+
+        InputSource sheetSource = new InputSource(sheetInputStream);
+        SAXParserFactory saxFactory = SAXParserFactory.newInstance();
+        SAXParser saxParser = saxFactory.newSAXParser();
+        XMLReader sheetParser = saxParser.getXMLReader();
+        MyXSSFSheetHandler handler = new MyXSSFSheetHandler(styles, strings,
+                this.minColumns, this.output);
+        sheetParser.setContentHandler(handler);
+        sheetParser.parse(sheetSource);
+        return handler.getRows();
+    }
+
+    /**
+     * 初始化这个处理程序 将
+     *
+     * @throws IOException
+     * @throws OpenXML4JException
+     * @throws ParserConfigurationException
+     * @throws SAXException
+     */
+    public List<String[]> process() throws IOException, OpenXML4JException,
+            ParserConfigurationException, SAXException {
+
+        ReadOnlySharedStringsTable strings = new ReadOnlySharedStringsTable(
+                this.xlsxPackage);
+        XSSFReader xssfReader = new XSSFReader(this.xlsxPackage);
+        List<String[]> list = null;
+        StylesTable styles = xssfReader.getStylesTable();
+        XSSFReader.SheetIterator iter = (XSSFReader.SheetIterator) xssfReader
+                .getSheetsData();
+        int index = 0;
+        while (iter.hasNext()) {
+            InputStream stream = iter.next();
+            String sheetNameTemp = iter.getSheetName();
+            if (this.sheetName.equals(sheetNameTemp)) {
+                list = processSheet(styles, strings, stream);
+                stream.close();
+                ++index;
+            }
+        }
+        return list;
+    }
+
+    /**
+     * 读取Excel
+     *
+     * @param path       文件路径
+     * @param sheetName  sheet名称
+     * @param minColumns 列总数
+     * @return
+     * @throws SAXException
+     * @throws ParserConfigurationException
+     * @throws OpenXML4JException
+     * @throws IOException
+     */
+    private static List<String[]> readerExcel(String path, String sheetName,
+                                              int minColumns) throws IOException, OpenXML4JException,
+            ParserConfigurationException, SAXException {
+        OPCPackage p = OPCPackage.open(path, PackageAccess.READ);
+        XLSXCovertCSVReader xlsx2csv = new XLSXCovertCSVReader(p, System.out,
+                sheetName, minColumns);
+        List<String[]> list = xlsx2csv.process();
+        p.close();
+        return list;
+    }
+
+    /**
+     * 读取Excel
+     *
+     * @param inputStream
+     * @param sheetName
+     * @param minColumns
+     * @return
+     * @throws IOException
+     * @throws OpenXML4JException
+     * @throws ParserConfigurationException
+     * @throws SAXException
+     */
+    private static List<String[]> readerExcel(InputStream inputStream, String sheetName,
+                                              int minColumns) throws IOException, OpenXML4JException,
+            ParserConfigurationException, SAXException {
+        OPCPackage p = OPCPackage.open(inputStream);
+        XLSXCovertCSVReader xlsx2csv = new XLSXCovertCSVReader(p, System.out,
+                sheetName, minColumns);
+        List<String[]> list = xlsx2csv.process();
+        p.close();
+        return list;
+    }
+
+    /**
+     * 读取数据
+     *
+     * @param path
+     * @param sheetName
+     * @param colNum
+     * @param c
+     * @return
+     */
+    public static <T> List<T> readData(String path, String sheetName, int colNum, Class<T> c) {
+        List<T> list = Lists.newArrayList();
+        try {
+            List<String[]> stringList = XLSXCovertCSVReader.readerExcel(path, sheetName, colNum);
+            return dealData(stringList, c);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+
+    /**
+     * 读取数据
+     *
+     * @param file
+     * @param sheetName
+     * @param colNum
+     * @param c
+     * @return
+     */
+    public static <T> List<T> readData(MultipartFile file, String sheetName, int colNum, Class<T> c) {
+        List<T> list = Lists.newArrayList();
+        try {
+            List<String[]> stringList = XLSXCovertCSVReader.readerExcel(file.getInputStream(), sheetName, colNum);
+            return dealData(stringList, c);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return list;
+    }
+
+    /**
+     * 数据处理
+     *
+     * @param list
+     * @param c
+     * @param <T>
+     * @return
+     */
+    public static <T> List<T> dealData(List<String[]> list, Class<T> c) {
+        List<T> res = Lists.newArrayList();
+        try {
+            // 标题
+            String[] titleRow = list.get(0);
+            Map<Integer, String> colMap = new LinkedMap();
+            for (int i = 0; i < titleRow.length; i++) {
+                if (StringUtil.isBlank(titleRow[i])) {
+                    break;
+                }
+                colMap.put(i, titleRow[i]);
+            }
+            // System.out.println(colMap);
+
+            // 字段映射
+            Field[] fields = c.getDeclaredFields();
+            // 属性和表格列对应
+            Map<String, Map<String, String>> classMap = new LinkedHashMap();
+            for (Field field : fields) {
+                if (field.isAnnotationPresent(Ex.class)) {
+                    Ex annotation = field.getAnnotation(Ex.class);
+                    Map<String, String> propertyMap = new LinkedHashMap<>();
+                    propertyMap.put("field", field.getName());
+                    propertyMap.put("convertType", field.getGenericType().toString());
+                    classMap.put(annotation.name(), propertyMap);
+                }
+                field.getClass();
+            }
+            // System.out.println(classMap);
+
+            // 有效数据读取
+            int rowNum = 1;
+            for (String[] row : list) {
+                if (rowNum++ == 1) {
+                    continue;
+                }
+                T obj = c.newInstance();
+                for (int i = 0; i < row.length; i++) {
+                    if (classMap.get(colMap.get(i)) == null) {
+                        continue;
+                    }
+                    String property = classMap.get(colMap.get(i)).get("field");
+                    String convertType = classMap.get(colMap.get(i)).get("convertType");
+                    // System.out.println(property + ":" + row[i]);
+                    if (StringUtil.isNotBlank(property)) {
+                        Object value = convertValue(row[i], convertType);
+                        if (value != null) {
+                            ReflectUtil.setFieldValue(obj, property, value);
+                        }
+                    }
+                }
+                res.add(obj);
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return res;
+    }
+
+    /**
+     * 根据反射转成不同的类型
+     *
+     * @param object
+     * @param convertType
+     * @return
+     */
+    public static Object convertValue(String object, String convertType) {
+        Object res = null;
+        if (object == null) {
+            return null;
+        }
+        try {
+            switch (convertType) {
+                case "class java.lang.Integer":
+                case "int":
+                    res = Integer.parseInt(object);
+                    break;
+                case "class java.lang.Long":
+                case "long":
+                    res = Long.parseLong(object);
+                    break;
+                case "class java.lang.Float":
+                case "float":
+                    res = Float.parseFloat(object);
+                    break;
+                case "class java.lang.Double":
+                case "double":
+                    res = Double.parseDouble(object);
+                    break;
+                case "class java.lang.Boolean":
+                case "boolean":
+                    res = Boolean.parseBoolean(object);
+                    break;
+                case "class java.lang.String":
+                    res = object;
+                    break;
+                default:
+                    res = object;
+                    break;
+            }
+        } catch (Exception e) {
+            // e.printStackTrace();
+            return null;
+        }
+        return res;
+    }
+}

+ 5 - 1
cdssman-service/src/main/java/com/diagbot/mapper/KlConceptMapper.java

@@ -1,10 +1,12 @@
 package com.diagbot.mapper;
 
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.KlConceptAllDTO;
 import com.diagbot.dto.KlConceptInfoDTO;
+import com.diagbot.dto.KlConceptSimDTO;
 import com.diagbot.entity.KlConcept;
-import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.ConceptRelationVO;
 import com.diagbot.vo.KlConceptAllVO;
 import com.diagbot.vo.KlConceptInfoVO;
 
@@ -25,4 +27,6 @@ public interface KlConceptMapper extends BaseMapper<KlConcept> {
     List<KlConceptAllDTO> getConceptAll(KlConceptAllVO klConceptAllVO);
 
     IPage<KlConceptInfoDTO> getConceptPage2(KlConceptInfoVO klConceptInfoVO);
+
+    List<KlConceptSimDTO> getRelationConcept(ConceptRelationVO conceptRelationVO);
 }

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlDrugMapping;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 药品通用名和注册名映射表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+public interface KlDrugMappingMapper extends BaseMapper<KlDrugMapping> {
+
+}

+ 32 - 0
cdssman-service/src/main/java/com/diagbot/mapper/KlDrugRegisterMapper.java

@@ -0,0 +1,32 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDrugMappingDTO;
+import com.diagbot.dto.KlDrugRegisterDTO;
+import com.diagbot.entity.KlDrugRegister;
+import com.diagbot.vo.KlDrugMappingGetVO;
+import com.diagbot.vo.KlDrugRegisterPageVO;
+import com.diagbot.vo.KlDrugSearchVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 药品注册表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+public interface KlDrugRegisterMapper extends BaseMapper<KlDrugRegister> {
+
+    IPage<KlDrugRegisterDTO> getPage(KlDrugRegisterPageVO klDrugRegisterPageVO);
+
+    List<KlDrugMappingDTO> getMappingRegister(KlDrugMappingGetVO klDrugMappingGetVO);
+
+    List<KlConceptSimDTO> getMappingDrug(KlDrugMappingGetVO klDrugMappingGetVO);
+
+    List<KlConceptSimDTO> searchDrug(KlDrugSearchVO klDrugSearchVO);
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlOperation;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 手术扩展表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlOperationMapper extends BaseMapper<KlOperation> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlPacs;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 辅检扩展表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlPacsMapper extends BaseMapper<KlPacs> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlSymptom;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 症状扩展表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlSymptomMapper extends BaseMapper<KlSymptom> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlTcmDisease;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 中医疾病表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+public interface KlTcmDiseaseMapper extends BaseMapper<KlTcmDisease> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlTcmSyndrome;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 中医证候表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+public interface KlTcmSyndromeMapper extends BaseMapper<KlTcmSyndrome> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.KlVitalResult;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ * 体征结果扩展表 Mapper 接口
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlVitalResultMapper extends BaseMapper<KlVitalResult> {
+
+}

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

@@ -1,11 +1,12 @@
 package com.diagbot.service;
 
-import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
 import com.diagbot.dto.KlConceptAllDTO;
 import com.diagbot.dto.KlConceptInfoDTO;
+import com.diagbot.dto.KlConceptSimDTO;
 import com.diagbot.entity.KlConcept;
-import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.ConceptRelationVO;
 import com.diagbot.vo.KlConceptAllVO;
 import com.diagbot.vo.KlConceptInfoVO;
 
@@ -24,4 +25,6 @@ public interface KlConceptService extends IService<KlConcept> {
     public List<KlConceptAllDTO> getConceptAll(KlConceptAllVO klConceptAllVO);
 
     IPage<KlConceptInfoDTO> getConceptPage2(KlConceptInfoVO klConceptInfoVO);
+
+    List<KlConceptSimDTO> getRelationConcept(ConceptRelationVO conceptRelationVO);
 }

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlDrugMapping;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 药品通用名和注册名映射表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+public interface KlDrugMappingService extends IService<KlDrugMapping> {
+
+}

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

@@ -0,0 +1,32 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDrugMappingDTO;
+import com.diagbot.dto.KlDrugRegisterDTO;
+import com.diagbot.entity.KlDrugRegister;
+import com.diagbot.vo.KlDrugMappingGetVO;
+import com.diagbot.vo.KlDrugRegisterPageVO;
+import com.diagbot.vo.KlDrugSearchVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 药品注册表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+public interface KlDrugRegisterService extends IService<KlDrugRegister> {
+
+    IPage<KlDrugRegisterDTO> getPage(KlDrugRegisterPageVO klDrugRegisterPageVO);
+
+    List<KlDrugMappingDTO> getMappingRegister(KlDrugMappingGetVO klDrugMappingGetVO);
+
+    List<KlConceptSimDTO> getMappingDrug(KlDrugMappingGetVO klDrugMappingGetVO);
+
+    List<KlConceptSimDTO> searchDrug(KlDrugSearchVO klDrugSearchVO);
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlOperation;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 手术扩展表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlOperationService extends IService<KlOperation> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlPacs;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 辅检扩展表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlPacsService extends IService<KlPacs> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlSymptom;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 症状扩展表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlSymptomService extends IService<KlSymptom> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlTcmDisease;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 中医疾病表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+public interface KlTcmDiseaseService extends IService<KlTcmDisease> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlTcmSyndrome;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 中医证候表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+public interface KlTcmSyndromeService extends IService<KlTcmSyndrome> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.KlVitalResult;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ * 体征结果扩展表 服务类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+public interface KlVitalResultService extends IService<KlVitalResult> {
+
+}

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

@@ -4,10 +4,12 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.dto.KlConceptAllDTO;
 import com.diagbot.dto.KlConceptInfoDTO;
+import com.diagbot.dto.KlConceptSimDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.mapper.KlConceptMapper;
 import com.diagbot.service.KlConceptService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.ConceptRelationVO;
 import com.diagbot.vo.KlConceptAllVO;
 import com.diagbot.vo.KlConceptInfoVO;
 import org.springframework.stereotype.Service;
@@ -40,4 +42,9 @@ public class KlConceptServiceImpl extends ServiceImpl<KlConceptMapper, KlConcept
     public IPage<KlConceptInfoDTO> getConceptPage2(KlConceptInfoVO klConceptInfoVO){
         return baseMapper.getConceptPage2(klConceptInfoVO);
     }
+
+    @Override
+    public List<KlConceptSimDTO> getRelationConcept(ConceptRelationVO conceptRelationVO) {
+        return baseMapper.getRelationConcept(conceptRelationVO);
+    }
 }

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlDrugMappingServiceImpl.java

@@ -0,0 +1,22 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.KlDrugMapping;
+import com.diagbot.mapper.KlDrugMappingMapper;
+import com.diagbot.service.KlDrugMappingService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 药品通用名和注册名映射表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Service
+@DS("med")
+public class KlDrugMappingServiceImpl extends ServiceImpl<KlDrugMappingMapper, KlDrugMapping> implements KlDrugMappingService {
+
+}

+ 50 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlDrugRegisterServiceImpl.java

@@ -0,0 +1,50 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDrugMappingDTO;
+import com.diagbot.dto.KlDrugRegisterDTO;
+import com.diagbot.entity.KlDrugRegister;
+import com.diagbot.mapper.KlDrugRegisterMapper;
+import com.diagbot.service.KlDrugRegisterService;
+import com.diagbot.vo.KlDrugMappingGetVO;
+import com.diagbot.vo.KlDrugRegisterPageVO;
+import com.diagbot.vo.KlDrugSearchVO;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 药品注册表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Service
+@DS("med")
+public class KlDrugRegisterServiceImpl extends ServiceImpl<KlDrugRegisterMapper, KlDrugRegister> implements KlDrugRegisterService {
+
+    @Override
+    public IPage<KlDrugRegisterDTO> getPage(KlDrugRegisterPageVO klDrugRegisterPageVO) {
+        return baseMapper.getPage(klDrugRegisterPageVO);
+    }
+
+    @Override
+    public List<KlDrugMappingDTO> getMappingRegister(KlDrugMappingGetVO klDrugMappingGetVO) {
+        return baseMapper.getMappingRegister(klDrugMappingGetVO);
+    }
+
+    @Override
+    public List<KlConceptSimDTO> getMappingDrug(KlDrugMappingGetVO klDrugMappingGetVO) {
+        return baseMapper.getMappingDrug(klDrugMappingGetVO);
+    }
+
+    @Override
+    public List<KlConceptSimDTO> searchDrug(KlDrugSearchVO klDrugSearchVO) {
+        return baseMapper.searchDrug(klDrugSearchVO);
+    }
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlOperation;
+import com.diagbot.mapper.KlOperationMapper;
+import com.diagbot.service.KlOperationService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 手术扩展表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Service
+public class KlOperationServiceImpl extends ServiceImpl<KlOperationMapper, KlOperation> implements KlOperationService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlPacs;
+import com.diagbot.mapper.KlPacsMapper;
+import com.diagbot.service.KlPacsService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 辅检扩展表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Service
+public class KlPacsServiceImpl extends ServiceImpl<KlPacsMapper, KlPacs> implements KlPacsService {
+
+}

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java

@@ -0,0 +1,22 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.KlSymptom;
+import com.diagbot.mapper.KlSymptomMapper;
+import com.diagbot.service.KlSymptomService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 症状扩展表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Service
+@DS("med")
+public class KlSymptomServiceImpl extends ServiceImpl<KlSymptomMapper, KlSymptom> implements KlSymptomService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlTcmDisease;
+import com.diagbot.mapper.KlTcmDiseaseMapper;
+import com.diagbot.service.KlTcmDiseaseService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 中医疾病表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+@Service
+public class KlTcmDiseaseServiceImpl extends ServiceImpl<KlTcmDiseaseMapper, KlTcmDisease> implements KlTcmDiseaseService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlTcmSyndrome;
+import com.diagbot.mapper.KlTcmSyndromeMapper;
+import com.diagbot.service.KlTcmSyndromeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 中医证候表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+@Service
+public class KlTcmSyndromeServiceImpl extends ServiceImpl<KlTcmSyndromeMapper, KlTcmSyndrome> implements KlTcmSyndromeService {
+
+}

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

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlVitalResult;
+import com.diagbot.mapper.KlVitalResultMapper;
+import com.diagbot.service.KlVitalResultService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 体征结果扩展表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Service
+public class KlVitalResultServiceImpl extends ServiceImpl<KlVitalResultMapper, KlVitalResult> implements KlVitalResultService {
+
+}

+ 127 - 0
cdssman-service/src/main/java/com/diagbot/util/ReflectUtil.java

@@ -0,0 +1,127 @@
+package com.diagbot.util;
+
+import com.google.common.collect.Lists;
+
+import java.lang.reflect.Field;
+import java.util.List;
+
+/**
+ * @description: 反射工具类
+ * @author: zhoutg
+ * @date: 2021/4/27 13:29
+ */
+public class ReflectUtil {
+
+    /**
+     * 获取属性对应的值,以list形式返回
+     *
+     * @param list
+     * @param propertyName
+     * @param <T>
+     * @param <V>
+     * @return
+     */
+    public static <T, V> List<V> getPropertyList(List<T> list, String propertyName) {
+        List<V> res = Lists.newArrayList();
+        if (ListUtil.isEmpty(list)) {
+            return res;
+        }
+        for (T t : list) {
+            try {
+                V val = getProperty(t, propertyName);
+                if (val != null) {
+                    // 字符串类型不为空判断
+                    if (StringUtil.isNotBlank(String.valueOf(val))) {
+                        res.add(val);
+                    }
+                }
+            } catch (Exception e) {
+                e.printStackTrace();
+            }
+        }
+        return res;
+    }
+
+    /**
+     * 获取属性对应的值,以list形式返回——重载
+     *
+     * @param list
+     * @param <T>
+     * @return
+     */
+    public static <T> List<String> getPropertyList(List<T> list) {
+        return getPropertyList(list, "name");
+    }
+
+    /**
+     * 循环向上转型, 获取对象的 DeclaredField
+     *
+     * @param object    : 子类对象
+     * @param fieldName : 父类中的属性名
+     * @return 父类中的属性对象
+     */
+    public static Field getDeclaredField(Object object, String fieldName) {
+        Field field = null;
+        Class<?> clazz = object.getClass();
+        for (; clazz != Object.class; clazz = clazz.getSuperclass()) {
+            try {
+                field = clazz.getDeclaredField(fieldName);
+                return field;
+            } catch (Exception e) {
+                //这里甚么都不要做!并且这里的异常必须这样写,不能抛出去。
+                //如果这里的异常打印或者往外抛,则就不会执行clazz = clazz.getSuperclass(),最后就不会进入到父类中了
+            }
+        }
+        return null;
+    }
+
+    /**
+     * 获取对象的属性值,直接使用getDeclaredFields()方法只能获取当前类声明的字段,需要递归向上获取
+     *
+     * @param object    : 子类对象
+     * @param fieldName : 父类中的属性名
+     * @return : 父类中的属性值
+     */
+    public static <T> T getProperty(Object object, String fieldName) {
+        try {
+            //根据 对象和属性名通过反射获取Field对象
+            Field field = getDeclaredField(object, fieldName);
+            // 容错处理
+            if (field == null) {
+                return null;
+            }
+            //抑制Java对其的检查
+            field.setAccessible(true);
+            //获取 object 中 field 所代表的属性值
+            return (T) field.get(object);
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return null;
+    }
+
+    /**
+     * 对象赋值
+     *
+     * @param object
+     * @param property
+     * @param value
+     */
+    public static void setFieldValue(Object object, String property, Object value){
+        //根据 对象和属性名通过反射 调用上面的方法获取 Field对象
+        Field field = getDeclaredField(object, property) ;
+        //抑制Java对其的检查
+        field.setAccessible(true) ;
+        try {
+            field.set(object, value);
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
+
+    public static void main(String[] args) {
+
+    }
+}

+ 17 - 0
cdssman-service/src/main/java/com/diagbot/vo/ConceptRelationVO.java

@@ -0,0 +1,17 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2020/9/10 14:48
+ */
+@Data
+public class ConceptRelationVO {
+
+    private Long conceptId;
+    private List<Integer> relationList;
+}

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

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+/**
+ * @Description:
+ * @Author:zhoutg
+ * @time: 2020/8/24 17:23
+ */
+@Data
+public class ImportVO {
+
+    // sheet名称
+    private String sheetName;
+    // 列数量
+    private Integer colNum  = 0;
+
+}

+ 6 - 5
cdssman-service/src/main/java/com/diagbot/vo/KlConceptAllVO.java

@@ -1,7 +1,6 @@
 package com.diagbot.vo;
 
-import lombok.Getter;
-import lombok.Setter;
+import lombok.Data;
 
 import javax.validation.constraints.NotNull;
 
@@ -10,9 +9,11 @@ import javax.validation.constraints.NotNull;
  * @Description:
  * @date 2021-03-02 14:06
  */
-@Setter
-@Getter
+@Data
 public class KlConceptAllVO {
     @NotNull(message = "请输入conceptId")
-    private Long  conceptId;
+    private Long conceptId;
+
+    @NotNull(message = "请输入libType")
+    private Integer libType;
 }

+ 38 - 7
cdssman-service/src/main/java/com/diagbot/vo/KlConceptSaveVO.java

@@ -15,31 +15,62 @@ import java.util.List;
 @Setter
 @Getter
 public class KlConceptSaveVO {
+    // 术语Id
     private Long conceptId;
+    // libId
     private Long libId;
     @NotBlank(message = "请输入医学标准术语名称")
     private String libName;
+    // 拼音
     private String spell;
     @NotNull(message = "请输入医学标准术语词性type")
     private Integer libType;
+    // 同义词名称
     private String synonymName;
     @NotNull(message = "请输入状态")
     private Integer status;
     //是否标准词,1:是,0:否
     private Integer isConcept = 0;
+    // 性别
     private Integer sexType;
     //是否有通用扩展(0:否;1:是)
     @NotNull(message = "请输入是否有通用扩展")
     private Integer isHasCommon;
+    // 最小年龄
     private Double minAge;
+    // 最大年龄
     private Double maxAge;
-    private Double minVal;
-    private Double maxVal;
-    private String unit;
-    private Integer scopeType;
-    private String icdCode;
+    // 备注
     private String remark;
-    private Integer drug;
-    private Long deptId;
+
+    // 同义词列表
     private List<KlConceptSaveSubVO> klConceptSub;
+
+    // 疾病扩展信息
+    private KlDiseaseVO klDiseaseVO;
+
+    // 药品通用名扩展
+    private KlDrugVO klDrugVO;
+
+    // 症状扩展信息
+    private KlSymptomVO klSymptomVO;
+
+    // 化验扩展信息
+    private KlLisVO klLisVO;
+
+    // 辅检扩展信息
+    private KlPacsVO klPacsVO;
+
+    // 手术扩展信息
+    private KlOperationVO klOperationVO;
+
+    // 体征结果扩展信息
+    private KlVitalResultVO klVitalResultVO;
+
+    // 中医疾病表
+    private KlTcmDiseaseVO klTcmDiseaseVO;
+
+    // 中医证候表
+    private KlTcmSyndromeVO klTcmSyndromeVO;
+
 }

+ 152 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDiseaseVO.java

@@ -0,0 +1,152 @@
+package com.diagbot.vo;
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 疾病表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDiseaseVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+
+    /**
+     * ICD10编号
+     */
+    private String icd10Code;
+
+    /**
+     * 病程
+     */
+    private String course;
+
+    /**
+     * 诱因
+     */
+    private String inducement;
+
+    /**
+     * 饮食禁忌
+     */
+    private String foodProhibition;
+
+    /**
+     * 危险因素
+     */
+    private String hazard;
+
+    /**
+     * 治愈性
+     */
+    private String healing;
+
+    /**
+     * 危害性
+     */
+    private String pernicious;
+
+    /**
+     * 临床分类
+     */
+    private String clinicType;
+
+    /**
+     * 好发地区
+     */
+    private String vulArea;
+
+    /**
+     * 好发人群
+     */
+    private String vulCrowd;
+
+    /**
+     * 发病率
+     */
+    private Double incidence;
+
+    /**
+     * 是否传染(0:否,1:是)
+     */
+    private Integer isInfect;
+
+    /**
+     * 并发症
+     */
+    private String complication;
+
+    /**
+     * 病因
+     */
+    private String pathogeny;
+
+    /**
+     * 疾病分型
+     */
+    private String disType;
+
+    /**
+     * 中西医疾病(0:通用,1:西,2:中)
+     */
+    private Integer chWestern;
+
+    /**
+     * 是否常见病(0:否,1:是)
+     */
+    private Integer isCommonDis;
+
+    /**
+     * 是否遗传(0:否,1:是)
+     */
+    private Integer isHeredity;
+
+    /**
+     * 简称
+     */
+    private String nameSimple;
+
+    /**
+     * 英文简称
+     */
+    private String enNameSimple;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 肿瘤细胞类型
+     */
+    private String tumorCellType;
+
+    /**
+     * 形态学分类代码
+     */
+    private String morphology;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    // 科室列表
+    private List<Long> deptList = Lists.newLinkedList();
+
+    // 部位列表
+    private List<Long> partList = Lists.newLinkedList();
+
+    // 疾病系统分类列表
+    private List<Long> systemTypeList = Lists.newLinkedList();
+
+}

+ 29 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugMappingGetVO.java

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品通用名和注册药品关联表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugMappingGetVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 药品通用名conceptId
+     */
+    private Long drugConcept;
+
+    /**
+     * 注册药品Id
+     */
+    private Long registerId;
+}

+ 24 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterDelVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterDelVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+}

+ 24 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterGetVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterGetVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+}

+ 66 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterImportExVO.java

@@ -0,0 +1,66 @@
+package com.diagbot.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterImportExVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Excel(name="药品代码")
+    private String drugCode;
+
+    @Excel(name="注册名称")
+    private String name;
+
+    @Excel(name="英文名称")
+    private String enName;
+
+    @Excel(name="商品名称")
+    private String tradeName;
+
+    @Excel(name="注册剂型")
+    private String form;
+
+    @Excel(name="注册规格")
+    private String specification;
+
+    @Excel(name="最小包装数量")
+    private String minPackQuantity;
+
+    @Excel(name="最小包装单位")
+    private String minPackUnit;
+
+    @Excel(name="药品企业")
+    private String company;
+
+    @Excel(name="批准文号")
+    private String approval;
+
+    @Excel(name="药品本位码")
+    private String standardCode;
+
+    @Excel(name="甲乙类")
+    private String insuranceType;
+
+    @Excel(name="医保备注")
+    private String insuranceRemrk;
+
+    @Excel(name="药品类别")
+    private String drugType;
+
+    @Excel(name="药品通用名")
+    private String drugName;
+
+}

+ 99 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterPageVO.java

@@ -0,0 +1,99 @@
+package com.diagbot.vo;
+
+import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
+import lombok.Data;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterPageVO extends Page {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 药品代码
+     */
+    private String drugCode;
+
+    /**
+     * 注册名称| 商品名称
+     */
+    private String name;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 药品剂型
+     */
+    private String form;
+
+    /**
+     * 注册规格
+     */
+    private String specification;
+
+    /**
+     * 最小包装数量
+     */
+    private String minPackQuantity;
+
+    /**
+     * 最小包装单位
+     */
+    private String minPackUnit;
+
+    /**
+     * 药品企业
+     */
+    private String company;
+
+    /**
+     * 批准文号
+     */
+    private String approval;
+
+    /**
+     * 药品本位码
+     */
+    private String standardCode;
+
+    /**
+     * 医保类型
+     */
+    private String insuranceType;
+
+    /**
+     * 医保备注
+     */
+    private String insuranceRemrk;
+
+    /**
+     * 药品通用名
+     */
+    private String commonName;
+
+    /**
+     * 药品类别
+     */
+    private String drugType;
+
+}

+ 104 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterSaveVO.java

@@ -0,0 +1,104 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterSaveVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    private Long id;
+
+    /**
+     * 药品代码
+     */
+    private String drugCode;
+
+    /**
+     * 注册名称
+     */
+    private String name;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 商品名称
+     */
+    private String tradeName;
+
+    /**
+     * 药品剂型
+     */
+    private String form;
+
+    /**
+     * 注册规格
+     */
+    private String specification;
+
+    /**
+     * 最小包装数量
+     */
+    private String minPackQuantity;
+
+    /**
+     * 最小包装单位
+     */
+    private String minPackUnit;
+
+    /**
+     * 药品企业
+     */
+    private String company;
+
+    /**
+     * 批准文号
+     */
+    private String approval;
+
+    /**
+     * 药品本位码
+     */
+    private String standardCode;
+
+    /**
+     * 医保类型
+     */
+    private String insuranceType;
+
+    /**
+     * 医保备注
+     */
+    private String insuranceRemrk;
+
+    /**
+     * 药品类别
+     */
+    private String drugType;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    /**
+     * 药品通用名Id
+     */
+    private Long drugConceptId;
+}

+ 71 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugRegisterTestVO.java

@@ -0,0 +1,71 @@
+package com.diagbot.vo;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.diagbot.entity.Ex;
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugRegisterTestVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @Ex(name="药品代码")
+    @Excel(name="药品代码")
+    private String drugCode;
+
+    @Ex(name="注册名称")
+    private String name;
+
+    @Ex(name="英文名称")
+    private String enName;
+
+    @Ex(name="商品名称")
+    private String tradeName;
+
+    @Ex(name="注册剂型")
+    private String form;
+
+    @Ex(name="注册规格")
+    private String specification;
+
+    @Ex(name="最小包装数量")
+    @Excel(name="最小包装数量")
+    private String minPackQuantity;
+
+    @Ex(name="最小包装单位")
+    private String minPackUnit;
+
+    @Ex(name="药品企业")
+    private String company;
+
+    @Ex(name="批准文号")
+    private String approval;
+
+    @Ex(name="药品本位码")
+    private String standardCode;
+
+    @Ex(name="甲乙类")
+    @Excel(name="甲乙类")
+    private String insuranceType;
+
+    @Ex(name="医保备注")
+    @Excel(name="医保备注")
+    private String insuranceRemrk;
+
+    @Ex(name="药品类别")
+    private String drugType;
+
+    @Ex(name="药品通用名")
+    private String drugName;
+
+}

+ 24 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlDrugSearchVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品注册名搜索药品通用名
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugSearchVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 搜索名
+     */
+    private String name;
+}

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

@@ -0,0 +1,26 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 药品通用名和注册名映射表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlDrugVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    // 药品类别(0:西药,1:中成药)
+    private Integer drug;
+
+    // // 药品注册名Id列表
+    // private List<Long> registerIdList = Lists.newLinkedList();
+
+}

+ 83 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlLisVO.java

@@ -0,0 +1,83 @@
+package com.diagbot.vo;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+;
+
+/**
+ * <p>
+ * 化验表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-11
+ */
+@Data
+public class KlLisVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 最小值
+     */
+    private Double minValue;
+
+    /**
+     * 最大值
+     */
+    private Double maxValue;
+
+    /**
+     * 类型(0:范围内;1:范围外)
+     */
+    private Integer type;
+
+    /**
+     * 单位概念id
+     */
+
+    private String unit;
+
+    /**
+     * 检查标本
+     */
+    private String checkSpecimen;
+
+    /**
+     * 检查方法
+     */
+    private String checkMethod;
+
+    /**
+     * 影响因素
+     */
+    private String influenceFac;
+
+    /**
+     * 临床意义
+     */
+    private String clinicalSig;
+
+    /**
+     * 定性(阴、阳性)
+     */
+    private String qualitative;
+
+    /**
+     * 所属类别
+     */
+    private String category;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 38 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlOperationVO.java

@@ -0,0 +1,38 @@
+package com.diagbot.vo;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+;
+
+/**
+ * <p>
+ * 手术表
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlOperationVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 手术级别(0,1,2,3,4)
+     */
+    private Integer operationLevel;
+
+    /**
+     * 手术操作码
+     */
+    private String operationCode;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 68 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlPacsVO.java

@@ -0,0 +1,68 @@
+package com.diagbot.vo;
+
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+;
+
+/**
+ * <p>
+ * 辅检表
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlPacsVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 检查方法
+     */
+    private String checkMethod;
+
+    /**
+     * 项目定义
+     */
+    private String definition;
+
+    /**
+     * 检查目的
+     */
+    private String checkObjective;
+
+    /**
+     * 检查技术
+     */
+    private String checkSkillful;
+
+    /**
+     * 禁忌症和局限性
+     */
+    private String condLimit;
+
+    /**
+     * 适应症
+     */
+    private String interventional;
+
+    /**
+     * 危急标识(0:不危急,1:危急)
+     */
+    private Integer emergencySign;
+
+    /**
+     * 检查前准备
+     */
+    private String checkPrepare;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 93 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlSymptomVO.java

@@ -0,0 +1,93 @@
+package com.diagbot.vo;
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+/**
+ * <p>
+ * 症状扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-12
+ */
+@Data
+public class KlSymptomVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 阳性症状(0:否,1:是)
+     */
+    private Integer isPositive;
+
+    /**
+     * 英文名称
+     */
+    private String enName;
+
+    /**
+     * 定义
+     */
+    private String definition;
+
+    /**
+     * 中西医症状(0:通用,1:西,2:中)
+     */
+    private Integer chWestern;
+
+    /**
+     * 缓解因素
+     */
+    private String mitigatingFac;
+
+    /**
+     * 加重因素
+     */
+    private String aggravateFac;
+
+    /**
+     * 症状起因
+     */
+    private String cause;
+
+    /**
+     * 常见疾病
+     */
+    private String commonDis;
+
+    /**
+     * 预防措施
+     */
+    private String preMeasures;
+
+    /**
+     * 饮食禁忌
+     */
+    private String foodProhibition;
+
+    /**
+     * 通俗解释
+     */
+    private String commonExplain;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    // 科室列表
+    private List<Long> deptList = Lists.newLinkedList();
+
+    // 发病部位
+    private List<Long> partList = Lists.newLinkedList();
+
+    // 常见伴随症状
+    private List<Long> conSymptomList = Lists.newLinkedList();
+
+    // 性质
+    private List<Long> natureList = Lists.newLinkedList();
+}

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlTcmDiseaseVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 中医疾病表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+@Data
+public class KlTcmDiseaseVO implements Serializable {
+
+    /**
+     * 编码
+     */
+    private String code;
+}

+ 22 - 0
cdssman-service/src/main/java/com/diagbot/vo/KlTcmSyndromeVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.io.Serializable;
+
+/**
+ * <p>
+ * 中医证候表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2021-05-28
+ */
+@Data
+public class KlTcmSyndromeVO implements Serializable {
+
+    /**
+     * 编码
+     */
+    private String code;
+}

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

@@ -0,0 +1,45 @@
+package com.diagbot.vo;
+
+
+import com.google.common.collect.Lists;
+import lombok.Data;
+
+import java.io.Serializable;
+import java.util.List;
+
+;
+
+/**
+ * <p>
+ * 手术表
+ * </p>
+ *
+ * @author kwz
+ * @since 2021-05-11
+ */
+@Data
+public class KlVitalResultVO implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 不适宜人群
+     */
+    private String suitablePopNo;
+
+    /**
+     * 操作方法
+     */
+    private String checkMethod;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+    // 科室列表
+    private List<Long> deptList = Lists.newLinkedList();
+
+    // 发病部位
+    private List<Long> partList = Lists.newLinkedList();
+}

+ 27 - 0
cdssman-service/src/main/java/com/diagbot/vo/SearchVO.java

@@ -0,0 +1,27 @@
+package com.diagbot.vo;
+
+import com.google.common.collect.Lists;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import javax.validation.constraints.NotNull;
+import java.util.List;
+
+/**
+ * @author zhoutg
+ * @date 2021/3/10
+ * @time 12:57
+ */
+@Data
+public class SearchVO {
+
+    @ApiModelProperty(value="名称")
+    private String name;
+
+    @ApiModelProperty(value="词性id")
+    @NotNull(message ="请输入搜索词的词性" )
+    private Integer libType;
+
+    @ApiModelProperty(value="需要排除的概念id集合")
+    private List<Long> excludedConceptIds = Lists.newArrayList();
+}

+ 122 - 4
cdssman-service/src/main/java/com/diagbot/web/KlConceptController.java

@@ -10,17 +10,15 @@ import com.diagbot.dto.KlConceptInfoDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.enums.StatusEnum;
 import com.diagbot.facade.KlConceptFacade;
-import com.diagbot.vo.GetAllForRelationVO;
 import com.diagbot.vo.KlConceptAllVO;
 import com.diagbot.vo.KlConceptClearVO;
 import com.diagbot.vo.KlConceptInfoVO;
 import com.diagbot.vo.KlConceptSatarOrdisaVO;
 import com.diagbot.vo.KlConceptSaveVO;
-import com.diagbot.vo.KlRuleSatartOrdisaVO;
+import com.diagbot.vo.SearchVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.transaction.annotation.Transactional;
 import org.springframework.web.bind.annotation.PostMapping;
 import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
@@ -58,13 +56,122 @@ public class KlConceptController {
     public RespDTO<KlConceptAllDTO> getConceptInfoAll(@RequestBody @Valid KlConceptAllVO klConceptAllVO) {
         return RespDTO.onSuc(klConceptFacade.getConceptAlls(klConceptAllVO));
     }
-    @ApiOperation(value = "新增和修改基础术语详情[by:wangfeng]")
+
+    @ApiOperation(value = "新增和修改基础术语详情[by:wangfeng]",
+            notes = "conceptId:术语Id\n" +
+                    "libId:libId\n" +
+                    "spell:拼音\n" +
+                    "synonymName:同义词名称\n" +
+                    "isConcept:是否标准词,1:是,0:否\n" +
+                    "sexType:性别\n" +
+                    "minAge:最小年龄\n" +
+                    "maxAge:最大年龄\n" +
+                    "remark:备注\n" +
+                    "klConceptSub:同义词列表\n" +
+
+                    "<br>" +
+                    "【klDiseaseVO:疾病扩展信息】\n" +
+                    "icd10Code:ICD10编号\n" +
+                    "course:病程\n" +
+                    "inducement:诱因\n" +
+                    "foodProhibition:饮食禁忌\n" +
+                    "hazard:危险因素\n" +
+                    "healing:治愈性\n" +
+                    "pernicious:危害性\n" +
+                    "clinicType:临床分类\n" +
+                    "vulArea:好发地区\n" +
+                    "vulCrowd:好发人群\n" +
+                    "incidence:发病率\n" +
+                    "isInfect:是否传染(0:否,1:是)\n" +
+                    "complication:并发症\n" +
+                    "pathogeny:病因\n" +
+                    "disType:疾病分型\n" +
+                    "chWestern:中西医疾病(0:通用,1:西,2:中)\n" +
+                    "isCommonDis:是否常见病(0:否,1:是)\n" +
+                    "isHeredity:是否遗传(0:否,1:是)\n" +
+                    "nameSimple:简称\n" +
+                    "enNameSimple:英文简称\n" +
+                    "enName:英文名称\n" +
+                    "tumorCellType:肿瘤细胞类型\n" +
+                    "morphology:形态学分类代码\n" +
+                    "deptList:科室列表\n" +
+                    "partList:部位列表\n" +
+                    "systemTypeList:疾病系统分类列表\n" +
+
+                    "<br>" +
+                    "【klDrugVO:药品通用名扩展】\n" +
+                    "drug:药品类别(0:西药,1:中成药)\n" +
+
+                    "<br>" +
+                    "【klSymptomVO:症状扩展信息】\n" +
+                    "isPositive:阳性症状(0:否,1:是)\n" +
+                    "enName:英文名称\n" +
+                    "definition:定义\n" +
+                    "chWestern:中西医症状(0:通用,1:西,2:中)\n" +
+                    "mitigatingFac:缓解因素\n" +
+                    "aggravateFac:加重因素\n" +
+                    "cause:症状起因\n" +
+                    "commonDis:常见疾病\n" +
+                    "preMeasures:预防措施\n" +
+                    "foodProhibition:饮食禁忌\n" +
+                    "commonExplain:通俗解释\n" +
+                    "deptList:科室列表\n" +
+                    "partList:发病部位列表\n" +
+                    "conSymptomList:常见伴随症状列表\n" +
+                    "natureList:性质列表\n" +
+
+                    "<br>" +
+                    "【klLisVO:化验扩展信息】\n" +
+                    "minValue:最小值\n" +
+                    "maxValue:最大值\n" +
+                    "type:类型(0:范围内;1:范围外)\n" +
+                    "unit:单位概念id\n" +
+                    "checkSpecimen:检查标本\n" +
+                    "checkMethod:检查方法\n" +
+                    "influenceFac:影响因素\n" +
+                    "clinicalSig:临床意义\n" +
+                    "qualitative:定性(阴、阳性)\n" +
+                    "category:所属类别\n" +
+                    "enName:英文名称\n" +
+
+                    "<br>" +
+                    "【klPacsVO:辅检扩展信息】\n" +
+                    "checkMethod:检查方法\n" +
+                    "definition:项目定义\n" +
+                    "checkObjective:检查目的\n" +
+                    "checkSkillful:检查技术\n" +
+                    "condLimit:禁忌症和局限性\n" +
+                    "interventional:适应症\n" +
+                    "emergencySign:危急标识(0:不危急,1:危急)\n" +
+                    "checkPrepare:检查前准备\n" +
+
+                    "<br>" +
+                    "【klOperationVO:手术扩展信息】\n" +
+                    "operationLevel:手术级别(0,1,2,3,4)\n" +
+                    "operationCode:手术操作码\n" +
+
+                    "<br>" +
+                    "【klVitalResultVO:体征结果扩展信息】\n" +
+                    "suitablePopNo:不适宜人群\n" +
+                    "checkMethod:操作方法\n" +
+                    "deptList:科室列表\n" +
+                    "partList:发病部位\n" +
+
+                    "<br>" +
+                    "【klTcmDiseaseVO:中医疾病扩展信息】\n" +
+                    "code:编码\n" +
+
+                    "<br>" +
+                    "【klTcmSyndromeVO:中医症候扩展信息】\n" +
+                    "code:编码\n"
+                     )
     @PostMapping("/saveConceptInfo")
     @SysLogger("saveConceptInfo")
     @DSTransactional
     public RespDTO<Boolean> saveConceptInfos(@RequestBody @Valid KlConceptSaveVO klConceptSaveVO) {
         return RespDTO.onSuc(klConceptFacade.saveConceptInfo(klConceptSaveVO));
     }
+
     @ApiOperation(value = "删除同义词[by:wangfeng]")
     @PostMapping("/clearConceptInfo")
     @SysLogger("clearConceptInfo")
@@ -85,4 +192,15 @@ public class KlConceptController {
     public RespDTO<Boolean> startRuleInfos(@RequestBody @Valid KlConceptSatarOrdisaVO klConceptSatarOrdisaVO) {
         return RespDTO.onSuc(klConceptFacade.startOrDisableRule(klConceptSatarOrdisaVO,StatusEnum.Enable.getKey()));
     }
+
+    @ApiOperation(value = "根据类型和名称查找术语,名称可为空[by:zhoutg]",
+            notes = "name: 术语的名称<br>" +
+                    "libType: 术语的词性<br>" +
+                    "excludedConceptIds: 需要排除的概念id集合")
+    @PostMapping("/search")
+    @SysLogger("search")
+    public RespDTO<GetAllForRelationDTO> search(@RequestBody SearchVO SearchVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = klConceptFacade.searchConceptByNameAndLibType(SearchVO);
+        return RespDTO.onSuc(getAllForRelationDTOS);
+    }
 }

+ 118 - 0
cdssman-service/src/main/java/com/diagbot/web/KlDrugRegisterController.java

@@ -0,0 +1,118 @@
+package com.diagbot.web;
+
+
+import com.baomidou.dynamic.datasource.annotation.DSTransactional;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.KlConceptSimDTO;
+import com.diagbot.dto.KlDrugRegisterDTO;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.KlDrugRegisterFacade;
+import com.diagbot.vo.KlDrugRegisterDelVO;
+import com.diagbot.vo.KlDrugRegisterGetVO;
+import com.diagbot.vo.KlDrugRegisterPageVO;
+import com.diagbot.vo.KlDrugRegisterSaveVO;
+import com.diagbot.vo.KlDrugSearchVO;
+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 java.util.List;
+
+/**
+ * <p>
+ * 标签基础表 前端控制器
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2018-11-23
+ */
+@RestController
+@RequestMapping("/klDrugRegister")
+@SuppressWarnings("unchecked")
+@Api(value = "注册药品相关API", tags = { "注册药品相关API" })
+public class KlDrugRegisterController {
+
+    @Autowired
+    KlDrugRegisterFacade klDrugRegisterFacade;
+
+    @ApiOperation(value = "新增或更新[by:zhoutg]",
+            notes = "id:主键\n" +
+                    "drugCode:药品代码\n" +
+                    "name:注册名称\n" +
+                    "enName:英文名称\n" +
+                    "tradeName:商品名称\n" +
+                    "form:药品剂型\n" +
+                    "specification:注册规格\n" +
+                    "minPackQuantity:最小包装数量\n" +
+                    "minPackUnit:最小包装单位\n" +
+                    "company:药品企业\n" +
+                    "approval:批准文号\n" +
+                    "standardCode:药品本位码\n" +
+                    "insuranceType:医保类型\n" +
+                    "insuranceRemrk:医保备注\n" +
+                    "drugType:药品类别\n" +
+                    "remark:备注\n" +
+                    "drugConceptId:药品通用名Id")
+    @PostMapping("/saveOrUpdate")
+    @SysLogger("saveOrUpdate")
+    @DSTransactional
+    public RespDTO<Boolean> saveOrUpdate(@RequestBody KlDrugRegisterSaveVO klDrugRegisterSaveVO) {
+        klDrugRegisterFacade.saveOrUpdate(klDrugRegisterSaveVO);
+        return RespDTO.onSuc(true);
+    }
+
+    @ApiOperation(value = "分页[by:zhoutg]",
+            notes = "name:注册名称| 商品名称\n" +
+                    "form:药品剂型\n" +
+                    "company:药品企业\n" +
+                    "insuranceType:医保类型\n" +
+                    "drugName:药品通用名")
+    @PostMapping("/getPage")
+    @SysLogger("getPage")
+    public RespDTO<IPage<KlDrugRegisterDTO>> getPage(@RequestBody KlDrugRegisterPageVO klDrugRegisterPageVO) {
+        IPage<KlDrugRegisterDTO> data = klDrugRegisterFacade.getPageFac(klDrugRegisterPageVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "删除[by:zhoutg]",
+            notes = "id:主键")
+    @PostMapping("/delete")
+    @SysLogger("delete")
+    @DSTransactional
+    public RespDTO<Boolean> delete(@RequestBody KlDrugRegisterDelVO klDrugRegisterDelVO) {
+        klDrugRegisterFacade.deleteByIdFac(klDrugRegisterDelVO);
+        return RespDTO.onSuc(true);
+    }
+
+    @ApiOperation(value = "根据参数获取数据[by:zhoutg]",
+            notes = "id: 主键")
+    @PostMapping("/getByParam")
+    public RespDTO<KlDrugRegisterDTO> getByParam(@RequestBody KlDrugRegisterGetVO klDrugRegisterGetVO) {
+        KlDrugRegisterDTO data = klDrugRegisterFacade.getByParam(klDrugRegisterGetVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "药品注册名检索药品通用名,已经关联的需要过滤[by:zhoutg]",
+            notes = "name: 检索名")
+    @PostMapping("/searchDrug")
+    public RespDTO<List<KlConceptSimDTO>> searchDrug(@RequestBody KlDrugSearchVO klDrugSearchVO) {
+        List<KlConceptSimDTO> data = klDrugRegisterFacade.searchDrugFac(klDrugSearchVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "注册药品导入[by:zhoutg]",
+            notes = "")
+    @PostMapping("/importRegister")
+    @DSTransactional
+    public void importRegister(@RequestParam("file") MultipartFile file, HttpServletResponse response) {
+        klDrugRegisterFacade.importRegister(file, response);
+    }
+}

+ 31 - 12
cdssman-service/src/main/resources/mapper/KlConceptMapper.xml

@@ -15,6 +15,7 @@
         <result column="lib_type" property="libType"/>
         <result column="status" property="status"/>
     </resultMap>
+
     <select id="getConceptPage"
             parameterType="com.diagbot.vo.KlConceptInfoVO" resultType="com.diagbot.dto.KlConceptInfoDTO">
         SELECT
@@ -55,6 +56,7 @@
         GROUP BY a.concept_id
         ORDER BY b.status DESC ,b.gmt_modified DESC
     </select>
+
     <select id="getConceptAll" resultType="com.diagbot.dto.KlConceptAllDTO">
         SELECT
         a.concept_id AS conceptId,
@@ -70,26 +72,14 @@
         f.sex_type AS sexType,
         f.min_age AS minAge,
         f.max_age AS maxAge,
-        g.min_value AS minVal,
-        g.max_value AS maxVal,
-        g.unit AS unit,
-        g.type AS scopeType,
-        h.dept_id AS deptId,
-        h.icd10_code AS icdCode,
-        dr.drug ,
         a.remark
         FROM
         kl_library_info a
         INNER JOIN kl_concept b
         ON b.id = a.concept_id
-        INNER JOIN kl_concept c
-        ON c.id = a.concept_id
         INNER JOIN kl_lexicon d
         ON b.lib_type = d.code
         LEFT JOIN kl_concept_common f ON f.concept_id = a.concept_id
-        LEFT JOIN kl_lis g ON g.concept_id = a.concept_id
-        LEFT JOIN kl_disease h ON h.concept_id = a.concept_id
-        LEFT JOIN kl_drug  dr ON dr.concept_id = a.concept_id
         WHERE a.is_deleted = 'N'
         AND b.is_deleted = 'N'
         AND d.is_deleted = 'N'
@@ -130,4 +120,33 @@
         </if>
         ORDER BY b.status DESC ,b.gmt_modified DESC,b.id DESC
     </select>
+
+    <select id="getRelationConcept" parameterType="com.diagbot.vo.ConceptRelationVO" resultType="com.diagbot.dto.KlConceptSimDTO">
+        SELECT
+            t.id, t.lib_name, t.lib_type
+        FROM
+            kl_concept a,
+            kl_relation b,
+            kl_relation_order c,
+            kl_concept t
+        WHERE
+            a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND c.is_deleted = 'N'
+        AND t.is_deleted = 'N'
+        AND t.`status` = 1
+        <if test="conceptId!=null and conceptId!=''">
+            AND a.id = #{conceptId}
+        </if>
+        <if test="relationList != null and relationList.size() > 0">
+            and b.relation_id in
+            <foreach collection="relationList" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND a.id = b.start_id
+        AND b.id = c.t_relation_id
+        AND b.end_id = t.id
+        order by b.relation_id, c.order_no
+    </select>
 </mapper>

+ 33 - 10
cdssman-service/src/main/resources/mapper/KlDiseaseMapper.xml

@@ -4,17 +4,40 @@
 
     <!-- 通用查询映射结果 -->
     <resultMap id="BaseResultMap" type="com.diagbot.entity.KlDisease">
-        <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="dept_id" property="deptId"/>
-        <result column="icd10_code" property="icd10Code"/>
-        <result column="remark" property="remark"/>
+        <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="dept_id" property="deptId" />
+        <result column="icd10_code" property="icd10Code" />
+        <result column="course" property="course" />
+        <result column="inducement" property="inducement" />
+        <result column="food_prohibition" property="foodProhibition" />
+        <result column="hazard" property="hazard" />
+        <result column="healing" property="healing" />
+        <result column="pernicious" property="pernicious" />
+        <result column="clinic_type" property="clinicType" />
+        <result column="vul_area" property="vulArea" />
+        <result column="vul_crowd" property="vulCrowd" />
+        <result column="incidence" property="incidence" />
+        <result column="is_infect" property="isInfect" />
+        <result column="complication" property="complication" />
+        <result column="pathogeny" property="pathogeny" />
+        <result column="dis_type" property="disType" />
+        <result column="ch_western" property="chWestern" />
+        <result column="is_common_dis" property="isCommonDis" />
+        <result column="is_heredity" property="isHeredity" />
+        <result column="name_simple" property="nameSimple" />
+        <result column="en_name_simple" property="enNameSimple" />
+        <result column="en_name" property="enName" />
+        <result column="morphology" property="morphology" />
+        <result column="tumor_cell_type" property="tumorCellType" />
+        <result column="remark" property="remark" />
     </resultMap>
+
     <select id="getDiseasePage" resultType="com.diagbot.dto.DiseasePageDTO">
         SELECT
         a.id,

+ 19 - 0
cdssman-service/src/main/resources/mapper/KlDrugMappingMapper.xml

@@ -0,0 +1,19 @@
+<?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.KlDrugMappingMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlDrugMapping">
+        <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="drug_concept" property="drugConcept" />
+        <result column="register_id" property="registerId" />
+        <result column="oder_no" property="orderNo" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

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


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.