Selaa lähdekoodia

诊断依据保存

kongwz 4 vuotta sitten
vanhempi
commit
08e1d28957

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

@@ -17,5 +17,6 @@ import java.util.List;
 public class DiseaseSubDetailDTO implements Serializable {
     private Integer rid;
     private String rname;
-    List<KlConcept> details;
+    private List<KlConcept> details;
+    private List<Integer> libType;
 }

+ 6 - 0
cdssman-service/src/main/java/com/diagbot/dto/GetAllForRelationDTO.java

@@ -24,6 +24,12 @@ public class GetAllForRelationDTO {
 	 */
 	@ApiModelProperty(value="概念名称")
 	private String conceptName;
+
+	/**
+	 * 概念id
+	 */
+	@ApiModelProperty(value="概念id")
+	private Integer libType;
 	
 	/**
 	 * 概念名称(类型)

+ 60 - 0
cdssman-service/src/main/java/com/diagbot/enums/RelationLibTypeEnum.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 RelationLibTypeEnum implements KeyedNamed {
+
+    mainSymptom(501, "103"),
+    ciSymptom(502, "103"),
+    vitalResult(503, "104"),
+    lisItem(504, "107"),
+    pacsItem(505, "109&110"),
+    disMedicine(506, "101"),
+    disOperator(507, "106"),
+    disDifferentDis(508, "100");
+
+
+    @Setter
+    private int key;
+
+    @Setter
+    private String name;
+
+    RelationLibTypeEnum(int key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static RelationLibTypeEnum getEnum(int key) {
+        for (RelationLibTypeEnum item : RelationLibTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(int key) {
+        RelationLibTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+
+
+}

+ 28 - 5
cdssman-service/src/main/java/com/diagbot/facade/KlConceptFacade.java

@@ -25,12 +25,9 @@ import com.diagbot.util.ListUtil;
 import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
-import com.diagbot.vo.GetAllForRelationVO;
-import com.diagbot.vo.KlConceptAllVO;
-import com.diagbot.vo.KlConceptInfoVO;
-import com.diagbot.vo.KlConceptSaveSubVO;
-import com.diagbot.vo.KlConceptSaveVO;
+import com.diagbot.vo.*;
 import com.google.common.collect.Lists;
+import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -283,6 +280,7 @@ public class KlConceptFacade extends KlConceptServiceImpl {
                     getAllForRelationDTO.setConceptId(x.getId());
                     getAllForRelationDTO.setConceptName(x.getLibName());
                     getAllForRelationDTO.setConceptNameType(String.valueOf(x.getLibType()));
+                    getAllForRelationDTO.setLibType(x.getLibType());
                     return getAllForRelationDTO;
                 }).collect(Collectors.toList());
             }
@@ -291,6 +289,31 @@ public class KlConceptFacade extends KlConceptServiceImpl {
         return retList;
     }
 
+    public List<GetAllForRelationDTO> searchConceptByNameAndLibType(SearchConceptVO searchConceptVO){
+        List<GetAllForRelationDTO> getAllForRelationDTOS = Lists.newArrayList();
+        String name = searchConceptVO.getName();
+        List<Integer> libTypes = searchConceptVO.getLibTypes();
+        List<Long> excludedConceptIds = searchConceptVO.getExcludedConceptIds();
+        if(StringUtils.isNotBlank(name) || ListUtil.isNotEmpty(libTypes) ){
+            List<KlConcept> conceptList = this.list(new QueryWrapper<KlConcept>()
+                    .eq("is_deleted", IsDeleteEnum.N.getKey())
+            .like(StringUtil.isNotBlank(name),"lib_name",name.trim())
+            .in(ListUtil.isNotEmpty(libTypes),"lib_type",libTypes)
+            .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
      *

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

@@ -8,6 +8,7 @@ import com.diagbot.dto.DiseasePageDTO;
 import com.diagbot.dto.DiseaseSubDetailDTO;
 import com.diagbot.entity.KlConcept;
 import com.diagbot.entity.KlLexiconRelationship;
+import com.diagbot.enums.RelationLibTypeEnum;
 import com.diagbot.service.KlDiseaseService;
 import com.diagbot.service.KlLexiconRelationshipService;
 import com.diagbot.service.impl.KlDiseaseServiceImpl;
@@ -20,6 +21,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;
@@ -35,11 +37,21 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
     @Autowired
     KlLexiconRelationshipFacade klLexiconRelationshipFacade;
 
+    /**
+     * 诊断依据分页查询
+     * @param klConceptInfoVO
+     * @return
+     */
     public IPage<DiseasePageDTO> getDiseasePageAll(DiseasePageVO klConceptInfoVO) {
         return this.getDiseasePage(klConceptInfoVO);
     }
 
 
+    /**
+     * 某个诊断依据的具体数据
+     * @param getDiseaseDetailVO
+     * @return
+     */
     public DiseaseDetailDTO getDetail(GetDiseaseDetailVO getDiseaseDetailVO) {
         DiseaseDetailDTO diseaseDetailDTO = new DiseaseDetailDTO();
 
@@ -86,10 +98,13 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
         if (MapUtils.isNotEmpty(disSubDetailMap)) {
             for (Integer type : types) {
                 if (disSubDetailMap.containsKey(type)) {
-                    datas.add(disSubDetailMap.get(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);
                 }
@@ -99,4 +114,7 @@ public class KlDiseaseFacade extends KlDiseaseServiceImpl {
         diseaseDetailDTO.setDatas(datas);
         return diseaseDetailDTO;
     }
+
+
 }
+

+ 83 - 14
cdssman-service/src/main/java/com/diagbot/facade/RelationContactFacade.java

@@ -3,9 +3,11 @@ package com.diagbot.facade;
 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.entity.KlConcept;
 import com.diagbot.entity.KlRelation;
 import com.diagbot.entity.KlRelationOrder;
@@ -25,7 +27,6 @@ import com.diagbot.vo.KlRelationVO;
 import com.diagbot.vo.RelationContactDetailVO;
 import com.google.common.collect.Lists;
 import com.google.common.collect.Maps;
-import io.swagger.models.auth.In;
 import org.apache.commons.collections4.MapUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Qualifier;
@@ -45,6 +46,8 @@ import java.util.stream.Collectors;
  */
 @Component
 public class RelationContactFacade extends KlRelationServiceImpl {
+    @Autowired
+    private UserServiceClient userServiceClient;
     @Autowired
     private KlConceptFacade klConceptFacade;
     @Autowired
@@ -135,6 +138,7 @@ public class RelationContactFacade extends KlRelationServiceImpl {
 
         return relationNodeDTOList;
     }
+
     @DS("med")
     @DSTransactional
     public Boolean addRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
@@ -171,14 +175,12 @@ public class RelationContactFacade extends KlRelationServiceImpl {
             }
             List<List<KlRelation>> relationGroupList = relationDataForAdd(klRelationSaveVOs);
 
-//            String currentUser = UserUtils.getCurrentPrincipleID();
             Date now = DateUtil.now();
             List<KlRelation> relationLists = Lists.newArrayList();
             relationGroupList.forEach(i -> {
                 i.forEach(j -> {
-//                    j.setCreator(currentUser);
                     j.setGmtCreate(now);
-//                    j.setModifier(currentUser);
+//                    j.setModifier(UserUtils.getCurrentPrincipleID());
                     j.setGmtModified(now);
                     relationLists.add(j);
                 });
@@ -196,7 +198,7 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                     relationOrder.setGmtCreate(now);
                     relationOrder.setGmtModified(now);
 //                    relationOrder.setCreator(currentUser);
-//                    relationOrder.setModifier(currentUser);
+//                    relationOrder.setModifier(UserUtils.getCurrentPrincipleID());
                     relationOrderList.add(relationOrder);
                 }
             });
@@ -207,6 +209,73 @@ public class RelationContactFacade extends KlRelationServiceImpl {
         return true;
     }
 
+
+    @DS("med")
+    @DSTransactional
+    public Boolean saveRelation(List<KlRelationSaveVO> klRelationSaveVOs) {
+        if (ListUtil.isNotEmpty(klRelationSaveVOs)) {
+            List<List<KlRelation>> relationGroupList = Lists.newArrayList();
+            KlRelationSaveVO klRelationSaveVO = klRelationSaveVOs.get(0);
+            Long sid = klRelationSaveVO.getSid();
+            List<KlRelation> klRelations = this.list(new QueryWrapper<KlRelation>()
+                    .eq("start_id", sid));
+            List<Long> ids = klRelations.stream().map(x -> x.getId()).collect(Collectors.toList());
+            //先删除
+            if (ListUtil.isNotEmpty(ids)) {
+                this.removeByIds(ids);
+                QueryWrapper<KlRelationOrder> relationOrderQe = new QueryWrapper<>();
+                relationOrderQe.in("t_relation_id", ids);
+                klRelationOrderFacade.remove(relationOrderQe);
+            }
+            for (KlRelationSaveVO kls : klRelationSaveVOs) {
+                @NotNull(message = "概念开始id必传") Long sid1 = kls.getSid();
+                @NotNull(message = "关系id必传") Integer rid = kls.getRid();
+                List<Long> eids = kls.getEids();
+                if (ListUtil.isNotEmpty(eids)) {
+                    List<KlRelation> collect = eids.stream().map(x -> {
+                        KlRelation klRelation = new KlRelation();
+                        klRelation.setEndId(x);
+                        klRelation.setRelationId(rid);
+                        klRelation.setStartId(sid1);
+                        klRelation.setStatus(1);
+                        return klRelation;
+                    }).collect(Collectors.toList());
+                    relationGroupList.add(collect);
+                }
+            }
+            Date now = DateUtil.now();
+            List<KlRelation> relationLists = Lists.newArrayList();
+            relationGroupList.forEach(i -> {
+                i.forEach(j -> {
+                    j.setGmtCreate(now);
+//                    j.setModifier(UserUtils.getCurrentPrincipleID());
+                    j.setGmtModified(now);
+                    relationLists.add(j);
+                });
+            });
+            klRelationService.saveBatch(relationLists);
+
+            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.setModifier(UserUtils.getCurrentPrincipleID());
+                    relationOrderList.add(relationOrder);
+                }
+            });
+            klRelationOrderServiceImpl.saveBatch(relationOrderList);
+
+
+        }
+        return true;
+    }
+
     private List<List<KlRelation>> relationDataForAdd(List<KlRelationSaveVO> klRelationSaveVOs) {
         List<List<KlRelation>> relationList = Lists.newArrayList();
         Map<String, List<KlRelation>> relationMap = Maps.newHashMap();
@@ -218,7 +287,7 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                 Long eid = kls.getEid();
                 Integer srid = kls.getSrid();
                 List<Long> eids = kls.getEids();
-                if(relationMap.containsKey(sid.toString()+"&"+rid.toString())){
+                if (relationMap.containsKey(sid.toString() + "&" + rid.toString())) {
                     List<KlRelation> klRelations_big = relationMap.get(sid.toString() + "&" + rid.toString());
                     KlRelation klRelation = new KlRelation();
                     klRelation.setStartId(sid);
@@ -226,8 +295,8 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                     klRelation.setEndId(eid);
                     klRelation.setStatus(1);
                     klRelations_big.add(klRelation);
-                    relationMap.put(sid.toString() + "&" + rid.toString(),klRelations_big);
-                }else {
+                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
+                } else {
                     List<KlRelation> klRelations_big = Lists.newArrayList();
                     KlRelation klRelation = new KlRelation();
                     klRelation.setStartId(sid);
@@ -235,11 +304,11 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                     klRelation.setEndId(eid);
                     klRelation.setStatus(1);
                     klRelations_big.add(klRelation);
-                    relationMap.put(sid.toString() + "&" + rid.toString(),klRelations_big);
+                    relationMap.put(sid.toString() + "&" + rid.toString(), klRelations_big);
                 }
-                if(srid != null && ListUtil.isNotEmpty(eids)){
+                if (srid != null && ListUtil.isNotEmpty(eids)) {
                     List<KlRelation> klRelations_sub = Lists.newArrayList();
-                    for (Long id:eids) {
+                    for (Long id : eids) {
                         KlRelation klRelation = new KlRelation();
                         klRelation.setStartId(eid);
                         klRelation.setRelationId(srid);
@@ -247,12 +316,12 @@ public class RelationContactFacade extends KlRelationServiceImpl {
                         klRelation.setStatus(1);
                         klRelations_sub.add(klRelation);
                     }
-                    relationMap.put(eid.toString() + "&" + srid.toString(),klRelations_sub);
+                    relationMap.put(eid.toString() + "&" + srid.toString(), klRelations_sub);
                 }
             }
         }
-        if(MapUtils.isNotEmpty(relationMap)){
-            relationMap.forEach((x,y)->{
+        if (MapUtils.isNotEmpty(relationMap)) {
+            relationMap.forEach((x, y) -> {
                 relationList.add(y);
             });
         }

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

@@ -0,0 +1,29 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.List;
+
+/**
+ * @author kwz
+ * @date 2021/3/10
+ * @time 12:57
+ */
+@Setter
+@Getter
+public class SearchConceptVO {
+    @ApiModelProperty(value="名称")
+    private String name;
+    /**
+     * 词性id
+     */
+    @ApiModelProperty(value="词性id")
+    private List<Integer> libTypes;
+    /**
+     * 需要排除的概念id集合
+     */
+    @ApiModelProperty(value="需要排除的概念id集合")
+    private List<Long> excludedConceptIds;
+}

+ 27 - 0
cdssman-service/src/main/java/com/diagbot/web/KlDiseaseController.java

@@ -5,10 +5,15 @@ 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.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 io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -19,6 +24,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
 import javax.validation.Valid;
+import java.util.List;
 
 /**
  * <p>
@@ -35,6 +41,10 @@ import javax.validation.Valid;
 public class KlDiseaseController {
     @Autowired
     KlDiseaseFacade klDiseaseFacade;
+    @Autowired
+    KlConceptFacade klConceptFacade;
+    @Autowired
+    RelationContactFacade relationContactFacade;
 
     @ApiOperation(value = "分页获取基础术语维护列表[by:kongwz]")
     @PostMapping("/getDiseasePage")
@@ -50,4 +60,21 @@ public class KlDiseaseController {
         DiseaseDetailDTO diagnoseDetailSaveDTO = klDiseaseFacade.getDetail(getDiseaseDetailVO);
         return RespDTO.onSuc(diagnoseDetailSaveDTO);
     }
+
+    @ApiOperation(value = "查询诊断依据相关的类型术语[by:kongwz]")
+    @PostMapping("/searchConcept")
+    @SysLogger("searchConcept")
+    public RespDTO<GetAllForRelationDTO> searchConcept(@Valid @RequestBody SearchConceptVO searchConceptVO) {
+        List<GetAllForRelationDTO> getAllForRelationDTOS = klConceptFacade.searchConceptByNameAndLibType(searchConceptVO);
+        return RespDTO.onSuc(getAllForRelationDTOS);
+    }
+
+    @ApiOperation(value = "诊断依据保存[by:kongwz]")
+    @PostMapping("/save")
+    @SysLogger("save")
+    public RespDTO<Boolean> save(@Valid @RequestBody List<KlRelationSaveVO> klRelationSaveVOs) {
+        Boolean aBoolean = relationContactFacade.saveRelation(klRelationSaveVOs);
+        return RespDTO.onSuc(aBoolean);
+    }
+
 }