From b12558f2331a84f1b961c02a6d53b6648d132541 Mon Sep 17 00:00:00 2001 From: wyb <1977763549@qq.com> Date: Thu, 11 Jan 2024 11:11:02 +0800 Subject: [PATCH] =?UTF-8?q?feat:=20=E6=B7=BB=E5=8A=A0=E4=B8=8B=E8=BD=BD?= =?UTF-8?q?=E5=B9=B3=E5=8F=B0=E8=B0=83=E7=94=A8=E5=B0=81=E5=AD=98=E7=97=85?= =?UTF-8?q?=E5=8E=86rpc=E6=8E=A5=E5=8F=A3=EF=BC=8C=E5=B0=81=E5=AD=98?= =?UTF-8?q?=E7=97=85=E5=8E=86=E6=A0=B9=E6=8D=AE=E5=B0=81=E5=AD=98id?= =?UTF-8?q?=E8=BF=9B=E8=A1=8Cpacs=E6=8A=A5=E5=91=8A=E9=87=87=E9=9B=86?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SealReportCollectController.java | 53 +++++++ .../java/com/docus/bgts/entity/TBasic.java | 46 ++++++ .../java/com/docus/bgts/entity/TSeal.java | 60 ++++++++ .../bgts/facade/IAfCollectTaskService.java | 25 +++- .../com/docus/bgts/facade/IBgtsService.java | 11 ++ .../mapper/dbmysql/AfCollectTaskMapper.java | 20 +++ .../docus/bgts/rpc/DownloadPlatformRpc.java | 31 +++++ .../{entity => rpc/dto}/ReportDownDto.java | 2 +- .../dto}/ReportDownPatientDto.java | 8 +- .../dto}/ReportDownScanFileDto.java | 2 +- .../rpc/impl/DownloadPlatformRpcImpl.java | 58 ++++++++ .../service/AfCollectTaskServiceImpl.java | 19 ++- .../docus/bgts/service/BgtsServiceImpl.java | 131 ++++++++++++++++-- .../docus/bgts/service/UpdateFileService.java | 3 + src/main/resources/application.yml | 3 + .../mapper/dbmysql/AfCollectTaskMapper.xml | 47 +++++++ 16 files changed, 500 insertions(+), 19 deletions(-) create mode 100644 src/main/java/com/docus/bgts/controller/SealReportCollectController.java create mode 100644 src/main/java/com/docus/bgts/entity/TBasic.java create mode 100644 src/main/java/com/docus/bgts/entity/TSeal.java create mode 100644 src/main/java/com/docus/bgts/rpc/DownloadPlatformRpc.java rename src/main/java/com/docus/bgts/{entity => rpc/dto}/ReportDownDto.java (93%) rename src/main/java/com/docus/bgts/{entity => rpc/dto}/ReportDownPatientDto.java (56%) rename src/main/java/com/docus/bgts/{entity => rpc/dto}/ReportDownScanFileDto.java (95%) create mode 100644 src/main/java/com/docus/bgts/rpc/impl/DownloadPlatformRpcImpl.java diff --git a/src/main/java/com/docus/bgts/controller/SealReportCollectController.java b/src/main/java/com/docus/bgts/controller/SealReportCollectController.java new file mode 100644 index 0000000..5fbe1e0 --- /dev/null +++ b/src/main/java/com/docus/bgts/controller/SealReportCollectController.java @@ -0,0 +1,53 @@ +package com.docus.bgts.controller; + +import com.docus.bgts.entity.CommonResult; +import com.docus.bgts.facade.IAfCollectTaskService; +import com.docus.bgts.facade.IBgtsService; +import com.docus.bgts.service.CheckIntegrityService; +import io.swagger.annotations.Api; +import io.swagger.annotations.ApiImplicitParam; +import io.swagger.annotations.ApiImplicitParams; +import io.swagger.annotations.ApiOperation; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.RequestMapping; +import org.springframework.web.bind.annotation.RequestParam; +import org.springframework.web.bind.annotation.RestController; + +/** + * @author YongBin Wen + * @date 2024/1/11 9:42 + */ +@Api(value = "封存病案报告采集接口", tags = "封存病案报告采集接口") +@RestController +@RequestMapping("/seal/collect") +@Slf4j +public class SealReportCollectController { + @Autowired + CheckIntegrityService checkIntegrityService; + + @Autowired + IBgtsService bgtsService; + + @Autowired + IAfCollectTaskService afCollectTaskService; + + @ApiOperation("封存病案Pacs采集接口") + @ApiImplicitParams({ + @ApiImplicitParam(name = "sealId", value = "t_seal 的seal_id,封存id", required = true, dataTypeClass = String.class), + }) + @GetMapping("/pacs") + public CommonResult collectSealPacs(@RequestParam("sealId") String sealId) { + log.info("封存病案采集pacs病历,封存id为:{}", sealId); + try { + bgtsService.collectSealPacs(sealId); + log.info("封存病案采集pacs病历,封存id:{} 采集完成", sealId); + return CommonResult.success("采集完成"); + } catch (Exception e) { + log.error("封存id:" + sealId + " 封存病案采集pacs病历,出现异常!", e); + return CommonResult.failed(e.getMessage()); + } + } + +} diff --git a/src/main/java/com/docus/bgts/entity/TBasic.java b/src/main/java/com/docus/bgts/entity/TBasic.java new file mode 100644 index 0000000..81fd434 --- /dev/null +++ b/src/main/java/com/docus/bgts/entity/TBasic.java @@ -0,0 +1,46 @@ +package com.docus.bgts.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.util.Date; + +/** + * 患者基础信息 + * + * @author WYBDEV + */ +@Data +@ApiModel(value = "患者基础信息") +public class TBasic { + @ApiModelProperty(value = "病案主键") + private String patientId; + @ApiModelProperty(value = "住院号") + private String inpatientNo; + @ApiModelProperty(value = "住院次数") + private Integer admissTimes; + @ApiModelProperty(value = "入院日期 yyyy-MM-dd HH:mm:ss") + private Date admissDate; + @ApiModelProperty(value = "入院科室名称") + private String admissDeptName; + @ApiModelProperty(value = "出院日期 yyyy-MM-dd HH:mm:ss") + private Date disDate; + @ApiModelProperty(value = "出院科室名称") + private String disDeptName; + @ApiModelProperty(value = "记账号") + private String jzh; + @ApiModelProperty(value = "姓名") + private String name; + @ApiModelProperty(value = "住院id") + private String admissId; + @ApiModelProperty(value = "省中医患者主索引号") + private String empId; +// @ApiModelProperty(value = "省中医患者记账号") +// private String accountRegistration; + + public TBasic() { + } + + +} diff --git a/src/main/java/com/docus/bgts/entity/TSeal.java b/src/main/java/com/docus/bgts/entity/TSeal.java new file mode 100644 index 0000000..b8b1091 --- /dev/null +++ b/src/main/java/com/docus/bgts/entity/TSeal.java @@ -0,0 +1,60 @@ +package com.docus.bgts.entity; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +import java.io.Serializable; +import java.util.Date; + +/** + *

+ * 在院封存 + *

+ * + * @author jiashi + * @since 2023-05-16 + */ +@Data +@ApiModel(value="TSeal对象", description="在院封存") +public class TSeal implements Serializable { + + private static final long serialVersionUID = 1L; + + @ApiModelProperty(value = "在院封存病案主键") + private String patientId; + + @ApiModelProperty(value = "封存id") + private String sealId; + + @ApiModelProperty(value = "住院号") + private String inpatientNo; + + @ApiModelProperty(value = "住院就诊号") + private String jzh; + + @ApiModelProperty(value = "患者姓名") + private String name; + + @ApiModelProperty(value = "住院时间") + private Date admissDate; + + @ApiModelProperty(value = "封存时间") + private Date sealDate; + + @ApiModelProperty(value = "文件来源") + private Integer fileSource; + + @ApiModelProperty(value = "就诊次数") + private Integer admissTimes; + + @ApiModelProperty(value = "纸质是否签名 0:否 1:是") + private Integer signinfo; + + @ApiModelProperty(value = "备注") + private String remark; + + public TSeal() { + } + +} diff --git a/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java b/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java index 93ddf7f..f9d5d06 100644 --- a/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java +++ b/src/main/java/com/docus/bgts/facade/IAfCollectTaskService.java @@ -3,9 +3,9 @@ package com.docus.bgts.facade; import com.baomidou.mybatisplus.extension.service.IService; import com.docus.bgts.entity.AfCollectTask; -import com.docus.bgts.entity.ReportDownDto; -import org.apache.ibatis.annotations.Param; -import org.springframework.web.bind.annotation.RequestParam; +import com.docus.bgts.entity.TBasic; +import com.docus.bgts.entity.TSeal; +import com.docus.bgts.rpc.dto.ReportDownDto; import java.util.List; import java.util.Map; @@ -77,4 +77,23 @@ public interface IAfCollectTaskService extends IService { * @return */ List getCompleteIntegrity(List jzhs); + + + /** + * 根据封存条件查询封存信息 + * + * @param seal 封存条件 + * @return com.docus.server.collect.entity.TSeal + * @date 2024/1/10 16:52 + * @author YongBin Wen + */ + TSeal findSealByCondition(TSeal seal); + + /** + * 根据患者信息获取基础病案信息 from `docus_medicalrecord`.`t_basic` + * + * @param tBasic 患者基础信息 + * @return 病案基础信息 + */ + List getBasicInfo(TBasic tBasic); } diff --git a/src/main/java/com/docus/bgts/facade/IBgtsService.java b/src/main/java/com/docus/bgts/facade/IBgtsService.java index dae734c..cac83c0 100644 --- a/src/main/java/com/docus/bgts/facade/IBgtsService.java +++ b/src/main/java/com/docus/bgts/facade/IBgtsService.java @@ -8,6 +8,15 @@ public interface IBgtsService { void collectPacs(String empId,String admissDate,String disDate,String times) throws Exception; + /** + * 根据封存id进行封存病案的pacs病历采集 + * @date 2024/1/11 10:27 + * @author YongBin Wen + * @param sealId 封存id + */ + void collectSealPacs(String sealId) throws Exception; + + void collectEcg(String empId,String admissDate,String disDate,String times) throws Exception; void collectPacss(); @@ -34,4 +43,6 @@ public interface IBgtsService { * 定时采集 */ void timerCollect(); + + } diff --git a/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java b/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java index 990b407..129e5fb 100644 --- a/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java +++ b/src/main/java/com/docus/bgts/mapper/dbmysql/AfCollectTaskMapper.java @@ -4,6 +4,8 @@ package com.docus.bgts.mapper.dbmysql; import com.baomidou.mybatisplus.core.mapper.BaseMapper; import com.docus.bgts.entity.AfCollectTask; import com.docus.bgts.entity.JzhListSync; +import com.docus.bgts.entity.TBasic; +import com.docus.bgts.entity.TSeal; import org.apache.ibatis.annotations.Param; import org.springframework.web.bind.annotation.RequestParam; @@ -66,4 +68,22 @@ public interface AfCollectTaskMapper extends BaseMapper { * @return */ List selectListByJzhs(@Param("jzhs") List jzhs); + + /** + * 根据封存条件查询封存信息 + * + * @param seal 封存条件 + * @return com.docus.server.collect.entity.TSeal + * @date 2024/1/10 16:52 + * @author YongBin Wen + */ + TSeal findSealByCondition(@Param("seal") TSeal seal); + + /** + * 根据患者信息获取基础病案信息 from `docus_medicalrecord`.`t_basic` + * + * @param tBasic 患者基础信息 + * @return 病案基础信息 + */ + List getBasicInfo(@Param("basic") TBasic tBasic); } diff --git a/src/main/java/com/docus/bgts/rpc/DownloadPlatformRpc.java b/src/main/java/com/docus/bgts/rpc/DownloadPlatformRpc.java new file mode 100644 index 0000000..57ae0df --- /dev/null +++ b/src/main/java/com/docus/bgts/rpc/DownloadPlatformRpc.java @@ -0,0 +1,31 @@ +package com.docus.bgts.rpc; + +import com.docus.bgts.entity.CommonResult; +import com.docus.bgts.rpc.dto.ReportDownDto; +import org.springframework.web.bind.annotation.RequestBody; + +/** + * 下载平台 远程调用接口 + * @author YongBin Wen + * @date 2024/1/11 10:01 + */ +public interface DownloadPlatformRpc { + + /** + * 病案上报文件(通用) + * @date 2024/1/11 10:05 + * @author YongBin Wen + * @param resources 上报信息 + * @return 返回结果 + */ + CommonResult report(@RequestBody ReportDownDto resources); + +/** + * 封存病历上报文件(省中医使用) + * @date 2024/1/11 10:22 + * @author YongBin Wen + * @param resources 上报信息 + * @return 返回结果 + */ + CommonResult sealReport(@RequestBody ReportDownDto resources); +} diff --git a/src/main/java/com/docus/bgts/entity/ReportDownDto.java b/src/main/java/com/docus/bgts/rpc/dto/ReportDownDto.java similarity index 93% rename from src/main/java/com/docus/bgts/entity/ReportDownDto.java rename to src/main/java/com/docus/bgts/rpc/dto/ReportDownDto.java index a689fa9..d4301e5 100644 --- a/src/main/java/com/docus/bgts/entity/ReportDownDto.java +++ b/src/main/java/com/docus/bgts/rpc/dto/ReportDownDto.java @@ -1,4 +1,4 @@ -package com.docus.bgts.entity; +package com.docus.bgts.rpc.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java b/src/main/java/com/docus/bgts/rpc/dto/ReportDownPatientDto.java similarity index 56% rename from src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java rename to src/main/java/com/docus/bgts/rpc/dto/ReportDownPatientDto.java index 0d0f4c0..ffcacad 100644 --- a/src/main/java/com/docus/bgts/entity/ReportDownPatientDto.java +++ b/src/main/java/com/docus/bgts/rpc/dto/ReportDownPatientDto.java @@ -1,4 +1,4 @@ -package com.docus.bgts.entity; +package com.docus.bgts.rpc.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; @@ -8,7 +8,9 @@ public class ReportDownPatientDto { @ApiModelProperty(value = "记帐号") private String jzh; @ApiModelProperty(value = "住院号") - private String inPatientNo; + private String inpatientno; @ApiModelProperty(value = "住院次数") - private String visitId; + private String admisstimes; + @ApiModelProperty(value = "病案主键,如有传则使用,无则使用jzh") + private String patientid; } diff --git a/src/main/java/com/docus/bgts/entity/ReportDownScanFileDto.java b/src/main/java/com/docus/bgts/rpc/dto/ReportDownScanFileDto.java similarity index 95% rename from src/main/java/com/docus/bgts/entity/ReportDownScanFileDto.java rename to src/main/java/com/docus/bgts/rpc/dto/ReportDownScanFileDto.java index 7712d14..ea6fb8e 100644 --- a/src/main/java/com/docus/bgts/entity/ReportDownScanFileDto.java +++ b/src/main/java/com/docus/bgts/rpc/dto/ReportDownScanFileDto.java @@ -1,4 +1,4 @@ -package com.docus.bgts.entity; +package com.docus.bgts.rpc.dto; import io.swagger.annotations.ApiModelProperty; import lombok.Data; diff --git a/src/main/java/com/docus/bgts/rpc/impl/DownloadPlatformRpcImpl.java b/src/main/java/com/docus/bgts/rpc/impl/DownloadPlatformRpcImpl.java new file mode 100644 index 0000000..bef9dd1 --- /dev/null +++ b/src/main/java/com/docus/bgts/rpc/impl/DownloadPlatformRpcImpl.java @@ -0,0 +1,58 @@ +package com.docus.bgts.rpc.impl; + +import cn.hutool.http.HttpUtil; +import com.alibaba.fastjson.JSON; +import com.docus.bgts.entity.CommonResult; +import com.docus.bgts.rpc.DownloadPlatformRpc; +import com.docus.bgts.rpc.dto.ReportDownDto; +import lombok.extern.slf4j.Slf4j; +import org.springframework.beans.factory.annotation.Value; +import org.springframework.stereotype.Service; + +import java.util.UUID; + +/** + * 下载平台 远程调用接口实现 + * + * @author YongBin Wen + * @date 2024/1/11 10:02 + */ +@Service +@Slf4j +public class DownloadPlatformRpcImpl implements DownloadPlatformRpc { + + @Value("${docus.downloadPlatformAddress}") + private String downloadPlatformAddress; + + @Override + public CommonResult report(ReportDownDto resources) { + String contextId = UUID.randomUUID().toString(); + String url = downloadPlatformAddress + "/api/downplatform/report"; + String bodyParam = JSON.toJSONString(resources); + log.info("[{}] 上报病案文件到下载平台,地址:{} ,参数:{}", contextId, url, bodyParam); + try { + String resp = HttpUtil.post(url, bodyParam); + log.info("[{}] 上报病案文件到下载平台,返回内容:{}", contextId, resp); + return JSON.parseObject(resp, CommonResult.class); + } catch (Exception ex) { + log.error("[" + contextId + "] 上报病案文件到下载平台,出错啦!", ex); + throw ex; + } + } + + @Override + public CommonResult sealReport(ReportDownDto resources) { + String contextId = UUID.randomUUID().toString(); + String url = downloadPlatformAddress + "/api/downplatform/sealReport"; + String bodyParam = JSON.toJSONString(resources); + log.info("[{}] 上报封存病案文件到下载平台,地址:{} ,参数:{}", contextId, url, bodyParam); + try { + String resp = HttpUtil.post(url, bodyParam); + log.info("[{}] 上报封存病案文件到下载平台,返回内容:{}", contextId, resp); + return JSON.parseObject(resp, CommonResult.class); + } catch (Exception ex) { + log.error("[" + contextId + "] 上报封存病案文件到下载平台,出错啦!", ex); + throw ex; + } + } +} diff --git a/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java b/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java index 36d1784..5d62798 100644 --- a/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java +++ b/src/main/java/com/docus/bgts/service/AfCollectTaskServiceImpl.java @@ -1,6 +1,7 @@ package com.docus.bgts.service; +import cn.hutool.core.util.StrUtil; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl; import com.docus.bgts.entity.*; @@ -9,11 +10,12 @@ import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper; import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectMapper; import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper; import com.docus.bgts.mapper.dboracle.TestMapper; +import com.docus.bgts.rpc.dto.ReportDownDto; +import com.docus.bgts.rpc.dto.ReportDownScanFileDto; import com.google.common.collect.Lists; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; import org.springframework.util.CollectionUtils; import java.util.*; @@ -54,7 +56,8 @@ public class AfCollectTaskServiceImpl extends ServiceImpl getBasicInfo(TBasic tBasic) { + return afCollectTaskMapper.getBasicInfo(tBasic); + } } diff --git a/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java b/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java index e35976f..88f27d9 100644 --- a/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java +++ b/src/main/java/com/docus/bgts/service/BgtsServiceImpl.java @@ -2,6 +2,7 @@ package com.docus.bgts.service; import cn.hutool.core.collection.CollUtil; +import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.StrUtil; import com.alibaba.fastjson.JSON; import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; @@ -14,7 +15,14 @@ import com.docus.bgts.mapper.dbmysql.AfCollectTaskMapper; import com.docus.bgts.mapper.dbmysql.AfInterfaceCollectSubMapper; import com.docus.bgts.mapper.dbmysql.MrReportErrorMapper; import com.docus.bgts.mapper.dboracle.VDocumentPdfMapper; -import com.docus.bgts.utils.*; +import com.docus.bgts.rpc.DownloadPlatformRpc; +import com.docus.bgts.rpc.dto.ReportDownDto; +import com.docus.bgts.rpc.dto.ReportDownPatientDto; +import com.docus.bgts.rpc.dto.ReportDownScanFileDto; +import com.docus.bgts.utils.FileUtils; +import com.docus.bgts.utils.HttpUtils; +import com.docus.bgts.utils.SnowflakeIdWorker; +import com.docus.bgts.utils.XmlUtils; import org.apache.commons.lang3.StringUtils; import org.apache.cxf.endpoint.Client; import org.apache.cxf.jaxws.endpoint.dynamic.JaxWsDynamicClientFactory; @@ -22,12 +30,11 @@ import org.apache.cxf.transport.http.HTTPConduit; import org.apache.cxf.transports.http.configuration.HTTPClientPolicy; import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.Logger; -import org.dom4j.*; +import org.dom4j.Element; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.beans.factory.annotation.Value; import org.springframework.stereotype.Service; - import java.io.ByteArrayInputStream; import java.text.ParseException; import java.text.SimpleDateFormat; @@ -71,6 +78,9 @@ public class BgtsServiceImpl implements IBgtsService { @Autowired private ThreadPoolExecutor threadPoolExecutor; + @Autowired + private DownloadPlatformRpc downloadPlatformRpc; + @Override public void collect(String empId) throws Exception { String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); @@ -101,7 +111,7 @@ public class BgtsServiceImpl implements IBgtsService { String admiss = sim.format(ad); String dis = sim.format(di); //通过empId获取报告单号集合 - List exams = getExamNo(empId, admiss, dis); + List exams = getExamNoByInpNo(empId, admiss, dis); String jzh = afCollectTaskService.getJzhByInpatientNo(empId,times); if (null == jzh) { logger.info("通过住院号与住院次数未匹配到患者"); @@ -115,6 +125,68 @@ public class BgtsServiceImpl implements IBgtsService { collectExams(exams, empId, reportDownDto); } + + @Override + public void collectSealPacs(String sealId) throws Exception{ + TSeal seal = getSealAndCheckBySealId(sealId); + if (Objects.isNull(seal.getAdmissDate())) { + throw new RuntimeException("sealId:" + sealId + " 封存病案信息 入院日期 为空!"); + } + String jzh = seal.getJzh(); + if (StrUtil.isBlank(jzh)) { + throw new RuntimeException("sealId:" + sealId + " 封存病案信息 记账号 为空!"); + } + String inpatientNo = seal.getInpatientNo(); + if (StrUtil.isBlank(inpatientNo)) { + throw new RuntimeException("sealId:" + sealId + " 封存病案信息 病案号 为空!"); + } + + Date admissDate = seal.getAdmissDate(); + // 如果是在院的,默认出院时间为现在 + Date disDate = new Date(); + + // 获取如果有出院的基础信息,得到真实的出院时间 + TBasic basicCondition = new TBasic(); + basicCondition.setJzh(jzh); + List basicInfo = afCollectTaskService.getBasicInfo(basicCondition); + if (CollUtil.isNotEmpty(basicInfo)) { + TBasic basic = basicInfo.get(0); + if (ObjectUtil.isNotNull(basic.getDisDate())) { + disDate = basic.getDisDate(); + } + } + + String pattern = "yyyy-MM-dd"; + SimpleDateFormat sdf = new SimpleDateFormat(pattern); + List exams = getExamNoByInpNo(inpatientNo, sdf.format(admissDate), sdf.format(disDate)); + //获取插入表数据 + ReportDownDto reportDownDto = sealGetUrlCreateReportDto(exams, seal.getPatientId()); + //插入文件af_collect_task表数据 + afCollectTaskService.insert(reportDownDto); + //通过报告单号集合采集 + downloadPlatformRpc.sealReport(reportDownDto); + } + + /** + * 根据封存id获取封存病案信息并且校验 + * + * @param sealId 封存id + * @return com.docus.bgts.entity.TSeal + * @date 2024/1/11 10:47 + * @author YongBin Wen + */ + private TSeal getSealAndCheckBySealId(String sealId) { + TSeal condition = new TSeal(); + condition.setSealId(sealId); + TSeal seal = afCollectTaskService.findSealByCondition(condition); + if (Objects.isNull(seal)) { + throw new RuntimeException("sealId:" + sealId + " 未找到封存病案信息!"); + } + return seal; + } + + + @Override public void collectEcg(String empId, String admissDate, String disDate, String times) throws Exception { Map smCollectionTime = getSmCollectionTimeEcg(admissDate, disDate); @@ -493,6 +565,49 @@ public class BgtsServiceImpl implements IBgtsService { } } + /** + * 封存病案,获取图片url,并返回插入表对象 + * + * @param exams + * @param patientId 封存病案主键 + * @return + */ + private ReportDownDto sealGetUrlCreateReportDto(List exams, String patientId) throws Exception { + ReportDownDto reportDownDto = new ReportDownDto(); + ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto(); + reportDownPatientDto.setPatientid(patientId); + reportDownDto.setPatient(reportDownPatientDto); + String collectorid = String.valueOf(FileUtils.getJsonByName("collectorid")); + String assortid = String.valueOf(FileUtils.getJsonByName("assortid")); + reportDownDto.setAssortid(assortid); + reportDownDto.setCollectorid(collectorid); + List reportDownScanFileDtos = new ArrayList<>(); + ReportDownScanFileDto reportDownScanFileDto; + int filesource = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filesource"))); + int filestoragetype = Integer.parseInt(String.valueOf(FileUtils.getJsonByName("filestoragetype"))); + for (String[] exam : exams) { + try { + reportDownScanFileDto = getScanByExam(exam); + reportDownScanFileDto.setFilesource(filesource); + reportDownScanFileDto.setFilestoragetype(filestoragetype); + //过滤pacs中病理报告 + if (collectorid.equals("3")) { + if (!reportDownScanFileDto.getDownurl().contains("病理") + && !reportDownScanFileDto.getDownurl().contains("胃肠镜") + && !reportDownScanFileDto.getDownurl().contains("心电")) { + reportDownScanFileDtos.add(reportDownScanFileDto); + } + }else { + reportDownScanFileDtos.add(reportDownScanFileDto); + } + }catch (Exception e){ + logger.error(exam[0]+"调用明细错误信息-----"+e.getMessage()); + } + } + reportDownDto.setScanfiles(reportDownScanFileDtos); + return reportDownDto; + } + /** * 获取图片url,病返回插入表对象 * @@ -737,17 +852,17 @@ public class BgtsServiceImpl implements IBgtsService { /** - * 通过empId获取报告单号集合 pacs + * 通过住院号获取报告单号集合 pacs * - * @param empId + * @param inpatientNo 住院号 * @return */ - private List getExamNo(String empId, String admissDate, String disDate) throws Exception { + private List getExamNoByInpNo(String inpatientNo, String admissDate, String disDate) throws Exception { List exams = new ArrayList<>(); // Map Time = getSmCollectionTime(admissDate, disDate); XmlUtils reqXmlUtils = new XmlUtils(FileUtils.getXmlPath()); Element reqElement = reqXmlUtils.getMsgElement(); - reqElement.element("INHOSP_INDEX_NO").setText(empId); + reqElement.element("INHOSP_INDEX_NO").setText(inpatientNo); reqElement.element("BEGIN_DATE").setText(String.valueOf(admissDate)); reqElement.element("END_DATE").setText(String.valueOf(disDate)); logger.info("-------根据患者主索引号查询多个报告单号,地址:" + wsUrl + ",方法:" + wsLocalMethod + "---------"); diff --git a/src/main/java/com/docus/bgts/service/UpdateFileService.java b/src/main/java/com/docus/bgts/service/UpdateFileService.java index 7e6b019..f85c516 100644 --- a/src/main/java/com/docus/bgts/service/UpdateFileService.java +++ b/src/main/java/com/docus/bgts/service/UpdateFileService.java @@ -5,6 +5,9 @@ import com.docus.bgts.entity.*; import com.docus.bgts.enums.Codes; import com.docus.bgts.facade.IAfCollectTaskService; import com.docus.bgts.mapper.dbmysql.ZdAssortMapper; +import com.docus.bgts.rpc.dto.ReportDownDto; +import com.docus.bgts.rpc.dto.ReportDownPatientDto; +import com.docus.bgts.rpc.dto.ReportDownScanFileDto; import com.docus.bgts.utils.FileUtils; import com.docus.bgts.utils.HttpUtils; import org.apache.commons.lang3.StringUtils; diff --git a/src/main/resources/application.yml b/src/main/resources/application.yml index 858785e..36a938a 100644 --- a/src/main/resources/application.yml +++ b/src/main/resources/application.yml @@ -3,6 +3,9 @@ server: port: 9308 # http +docus: + downloadPlatformAddress: http://127.0.0.1:9291 + mybatis-plus: configuration: map-underscore-to-camel-case: true diff --git a/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml b/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml index 2831b5c..e521017 100644 --- a/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml +++ b/src/main/resources/mapper/dbmysql/AfCollectTaskMapper.xml @@ -82,6 +82,53 @@ where jzh=#{jzh} and is_cancel='0' + + +