소스 검색

分诊对接接口

zhoutg 5 년 전
부모
커밋
aebf32e310
29개의 변경된 파일614개의 추가작업 그리고 31개의 파일을 삭제
  1. 22 0
      aipt-service/src/main/java/com/diagbot/dto/ConceptRetrievalExtDTO.java
  2. 16 0
      aipt-service/src/main/java/com/diagbot/dto/UsualDTO.java
  3. 78 0
      aipt-service/src/main/java/com/diagbot/entity/KlSymptom.java
  4. 2 1
      aipt-service/src/main/java/com/diagbot/entity/Symptom.java
  5. 64 0
      aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  6. 10 0
      aipt-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java
  7. 21 11
      aipt-service/src/main/java/com/diagbot/facade/PartFacade.java
  8. 16 0
      aipt-service/src/main/java/com/diagbot/mapper/KlSymptomMapper.java
  9. 16 0
      aipt-service/src/main/java/com/diagbot/service/KlSymptomService.java
  10. 20 0
      aipt-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java
  11. 26 0
      aipt-service/src/main/java/com/diagbot/web/ConceptController.java
  12. 16 0
      docs/031.20200320智能分诊邵逸夫对接/init_med.sql
  13. 78 0
      knowledgeman-service/src/main/java/com/diagbot/entity/KlSymptom.java
  14. 24 1
      knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java
  15. 10 0
      knowledgeman-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java
  16. 16 0
      knowledgeman-service/src/main/java/com/diagbot/mapper/KlSymptomMapper.java
  17. 16 0
      knowledgeman-service/src/main/java/com/diagbot/service/KlSymptomService.java
  18. 20 0
      knowledgeman-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java
  19. 11 8
      knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java
  20. 22 0
      knowledgeman-service/src/main/java/com/diagbot/vo/SymptomExtVO.java
  21. 19 0
      knowledgeman-service/src/main/resources/mapper/KlSymptomMapper.xml
  22. 4 4
      knowledgeman-service/src/test/java/com/diagbot/CodeGeneration.java
  23. 22 0
      triage-service/src/main/java/com/diagbot/client/AiptServiceClient.java
  24. 14 0
      triage-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java
  25. 22 0
      triage-service/src/main/java/com/diagbot/dto/ConceptRetrievalExtDTO.java
  26. 2 0
      triage-service/src/main/java/com/diagbot/dto/SymptomSearchDTO.java
  27. 18 0
      triage-service/src/main/java/com/diagbot/dto/UsualDTO.java
  28. 2 1
      triage-service/src/main/java/com/diagbot/entity/Symptom.java
  29. 7 5
      triage-service/src/main/java/com/diagbot/facade/SymptomFacade.java

+ 22 - 0
aipt-service/src/main/java/com/diagbot/dto/ConceptRetrievalExtDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/5/10 10:20
+ */
+@Getter
+@Setter
+public class ConceptRetrievalExtDTO {
+    private Long selfId;//本身概念id
+    private String selfName;//本身名称
+    private Long parentId;//父级id
+    private String parentName;//父级名称
+    private String sameName;//同义词名称
+    private Long showType;//显示类型(1本体,0同义词)
+    private String description;
+    private String explains;
+}

+ 16 - 0
aipt-service/src/main/java/com/diagbot/dto/UsualDTO.java

@@ -0,0 +1,16 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 概念出参基础实体类
+ * @author: zhoutg
+ * @time: 2019/5/7 9:44
+ */
+@Getter
+@Setter
+public class UsualDTO extends ConceptBaseDTO{
+    private String description; // 描述
+    private String explains;   // 详细说明
+}

+ 78 - 0
aipt-service/src/main/java/com/diagbot/entity/KlSymptom.java

@@ -0,0 +1,78 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 症状扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+@TableName("kl_symptom")
+@Getter
+@Setter
+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;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 详细阐述
+     */
+    private String explains;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 2 - 1
aipt-service/src/main/java/com/diagbot/entity/Symptom.java

@@ -19,5 +19,6 @@ public class Symptom extends ConceptBaseDTO {
 
     @JsonIgnore
     private Long partConceptId;
-    private String desc = ""; //简述
+    private String description;
+    private String explains;
 }

+ 64 - 0
aipt-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -4,9 +4,12 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.config.CryptConfiguer;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.entity.Concept;
+import com.diagbot.entity.KlSymptom;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -50,6 +53,8 @@ public class ConceptFacade extends ConceptServiceImpl {
     ConceptDetailFacade conceptDetailFacade;
     @Autowired
     CryptConfiguer configuer;
+    @Autowired
+    KlSymptomFacade klSymptomFacade;
 
     /**
      * 验证存在并且获取概念基本信息
@@ -283,6 +288,36 @@ public class ConceptFacade extends ConceptServiceImpl {
         return list;
     }
 
+
+    /**
+     * 获取常用标签包含通俗解释和详细说明
+     *
+     * @param conceptUsualVO
+     * @return
+     */
+    public List<UsualDTO> getConceptExtUsual(ConceptUsualVO conceptUsualVO) {
+        List<UsualDTO> res = new ArrayList<>();
+        List<ConceptBaseDTO> list = getConceptUsual(conceptUsualVO);
+        if (ListUtil.isNotEmpty(list)) {
+            List<KlSymptom> klSymptomList = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("concept_id", list.stream().map(r -> r.getConceptId()).collect(Collectors.toList()))
+            );
+            Map<Long, KlSymptom> map = klSymptomList.stream().collect(Collectors.toMap(r -> r.getConceptId(), r -> r));
+            for (ConceptBaseDTO conceptBaseDTO : list) {
+                UsualDTO usualDTO = new UsualDTO();
+                BeanUtil.copyProperties(conceptBaseDTO, usualDTO);
+                if (map != null && map.get(conceptBaseDTO.getConceptId()) != null) {
+                    usualDTO.setDescription(map.get(conceptBaseDTO.getConceptId()).getDescription());
+                    usualDTO.setExplains(map.get(conceptBaseDTO.getConceptId()).getExplains());
+                }
+                res.add(usualDTO);
+            }
+        }
+        return res;
+    }
+
+
     /**
      * 概念id检索
      *
@@ -375,6 +410,35 @@ public class ConceptFacade extends ConceptServiceImpl {
     }
 
 
+    /**
+     * 概念id检索,附带通俗解释和详细说明
+     *
+     * @param retrievalVO
+     * @urn
+     */
+    public List<ConceptRetrievalExtDTO> retrivelConceptInfoExt(RetrievalVO retrievalVO) {
+        List<ConceptRetrievalExtDTO> res = new ArrayList<>();
+        List<ConceptRetrievalDTO> list = retrivelConceptInfo(retrievalVO);
+        if (ListUtil.isNotEmpty(list)) {
+            List<KlSymptom> klSymptomList = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in("concept_id", list.stream().map(r -> r.getSelfId()).collect(Collectors.toList()))
+            );
+            Map<Long, KlSymptom> map = klSymptomList.stream().collect(Collectors.toMap(r -> r.getConceptId(), r -> r));
+            for (ConceptRetrievalDTO conceptBaseDTO : list) {
+                ConceptRetrievalExtDTO conceptRetrievalExtDTO = new ConceptRetrievalExtDTO();
+                BeanUtil.copyProperties(conceptBaseDTO, conceptRetrievalExtDTO);
+                if (map != null && conceptBaseDTO.getSelfId() != null && map.get(conceptBaseDTO.getSelfId()) != null) {
+                    conceptRetrievalExtDTO.setDescription(map.get(conceptBaseDTO.getSelfId()).getDescription());
+                    conceptRetrievalExtDTO.setExplains(map.get(conceptBaseDTO.getSelfId()).getExplains());
+                }
+                res.add(conceptRetrievalExtDTO);
+            }
+        }
+        return res;
+    }
+
+
     /**
      * 静态知识标签检索
      *

+ 10 - 0
aipt-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java

@@ -0,0 +1,10 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlSymptomServiceImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class KlSymptomFacade extends KlSymptomServiceImpl {
+
+
+}

+ 21 - 11
aipt-service/src/main/java/com/diagbot/facade/PartFacade.java

@@ -6,7 +6,7 @@ import com.diagbot.dto.ConceptWithOrderRes;
 import com.diagbot.dto.PartDTO;
 import com.diagbot.dto.PartSymptomDTO;
 import com.diagbot.entity.Concept;
-import com.diagbot.entity.ConceptDetail;
+import com.diagbot.entity.KlSymptom;
 import com.diagbot.entity.Symptom;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.IsDeleteEnum;
@@ -21,9 +21,8 @@ import com.diagbot.vo.PartSymptomVO;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.lang.reflect.Field;
 import java.util.ArrayList;
-import java.util.Arrays;
+import java.util.Collections;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -42,6 +41,8 @@ public class PartFacade {
     ConceptDetailFacade conceptDetailFacade;
     @Autowired
     private CryptConfiguer cryptConfiguer;
+    @Autowired
+    KlSymptomFacade klSymptomFacade;
 
     /**
      * 根据已选部位返回对应的症状
@@ -79,6 +80,14 @@ public class PartFacade {
                 .in("lib_name", partList)
         );
 
+        // 正常数据有2条,将全身区域放到最下面
+        String areaStr = cryptConfiguer.cryptFlag ?
+                CryptUtil.encrypt_char( "全身区域") : "全身区域";
+        if (ListUtil.isNotEmpty(conceptList) && conceptList.size() == 2
+                && areaStr.equals(conceptList.get(0).getLibName())) {
+            Collections.reverse(conceptList);
+        }
+
         // 设置部位区域
         for (Concept c : conceptList) {
             PartSymptomDTO partSymptomDTO = new PartSymptomDTO();
@@ -124,14 +133,14 @@ public class PartFacade {
         List<ConceptWithOrderRes> symptomList = conceptFacade.getConceptWithOrder(wrapper);
         Map<Long, List<ConceptWithOrderRes>> symptomMap = EntityUtil.makeEntityListMap(symptomList, "startId");
 
-        // 获取症状的简述信息
-        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(
-                new QueryWrapper<ConceptDetail>()
-                        .eq("is_deleted", IsDeleteEnum.N.getKey())
-                        .in("concept_id", symptomList.stream().map(row -> row.getEndId()).distinct().collect(Collectors.toList()))
-                        .apply("find_in_set({0},position)", 7));
-        Map<Long, String> descMap = conceptDetailList.stream().collect(Collectors.toMap(row -> row.getConceptId(), row -> row.getText()));
 
+        // TODO 获取症状的简述信息
+        List<KlSymptom> klSymptomList = klSymptomFacade.list(new QueryWrapper<KlSymptom>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("concept_id",
+                        symptomList.stream().map(row -> row.getEndId()).distinct().collect(Collectors.toList()))
+        );
+        Map<Long, KlSymptom> descMap = klSymptomList.stream().collect(Collectors.toMap(row -> row.getConceptId(), row -> row));
 
         // 设置部位下的症状
         for (PartSymptomDTO partSymptomDTO : res) {
@@ -146,7 +155,8 @@ public class PartFacade {
                         bean.setName(conceptWithOrderRes.getEndName());
                         bean.setPartConceptId(conceptWithOrderRes.getStartId());
                         if (descMap.get(conceptWithOrderRes.getEndId()) != null) {
-                            bean.setDesc(descMap.get(conceptWithOrderRes.getEndId()));
+                            bean.setDescription(descMap.get(conceptWithOrderRes.getEndId()).getDescription());
+                            bean.setExplains(descMap.get(conceptWithOrderRes.getEndId()).getExplains());
                         }
                         symptoms.add(bean);
                     }

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

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

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

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

+ 20 - 0
aipt-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+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 2020-03-20
+ */
+@Service
+public class KlSymptomServiceImpl extends ServiceImpl<KlSymptomMapper, KlSymptom> implements KlSymptomService {
+
+}

+ 26 - 0
aipt-service/src/main/java/com/diagbot/web/ConceptController.java

@@ -4,8 +4,10 @@ package com.diagbot.web;
 import com.diagbot.annotation.SysLogger;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.RetrievalDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.entity.Concept;
 import com.diagbot.facade.ConceptFacade;
 import com.diagbot.util.ParamConvertUtil;
@@ -57,6 +59,18 @@ public class ConceptController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "知识库标准化-常用标签——根据科室获取常用标签包含通俗解释和详细说明[by:zhoutg]",
+            notes = "deptName:科室名称<br>" +
+                    "age:年龄<br>" +
+                    "sexType: 性别<br>" +
+                    "type:类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断),必填<br>")
+    @PostMapping("/getConceptExtUsual")
+    @SysLogger("getConceptExtUsual")
+    public RespDTO<List<UsualDTO>> getConceptExtUsual(@RequestBody @Valid ConceptUsualVO conceptUsualVO) {
+        List<UsualDTO> data = conceptFacade.getConceptExtUsual(conceptUsualVO);
+        return RespDTO.onSuc(data);
+    }
+
     /**
      * 根据概念Id列表获取概念列表Map
      *
@@ -121,6 +135,18 @@ public class ConceptController {
         return RespDTO.onSuc(data);
     }
 
+    @ApiOperation(value = "知识库标准化-标签检索,附带通俗解释和详细说明[by:zhoutg]",
+            notes = "type:类型(1:症状 3:其他史 4:查体,5:化验 6:辅检 7:诊断),必填<br>" +
+                    "age:年龄,必填<br>" +
+                    "inputStr:检索内容,必填<br>" +
+                    "sexType:性别,必填<br>" +
+                    "inputIds:需要去重的id<br>")
+    @PostMapping("/retrivelConceptInfoExt")
+    @SysLogger("retrivelConceptInfoExt")
+    public RespDTO<List<ConceptRetrievalExtDTO>> retrivelConceptInfoExt(@RequestBody @Valid RetrievalVO retrievalVO) {
+        List<ConceptRetrievalExtDTO> data = conceptFacade.retrivelConceptInfoExt(retrievalVO);
+        return RespDTO.onSuc(data);
+    }
 
     /**
      * 根据名称和类型获取概念列表Map

+ 16 - 0
docs/031.20200320智能分诊邵逸夫对接/init_med.sql

@@ -0,0 +1,16 @@
+use `med`;
+drop table if exists `kl_symptom`;
+CREATE TABLE `kl_symptom` (
+  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',
+  `is_deleted` char(1) NOT NULL DEFAULT 'N' COMMENT '是否删除,N:未删除,Y:删除',
+  `gmt_create` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录创建时间',
+  `gmt_modified` datetime NOT NULL DEFAULT '1970-01-01 12:00:00' COMMENT '记录修改时间,如果时间是1970年则表示纪录未修改',
+  `creator` varchar(20) NOT NULL DEFAULT '0' COMMENT '创建人,0表示无创建人值',
+  `modifier` varchar(20) NOT NULL DEFAULT '0' COMMENT '修改人,如果为0则表示纪录未修改',
+  `concept_id` bigint(20) NOT NULL COMMENT '术语概念id',
+  `description` varchar(500) NOT NULL DEFAULT '' COMMENT '描述',
+  `explains` text NOT NULL DEFAULT '' COMMENT '详细阐述',
+  `remark` varchar(255) DEFAULT NULL COMMENT '备注',
+  PRIMARY KEY (`id`),
+  UNIQUE KEY `CONCEPT_ID_INDEX` (`concept_id`) USING BTREE COMMENT '概念id全表唯一'
+) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8 COMMENT='症状扩展表';

+ 78 - 0
knowledgeman-service/src/main/java/com/diagbot/entity/KlSymptom.java

@@ -0,0 +1,78 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 症状扩展表
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+@TableName("kl_symptom")
+@Getter
+@Setter
+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;
+
+    /**
+     * 描述
+     */
+    private String description;
+
+    /**
+     * 详细阐述
+     */
+    private String explains;
+
+    /**
+     * 备注
+     */
+    private String remark;
+
+}

+ 24 - 1
knowledgeman-service/src/main/java/com/diagbot/facade/ConceptFacade.java

@@ -21,6 +21,7 @@ import com.diagbot.entity.Disease;
 import com.diagbot.entity.Lexicon;
 import com.diagbot.entity.LibraryInfo;
 import com.diagbot.entity.Relation;
+import com.diagbot.entity.KlSymptom;
 import com.diagbot.entity.wrapper.ConceptWrapper;
 import com.diagbot.enums.DiseaseClassifyEnum;
 import com.diagbot.enums.IsDeleteEnum;
@@ -60,6 +61,7 @@ import com.diagbot.vo.IndexLexiconVO;
 import com.diagbot.vo.IndexVO;
 import com.diagbot.vo.KLQuestionVO;
 import com.diagbot.vo.RemoveConceptInfoVO;
+import com.diagbot.vo.SymptomExtVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.lang.time.DateFormatUtils;
@@ -122,6 +124,8 @@ public class ConceptFacade extends ConceptServiceImpl {
     private CryptConfiguer cryptConfiguer;
     @Autowired
     private IcssManRpcFacade icssManRpcFacade;
+    @Autowired
+    private KlSymptomFacade klSymptomFacade;
 
     /**
      * 获取所有化验公表项
@@ -746,6 +750,7 @@ public class ConceptFacade extends ConceptServiceImpl {
             conceptCommonFacade.saveOrUpdate(conceptCommon);
         }
 
+        // 诊断扩展属性
         if (lexicon.getName().equals(LexiconTypeEnum.DIAGNOSIS.getName())) {
             QueryWrapper<Disease> diseaseQe = new QueryWrapper<>();
             diseaseQe.eq("concept_id", conceptId);
@@ -769,10 +774,28 @@ public class ConceptFacade extends ConceptServiceImpl {
             } else {
                 BeanUtil.copyProperties(addConceptInfoVO.getAddCptDiseaseExtVO(), disease);
             }
-
             diseaseFacade.saveOrUpdate(disease);
         }
 
+        // 症状扩展属性
+        if (lexicon.getName().equals(LexiconTypeEnum.SYMPTOM.getName())) {
+            KlSymptom klSymptom = klSymptomFacade.getOne(new QueryWrapper<KlSymptom>()
+                    .eq("concept_id", conceptId), false);
+            if (klSymptom == null) {
+                klSymptom = new KlSymptom();
+                klSymptom.setGmtCreate(now);
+                klSymptom.setCreator(currentUser);
+            }
+            klSymptom.setConceptId(conceptId);
+            klSymptom.setGmtModified(now);
+            klSymptom.setModifier(currentUser);
+            SymptomExtVO smpVo = addConceptInfoVO.getSymptomExtVO();
+            if (smpVo != null) {
+                klSymptom.setDescription(smpVo.getDescription());
+                klSymptom.setExplains(smpVo.getExplains());
+            }
+            klSymptomFacade.saveOrUpdate(klSymptom);
+        }
         return true;
     }
 

+ 10 - 0
knowledgeman-service/src/main/java/com/diagbot/facade/KlSymptomFacade.java

@@ -0,0 +1,10 @@
+package com.diagbot.facade;
+
+import com.diagbot.service.impl.KlSymptomServiceImpl;
+import org.springframework.stereotype.Component;
+
+@Component
+public class KlSymptomFacade extends KlSymptomServiceImpl {
+
+
+}

+ 16 - 0
knowledgeman-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 2020-03-20
+ */
+public interface KlSymptomMapper extends BaseMapper<KlSymptom> {
+
+}

+ 16 - 0
knowledgeman-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 2020-03-20
+ */
+public interface KlSymptomService extends IService<KlSymptom> {
+
+}

+ 20 - 0
knowledgeman-service/src/main/java/com/diagbot/service/impl/KlSymptomServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.KlSymptom;
+import com.diagbot.mapper.KlSymptomMapper;
+import com.diagbot.service.KlSymptomService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 症状扩展表 服务实现类
+ * </p>
+ *
+ * @author zhoutg
+ * @since 2020-03-20
+ */
+@Service
+public class KlSymptomServiceImpl extends ServiceImpl<KlSymptomMapper, KlSymptom> implements KlSymptomService {
+
+}

+ 11 - 8
knowledgeman-service/src/main/java/com/diagbot/vo/AddConceptInfoVO.java

@@ -1,20 +1,17 @@
 package com.diagbot.vo;
 
-import java.util.List;
-
-import javax.validation.constraints.NotBlank;
-import javax.validation.constraints.NotEmpty;
-
 import com.diagbot.annotation.CryptField;
-import org.hibernate.validator.constraints.Range;
-
 import com.diagbot.entity.Concept;
 import com.diagbot.entity.ConceptCommon;
 import com.diagbot.entity.LibraryInfo;
-
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
+import org.hibernate.validator.constraints.Range;
+
+import javax.validation.constraints.NotBlank;
+import javax.validation.constraints.NotEmpty;
+import java.util.List;
 
 /**
  * @Description
@@ -58,6 +55,12 @@ public class AddConceptInfoVO {
 	 */
 	@ApiModelProperty(value="诊断类型术语扩展")
 	private AddCptDiseaseExtVO addCptDiseaseExtVO;
+
+	/**
+	 * 症状扩展属性
+	 */
+	@ApiModelProperty(value="症状扩展属性")
+	private SymptomExtVO symptomExtVO;
 	
 	/**
      * 性别:1:男, 2:女, 3:通用

+ 22 - 0
knowledgeman-service/src/main/java/com/diagbot/vo/SymptomExtVO.java

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description 症状扩展表
+ * @author zhoutg
+ * @time 2019-03
+ */
+@Getter
+@Setter
+public class SymptomExtVO {
+
+	@ApiModelProperty(value="症状描述")
+    private String description;
+
+	@ApiModelProperty(value="详细阐述")
+    private String explains;
+	
+}

+ 19 - 0
knowledgeman-service/src/main/resources/mapper/KlSymptomMapper.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.KlSymptomMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.KlSymptom">
+        <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="description" property="description" />
+        <result column="explains" property="explains" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+</mapper>

+ 4 - 4
knowledgeman-service/src/test/java/com/diagbot/CodeGeneration.java

@@ -48,15 +48,15 @@ public class CodeGeneration {
         dsc.setDbType(DbType.MYSQL);
         dsc.setDriverName("com.mysql.cj.jdbc.Driver");
         dsc.setUsername("root");
-        dsc.setPassword("diagbot@20180822");
-        dsc.setUrl("jdbc:mysql://192.168.2.235:3306/med-man?useUnicode=true&characterEncoding=utf-8");
+        dsc.setPassword("lantone");
+        dsc.setUrl("jdbc:mysql://192.168.2.236:3306/med?useUnicode=true&characterEncoding=utf-8");
         mpg.setDataSource(dsc);
 
         // 策略配置
         StrategyConfig strategy = new StrategyConfig();
-        strategy.setTablePrefix(new String[] { "kl_" });// 此处可以修改为您的表前缀
+        strategy.setTablePrefix(new String[] { "" });// 此处可以修改为您的表前缀
         strategy.setNaming(NamingStrategy.underline_to_camel);// 表名生成策略
-        strategy.setInclude(new String[] { "kl_diagnose_question"}); // 需要生成的表
+        strategy.setInclude(new String[] { "kl_symptom"}); // 需要生成的表
 
         strategy.setSuperServiceClass(null);
         strategy.setSuperServiceImplClass(null);

+ 22 - 0
triage-service/src/main/java/com/diagbot/client/AiptServiceClient.java

@@ -5,8 +5,10 @@ import com.diagbot.biz.push.vo.SearchVO;
 import com.diagbot.client.hystrix.AiptServiceHystrix;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.PartSymptomDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.dto.VersionWrapperDTO;
 import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.PartSymptomVO;
@@ -39,6 +41,15 @@ public interface AiptServiceClient {
     @PostMapping(value = "/concept/getConceptUsual")
     RespDTO<List<ConceptBaseDTO>> getConceptUsual(@RequestBody @Valid ConceptUsualVO conceptUsualVO);
 
+    /**
+     * 获取常用标签附带通俗解释和详细说明
+     *
+     * @param conceptUsualVO
+     * @return
+     */
+    @PostMapping(value = "/concept/getConceptExtUsual")
+    RespDTO<List<UsualDTO>> getConceptExtUsual(@RequestBody @Valid ConceptUsualVO conceptUsualVO);
+
     /**
      * 标签检索
      *
@@ -48,6 +59,17 @@ public interface AiptServiceClient {
     @PostMapping("/concept/retrivelConceptInfo")
     RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@RequestBody @Valid RetrievalVO retrievalVO);
 
+
+    /**
+     * 标签检索(附带通俗解释和详细说明, retrivelConceptInfo这个作废)
+     *
+     * @param retrievalVO
+     * @return
+     */
+    @PostMapping("/concept/retrivelConceptInfoExt")
+    RespDTO<List<ConceptRetrievalExtDTO>> retrivelConceptInfoExt(@RequestBody @Valid RetrievalVO retrievalVO);
+
+
     @PostMapping(value = "/clinicaldata/processData")
     RespDTO<ResponseData> aiptData(@RequestBody SearchVO searchVO);
 

+ 14 - 0
triage-service/src/main/java/com/diagbot/client/hystrix/AiptServiceHystrix.java

@@ -5,8 +5,10 @@ import com.diagbot.biz.push.vo.SearchVO;
 import com.diagbot.client.AiptServiceClient;
 import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.PartSymptomDTO;
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.dto.VersionWrapperDTO;
 import com.diagbot.vo.ConceptUsualVO;
 import com.diagbot.vo.PartSymptomVO;
@@ -38,12 +40,24 @@ public class AiptServiceHystrix implements AiptServiceClient {
         return null;
     }
 
+    @Override
+    public RespDTO<List<UsualDTO>> getConceptExtUsual(@Valid ConceptUsualVO conceptUsualVO) {
+        log.error("【hystrix】调用{}异常", "getConceptExtUsual");
+        return null;
+    }
+
     @Override
     public RespDTO<List<ConceptRetrievalDTO>> retrivelConceptInfo(@Valid RetrievalVO retrievalVO) {
         log.error("【hystrix】调用{}异常", "retrivelConceptInfo");
         return null;
     }
 
+    @Override
+    public RespDTO<List<ConceptRetrievalExtDTO>> retrivelConceptInfoExt(@Valid RetrievalVO retrievalVO) {
+        log.error("【hystrix】调用{}异常", "retrivelConceptInfoExt");
+        return null;
+    }
+
     @Override
     public RespDTO<ResponseData> aiptData(SearchVO searchVO) {
         log.error("【hystrix】调用{}异常", "aiptData");

+ 22 - 0
triage-service/src/main/java/com/diagbot/dto/ConceptRetrievalExtDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @author: wangyu
+ * @time: 2019/5/10 10:20
+ */
+@Getter
+@Setter
+public class ConceptRetrievalExtDTO {
+    private Long selfId;//本身概念id
+    private String selfName;//本身名称
+    private Long parentId;//父级id
+    private String parentName;//父级名称
+    private String sameName;//同义词名称
+    private Long showType;//显示类型(1本体,0同义词)
+    private String description;
+    private String explains;
+}

+ 2 - 0
triage-service/src/main/java/com/diagbot/dto/SymptomSearchDTO.java

@@ -17,4 +17,6 @@ public class SymptomSearchDTO extends ConceptBaseDTO {
     private Long showType;
     //显示类型中文
     private String showTypeCn;
+    private String description; // 描述
+    private String explains;   // 详细说明
 }

+ 18 - 0
triage-service/src/main/java/com/diagbot/dto/UsualDTO.java

@@ -0,0 +1,18 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description: 概念出参基础实体类
+ * @author: gaodm
+ * @time: 2019/5/7 9:44
+ */
+@Getter
+@Setter
+public class UsualDTO {
+    private Long conceptId; // 概念id
+    private String name;    //概念名称
+    private String description; // 描述
+    private String explains;   // 详细说明
+}

+ 2 - 1
triage-service/src/main/java/com/diagbot/entity/Symptom.java

@@ -19,5 +19,6 @@ public class Symptom extends ConceptBaseDTO {
 
     @JsonIgnore
     private Long partConceptId;
-    private String desc = ""; //简述
+    private String description;
+    private String explains;
 }

+ 7 - 5
triage-service/src/main/java/com/diagbot/facade/SymptomFacade.java

@@ -1,10 +1,10 @@
 package com.diagbot.facade;
 
 import com.diagbot.client.AiptServiceClient;
-import com.diagbot.dto.ConceptBaseDTO;
-import com.diagbot.dto.ConceptRetrievalDTO;
+import com.diagbot.dto.ConceptRetrievalExtDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.dto.SymptomSearchDTO;
+import com.diagbot.dto.UsualDTO;
 import com.diagbot.entity.Symptom;
 import com.diagbot.enums.ShowTypeEnum;
 import com.diagbot.util.BeanUtil;
@@ -41,7 +41,7 @@ public class SymptomFacade {
         conceptUsualVO.setDeptName("全科");
         conceptUsualVO.setType(1);
         //从知识库获取常用标签
-        RespDTO<List<ConceptBaseDTO>> conceptBaseDTORespDTO = aiptServiceClient.getConceptUsual(conceptUsualVO);
+        RespDTO<List<UsualDTO>> conceptBaseDTORespDTO = aiptServiceClient.getConceptExtUsual(conceptUsualVO);
         RespDTOUtil.respNGDeal(conceptBaseDTORespDTO, "获取常用标签失败");
         List<Symptom> symptomList = BeanUtil.listCopyTo(conceptBaseDTORespDTO.data, Symptom.class);
         return symptomList;
@@ -61,12 +61,12 @@ public class SymptomFacade {
         retrievalVO.setInputStr(symptomSearchVO.getName());
         retrievalVO.setAge(symptomSearchVO.getAge());
         retrievalVO.setSexType(symptomSearchVO.getSexType());
-        RespDTO<List<ConceptRetrievalDTO>> condeptRerievalS = aiptServiceClient.retrivelConceptInfo(retrievalVO);
+        RespDTO<List<ConceptRetrievalExtDTO>> condeptRerievalS = aiptServiceClient.retrivelConceptInfoExt(retrievalVO);
         RespDTOUtil.respNGDeal(condeptRerievalS, "获取标签失败");
         List<SymptomSearchDTO> symptomList = new ArrayList<>();
         SymptomSearchDTO symptomSearchDTO = new SymptomSearchDTO();
         //封装
-        for (ConceptRetrievalDTO conceptRetrievalDTO : condeptRerievalS.data) {
+        for (ConceptRetrievalExtDTO conceptRetrievalDTO : condeptRerievalS.data) {
             symptomSearchDTO = new SymptomSearchDTO();
             symptomSearchDTO.setConceptId(conceptRetrievalDTO.getSelfId());
             symptomSearchDTO.setName(conceptRetrievalDTO.getSelfName());
@@ -75,6 +75,8 @@ public class SymptomFacade {
             }
             symptomSearchDTO.setShowType(conceptRetrievalDTO.getShowType());
             symptomSearchDTO.setShowTypeCn(ShowTypeEnum.getName(conceptRetrievalDTO.getShowType().intValue()));
+            symptomSearchDTO.setDescription(conceptRetrievalDTO.getDescription());
+            symptomSearchDTO.setExplains(conceptRetrievalDTO.getExplains());
             symptomList.add(symptomSearchDTO);
         }
         return symptomList;