Browse Source

河北演示项目检查、历史病历、问诊模板新增

wangsy 7 months ago
parent
commit
c2c8082e2a

+ 27 - 22
src/main/java/com/diagbot/aggregate/AssemblePushAggregate.java

@@ -34,7 +34,7 @@ public class AssemblePushAggregate {
             @InvokeParameter("pushDTO") PushDTO data,
             @InvokeParameter("hospitalId") Long hospitalId,
             @DataConsumer("retLis") List<PushBaseDTO> retLis,
-            @DataConsumer("retPacs") List<PushBaseDTO> retPacs,
+            @DataConsumer("retPacs") Map<String, List<PushBaseDTO>> retPacs,
             @DataConsumer("retDiagMap") Map<String, List<PushBaseDTO>> retDiagMap,
             @DataConsumer("retOperation") List<PushBaseDTO> retOperation,
             @DataConsumer("retDrug") List<PushBaseDTO> retDrug,
@@ -46,7 +46,7 @@ public class AssemblePushAggregate {
             data.setLis(retLis);
         }
         //检查
-        if (ListUtil.isNotEmpty(retPacs)) {
+        if (MapUtils.isNotEmpty(retPacs)) {
             data.setPacs(retPacs);
         }
         //诊断
@@ -105,31 +105,36 @@ public class AssemblePushAggregate {
     }
 
     @DataProvider("retPacs")
-    public List<PushBaseDTO> retPacs(@InvokeParameter("pushDTO") PushDTO data,
+    public Map<String,List<PushBaseDTO>> retPacs(@InvokeParameter("pushDTO") PushDTO data,
                                      @InvokeParameter("hospitalId") Long hospitalId) {
         //检查
-        List<PushBaseDTO> retPacs = new ArrayList<>();
-        if (ListUtil.isNotEmpty(data.getPacs())) {
-            retPacs = data.getPacs();
-            List<String> uniqueNameList = retPacs.stream()
-                    .map(i -> i.getName())
-                    .collect(Collectors.toList());
-            Map<String, Map<String, Map<String, List<String>>>> uniqueNameMap
-                    = mappingConfigFacade.groupByUniqueNameWithName(uniqueNameList, ConceptTypeEnum.Pacs.getKey(), hospitalId, StatusEnum.Enable.getKey());
+        Map<String,List<PushBaseDTO>> retMapPacs = new HashMap<>();
+        for(Map.Entry<String,List<PushBaseDTO>> entry : retMapPacs.entrySet()){
+            List<PushBaseDTO> retPacs = new ArrayList<>();
+            if (MapUtils.isNotEmpty(data.getPacs())) {
+                retPacs = entry.getValue();
+                List<String> uniqueNameList = retPacs.stream()
+                        .map(i -> i.getName())
+                        .collect(Collectors.toList());
+                Map<String, Map<String, Map<String, List<String>>>> uniqueNameMap
+                        = mappingConfigFacade.groupByUniqueNameWithName(uniqueNameList, ConceptTypeEnum.Pacs.getKey(), hospitalId, StatusEnum.Enable.getKey());
 
-            if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
-                retPacs.forEach(item -> {
-                    if (uniqueNameMap.get(item.getName()) != null) {
-                        item.setHisNameList(uniqueNameMap.get(item.getName())
-                                .values().stream()
-                                .map(i -> i.keySet())
-                                .flatMap(Collection::stream)
-                                .collect(Collectors.toList()));
-                    }
-                });
+                if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
+                    retPacs.forEach(item -> {
+                        if (uniqueNameMap.get(item.getName()) != null) {
+                            item.setHisNameList(uniqueNameMap.get(item.getName())
+                                    .values().stream()
+                                    .map(i -> i.keySet())
+                                    .flatMap(Collection::stream)
+                                    .collect(Collectors.toList()));
+                        }
+                    });
+                }
             }
+            retMapPacs.put(entry.getKey(), retPacs);
         }
-        return retPacs;
+
+        return retMapPacs;
     }
 
     @DataProvider("retDiagMap")

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

@@ -154,6 +154,8 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/dataPage/docking/getClassicCaseInfo").permitAll()
                 .antMatchers("/dataPage/docking/getDataEngine").permitAll()
                 .antMatchers("/dataPage/docking/addUserAndRole").permitAll()
+                .antMatchers("/demo/moduleInfo/getModuleInfo").permitAll()
+                .antMatchers("/demo/moduleInfo/getModuleById").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

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

@@ -196,6 +196,8 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/dataPage/docking/getStaticKnowledge", request)
                 || matchers("/dataPage/docking/getDataEngine", request)
                 || matchers("/dataPage/docking/addUserAndRole", request)
+                || matchers("/demo/moduleInfo/getModuleInfo", request)
+                || matchers("/demo/moduleInfo/getModuleById", request)
                 || matchers("/", request)) {
             return true;
         }

+ 21 - 0
src/main/java/com/diagbot/dto/ModuleInfoDTO.java

@@ -0,0 +1,21 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import java.util.Date;
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板
+ * @date 2024年11月1日
+ */
+@Getter
+@Setter
+public class ModuleInfoDTO {
+    private Long id;//模板id
+    private String name;//模板名字
+    private Integer modeId;//模板名称
+    private String remark;//备注
+
+}

+ 4 - 1
src/main/java/com/diagbot/dto/PushDTO.java

@@ -24,7 +24,8 @@ public class PushDTO {
     //检验
     private List<PushBaseDTO> lis = new ArrayList<>();
     //检查
-    private List<PushBaseDTO> pacs = new ArrayList<>();
+//    private List<PushBaseDTO> pacs = new ArrayList<>();
+    private Map<String, List<PushBaseDTO>> pacs = new LinkedHashMap<>();
     // 手术
     private List<PushBaseDTO> operations = new ArrayList<>();
     // 药品
@@ -43,6 +44,8 @@ public class PushDTO {
     private List<PushScaleDTO> scale = Lists.newArrayList();
     //经典病例
     private List<PushBaseDTO> classicCase = new ArrayList<>();
+    //历史病例
+    private List<PushBaseDTO> historicalCases = Lists.newArrayList();
 
     // 记录调试信息
     private Map<String, Object> debug = new LinkedHashMap<>();

+ 22 - 0
src/main/java/com/diagbot/dto/QuestionModuleInfoDTO.java

@@ -0,0 +1,22 @@
+package com.diagbot.dto;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板
+ * @date 2024年11月1日
+ */
+@Getter
+@Setter
+public class QuestionModuleInfoDTO {
+    private Long id;//模板id
+    private String moduleName;//模板名字
+    private Integer modeId;
+    private String tagName;
+    private String name;
+    private String value;
+    private String remark;//备注
+
+}

+ 47 - 0
src/main/java/com/diagbot/entity/ModuleInfo.java

@@ -0,0 +1,47 @@
+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;
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板
+ * @date 2024年11月1日
+ */
+@TableName("demo_module_info")
+@Getter
+@Setter
+public class ModuleInfo implements Serializable {
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 名称
+     */
+    private String name;
+
+    /**
+     * 模板ID
+     */
+    private Integer modeId;
+
+    /**
+     * 备注
+     */
+    private String remark;
+}

+ 77 - 0
src/main/java/com/diagbot/facade/ModuleInfoFacade.java

@@ -0,0 +1,77 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.dto.ModuleInfoDTO;
+import com.diagbot.dto.QuestionModuleInfoDTO;
+import com.diagbot.entity.ModuleInfo;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.ModuleInfoServiceImpl;
+import com.diagbot.util.ListUtil;
+import com.diagbot.vo.ModuleInfoVO;
+import com.google.common.collect.Lists;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板
+ * @date 2024年11月1日
+ */
+@Component
+public class ModuleInfoFacade extends ModuleInfoServiceImpl {
+
+    /**
+     * 获取问诊模板
+     *
+     * @return 获取问诊模板
+     */
+    public List<ModuleInfoDTO> getModuleInfo() {
+        List<ModuleInfoDTO> retList = Lists.newLinkedList();
+
+        QueryWrapper<ModuleInfo> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey());
+        List<ModuleInfo> moduleInfoList = this.list(queryWrapper);
+
+        if (ListUtil.isEmpty(moduleInfoList)) {
+            return retList;
+        }
+
+        for (ModuleInfo moduleInfo : moduleInfoList) {
+            ModuleInfoDTO data = new ModuleInfoDTO();
+            data.setId(moduleInfo.getId());
+            data.setName(moduleInfo.getName());
+            retList.add(data);
+        }
+        return retList;
+    }
+
+    /**
+     * 根据问诊id获取内容
+     *
+     * @return 根据问诊id获取内容演示
+     */
+    public Map<String, List<QuestionModuleInfoDTO>> getModuleById(ModuleInfoVO moduleInfoVO) {
+        Map<String, List<QuestionModuleInfoDTO>> map = new HashMap<>();
+        List<QuestionModuleInfoDTO> list1 = new ArrayList<>();
+        List<QuestionModuleInfoDTO> list2 = new ArrayList<>();
+        List<QuestionModuleInfoDTO> moduleById = this.getModuleByIds(moduleInfoVO);
+        if (ListUtil.isEmpty(moduleById)) {
+            return map;
+        }
+        for (QuestionModuleInfoDTO questionModuleInfoDTO : moduleById) {
+            if (questionModuleInfoDTO.getModeId() == 1) {
+                list1.add(questionModuleInfoDTO);
+            }
+            if (questionModuleInfoDTO.getModeId() == 2) {
+                list2.add(questionModuleInfoDTO);
+            }
+        }
+        map.put("咳嗽",list1);
+        map.put("咳痰",list2);
+        return map;
+    }
+}

+ 59 - 10
src/main/java/com/diagbot/facade/PushFacade.java

@@ -152,8 +152,15 @@ public class PushFacade {
         if (ListUtil.isNotEmpty(pushDTO.getLis())) {
             conceptBaseList.addAll(pushDTO.getLis());
         }
-        if (ListUtil.isNotEmpty(pushDTO.getPacs())) {
-            conceptBaseList.addAll(pushDTO.getPacs());
+//        if (ListUtil.isNotEmpty(pushDTO.getPacs())) {
+//            conceptBaseList.addAll(pushDTO.getPacs());
+//        }
+        if (pushDTO.getPacs() != null) {
+            for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getPacs().entrySet()) {
+                if (ListUtil.isNotEmpty(entry.getValue())) {
+                    conceptBaseList.addAll(entry.getValue());
+                }
+            }
         }
         if (pushDTO.getDis() != null) {
             for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getDis().entrySet()) {
@@ -227,14 +234,26 @@ public class PushFacade {
                     }
                 });
             }
-            if (ListUtil.isNotEmpty(pushDTO.getPacs())) {
-                pushDTO.getPacs().forEach(item -> {
-                    item.setType(5);
-                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("5"))) {
-                        item.setHasInfo(1);
+            if (MapUtils.isNotEmpty(pushDTO.getPacs())) {
+                for (Map.Entry<String, List<PushBaseDTO>> entry : pushDTO.getPacs().entrySet()) {
+                    if (ListUtil.isNotEmpty(entry.getValue())) {
+                        entry.getValue().forEach(item -> {
+                            item.setType(5);
+                            if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("5"))) {
+                                item.setHasInfo(1);
+                            }
+                        });
                     }
-                });
+                }
             }
+//            if (MapUtils.isNotEmpty(pushDTO.getPacs())) {
+//                pushDTO.getPacs().forEach(item -> {
+//                    item.setType(5);
+//                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("5"))) {
+//                        item.setHasInfo(1);
+//                    }
+//                });
+//            }
             if (ListUtil.isNotEmpty(pushDTO.getMedicines())) {
                 pushDTO.getMedicines().forEach(item -> {
                     item.setType(2);
@@ -284,6 +303,24 @@ public class PushFacade {
                     }
                 });
             }
+
+            if (ListUtil.isNotEmpty(pushDTO.getSymptom())) {
+                pushDTO.getSymptom().forEach(item -> {
+                    item.setType(12);
+                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("12"))) {
+                        item.setHasInfo(1);
+                    }
+                });
+            }
+
+            if (ListUtil.isNotEmpty(pushDTO.getHistoricalCases())) {
+                pushDTO.getHistoricalCases().forEach(item -> {
+                    item.setType(13);
+                    if (conceptDetailMap.containsKey(item.getName() + "_" + dicStaticTypeValNameMap.get("13"))) {
+                        item.setHasInfo(1);
+                    }
+                });
+            }
         }
 
         //量表
@@ -396,7 +433,8 @@ public class PushFacade {
             data.setLis(lis);
         }
         //检查
-        if (ListUtil.isEmpty(data.getPacs())) {
+        if (MapUtils.isEmpty(data.getPacs())) {
+            Map<String, List<PushBaseDTO>> pacsMap = new HashMap<>();
             List<PushBaseDTO> pacs = Lists.newArrayList();
             PushBaseDTO pacs1 = new PushBaseDTO();
             pacs1.setName("普通胃镜检查");
@@ -404,8 +442,19 @@ public class PushFacade {
             PushBaseDTO pacs2 = new PushBaseDTO();
             pacs2.setName("经直肠前列腺彩超检查");
             pacs.add(pacs2);
-            data.setPacs(pacs);
+            pacsMap.put("疾病相关辅助检查项目",pacs);
+            data.setPacs(pacsMap);
         }
+//        if (MapUtils.isEmpty(data.getPacs())) {
+//            List<PushBaseDTO> pacs = Lists.newArrayList();
+//            PushBaseDTO pacs1 = new PushBaseDTO();
+//            pacs1.setName("普通胃镜检查");
+//            pacs.add(pacs1);
+//            PushBaseDTO pacs2 = new PushBaseDTO();
+//            pacs2.setName("经直肠前列腺彩超检查");
+//            pacs.add(pacs2);
+//            data.setPacs(pacs);
+//        }
         //药品
         if (ListUtil.isEmpty(data.getMedicines())) {
             List<PushBaseDTO> medicines = Lists.newArrayList();

+ 24 - 0
src/main/java/com/diagbot/mapper/ModuleInfoMapper.java

@@ -0,0 +1,24 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.diagbot.dto.QuestionModuleInfoDTO;
+import com.diagbot.dto.TemplateInfoPageDTO;
+import com.diagbot.entity.ModuleInfo;
+import com.diagbot.entity.TemplateInfo;
+import com.diagbot.vo.ModuleInfoVO;
+import com.diagbot.vo.TemplateInfoPageVO;
+import org.apache.ibatis.annotations.Param;
+
+import java.util.List;
+
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板 Mapper 接口
+ * @date 2024年11月1日
+ */
+public interface ModuleInfoMapper extends BaseMapper<ModuleInfo> {
+    List<QuestionModuleInfoDTO> getModuleByIds(@Param("moduleInfoVO") ModuleInfoVO moduleInfoVO);
+
+}

+ 25 - 0
src/main/java/com/diagbot/service/ModuleInfoService.java

@@ -0,0 +1,25 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.QuestionModuleInfoDTO;
+import com.diagbot.dto.TemplateInfoPageDTO;
+import com.diagbot.entity.ModuleInfo;
+import com.diagbot.entity.TemplateInfo;
+import com.diagbot.vo.ModuleInfoVO;
+import com.diagbot.vo.TemplateInfoPageVO;
+
+import java.util.List;
+
+/**
+ * <p>
+ * 演示病历表 服务类
+ * </p>
+ *
+ * @author wangfeng
+ * @since 2018-11-16
+ */
+public interface ModuleInfoService extends IService<ModuleInfo> {
+
+    List<QuestionModuleInfoDTO> getModuleByIds(ModuleInfoVO moduleInfoVO);
+}

+ 31 - 0
src/main/java/com/diagbot/service/impl/ModuleInfoServiceImpl.java

@@ -0,0 +1,31 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.core.metadata.IPage;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.dto.ModuleInfoDTO;
+import com.diagbot.dto.QuestionModuleInfoDTO;
+import com.diagbot.dto.TemplateInfoPageDTO;
+import com.diagbot.entity.ModuleInfo;
+import com.diagbot.mapper.ModuleInfoMapper;
+import com.diagbot.service.ModuleInfoService;
+import com.diagbot.vo.ModuleInfoVO;
+import com.diagbot.vo.TemplateInfoPageVO;
+import org.apache.ibatis.annotations.Param;
+import org.springframework.stereotype.Service;
+
+import java.util.List;
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板 服务实现类
+ * @date 2024年11月1日
+ */
+@Service
+public class ModuleInfoServiceImpl extends ServiceImpl<ModuleInfoMapper, ModuleInfo> implements ModuleInfoService {
+
+  @Override
+  public List<QuestionModuleInfoDTO> getModuleByIds(@Param("moduleInfoVO") ModuleInfoVO moduleInfoVO) {
+   return baseMapper.getModuleByIds(moduleInfoVO);
+  }
+
+}

+ 18 - 0
src/main/java/com/diagbot/vo/ModuleInfoVO.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+import javax.validation.constraints.NotNull;
+
+/**
+ * @author dsYun
+ * @Description:
+ * @date 2024年11月1日
+ */
+@Getter
+@Setter
+public class ModuleInfoVO {
+    @NotNull(message = "请输入模板id")
+    private Long id;
+}

+ 53 - 0
src/main/java/com/diagbot/web/ModuleInfoController.java

@@ -0,0 +1,53 @@
+package com.diagbot.web;
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.*;
+import com.diagbot.facade.ModuleInfoFacade;
+import com.diagbot.vo.*;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.transaction.annotation.Transactional;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.validation.Valid;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @author dsYun
+ * @Description: 问诊模板 前端控制器
+ * @date 2024年11月1日
+ */
+@RestController
+@RequestMapping("/demo/moduleInfo")
+@Api(value = "问诊模板API[by:dsYun]", tags = { "问诊模板API" })
+@SuppressWarnings("unchecked")
+public class ModuleInfoController {
+
+    @Autowired
+    private ModuleInfoFacade moduleInfoFacade;
+
+    @ApiOperation(value = "获取问诊模板[by:dsYun]",
+            notes = "")
+    @PostMapping("/getModuleInfo")
+    @SysLogger("getModuleInfo")
+    @Transactional
+    public RespDTO<List<ModuleInfoDTO>> getModuleInfo() {
+        List<ModuleInfoDTO> res = moduleInfoFacade.getModuleInfo();
+        return RespDTO.onSuc(res);
+    }
+
+
+    @ApiOperation(value = "根据问诊id获取内容[by:dsYun]",
+            notes = "id: 请输入问诊id")
+    @PostMapping("/getModuleById")
+    @SysLogger("getModuleById")
+    public RespDTO<Map<String,List<QuestionModuleInfoDTO>>> getModuleById(@Valid @RequestBody ModuleInfoVO moduleInfoVO) {
+        Map<String,List<QuestionModuleInfoDTO>> data = moduleInfoFacade.getModuleById(moduleInfoVO);
+        return RespDTO.onSuc(data);
+    }
+}

+ 1 - 0
src/main/java/com/diagbot/web/PushController.java

@@ -43,6 +43,7 @@ public class PushController {
     @TokenAuth
     public RespDTO<PushDTO> push(@RequestBody @Valid PushVO pushVO) {
         pushVO.setGetStaticKnowledge(1);
+        pushVO.setFeatureType(pushVO.getFeatureType()+",15");
         PushDTO data = pushFacade.push(pushVO);
         return RespDTO.onSuc(data);
     }

+ 35 - 0
src/main/resources/mapper/ModuleInfoMapper.xml

@@ -0,0 +1,35 @@
+<?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.ModuleInfoMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.ModuleInfo">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="name" property="name" />
+        <result column="mode_id" property="modeId" />
+        <result column="remark" property="remark" />
+    </resultMap>
+
+    <select id="getModuleByIds" resultType="com.diagbot.dto.QuestionModuleInfoDTO">
+        SELECT
+            d1.NAME AS moduleName,
+            d1.mode_id AS modeId,
+            d2.tag_name AS tagName,
+            d2.`name` AS NAME,
+            d2.`value` AS VALUE
+        FROM
+            demo_module_info d1,
+            demo_question_info d2,
+            demo_module_detail d3
+        WHERE
+            d1.is_deleted = 'N'
+          AND d2.is_deleted = 'N'
+          AND d3.is_deleted = 'N'
+          AND d1.id = d2.module_id
+          AND d2.id = d3.question_id
+        ORDER BY
+            d3.order_no
+    </select>
+</mapper>