kongwz před 4 roky
rodič
revize
66ef9f75f5

+ 2 - 1
cdssman-service/src/main/java/com/diagbot/dto/DiseaseDetailDTO.java

@@ -4,6 +4,7 @@ import lombok.Getter;
 import lombok.Setter;
 
 import java.io.Serializable;
+import java.util.ArrayList;
 import java.util.List;
 
 /**
@@ -16,5 +17,5 @@ import java.util.List;
 public class DiseaseDetailDTO implements Serializable {
     private Long sid;
     private String disName;
-    List<DiseaseSubDetailDTO> datas;
+    List<DiseaseSubDetailDTO> datas = new ArrayList<>();
 }

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

@@ -0,0 +1,19 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author kwz
+ * @date 2021/3/11
+ * @time 14:37
+ */
+@Setter
+@Getter
+public class DiseaseTreeDetailDTO {
+    private List<List<String>> types;
+
+    private DiseaseDetailDTO diseaseDetailDTO;
+}

+ 60 - 0
cdssman-service/src/main/java/com/diagbot/enums/DiseaseRelationTypeEnum.java

@@ -0,0 +1,60 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @author kongwz
+ * @Description: 关系对应lib_type
+ * @date 2018年10月11日 下午3:33:22
+ */
+
+public enum DiseaseRelationTypeEnum implements KeyedNamed {
+
+    mainSymptom(501, "100&501&103"),
+    ciSymptom(502, "100&502&103"),
+    vitalResult(503, "100&503&104"),
+    lisItem(504, "100&504&107"),
+    pacsItem(505, "100&505&109,110"),
+    disMedicine(506, "100&506&101"),
+    disOperator(507, "100&507&106"),
+    disDifferentDis(508, "100&508&100");
+
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    DiseaseRelationTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static DiseaseRelationTypeEnum getEnum(int key) {
+        for (DiseaseRelationTypeEnum item : DiseaseRelationTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        DiseaseRelationTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+
+}

+ 68 - 29
cdssman-service/src/main/java/com/diagbot/facade/KlDiseaseFacade.java

@@ -2,17 +2,19 @@ package com.diagbot.facade;
 
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.baomidou.mybatisplus.core.metadata.IPage;
-import com.diagbot.dto.DiseaseAllDetailDTO;
-import com.diagbot.dto.DiseaseDetailDTO;
-import com.diagbot.dto.DiseasePageDTO;
-import com.diagbot.dto.DiseaseSubDetailDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlLexiconRelationship;
+import com.diagbot.enums.DiseaseRelationTypeEnum;
+import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.RelationLibTypeEnum;
 import com.diagbot.service.KlDiseaseService;
 import com.diagbot.service.KlLexiconRelationshipService;
 import com.diagbot.service.impl.KlDiseaseServiceImpl;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.DiseaseDeleteVO;
 import com.diagbot.vo.DiseasePageVO;
 import com.diagbot.vo.GetDiseaseDetailVO;
 import com.google.common.collect.Maps;
@@ -21,10 +23,7 @@ import org.apache.commons.compress.utils.Lists;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
-import java.util.Arrays;
-import java.util.LinkedHashMap;
-import java.util.List;
-import java.util.Map;
+import java.util.*;
 import java.util.stream.Collectors;
 
 /**
@@ -36,9 +35,12 @@ import java.util.stream.Collectors;
 public class KlDiseaseFacade extends KlDiseaseServiceImpl {
     @Autowired
     KlLexiconRelationshipFacade klLexiconRelationshipFacade;
+    @Autowired
+    KlConceptFacade klConceptFacade;
 
     /**
      * 诊断依据分页查询
+     *
      * @param klConceptInfoVO
      * @return
      */
@@ -46,18 +48,46 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
         return this.getDiseasePage(klConceptInfoVO);
     }
 
+    public List<KlConcept> getDiseaseAll(DiseaseDeleteVO diseaseDeleteVO) {
+        List<KlConcept> klConceptss = new ArrayList<>();
+        List<DiseasePageDTO> diseasePage = this.getDiseaseAlls(diseaseDeleteVO);
+        List<String> diseases = diseasePage.stream().map(x -> x.getDisName()).collect(Collectors.toList());
+        String disName = diseaseDeleteVO.getDisName();
+        if (StringUtil.isNotEmpty(disName)) {
+            List<KlConcept> klConcepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .like("lib_name", disName.trim())
+                    .eq("lib_type", 100));
+            Map<String, List<KlConcept>> libNameMap = EntityUtil.makeEntityListMap(klConcepts, "libName");
+            if (MapUtils.isNotEmpty(libNameMap) && ListUtil.isNotEmpty(diseases)) {
+                libNameMap.forEach((x, y) -> {
+                    if (!diseases.contains(x)) {
+                        klConceptss.addAll(y);
+                    }
+                });
+            }
+        }
+
+        return klConceptss;
+    }
+
 
     /**
      * 某个诊断依据的具体数据
+     *
      * @param getDiseaseDetailVO
      * @return
      */
-    public DiseaseDetailDTO getDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
-        DiseaseDetailDTO diseaseDetailDTO = new DiseaseDetailDTO();
-
-        List<Integer> types = getDiseaseDetailVO.getTypes();
-        Map<Integer, String> type_nameMap = klLexiconRelationshipFacade.getTypeNameMap(getDiseaseDetailVO);
+    public DiseaseTreeDetailDTO getDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
+        List<Integer> relations = Arrays.asList(501,502,503,504,505,506,507,508);
+        List<KlLexiconRelationship> klLexiconRelationships = klLexiconRelationshipFacade.list(new QueryWrapper<KlLexiconRelationship>()
+                .eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("code", relations)
+        .orderByAsc("code"));
+        Map<Integer, String> relation_name = klLexiconRelationships.stream().collect(Collectors.toMap(KlLexiconRelationship::getCode, KlLexiconRelationship::getName, (key1, key2) -> key2));
+        DiseaseTreeDetailDTO diseaseTreeDetailDTO = new DiseaseTreeDetailDTO();
 
+        DiseaseDetailDTO diseaseDetailDTO = new DiseaseDetailDTO();
         Map<Integer, DiseaseSubDetailDTO> disSubDetailMap = Maps.newHashMap();
         List<DiseaseAllDetailDTO> diseaseAllDetailDTOS = this.getDiseaseDetail(getDiseaseDetailVO);
         if (ListUtil.isNotEmpty(diseaseAllDetailDTOS)) {
@@ -95,24 +125,33 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
             });
         }
         List<DiseaseSubDetailDTO> datas = Lists.newArrayList();
-        if (MapUtils.isNotEmpty(disSubDetailMap)) {
-            for (Integer type : types) {
-                if (disSubDetailMap.containsKey(type)) {
-                    DiseaseSubDetailDTO diseaseSubDetailDTO = disSubDetailMap.get(type);
-                    diseaseSubDetailDTO.setLibType(Arrays.stream(RelationLibTypeEnum.getName(type).split("&")).map(x ->Integer.parseInt(x)).collect(Collectors.toList()));
-                    datas.add(diseaseSubDetailDTO);
-                } else {
-                    DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
-                    diseaseSubDetailDTO.setRid(type);
-                    diseaseSubDetailDTO.setLibType(Arrays.stream(RelationLibTypeEnum.getName(type).split("&")).map(x ->Integer.parseInt(x)).collect(Collectors.toList()));
-                    diseaseSubDetailDTO.setRname(type_nameMap.get(type));
-                    datas.add(diseaseSubDetailDTO);
-                }
+        List<List<String>> types = Lists.newArrayList();
+        relation_name.forEach((x,y)->{
+            List<String> split = Arrays.asList(DiseaseRelationTypeEnum.getName(x).split("&"));
+            List<Integer> collect = Arrays.stream(RelationLibTypeEnum.getName(x).split("&")).map(z -> Integer.parseInt(z)).collect(Collectors.toList());
+            types.add(split);
+            if(disSubDetailMap.containsKey(x)){
+                DiseaseSubDetailDTO diseaseSubDetailDTO = disSubDetailMap.get(x);
+                diseaseSubDetailDTO.setLibType(collect);
+                datas.add(diseaseSubDetailDTO);
+            }else {
+                DiseaseSubDetailDTO diseaseSubDetailDTO = new DiseaseSubDetailDTO();
+                diseaseSubDetailDTO.setLibType(collect);
+                diseaseSubDetailDTO.setRname(relation_name.get(x));
+                diseaseSubDetailDTO.setRid(x);
+                datas.add(diseaseSubDetailDTO);
             }
-
-        }
+        });
+        /*if (MapUtils.isNotEmpty(disSubDetailMap)) {
+            disSubDetailMap.forEach((x, y) -> {
+                y.setLibType(Arrays.stream(RelationLibTypeEnum.getName(x).split("&")).map(z -> Integer.parseInt(z)).collect(Collectors.toList()));
+                datas.add(y);
+            });
+        }*/
         diseaseDetailDTO.setDatas(datas);
-        return diseaseDetailDTO;
+        diseaseTreeDetailDTO.setDiseaseDetailDTO(diseaseDetailDTO);
+        diseaseTreeDetailDTO.setTypes(types);
+        return diseaseTreeDetailDTO;
     }
 
 

+ 0 - 12
cdssman-service/src/main/java/com/diagbot/facade/KlLexiconRelationshipFacade.java

@@ -40,16 +40,4 @@ public class KlLexiconRelationshipFacade extends KlLexiconRelationshipServiceImp
         });
         return iPage;
     }
-
-    public Map<Integer,String> getTypeNameMap(GetDiseaseDetailVO getDiseaseDetailVO){
-        Map<Integer,String> typeNameMap = Maps.newHashMap();
-        List<Integer> types = getDiseaseDetailVO.getTypes();
-        List<KlLexiconRelationship> klLexiconRelationships = this.list(new QueryWrapper<KlLexiconRelationship>()
-                .in("code", types)
-                .eq("is_deleted", "N"));
-        if (ListUtil.isNotEmpty(klLexiconRelationships)) {
-            typeNameMap = klLexiconRelationships.stream().collect(Collectors.toMap(KlLexiconRelationship::getCode, KlLexiconRelationship::getName));
-        }
-        return typeNameMap;
-    }
 }

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

@@ -30,7 +30,7 @@ public class KlRelationFacade extends KlRelationServiceImpl {
         pList.add(new Long[] { 406L, 600L, 305L, 600L, 103L });//症状类别
         pList.add(new Long[] { 407L, 600L, 306L, 600L, 106L });//手术和操作类别
         pList.add(new Long[] { 408L, 600L, 107L, 600L, 108L });//实验室检查类别
-        pList.add(new Long[] { 409L, 600L, 109L, 600L, 110L });//实验室检查类别
+        pList.add(new Long[] { 409L, 600L, 109L, 600L, 110L });//辅助检查类别
 
         Integer index = treeVO.getType() - 1;
         List<Long> types = new ArrayList<>();

+ 32 - 137
cdssman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java

@@ -4,30 +4,22 @@ import com.baomidou.dynamic.datasource.annotation.DS;
 import com.baomidou.dynamic.datasource.annotation.DSTransactional;
 import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
 import com.diagbot.client.UserServiceClient;
-import com.diagbot.dto.RelationNameDTO;
-import com.diagbot.dto.RelationNamesDTO;
-import com.diagbot.dto.RelationNodeDTO;
-import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.*;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.entity.KlRelationOrder;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.LexiconEnum;
-import com.diagbot.exception.CommonErrorCode;
-import com.diagbot.exception.CommonException;
 import com.diagbot.service.KlRelationService;
 import com.diagbot.service.impl.KlRelationOrderServiceImpl;
 import com.diagbot.service.impl.KlRelationServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
-import com.diagbot.util.UserUtils;
-import com.diagbot.vo.KlRelationNodeVO;
-import com.diagbot.vo.KlRelationSaveVO;
-import com.diagbot.vo.KlRelationVO;
-import com.diagbot.vo.RelationContactDetailVO;
+import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
 import org.apache.commons.collections4.MapUtils;
+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;
@@ -58,6 +50,8 @@ public class RelationContactFacade extends KlRelationServiceImpl {
     @Autowired
     @Qualifier("klRelationOrderServiceImpl")
     private KlRelationOrderServiceImpl klRelationOrderServiceImpl;
+    @Autowired
+    KlDiseaseFacade klDiseaseFacade;
 
     public RelationNodeDTO relationContactDetail(RelationContactDetailVO relationContactDetailVO) {
         RelationNodeDTO relationNodeDTO = new RelationNodeDTO();
@@ -75,14 +69,6 @@ public class RelationContactFacade extends KlRelationServiceImpl {
         return relationNodeDTO;
     }
 
-    public RelationNodeDTO relationContactDetail(KlRelationVO klRelationVO) {
-        RelationNamesDTO relationNamesDTO = new RelationNamesDTO();
-        RelationNodeDTO relationNodeDTO = new RelationNodeDTO();
-        List<RelationNameDTO> relationNameDTOs_first = this.getRelationNameDTOs(klRelationVO.getConceptIds(), klRelationVO.getRelationId());
-
-
-        return relationNodeDTO;
-    }
 
     /**
      * 处理关系节点-查询事件
@@ -329,136 +315,45 @@ public class RelationContactFacade extends KlRelationServiceImpl {
         return relationList;
     }
 
+
+
     /**
-     * 医学术语关联维护/医学术语多层关联维护-添加或者编辑
-     *
-     * @param klRelationNodeVO
+     * 删除某个诊断依据
+     * @param diseaseDeleteVO
      * @return
      */
-    public Boolean addRelation(KlRelationNodeVO klRelationNodeVO) {
-        if (klRelationNodeVO.getConceptId() == null) {
-            throw new CommonException(CommonErrorCode.RPC_ERROR, "conceptId必填!");
-        }
-        if (ListUtil.isEmpty(klRelationNodeVO.getNodeList())) {
-            throw new CommonException(CommonErrorCode.RPC_ERROR, "nodeList不能为空!");
-        }
-
-        //先删除
-        List<Long> relationIdList = repairRelationDataForDelBeforeAdd(klRelationNodeVO.getConceptId(), klRelationNodeVO);
-        if (ListUtil.isNotEmpty(relationIdList)) {
-            removeByIds(relationIdList);
-
+    @DS("med")
+    @DSTransactional
+    public Boolean deleteRelation(DiseaseDeleteVO diseaseDeleteVO) {
+        String disName = diseaseDeleteVO.getDisName();
+        if(StringUtils.isNotBlank(disName)){
+            List<KlConcept> klConcepts = klConceptFacade.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .eq("lib_name", disName.trim())
+                    .eq("lib_type", 100));
+            List<Long> ids = klConcepts.stream().map(x -> x.getId()).collect(Collectors.toList());
+            List<Integer> relations = Lists.newArrayList(501, 502, 503, 504, 505, 506, 507, 508);
+            List<KlRelation> klRelations = this.list(new QueryWrapper<KlRelation>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+                    .in(ListUtil.isNotEmpty(ids),"start_id", ids)
+                    .in(ListUtil.isNotEmpty(relations),"relation_id", relations));
+            List<Long> kids = klRelations.stream().map(x -> x.getId()).collect(Collectors.toList());
+            this.removeByIds(kids);
             QueryWrapper<KlRelationOrder> relationOrderQe = new QueryWrapper<>();
-            relationOrderQe.in("t_relation_id", relationIdList);
+            relationOrderQe.in(ListUtil.isNotEmpty(kids),"t_relation_id", kids);
             klRelationOrderFacade.remove(relationOrderQe);
         }
 
-        //后添加
-        List<List<KlRelation>> relationGroupList = repairRelationDataForAdd(klRelationNodeVO);
-        String currentUser = UserUtils.getCurrentPrincipleID();
-        Date now = DateUtil.now();
-        List<KlRelation> relationList = Lists.newArrayList();
-        relationGroupList.forEach(i -> {
-            i.forEach(j -> {
-                j.setCreator(currentUser);
-                j.setGmtCreate(now);
-                j.setModifier(currentUser);
-                j.setGmtModified(now);
-                relationList.add(j);
-            });
-        });
-        klRelationService.saveOrUpdateBatch(relationList);
-
-        if (klRelationNodeVO.getIsOrderBy() == 1) {
-            List<KlRelationOrder> relationOrderList = Lists.newArrayList();
-            relationGroupList.forEach(i -> {
-                int orderNo = 0;
-                for (KlRelation j : i) {
-                    orderNo++;
-                    KlRelationOrder relationOrder = new KlRelationOrder();
-                    relationOrder.setOrderNo(orderNo);
-                    relationOrder.settRelationId(j.getId());
-                    relationOrder.setGmtCreate(now);
-                    relationOrder.setGmtModified(now);
-                    relationOrder.setCreator(currentUser);
-                    relationOrder.setModifier(currentUser);
-                    relationOrderList.add(relationOrder);
-                }
-            });
-            klRelationOrderServiceImpl.saveBatch(relationOrderList);
-        }
-
         return true;
     }
 
     /**
-     * 处理关系节点-添加或者编辑前先删除掉
-     *
-     * @param conceptId        当前概念id
-     * @param klRelationNodeVO
+     * 新增诊断依据
+     * @param diseaseDeleteVO
      * @return
      */
-    private List<Long> repairRelationDataForDelBeforeAdd(Long conceptId, KlRelationNodeVO klRelationNodeVO) {
-        List<Long> relationIdList = Lists.newArrayList();
-        List<KlRelation> relationList = this.list(new QueryWrapper<KlRelation>()
-                .eq("start_id", conceptId)
-                .eq("relation_id", klRelationNodeVO != null && klRelationNodeVO.getSonRelationId() != null ?
-                        klRelationNodeVO.getSonRelationId() : -999999l));
-
-        if (ListUtil.isNotEmpty(relationList)) {
-            if (klRelationNodeVO != null && klRelationNodeVO.getSonTypeId() != null) {
-                List<Long> conceptIdList = klConceptFacade.getCompatibleTypeConceptIds(klRelationNodeVO.getSonTypeId(),
-                        relationList.stream().map(i -> i.getEndId()).collect(Collectors.toList()));
-                if (conceptIdList != null) {
-                    relationList = relationList.stream()
-                            .filter(i -> conceptIdList.contains(i.getEndId())).collect(Collectors.toList());
-                }
-            }
-
-            if (ListUtil.isNotEmpty(relationList)) {
-                relationIdList.addAll(relationList.stream().map(i -> i.getId()).collect(Collectors.toList()));
-
-                Map<Long, KlRelationNodeVO> conceptIdRnMap = Maps.newHashMap();
-                if (klRelationNodeVO != null && ListUtil.isNotEmpty(klRelationNodeVO.getNodeList())) {
-                    conceptIdRnMap = klRelationNodeVO.getNodeList()
-                            .stream().collect(Collectors.toMap(KlRelationNodeVO::getConceptId, i -> i));
-                }
-
-                for (KlRelation i : relationList) {
-                    relationIdList.addAll(repairRelationDataForDelBeforeAdd(i.getEndId(),
-                            conceptIdRnMap.get(i.getEndId())));
-                }
-            }
-        }
-        return relationIdList;
+    public List<KlConcept> addDisease(DiseaseDeleteVO diseaseDeleteVO) {
+        List<KlConcept> diseaseAll = klDiseaseFacade.getDiseaseAll(diseaseDeleteVO);
+        return diseaseAll;
     }
-
-    /**
-     * 处理关系节点-添加或者编辑事件
-     *
-     * @param klRelationNodeVO
-     * @return
-     */
-    private List<List<KlRelation>> repairRelationDataForAdd(KlRelationNodeVO klRelationNodeVO) {
-        List<List<KlRelation>> retList = Lists.newArrayList();
-
-        if (ListUtil.isNotEmpty(klRelationNodeVO.getNodeList())) {
-            List<KlRelation> relationList = Lists.newArrayList();
-            klRelationNodeVO.getNodeList().forEach(i -> {
-                KlRelation relation = new KlRelation();
-                relation.setStartId(klRelationNodeVO.getConceptId());
-                relation.setEndId(i.getConceptId());
-                relation.setRelationId(Integer.parseInt(String.valueOf(i.getRelationId())));
-                relationList.add(relation);
-
-                if (ListUtil.isNotEmpty(i.getNodeList())) {
-                    retList.addAll(repairRelationDataForAdd(i));
-                }
-            });
-            retList.add(relationList);
-        }
-
-        return retList;
-    }
-
 }

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

@@ -5,6 +5,7 @@ import com.diagbot.dto.DiseaseAllDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.entity.KlDisease;
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.vo.DiseaseDeleteVO;
 import com.diagbot.vo.DiseasePageVO;
 import com.diagbot.vo.GetDiseaseDetailVO;
 
@@ -21,5 +22,6 @@ import java.util.List;
 public interface KlDiseaseMapper extends BaseMapper<KlDisease> {
 
     IPage<DiseasePageDTO> getDiseasePage(DiseasePageVO klConceptInfoVO);
+    List<DiseasePageDTO> getDiseaseAll(DiseaseDeleteVO diseaseDeleteVO);
     List<DiseaseAllDetailDTO> getDiseaseAllDetaill(GetDiseaseDetailVO getDiseaseDetailVO);
 }

+ 3 - 0
cdssman-service/src/main/java/com/diagbot/service/KlDiseaseService.java

@@ -5,6 +5,7 @@ import com.diagbot.dto.DiseaseAllDetailDTO;
 import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.entity.KlDisease;
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.vo.DiseaseDeleteVO;
 import com.diagbot.vo.DiseasePageVO;
 import com.diagbot.vo.GetDiseaseDetailVO;
 
@@ -21,6 +22,8 @@ import java.util.List;
 public interface KlDiseaseService extends IService<KlDisease> {
     IPage<DiseasePageDTO> getDiseasePage(DiseasePageVO klConceptInfoVO);
 
+    List<DiseasePageDTO> getDiseaseAlls(DiseaseDeleteVO diseaseDeleteVO);
+
     List<DiseaseAllDetailDTO> getDiseaseDetail(GetDiseaseDetailVO getDiseaseDetailVO);
 }
 

+ 8 - 0
cdssman-service/src/main/java/com/diagbot/service/impl/KlDiseaseServiceImpl.java

@@ -8,6 +8,7 @@ import com.diagbot.entity.KlDisease;
 import com.diagbot.mapper.KlDiseaseMapper;
 import com.diagbot.service.KlDiseaseService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.vo.DiseaseDeleteVO;
 import com.diagbot.vo.DiseasePageVO;
 import com.diagbot.vo.GetDiseaseDetailVO;
 import org.springframework.stereotype.Service;
@@ -31,8 +32,15 @@ public class KlDiseaseServiceImpl extends ServiceImpl<KlDiseaseMapper, KlDisease
         return baseMapper.getDiseasePage(klConceptInfoVO);
     }
 
+    @Override
+    public List<DiseasePageDTO> getDiseaseAlls(DiseaseDeleteVO diseaseDeleteVO) {
+        return baseMapper.getDiseaseAll(diseaseDeleteVO);
+
+    }
+
     @Override
     public List<DiseaseAllDetailDTO> getDiseaseDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
         return baseMapper.getDiseaseAllDetaill(getDiseaseDetailVO);
     }
+
 }

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

@@ -0,0 +1,22 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotBlank;
+
+/**
+ * @author kwz
+ * @date 2021/3/11
+ * @time 11:14
+ */
+@Setter
+@Getter
+@ApiModel(value = "删除诊断依据入参")
+public class DiseaseDeleteVO {
+    @ApiModelProperty(value = "诊断名称")
+    @NotBlank(message = "请输入搜索名称")
+    private String disName;
+}

+ 5 - 4
cdssman-service/src/main/java/com/diagbot/vo/GetDiseaseDetailVO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
 import javax.validation.constraints.NotNull;
 import java.io.Serializable;
 import java.util.List;
@@ -17,8 +18,8 @@ import java.util.List;
 @Setter
 @Getter
 public class GetDiseaseDetailVO implements Serializable {
-    @ApiModelProperty(value = "诊断依据主键")
-    @NotNull(message="诊断依据id不能为空")
-    private Long id;
-    private List<Integer> types;
+    @ApiModelProperty(value = "疾病名")
+    @NotBlank(message="疾病名不能为空")
+    private String disName;
+//    private List<Integer> types;
 }

+ 2 - 0
cdssman-service/src/main/java/com/diagbot/vo/SearchConceptVO.java

@@ -4,6 +4,7 @@ import io.swagger.annotations.ApiModelProperty;
 import lombok.Getter;
 import lombok.Setter;
 
+import javax.validation.constraints.NotBlank;
 import java.util.List;
 
 /**
@@ -15,6 +16,7 @@ import java.util.List;
 @Getter
 public class SearchConceptVO {
     @ApiModelProperty(value="名称")
+    @NotBlank(message = "请输入搜索名称")
     private String name;
     /**
      * 词性id

+ 34 - 15
cdssman-service/src/main/java/com/diagbot/web/KlDiseaseController.java

@@ -3,17 +3,12 @@ package com.diagbot.web;
 
 import com.baomidou.mybatisplus.core.metadata.IPage;
 import com.diagbot.annotation.SysLogger;
-import com.diagbot.dto.DiseaseDetailDTO;
-import com.diagbot.dto.DiseasePageDTO;
-import com.diagbot.dto.GetAllForRelationDTO;
-import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.*;
+import com.diagbot.entity.KlConcept;
 import com.diagbot.facade.KlConceptFacade;
 import com.diagbot.facade.KlDiseaseFacade;
 import com.diagbot.facade.RelationContactFacade;
-import com.diagbot.vo.DiseasePageVO;
-import com.diagbot.vo.GetDiseaseDetailVO;
-import com.diagbot.vo.KlRelationSaveVO;
-import com.diagbot.vo.SearchConceptVO;
+import com.diagbot.vo.*;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -46,19 +41,25 @@ public class KlDiseaseController {
     @Autowired
     RelationContactFacade relationContactFacade;
 
-    @ApiOperation(value = "分页获取基础术语维护列表[by:kongwz]")
+    @ApiOperation(value = "分页获取诊断依据列表[by:kongwz]",
+    notes = "disName: 要查询的疾病(可模糊查询)<br>"+
+            "current: 当前页 <br>"+
+            "size: 每页条数")
     @PostMapping("/getDiseasePage")
     @SysLogger("getDiseasePage")
-    public RespDTO<IPage<DiseasePageDTO>> getDiseasePages(@RequestBody DiseasePageVO klConceptInfoVO) {
-        return RespDTO.onSuc(klDiseaseFacade.getDiseasePageAll(klConceptInfoVO));
+    public RespDTO<IPage<DiseasePageDTO>> getDiseasePages(@RequestBody DiseasePageVO diseasePageVO) {
+        return RespDTO.onSuc(klDiseaseFacade.getDiseasePageAll(diseasePageVO));
     }
 
-    @ApiOperation(value = "诊断依据-获取详情[by:kongwz]")
+    @ApiOperation(value = "诊断依据-获取详情[by:kongwz]",
+            notes = "disName: 诊断名称<br>"+
+    "types: 关系类型(501:疾病相关主症状 502:疾病相关次症状 503:疾病相关体格检查结果 504:疾病相关实验室检查套餐" +
+                    "505:疾病相关辅助检查项目,506:疾病相关药物治疗,507:疾病相关手术治疗,508:疾病相关鉴别诊断)")
     @PostMapping("/getDetail")
     @SysLogger("getDetail")
-    public RespDTO<DiseaseDetailDTO> getDetail(@Valid @RequestBody GetDiseaseDetailVO getDiseaseDetailVO) {
-        DiseaseDetailDTO diagnoseDetailSaveDTO = klDiseaseFacade.getDetail(getDiseaseDetailVO);
-        return RespDTO.onSuc(diagnoseDetailSaveDTO);
+    public RespDTO<DiseaseTreeDetailDTO> getDetail(@Valid @RequestBody GetDiseaseDetailVO getDiseaseDetailVO) {
+        DiseaseTreeDetailDTO diseaseTreeDetailDTO = klDiseaseFacade.getDetail(getDiseaseDetailVO);
+        return RespDTO.onSuc(diseaseTreeDetailDTO);
     }
 
     @ApiOperation(value = "查询诊断依据相关的类型术语[by:kongwz]")
@@ -77,4 +78,22 @@ public class KlDiseaseController {
         return RespDTO.onSuc(aBoolean);
     }
 
+    @ApiOperation(value = "诊断依据删除[by:kongwz]",
+            notes = "disName: 选中的诊断名字 <br>")
+    @PostMapping("/delete")
+    @SysLogger("delete")
+    public RespDTO<Boolean> delete(@Valid @RequestBody DiseaseDeleteVO diseaseDeleteVO) {
+        Boolean aBoolean = relationContactFacade.deleteRelation(diseaseDeleteVO);
+        return RespDTO.onSuc(aBoolean);
+    }
+
+    @ApiOperation(value = "新增疾病[by:kongwz]",
+            notes = "disName: 选中的诊断名字 <br>")
+    @PostMapping("/add")
+    @SysLogger("add")
+    public RespDTO<KlConcept> add(@Valid @RequestBody DiseaseDeleteVO diseaseDeleteVO) {
+        List<KlConcept> klConcepts = relationContactFacade.addDisease(diseaseDeleteVO);
+        return RespDTO.onSuc(klConcepts);
+    }
+
 }

+ 60 - 18
cdssman-service/src/main/resources/mapper/KlDiseaseMapper.xml

@@ -16,25 +16,67 @@
     </resultMap>
     <select id="getDiseasePage" resultType="com.diagbot.dto.DiseasePageDTO">
         SELECT
-        res.id,
-        res.lib_name as disName,
-        res.modifier,
-        res.gmt_modified as gmtModified
+        a.id,
+        b.lib_name as disName,
+        a.modifier,
+        a.gmt_modified as gmtModified
         FROM
-        (
+        `kl_relation` a,
+        kl_concept b
+        WHERE
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.`status` = 1
+        AND b.`status` = 1
+        AND a.start_id = b.id
+        AND b.lib_type=100
+        AND a.relation_id IN (
+        501,
+        502,
+        503,
+        504,
+        505,
+        506,
+        507,
+        508
+        )
+        GROUP BY b.lib_name
+        ORDER BY
+        b.gmt_modified DESC
+    </select>
+
+    <select id="getDiseaseAll" resultType="com.diagbot.dto.DiseasePageDTO">
         SELECT
-        kd.*, kc.lib_name
+        a.id,
+        b.lib_name as disName,
+        a.modifier,
+        a.gmt_modified as gmtModified
         FROM
-        kl_disease kd,
-        kl_concept kc
+        `kl_relation` a,
+        kl_concept b
         WHERE
-        kd.concept_id = kc.id
-        AND kc.is_deleted = 'N'
-        AND kd.is_deleted = 'N'
-        ) res
+        a.is_deleted = 'N'
+        AND b.is_deleted = 'N'
+        AND a.`status` = 1
+        AND b.`status` = 1
+        AND a.start_id = b.id
         <if test="disName != null and disName != ''">
-            WHERE UPPER(res.lib_name) LIKE concat('%',UPPER(trim(#{disName})) ,'%' )
+            AND UPPER(b.lib_name) LIKE concat('%',UPPER(trim(#{disName})) ,'%' )
         </if>
+        AND b.lib_type=100
+        AND a.relation_id IN (
+        501,
+        502,
+        503,
+        504,
+        505,
+        506,
+        507,
+        508
+        )
+        GROUP BY b.lib_name
+        ORDER BY
+        b.gmt_modified DESC
     </select>
 
     <select id="getDiseaseAllDetaill" resultType="com.diagbot.dto.DiseaseAllDetailDTO">
@@ -56,16 +98,16 @@
         AND klc1.id = kr.start_id
         AND klc2.id = kr.end_id
         AND kr.relation_id = klex. CODE
-        <if test="id != null">
-            AND kr.start_id = #{id}
+        <if test="disName != null and disName !=''">
+            AND klc1.lib_name = #{disName}
         </if>
-        <if test="types!=null and types.size() > 0">
+        <!--<if test="types!=null and types.size() > 0">
             AND kr.relation_id IN
             <foreach collection="types" item="item" index="index" open="(" separator="," close=")">
                 #{item}
             </foreach>
-        </if>
-
+        </if>-->
+        AND kr.relation_id IN (501,502,503,504,505,506,507,508)
         ORDER BY
         rid,kro.order_no
     </select>