Преглед изворни кода

化验公表映射维护增加术语存在校验

Zhaops пре 5 година
родитељ
комит
2b02f14f33

+ 65 - 0
icssman-service/src/main/java/com/diagbot/enums/ConceptTypeEnum.java

@@ -0,0 +1,65 @@
+package com.diagbot.enums;
+
+import com.diagbot.core.KeyedNamed;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2019/5/7 14:06
+ */
+public enum ConceptTypeEnum implements KeyedNamed {
+    Symptom(1, "症状"),
+    Past(2, "既往史"),
+    Other(3, "其他史"),
+    Vital(4, "查体"),
+    Lis(5, "化验"),
+    Pacs(6, "辅检"),
+    Disease(7, "诊断"),
+    Drug(8, "药品"),
+    Drug_Category_Big(9, "药品分类-大类"),
+    SIDE_EFFECTS(10, "不良反应"),
+    Drug_Category_Small(11, "药品分类-小类"),
+    LIS_TABLES(12,"化验公表项"),
+    DEPARTMENT(15,"科室"),
+    Scale(21, "量表"),
+    Indication(22, "指标"),
+    LisDetail(51, "化验明细");
+
+
+
+    @Setter
+    private Integer key;
+
+    @Setter
+    private String name;
+
+    ConceptTypeEnum(Integer key, String name) {
+        this.key = key;
+        this.name = name;
+    }
+
+    public static ConceptTypeEnum getEnum(Integer key) {
+        for (ConceptTypeEnum item : ConceptTypeEnum.values()) {
+            if (item.key == key) {
+                return item;
+            }
+        }
+        return null;
+    }
+
+    public static String getName(Integer key) {
+        ConceptTypeEnum item = getEnum(key);
+        return item != null ? item.name : null;
+    }
+
+    @Override
+    public int getKey() {
+        return key;
+    }
+
+    @Override
+    public String getName() {
+        return name;
+    }
+}

+ 36 - 0
icssman-service/src/main/java/com/diagbot/facade/LisMappingFacade.java

@@ -3,11 +3,14 @@ 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.KnowledgemanServiceClient;
 import com.diagbot.client.UserServiceClient;
+import com.diagbot.dto.ConceptBaseDTO;
 import com.diagbot.dto.LisMappingPageDTO;
 import com.diagbot.dto.RespDTO;
 import com.diagbot.entity.LisMapping;
 import com.diagbot.entity.QuestionInfo;
+import com.diagbot.enums.ConceptTypeEnum;
 import com.diagbot.enums.IsDeleteEnum;
 import com.diagbot.enums.QuestionTypeEnum;
 import com.diagbot.exception.CommonErrorCode;
@@ -16,10 +19,13 @@ import com.diagbot.service.LisMappingService;
 import com.diagbot.service.impl.LisMappingServiceImpl;
 import com.diagbot.util.DateUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.RespDTOUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.UserUtils;
 import com.diagbot.vo.IdListVO;
 import com.diagbot.vo.IdVO;
+import com.diagbot.vo.IndexLexiconVO;
+import com.diagbot.vo.IndexVO;
 import com.diagbot.vo.LisMappingPageVO;
 import com.diagbot.vo.LisMappingVO;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -47,6 +53,8 @@ public class LisMappingFacade extends LisMappingServiceImpl {
     private CacheFacade cacheFacade;
     @Autowired
     private QuestionFacade questionFacade;
+    @Autowired
+    private KnowledgemanServiceClient knowledgemanServiceClient;
 
     /**
      * 化验公表映射分页信息
@@ -91,12 +99,40 @@ public class LisMappingFacade extends LisMappingServiceImpl {
             }
             lisMappingQueryWrapper.and(i -> i.isNull("item_name").or(j -> j.eq("item_name", "")));
         } else {
+
             String uniqueName = lisMappingVO.getMealName() + "--" + lisMappingVO.getItemName();
             if (!uniqueName.equals(lisMappingVO.getUniqueName())) {
                 throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验公表名称不匹配");
             }
             lisMappingQueryWrapper.eq("item_name", lisMappingVO.getItemName());
         }
+
+        //验证医学术语是否存在
+        IndexVO indexVO = new IndexVO();
+        indexVO.setName(lisMappingVO.getMealName());
+        indexVO.setType(ConceptTypeEnum.Lis.getKey());
+        RespDTO<List<ConceptBaseDTO>> listRespDTO = knowledgemanServiceClient.index(indexVO);
+        RespDTOUtil.respNGDeal(listRespDTO, "获取医学术语失败");
+        if (ListUtil.isEmpty(listRespDTO.data)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验套餐项【" + lisMappingVO.getMealName() + "】术语不存在");
+        }
+        if (StringUtil.isNotBlank(lisMappingVO.getItemName())) {
+            indexVO.setName(lisMappingVO.getItemName());
+            indexVO.setType(ConceptTypeEnum.LisDetail.getKey());
+            RespDTO<List<ConceptBaseDTO>> lisDetailRespDTO = knowledgemanServiceClient.index(indexVO);
+            RespDTOUtil.respNGDeal(lisDetailRespDTO, "获取医学术语失败");
+            if (ListUtil.isEmpty(lisDetailRespDTO.data)) {
+                throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验明细项【" + lisMappingVO.getItemName() + "】术语不存在");
+            }
+        }
+        indexVO.setName(lisMappingVO.getUniqueName());
+        indexVO.setType(ConceptTypeEnum.LIS_TABLES.getKey());
+        RespDTO<List<ConceptBaseDTO>> lisTablesRespDTO = knowledgemanServiceClient.index(indexVO);
+        RespDTOUtil.respNGDeal(lisTablesRespDTO, "获取医学术语失败");
+        if (ListUtil.isEmpty(lisTablesRespDTO.data)) {
+            throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "化验公表项项【" + lisMappingVO.getUniqueName() + "】术语不存在");
+        }
+
         List<LisMapping> lisMappingList = this.list(lisMappingQueryWrapper);
         if (lisMappingList.size() > 1) {
             throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "存在多条映射关系,请删除重复映射");