diff --git a/src/main/java/com/docus/server/collect/controller/CollectController.java b/src/main/java/com/docus/server/collect/controller/CollectController.java index 8f2c7fc..8814a34 100644 --- a/src/main/java/com/docus/server/collect/controller/CollectController.java +++ b/src/main/java/com/docus/server/collect/controller/CollectController.java @@ -1,8 +1,11 @@ package com.docus.server.collect.controller; +import cn.hutool.core.util.PageUtil; import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.collect.collector.LisSystemCollector; +import com.docus.server.collect.dto.TBasicQrDto; import com.docus.server.collect.entity.TBasic; import com.docus.server.collect.feign.api.GdSzyCollectServiceApi; import com.docus.server.collect.infrastructure.dao.DownloadTaskDao; @@ -26,20 +29,63 @@ public class CollectController implements GdSzyCollectServiceApi { private DownloadTaskDao downloadTaskDao; @Override - public CommonResult lisSystemCollect(String jzh) { + public CommonResult lisSystemCollectByJzh(String jzh) { + log.info("根据jzh进行lis采集,jzh为:{}", jzh); TBasic basic = new TBasic(); basic.setJzh(jzh); List basicInfo = downloadTaskDao.getBasicInfo(basic); - if(Func.isEmpty(basicInfo) || basicInfo.size()>1){ - log.error("采集失败,基础数据匹配失败!"); + if (Func.isEmpty(basicInfo) || basicInfo.size() > 1) { + log.error("采集失败,jzh:{} 基础数据匹配失败!", jzh); return CommonResult.failed("采集失败,基础数据匹配失败!"); } TBasic tBasic = basicInfo.get(0); - if(Func.isBlank(tBasic.getAdmissDate()) || Func.isBlank(tBasic.getDisDate())){ - log.error("采集失败,患者住院或者出院时间为空!"); + if (Func.isBlank(tBasic.getAdmissDate()) || Func.isBlank(tBasic.getDisDate())) { + log.error("采集失败,jzh:{} 患者住院或者出院时间为空!", jzh); return CommonResult.failed("采集失败,患者住院或者出院时间为空!"); } lisSystemCollector.collect(tBasic, tBasic.getAdmissDate(), tBasic.getDisDate()); return CommonResult.success("采集完成!"); } + + @Override + public CommonResult lisSystemCollectByDisDate(String disDateStart, String disDateEnd) { + log.info("根据出院时间进行lis采集,出院时间开始:{} ,出院时间结束:{}", disDateStart, disDateEnd); + validateDateStr(disDateStart); + validateDateStr(disDateEnd); + disDateStart = disDateStart + " 00:00:00"; + disDateEnd = disDateEnd + " 23:59:59"; + TBasicQrDto qrDto = new TBasicQrDto(); + qrDto.setDisDateStart(disDateStart); + qrDto.setDisDateEnd(disDateEnd); + int count = downloadTaskDao.countBasicInfo(qrDto); + log.warn("本次根据出院日期时间 :{} 到 {} ,可采集患者有 {} 个!", disDateStart, disDateEnd, count); + if (count <= 0) { + return CommonResult.success("本次采集0个患者"); + } + final int size=200; + int page = PageUtil.totalPage(count, size); + for (int i = 1; i <= page; i++) { + List tBasics = downloadTaskDao.pageBasicInfo(qrDto, (i - 1) * size, size); + if(Func.isNotEmpty(tBasics)){ + for (TBasic basic : tBasics) { + if (Func.isBlank(basic.getAdmissDate()) || Func.isBlank(basic.getDisDate())) { + log.error("采集失败,jzh:{} 患者住院或者出院时间为空!", basic.getJzh()); + continue; + } + lisSystemCollector.collect(basic, basic.getAdmissDate(), basic.getDisDate()); + } + } + } + return CommonResult.success("本次采集" + count + "个患者"); + } + + private void validateDateStr(String dateStr) { + try { + Func.parseDate(dateStr); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + throw new BaseException("日期验证失败,格式为 yyyy-MM-dd"); + } + + } } diff --git a/src/main/java/com/docus/server/collect/feign/api/GdSzyCollectServiceApi.java b/src/main/java/com/docus/server/collect/feign/api/GdSzyCollectServiceApi.java index 0a444d3..d54c785 100644 --- a/src/main/java/com/docus/server/collect/feign/api/GdSzyCollectServiceApi.java +++ b/src/main/java/com/docus/server/collect/feign/api/GdSzyCollectServiceApi.java @@ -20,10 +20,20 @@ public interface GdSzyCollectServiceApi { String PREFIX = "/collect/gdszy"; - @ApiOperation("LIS 检验报告采集") + @ApiOperation("LIS 检验报告采集,根据jzh") @ApiImplicitParams({ @ApiImplicitParam(name ="empId",value = "你别看这个参数名是empId,其实传的和使用的是jzh,有偷懒的选手",required = true,paramType = "query",dataTypeClass = String.class) }) - @GetMapping(PREFIX + "/lis") - CommonResult lisSystemCollect(@RequestParam("empId") String empId); + @GetMapping(PREFIX + "/lisByJzh") + CommonResult lisSystemCollectByJzh(@RequestParam("empId") String empId); + + + @ApiOperation("LIS 检验报告采集,根据出院区间") + @ApiImplicitParams({ + @ApiImplicitParam(name ="disDateStart",value = "出院时间 开始区间 yyyy-MM-dd",required = true,paramType = "query",dataTypeClass = String.class), + @ApiImplicitParam(name ="disDateEnd",value = "出院时间 结束区间 yyyy-MM-dd",required = true,paramType = "query",dataTypeClass = String.class) + }) + @GetMapping(PREFIX + "/lisByDisDate") + CommonResult lisSystemCollectByDisDate(@RequestParam("disDateStart") String disDateStart,@RequestParam("disDateEnd")String disDateEnd); + } diff --git a/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java b/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java index 5f16418..e9218fb 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java +++ b/src/main/java/com/docus/server/collect/infrastructure/dao/DownloadTaskDao.java @@ -1,8 +1,10 @@ package com.docus.server.collect.infrastructure.dao; import com.docus.infrastructure.core.db.dao.IBaseDao; +import com.docus.server.collect.dto.TBasicQrDto; import com.docus.server.collect.entity.DownloadTask; import com.docus.server.collect.entity.TBasic; +import org.apache.ibatis.annotations.Param; import java.util.List; @@ -20,6 +22,22 @@ public interface DownloadTaskDao extends IBaseDao { */ List getBasicInfo(TBasic tBasic); + /** + * 根据病案查询条件,查询病案数量 + * @param qrDto 查询条件 + * @return 病案数量 + */ + int countBasicInfo(@Param("dto") TBasicQrDto qrDto); + + /** + * 根据条件,分页查询病案 + * @param qrDto 查询条件 + * @param offset 分页参数从第几条开始 + * @param size 每页显示条数 + * @return 病案基础信息 + */ + List pageBasicInfo(@Param("dto") TBasicQrDto qrDto,@Param("offset") int offset,@Param("size") int size); + /** * 从下载任务表中获取下载任务id,来源,采文件唯一标识,和患者信息 diff --git a/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java index 0f09a61..b4a6664 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java +++ b/src/main/java/com/docus/server/collect/infrastructure/dao/impl/DownloadTaskDaoImpl.java @@ -3,6 +3,7 @@ package com.docus.server.collect.infrastructure.dao.impl; import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.docus.core.util.Func; import com.docus.infrastructure.core.db.dao.impl.BaseDaoImpl; +import com.docus.server.collect.dto.TBasicQrDto; import com.docus.server.collect.entity.DownloadTask; import com.docus.server.collect.entity.TBasic; import com.docus.server.collect.infrastructure.dao.DownloadTaskDao; @@ -23,6 +24,16 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl pageBasicInfo(TBasicQrDto qrDto, int offset, int size) { + return baseMapper.pageBasicInfo(qrDto,offset,size); + } + @Override public Long getDownloadTaskIdFromDownloadTask(DownloadTask downloadTask) { LambdaQueryWrapper wrapper = new LambdaQueryWrapper<>();