diff --git a/src/main/java/com/docus/server/collect/entity/TSeal.java b/src/main/java/com/docus/server/collect/entity/TSeal.java new file mode 100644 index 0000000..9a9b50b --- /dev/null +++ b/src/main/java/com/docus/server/collect/entity/TSeal.java @@ -0,0 +1,66 @@ +package com.docus.server.collect.entity; + +import com.docus.server.collect.service.dto.ReportFileInfoDTO; +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() { + } + public TSeal(ReportFileInfoDTO dto) { + this.patientId=dto.getPatientId(); + this.jzh = dto.getJzh(); + this.inpatientNo = dto.getInpatientNo(); + this.admissTimes = dto.getAdmisstimes(); + } +} diff --git a/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java b/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java index a42fc4c..f2309c1 100644 --- a/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java +++ b/src/main/java/com/docus/server/collect/infrastructure/client/DownloadPlatformService.java @@ -18,4 +18,8 @@ public interface DownloadPlatformService { @ApiOperation("病案上报文件(通用)") @RequestMapping(value = "/api/downplatform/report",method = RequestMethod.POST) public CommonResult report(@RequestBody ReportDownDto resources); + + @ApiOperation("封存病历上报文件(省中医使用)") + @RequestMapping(value = "/api/downplatform/sealReport",method = RequestMethod.POST) + public CommonResult sealReport(@RequestBody ReportDownDto resources); } 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 9322c2d..e8ad16c 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 @@ -2,6 +2,7 @@ package com.docus.server.collect.infrastructure.dao; import com.docus.infrastructure.core.db.dao.IBaseDao; import com.docus.server.collect.entity.DownloadTask; +import com.docus.server.collect.entity.TSeal; /** * 下载任务表-数据访问接口 @@ -39,4 +40,13 @@ public interface DownloadTaskDao extends IBaseDao { * @return 下载任务id(也是文件id) */ Long getDownloadTaskIdFromDownFile(String patientId, String source, String serialNum); + + /** + * 根据封存条件查询封存信息 + * @date 2024/1/10 16:52 + * @author YongBin Wen + * @param seal 封存条件 + * @return com.docus.server.collect.entity.TSeal + */ + TSeal findSealByCondition(TSeal seal); } 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 af042e7..211ca9a 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 @@ -4,6 +4,7 @@ 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.entity.DownloadTask; +import com.docus.server.collect.entity.TSeal; import com.docus.server.collect.infrastructure.dao.DownloadTaskDao; import com.docus.server.collect.infrastructure.mapper.DownloadTaskMapper; import org.springframework.stereotype.Repository; @@ -44,4 +45,9 @@ public class DownloadTaskDaoImpl extends BaseDaoImpl { * @return 下载任务id(也是文件id) */ Long getDownloadTaskIdFromDownFile(@Param("patientId") String patientId, @Param("source") String source, @Param("serialNum") String serialNum); + + /** + * 根据封存条件查询封存信息 + * + * @param seal 封存条件 + * @return com.docus.server.collect.entity.TSeal + * @date 2024/1/10 16:52 + * @author YongBin Wen + */ + TSeal findSealByCondition(@Param("seal") TSeal seal); } diff --git a/src/main/java/com/docus/server/collect/service/FileReportService.java b/src/main/java/com/docus/server/collect/service/FileReportService.java index 698e4c4..d971052 100644 --- a/src/main/java/com/docus/server/collect/service/FileReportService.java +++ b/src/main/java/com/docus/server/collect/service/FileReportService.java @@ -15,6 +15,14 @@ public interface FileReportService { */ void saveDownloadTaskAndReport(ReportFileInfoDTO fileInfoDTO); + /** + * + * 上报封存病案文件信息,生成|更新下载任务,并下发下载平台,此方法用于封存病案 t_seal + * @param fileInfoDTO 上报文件信息 + */ + void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO); + + /** * 根据下载文件任务信息,查询下载任务id(用作文件id) * 查询有三个地方,文件表(需要有patientId),文件下载记录表(需要有patientId),文件下载任务表 diff --git a/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java b/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java index b7d9a7b..54735d0 100644 --- a/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java +++ b/src/main/java/com/docus/server/collect/service/impl/FileReportServiceImpl.java @@ -10,6 +10,7 @@ import com.docus.server.collect.converter.FileReportConverter; 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.entity.TSeal; import com.docus.server.collect.infrastructure.client.DownloadPlatformService; import com.docus.server.collect.infrastructure.client.dto.ReportDownDto; import com.docus.server.collect.infrastructure.dao.DownloadTaskDao; @@ -70,6 +71,27 @@ public class FileReportServiceImpl implements FileReportService { report(downloadTask); } + @Override + public void saveDownloadTaskAndSealReport(ReportFileInfoDTO fileInfoDTO) { + // TODO 封存病案 + TSeal sealCondition = new TSeal(fileInfoDTO); + // 查询基础数据,更新新的病案信息 + TSeal seal = downloadTaskDao.findSealByCondition(sealCondition); + // 如果找到患者基础数据,并且刚好为1条 + fileInfoDTO.setPatientId(seal.getPatientId()); + fileInfoDTO.setInpatientNo(seal.getInpatientNo()); + fileInfoDTO.setAdmisstimes(seal.getAdmissTimes()); + fileInfoDTO.setJzh(seal.getJzh()); + // 转换下载任务对象 + DownloadTask downloadTask = fileReportConverter.convertDownloadTask(fileInfoDTO, 2); + // 查询旧的下载任务id,更新/保存任务信息 + Long downloadTaskId = Optional.ofNullable(getDownloadTaskId(downloadTask)).orElse(idService.getDateSeq()); + downloadTask.setId(downloadTaskId); + downloadTaskDao.saveOrUpdate(downloadTask); + reportSeal(downloadTask); + } + + private TBasicQrDto convertTbasicQrDto(ReportFileInfoDTO fileInfoDTO) { String patientId = fileInfoDTO.getPatientId(); String jzh = fileInfoDTO.getJzh(); @@ -128,4 +150,26 @@ public class FileReportServiceImpl implements FileReportService { } }); } + + + /** + * 根据下载任务,上报到下载平台服务 + * + * @param downloadTask 下载任务 + */ + private void reportSeal(DownloadTask downloadTask) { + threadPoolExecutor.execute(() -> { + if (downloadTask.getBasicDataType().equals(2)) { + ReportDownDto reportDownDto = fileReportConverter.convertDownloadPlatformParam(downloadTask); + String paramJson = Func.toJson(reportDownDto); + try { + log.info("封存病案上报文件,参数:{}", paramJson); + CommonResult result = downloadPlatformService.sealReport(reportDownDto); + log.info("封存病案上报文件,返回结果:{}", Func.toJson(result)); + } catch (Exception ex) { + log.error("封存病案上报文件发生未知错误,参数:" + paramJson, ex); + } + } + }); + } } diff --git a/src/main/resources/mapper/DownloadTaskMapper.xml b/src/main/resources/mapper/DownloadTaskMapper.xml index f99f79d..f5f6f98 100644 --- a/src/main/resources/mapper/DownloadTaskMapper.xml +++ b/src/main/resources/mapper/DownloadTaskMapper.xml @@ -25,5 +25,18 @@ order by `create_time` desc limit 1 +