Bladeren bron

静态知识

zhaops 5 jaren geleden
bovenliggende
commit
d332866ed1

+ 2 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -118,6 +118,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/sys/tokenHospital/getTokenHospital").permitAll()
                 .antMatchers("/demo/retrieval/index").permitAll()
                 .antMatchers("/graph/conceptInfo/staticKnowledgeIndex").permitAll()
+                .antMatchers("/graph/conceptInfo/getStaticKnowledge").permitAll()
+                .antMatchers("/graph/conceptInfo/getStaticKnowledgeForHIS").permitAll()
                 .antMatchers("/sys/planDetail/getPlanDetailDatas").permitAll()
                 .antMatchers("/sys/planDetail/savePlanDetails").permitAll()
                 .antMatchers("/sys/planDetail/cancelPlanDetails").permitAll()

+ 2 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -160,6 +160,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/sys/tokenHospital/getTokenHospital", request)
                 || matchers("/demo/retrieval/index", request)
                 || matchers("/graph/conceptInfo/staticKnowledgeIndex", request)
+                || matchers("/graph/conceptInfo/getStaticKnowledge", request)
+                || matchers("/graph/conceptInfo/getStaticKnowledgeForHIS", request)
                 || matchers("/sys/planDetail/getPlanDetailDatas", request)
                 || matchers("/sys/planDetail/savePlanDetails", request)
                 || matchers("/sys/planDetail/cancelPlanDetails", request)

+ 5 - 1
src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java

@@ -14,6 +14,10 @@ import java.util.Map;
 @Getter
 @Setter
 public class StaticKnowledgeDTO {
+    /**
+     * 标准术语id
+     */
+    private Long id;
     /**
      * 标准术语
      */
@@ -37,5 +41,5 @@ public class StaticKnowledgeDTO {
     /**
      * 静态知识明细
      */
-    private Map<String,List<StaticKnowledgeDetailDTO>> details;
+    private Map<String, List<StaticKnowledgeDetailDTO>> details;
 }

+ 1 - 1
src/main/java/com/diagbot/dto/StaticKnowledgeDetailDTO.java

@@ -39,5 +39,5 @@ public class StaticKnowledgeDetailDTO {
     /**
      * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
      */
-    private String concentType;
+    private String contentType;
 }

+ 6 - 6
src/main/java/com/diagbot/entity/ConceptDetail.java

@@ -79,7 +79,7 @@ public class ConceptDetail implements Serializable {
     /**
      * 内容类型(多选):1-化验、辅检、手术和操作、诊断、药品静态信息,2-注意事项,3-临床路径
      */
-    private String concentType;
+    private String contentType;
 
     public Long getId() {
         return id;
@@ -158,12 +158,12 @@ public class ConceptDetail implements Serializable {
     public void setOrderNo(Integer orderNo) {
         this.orderNo = orderNo;
     }
-    public String getConcentType() {
-        return concentType;
+    public String getContentType() {
+        return contentType;
     }
 
-    public void setConcentType(String concentType) {
-        this.concentType = concentType;
+    public void setContentType(String contentType) {
+        this.contentType = contentType;
     }
 
     @Override
@@ -180,7 +180,7 @@ public class ConceptDetail implements Serializable {
             ", content=" + content +
             ", text=" + text +
             ", orderNo=" + orderNo +
-            ", concentType=" + concentType +
+            ", contentType=" + contentType +
         "}";
     }
 }

+ 97 - 20
src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -76,7 +76,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
         if (ListUtil.isNotEmpty(staticKnowledgeIndexDTOList)) {
             //typeName转换
             staticKnowledgeIndexDTOList.forEach(item -> {
-                item.setTypeName(convertTypeName(item.getTypeName()));
+                item.setTypeName(convertTypeName(item.getTypeName(), 2));
             });
             //是否有静态知识
             List<String> conNameList = staticKnowledgeIndexDTOList
@@ -113,7 +113,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                         continue;
                     }
                     for (ConceptDetail detail : detailMap.get(item.getId())) {
-                        List<String> contentTypeList = Arrays.asList(detail.getConcentType().split(","));
+                        List<String> contentTypeList = Arrays.asList(detail.getContentType().split(","));
                         if (contentTypeList.contains(1)) {
                             item.setHasInfomation(1);
                         }
@@ -131,7 +131,14 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
             Map<String, List<StaticKnowledgeIndexDTO>> map
                     = EntityUtil.makeEntityListMap(staticKnowledgeIndexDTOList, "typeName");
             for (DictionaryInfoDTO dic : dicStaticIndexList) {
-                if (map.containsKey(dic.getName())) {
+                if (dic.getName().equals("检验")) {
+                    if (map.containsKey("检验套餐")) {
+                        retList.addAll(map.get("检验套餐"));
+                    }
+                    if (map.containsKey("检验明细")) {
+                        retList.addAll(map.get("检验明细"));
+                    }
+                } else if (map.containsKey(dic.getName())) {
                     retList.addAll(map.get(dic.getName()));
                 }
             }
@@ -141,7 +148,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
 
 
     /**
-     * 获取静态知识
+     * 页面获取静态知识
      *
      * @param staticKnowledgeVO
      * @return
@@ -149,7 +156,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
     public StaticKnowledgeDTO getStaticKnowledge(StaticKnowledgeVO staticKnowledgeVO) {
         StaticKnowledgeDTO staticKnowledgeDTO = new StaticKnowledgeDTO();
         String typeName = ConceptTypeEnum.getName(staticKnowledgeVO.getType());
-        typeName = convertTypeName(typeName);
+        typeName = convertTypeName(typeName, 1);
 
         QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
         conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
@@ -172,34 +179,35 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 if (StringUtil.isNotBlank(sql)) {
                     sql += " or ";
                 }
-                sql = "find_in_set(" + contentType + ",position)";
+                sql += "find_in_set(" + contentType + ",content_type)";
             }
             sql = "(" + sql + ")";
             conceptDetailQueryWrapper.apply(sql);
         }
+        conceptDetailQueryWrapper.orderByAsc("order_no");
         List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
         List<StaticKnowledgeDetailDTO> detailList
                 = BeanUtil.listCopyTo(conceptDetailList, StaticKnowledgeDetailDTO.class);
         List<StaticKnowledgeDetailDTO> introduceList = detailList
                 .stream()
-                .filter(i -> Arrays.asList(i.getConcentType().split(",")).contains(1))
+                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("1"))
                 .collect(Collectors.toList());
         List<StaticKnowledgeDetailDTO> noticeList = detailList
                 .stream()
-                .filter(i -> Arrays.asList(i.getConcentType().split(",")).contains(2))
+                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("2"))
                 .collect(Collectors.toList());
         List<StaticKnowledgeDetailDTO> clinicalPathwayList = detailList
                 .stream()
-                .filter(i -> Arrays.asList(i.getConcentType().split(",")).contains(3))
+                .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("3"))
                 .collect(Collectors.toList());
         Map<String, List<StaticKnowledgeDetailDTO>> detailMap = new HashMap<>();
-        if (ListUtil.isNotEmpty(introduceList)) {
+        if (ListUtil.isNotEmpty(introduceList) && staticKnowledgeVO.getContentTypes().contains(1)) {
             detailMap.put("静态知识", introduceList);
         }
-        if (ListUtil.isNotEmpty(noticeList)) {
+        if (ListUtil.isNotEmpty(noticeList) && staticKnowledgeVO.getContentTypes().contains(2)) {
             detailMap.put("注意事项", noticeList);
         }
-        if (ListUtil.isNotEmpty(clinicalPathwayList)) {
+        if (ListUtil.isNotEmpty(clinicalPathwayList) && staticKnowledgeVO.getContentTypes().contains(3)) {
             detailMap.put("临床路径", clinicalPathwayList);
         }
         staticKnowledgeDTO.setDetails(detailMap);
@@ -215,28 +223,95 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
     public List<StaticKnowledgeDTO> getStaticKnowledgeForHIS(StaticKnowledgeHISVO staticKnowledgeHISVO) {
 
         List<StaticKnowledgeDTO> retList = Lists.newArrayList();
-        StaticKnowledgeDTO staticKnowledgeDTO = new StaticKnowledgeDTO();
+        //StaticKnowledgeDTO staticKnowledgeDTO = new StaticKnowledgeDTO();
         String typeName = ConceptTypeEnum.getName(staticKnowledgeHISVO.getType());
-        typeName = convertTypeName(typeName);
+        typeName = convertTypeName(typeName, 1);
 
         //术语映射
         List<String> uniqueNameList = getUniqueNames(staticKnowledgeHISVO);
+        if (ListUtil.isEmpty(uniqueNameList)) {
+            return retList;
+        }
 
+        QueryWrapper<ConceptInfo> conceptInfoQueryWrapper = new QueryWrapper<>();
+        conceptInfoQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("name", uniqueNameList)
+                .eq("type", typeName);
+        List<ConceptInfo> conceptInfoList = this.list(conceptInfoQueryWrapper);
 
-        return null;
+        if (ListUtil.isEmpty(conceptInfoList)) {
+            return retList;
+        }
+
+        retList = BeanUtil.listCopyTo(conceptInfoList, StaticKnowledgeDTO.class);
+        List<Long> conceptIdList = conceptInfoList.stream().map(i -> i.getId()).collect(Collectors.toList());
+        QueryWrapper<ConceptDetail> conceptDetailQueryWrapper = new QueryWrapper<>();
+        conceptDetailQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .in("concept_id", conceptIdList);
+        if (ListUtil.isNotEmpty(staticKnowledgeHISVO.getContentTypes())) {
+            String sql = "";
+            for (Integer contentType : staticKnowledgeHISVO.getContentTypes()) {
+                if (StringUtil.isNotBlank(sql)) {
+                    sql += " or ";
+                }
+                sql += "find_in_set(" + contentType + ",content_type)";
+            }
+            sql = "(" + sql + ")";
+            conceptDetailQueryWrapper.apply(sql);
+        }
+        conceptDetailQueryWrapper.orderByAsc("concept_id", "order_no");
+        List<ConceptDetail> conceptDetailList = conceptDetailFacade.list(conceptDetailQueryWrapper);
+        List<StaticKnowledgeDetailDTO> detailList
+                = BeanUtil.listCopyTo(conceptDetailList, StaticKnowledgeDetailDTO.class);
+        Map<Long, List<StaticKnowledgeDetailDTO>> conceptMap
+                = EntityUtil.makeEntityListMap(detailList, "conceptId");
+        for (StaticKnowledgeDTO staticKnowledgeDTO : retList) {
+            List<StaticKnowledgeDetailDTO> subDetailList = conceptMap.get(staticKnowledgeDTO.getId());
+            if (ListUtil.isNotEmpty(subDetailList)) {
+                List<StaticKnowledgeDetailDTO> introduceList = subDetailList
+                        .stream()
+                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("1"))
+                        .collect(Collectors.toList());
+                List<StaticKnowledgeDetailDTO> noticeList = subDetailList
+                        .stream()
+                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("2"))
+                        .collect(Collectors.toList());
+                List<StaticKnowledgeDetailDTO> clinicalPathwayList = subDetailList
+                        .stream()
+                        .filter(i -> Arrays.asList(i.getContentType().split(",")).contains("3"))
+                        .collect(Collectors.toList());
+                Map<String, List<StaticKnowledgeDetailDTO>> subDetailMap = new HashMap<>();
+                if (ListUtil.isNotEmpty(introduceList) && staticKnowledgeHISVO.getContentTypes().contains(1)) {
+                    subDetailMap.put("静态知识", introduceList);
+                }
+                if (ListUtil.isNotEmpty(noticeList) && staticKnowledgeHISVO.getContentTypes().contains(2)) {
+                    subDetailMap.put("注意事项", noticeList);
+                }
+                if (ListUtil.isNotEmpty(clinicalPathwayList) && staticKnowledgeHISVO.getContentTypes().contains(3)) {
+                    subDetailMap.put("临床路径", clinicalPathwayList);
+                }
+                staticKnowledgeDTO.setDetails(subDetailMap);
+            }
+        }
+        return retList;
     }
 
     /**
-     * 页面术语类型转图谱标签名称
+     * 页面术语类型和图谱标签名称相互转换
      *
      * @param typeName
+     * @param flag     1-页面术语类型转图谱标签名称,2- 图谱标签名称转页面术语类型
      * @return
      */
-    public String convertTypeName(String typeName) {
+    public String convertTypeName(String typeName, Integer flag) {
         List<DictionaryInfoDTO> dicList = dictionaryFacade.getListByGroupType(8);
         if (ListUtil.isNotEmpty(dicList)) {
-            Map<String, String> nameValMap
-                    = EntityUtil.makeMapWithKeyValue(dicList, "name", "val");
+            Map<String, String> nameValMap = new HashMap<>();
+            if (flag.equals(1)) {
+                nameValMap = EntityUtil.makeMapWithKeyValue(dicList, "name", "val");
+            } else if (flag.equals(2)) {
+                nameValMap = EntityUtil.makeMapWithKeyValue(dicList, "val", "name");
+            }
             if (nameValMap.containsKey(typeName)) {
                 return nameValMap.get(typeName);
             }
@@ -276,7 +351,9 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 if (lisConfigMap != null) {
                     if (StringUtil.isBlank(staticKnowledgeHISVO.getHisDetailName())) {
                         staticKnowledgeHISVO.setHisDetailName("");
-                        if (lisConfigMap.containsKey(staticKnowledgeHISVO.getHospitalId())) {
+                    }
+                    if (lisConfigMap.containsKey(staticKnowledgeHISVO.getHisName())) {
+                        if (lisConfigMap.get(staticKnowledgeHISVO.getHisName()).containsKey(staticKnowledgeHISVO.getHisDetailName())) {
                             nameList = new ArrayList<>(lisConfigMap.get(staticKnowledgeHISVO.getHisName())
                                     .get(staticKnowledgeHISVO.getHisDetailName()).keySet());
                         }

+ 0 - 1
src/main/java/com/diagbot/vo/StaticKnowledgeVO.java

@@ -18,7 +18,6 @@ public class StaticKnowledgeVO {
     /**
      * 标准术语名称
      */
-    @NotBlank(message = "请输入术语名称")
     private String name;
     /**
      * 术语类型

+ 26 - 1
src/main/java/com/diagbot/web/ConceptInfoController.java

@@ -2,9 +2,12 @@ package com.diagbot.web;
 
 
 import com.diagbot.dto.RespDTO;
+import com.diagbot.dto.StaticKnowledgeDTO;
 import com.diagbot.dto.StaticKnowledgeIndexDTO;
 import com.diagbot.facade.ConceptInfoFacade;
+import com.diagbot.vo.StaticKnowledgeHISVO;
 import com.diagbot.vo.StaticKnowledgeIndexVO;
+import com.diagbot.vo.StaticKnowledgeVO;
 import io.swagger.annotations.Api;
 import io.swagger.annotations.ApiOperation;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,4 +43,26 @@ public class ConceptInfoController {
         List<StaticKnowledgeIndexDTO> data = conceptInfoFacade.staticKnowledgeIndex(staticKnowledgeIndexVO);
         return RespDTO.onSuc(data);
     }
-}
+
+
+    @ApiOperation(value = "页面获取静态知识[zhaops]",
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>" +
+                    "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径 <br>" +
+                    "name: 标准术语名称<br>")
+    @PostMapping("/getStaticKnowledge")
+    public RespDTO<StaticKnowledgeDTO> getStaticKnowledge(@Valid @RequestBody StaticKnowledgeVO staticKnowledgeVO) {
+        StaticKnowledgeDTO data = conceptInfoFacade.getStaticKnowledge(staticKnowledgeVO);
+        return RespDTO.onSuc(data);
+    }
+
+    @ApiOperation(value = "对接获取静态知识[zhaops]",
+            notes = "type: 类型:1-诊断、2-药品、3-检验套餐、4-检验明细、5-检查、6-手术和操作 <br>" +
+                    "contentTypes: 内容类型(多选):1-静态信息、2-注意事项、3-临床路径 <br>" +
+                    "hisName: HIS大项名称<br>" +
+                    "hisDetailName: HIS小项名称<br>")
+    @PostMapping("/getStaticKnowledgeForHIS")
+    public RespDTO<List<StaticKnowledgeDTO>> getStaticKnowledgeForHIS(@Valid @RequestBody StaticKnowledgeHISVO staticKnowledgeHISVO) {
+        List<StaticKnowledgeDTO> data = conceptInfoFacade.getStaticKnowledgeForHIS(staticKnowledgeHISVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 1 - 1
src/main/resources/mapper/ConceptDetailMapper.xml

@@ -15,7 +15,7 @@
         <result column="content" property="content" />
         <result column="text" property="text" />
         <result column="order_no" property="orderNo" />
-        <result column="concent_type" property="concentType" />
+        <result column="content_type" property="contentType" />
     </resultMap>
 
 </mapper>