diff --git a/src/main/java/com/docus/server/archive/job/LisPatientReportCollectJob.java b/src/main/java/com/docus/server/archive/job/LisPatientReportCollectJob.java index f41d2e6..609d0ed 100644 --- a/src/main/java/com/docus/server/archive/job/LisPatientReportCollectJob.java +++ b/src/main/java/com/docus/server/archive/job/LisPatientReportCollectJob.java @@ -3,6 +3,7 @@ package com.docus.server.archive.job; import com.docus.core.util.Func; import com.docus.infrastructure.web.api.CommonResult; import com.docus.infrastructure.web.api.ResultCode; +import com.docus.server.archive.mapper.TBasicMapper; import com.docus.server.archive.rpc.DownPlatformService; import com.docus.server.archive.rpc.TaskDistributeService; import com.docus.server.archive.rpc.dto.ReportDownDto; @@ -10,10 +11,10 @@ import com.docus.server.archive.rpc.dto.ReportDownTwoDto; import com.docus.server.archive.rpc.dto.ReportHospitalTwoDto; import com.docus.server.archive.rpc.dto.ReportPatientTwoDto; import com.docus.server.fsy.api.LisReportService; +import com.docus.server.fsy.api.dto.LisPatientGroupReportRequest; +import com.docus.server.fsy.api.dto.LisPatientGroupReportResponse; import com.docus.server.fsy.api.dto.LisPatientListRequest; import com.docus.server.fsy.api.dto.LisPatientListResponse; -import com.docus.server.fsy.api.dto.LisPatientReportRequest; -import com.docus.server.fsy.api.dto.LisPatientReportResponse; import com.docus.server.fsy.converter.LisReportConverter; import com.xxl.job.core.handler.annotation.XxlJob; import lombok.extern.slf4j.Slf4j; @@ -23,6 +24,7 @@ import org.springframework.stereotype.Component; import javax.annotation.Resource; import java.util.List; import java.util.Objects; +import java.util.stream.Collectors; /** * @author YongBin Wen @@ -42,6 +44,8 @@ public class LisPatientReportCollectJob { private DownPlatformService downPlatformService; @Resource private TaskDistributeService taskDistributeService; + @Resource + private TBasicMapper tBasicMapper; /** @@ -80,20 +84,34 @@ public class LisPatientReportCollectJob { LisPatientListResponse patientListResponse = lisReportService.getPatientList(lisPatientListRequest); List patientList = patientListResponse.getPatientList(); if (Func.isEmpty(patientList)) { - log.info("佛山三院Lis检验报告采集任务,采集任务id:{} 未查询到List患者文件数据", taskId); + log.info("佛山三院Lis检验报告采集任务,采集任务id:{} 未查询到Lis患者文件数据", taskId); continue; } - // 文件列表查询每个文件,进行上报下载服务 - for (LisPatientListResponse.Patient patient : patientList) { - LisPatientReportRequest lisPatientReportRequest = new LisPatientReportRequest(); - lisPatientReportRequest.setRepId(patient.getRepId()); - lisPatientReportRequest.setCustomReportSuffix(""); - LisPatientReportResponse lisReportServicePatientReport = lisReportService.getPatientReport(lisPatientReportRequest); - ReportDownDto reportDownDto = LisReportConverter.convertDownloadPlatform(reportDownTwoDto, patient, lisReportServicePatientReport); - reportDownDto.setCollectorid(lisCollectorId); - reportDownDto.setAssortid(lisAssortId); - downPlatformService.report(reportDownDto); - } + + + /// 文件列表查询每个文件,进行上报下载服务 ,于 2025-3-11 更换为 合并获取接口 +// for (LisPatientListResponse.Patient patient : patientList) { +// LisPatientReportRequest lisPatientReportRequest = new LisPatientReportRequest(); +// lisPatientReportRequest.setRepId(patient.getRepId()); +// lisPatientReportRequest.setCustomReportSuffix(""); +// LisPatientReportResponse lisReportServicePatientReport = lisReportService.getPatientReport(lisPatientReportRequest); +// ReportDownDto reportDownDto = LisReportConverter.convertDownloadPlatform(reportDownTwoDto, patient, lisReportServicePatientReport); +// reportDownDto.setCollectorid(lisCollectorId); +// reportDownDto.setAssortid(lisAssortId); +// downPlatformService.report(reportDownDto); +// } + + // 合并获取接口 + String repIds = patientList.stream().map(LisPatientListResponse.Patient::getRepId).collect(Collectors.joining(",")); + LisPatientGroupReportRequest request = new LisPatientGroupReportRequest(); + request.setReportCode("GroupPrint"); + request.setRepIds(repIds); + LisPatientGroupReportResponse groupReport = lisReportService.getPatientGroupReport(request); + ReportDownDto reportDownDto = LisReportConverter.convertDownloadPlatform(reportDownTwoDto, groupReport); + reportDownDto.setCollectorid(lisCollectorId); + reportDownDto.setAssortid(lisAssortId); + tBasicMapper.cancelFileBySource(lisCollectorId, reportDownTwoDto.getPatientId()); + downPlatformService.report(reportDownDto); } } catch (Exception ex) { log.error("====================> 佛山三院Lis检验报告采集任务出现异常_" + ex.getMessage(), ex); diff --git a/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java b/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java index 4b54005..5b5ca5a 100644 --- a/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java +++ b/src/main/java/com/docus/server/archive/mapper/TBasicMapper.java @@ -21,4 +21,6 @@ public interface TBasicMapper { int insertBatch(@Param("basicList") List basicList); int updateBatch(@Param("basicList") List updateList); + + int cancelFileBySource(@Param("source")String source,@Param("patientId") String patientId); } diff --git a/src/main/java/com/docus/server/fsy/api/LisReportService.java b/src/main/java/com/docus/server/fsy/api/LisReportService.java index 40611f8..76c5fb0 100644 --- a/src/main/java/com/docus/server/fsy/api/LisReportService.java +++ b/src/main/java/com/docus/server/fsy/api/LisReportService.java @@ -1,5 +1,7 @@ package com.docus.server.fsy.api; +import com.docus.server.fsy.api.dto.LisPatientGroupReportRequest; +import com.docus.server.fsy.api.dto.LisPatientGroupReportResponse; import com.docus.server.fsy.api.dto.LisPatientListRequest; import com.docus.server.fsy.api.dto.LisPatientListResponse; import com.docus.server.fsy.api.dto.LisPatientReportRequest; @@ -27,4 +29,12 @@ public interface LisReportService { * @return 报告信息 */ LisPatientReportResponse getPatientReport(LisPatientReportRequest request); + + /** + * 获取PDF报告 + * + * @param request 参数 + * @return 报告信息 + */ + LisPatientGroupReportResponse getPatientGroupReport(LisPatientGroupReportRequest request); } diff --git a/src/main/java/com/docus/server/fsy/api/dto/LisPatientGroupReportRequest.java b/src/main/java/com/docus/server/fsy/api/dto/LisPatientGroupReportRequest.java new file mode 100644 index 0000000..c302ac2 --- /dev/null +++ b/src/main/java/com/docus/server/fsy/api/dto/LisPatientGroupReportRequest.java @@ -0,0 +1,19 @@ +package com.docus.server.fsy.api.dto; + +import lombok.Data; + +/** + * @author YongBin Wen + * @date 2024/3/29 10:22 + */ +@Data +public class LisPatientGroupReportRequest { + /** + * 报告单号,多个,隔开 + */ + private String repIds; + /** + * 报告代码 + */ + private String reportCode; +} diff --git a/src/main/java/com/docus/server/fsy/api/dto/LisPatientGroupReportResponse.java b/src/main/java/com/docus/server/fsy/api/dto/LisPatientGroupReportResponse.java new file mode 100644 index 0000000..8327efa --- /dev/null +++ b/src/main/java/com/docus/server/fsy/api/dto/LisPatientGroupReportResponse.java @@ -0,0 +1,19 @@ +package com.docus.server.fsy.api.dto; + +import lombok.Data; + +/** + * @author YongBin Wen + * @date 2024/3/29 10:22 + */ +@Data +public class LisPatientGroupReportResponse { + /** + * 报告单号 + */ + private String repIds; + /** + * PDF,base64 + */ + private String patientReport; +} diff --git a/src/main/java/com/docus/server/fsy/converter/LisReportConverter.java b/src/main/java/com/docus/server/fsy/converter/LisReportConverter.java index 9c5bf9a..9fe9ed5 100644 --- a/src/main/java/com/docus/server/fsy/converter/LisReportConverter.java +++ b/src/main/java/com/docus/server/fsy/converter/LisReportConverter.java @@ -6,6 +6,8 @@ import com.docus.server.archive.rpc.dto.ReportDownPatientDto; import com.docus.server.archive.rpc.dto.ReportDownScanFileDto; import com.docus.server.archive.rpc.dto.ReportDownTwoDto; import com.docus.server.archive.utils.XmlUtil; +import com.docus.server.fsy.api.dto.LisPatientGroupReportRequest; +import com.docus.server.fsy.api.dto.LisPatientGroupReportResponse; import com.docus.server.fsy.api.dto.LisPatientListRequest; import com.docus.server.fsy.api.dto.LisPatientListResponse; import com.docus.server.fsy.api.dto.LisPatientReportRequest; @@ -39,6 +41,15 @@ public class LisReportConverter { ""; } + public static void main(String[] args) { + System.out.println("\n" + + " \n" + + " \n" + + " \n" + + " \n" + + ""); + } + /** * test-pass */ @@ -52,6 +63,13 @@ public class LisReportConverter { ""; } + public static String convertWsParam(LisPatientGroupReportRequest request) { + return "\n" + + " " + request.getRepIds() + "\n" + + " " + request.getReportCode() + "\n" + + ""; + } + /** * test-pass */ @@ -157,4 +175,49 @@ public class LisReportConverter { reportDownDto.setScanfiles(scanfiles); return reportDownDto; } + + public static ReportDownDto convertDownloadPlatform(ReportDownTwoDto reportDownTwoDto, LisPatientGroupReportResponse groupReport) { + ReportDownScanFileDto scanFileDto = new ReportDownScanFileDto(); + scanFileDto.setTaskid(reportDownTwoDto.getTasks().get(0).getTaskId()); + scanFileDto.setFiletitle("检验报告单"); + scanFileDto.setFilesource(1); + scanFileDto.setFilestoragetype(1); + scanFileDto.setFiletype(2); + scanFileDto.setDownurl(groupReport.getPatientReport()); + scanFileDto.setSerialnum("jianyan-"+reportDownTwoDto.getPatientId()); + + + List scanfiles = new ArrayList<>(); + scanfiles.add(scanFileDto); + + ReportDownPatientDto reportDownPatientDto = new ReportDownPatientDto(); + reportDownPatientDto.setPatientid(reportDownTwoDto.getPatientId()); + + ReportDownDto reportDownDto = new ReportDownDto(); + reportDownDto.setIp("ws-java"); + reportDownDto.setScanusercode("ws-java"); + reportDownDto.setScanusername("ws-java-"); + reportDownDto.setPatient(reportDownPatientDto); + reportDownDto.setScanfiles(scanfiles); + return reportDownDto; + } + + + public static LisPatientGroupReportResponse convertWsPatientGroupReportResponse(String result) { + if (Func.isBlank(result)) { + return null; + } + XmlUtil xmlUtil = XmlUtil.of(result); + if (wsIsFailed(xmlUtil)) { + return null; + } + Node repIdsNode = xmlUtil.getNode("/Response/Result/Patient/RepId"); + Node patientReportNode = xmlUtil.getNode("/Response/Result/Patient/PatientReport"); + LisPatientGroupReportResponse response = new LisPatientGroupReportResponse(); + response.setRepIds(repIdsNode.getTextContent()); + response.setPatientReport(patientReportNode.getTextContent()); + return response; + } + + } diff --git a/src/main/java/com/docus/server/fsy/service/impl/LisReportServiceImpl.java b/src/main/java/com/docus/server/fsy/service/impl/LisReportServiceImpl.java index 6c0f425..271bae9 100644 --- a/src/main/java/com/docus/server/fsy/service/impl/LisReportServiceImpl.java +++ b/src/main/java/com/docus/server/fsy/service/impl/LisReportServiceImpl.java @@ -2,6 +2,8 @@ package com.docus.server.fsy.service.impl; import com.docus.server.archive.utils.JaxWsDynamicClientUtil; import com.docus.server.fsy.api.LisReportService; +import com.docus.server.fsy.api.dto.LisPatientGroupReportRequest; +import com.docus.server.fsy.api.dto.LisPatientGroupReportResponse; import com.docus.server.fsy.api.dto.LisPatientListRequest; import com.docus.server.fsy.api.dto.LisPatientListResponse; import com.docus.server.fsy.api.dto.LisPatientReportRequest; @@ -21,6 +23,9 @@ public class LisReportServiceImpl implements LisReportService { @Value("${fsy.lis.ws-url}") private String lisUrl; + @Value("${fsy.lis.gp-ws-url}") + private String lisGroupPrintUrl; + @Override public LisPatientListResponse getPatientList(LisPatientListRequest request) { final String method="GetPatientList"; @@ -41,5 +46,18 @@ public class LisReportServiceImpl implements LisReportService { return LisReportConverter.convertWsPatientReportResponse(result); } + @Override + public LisPatientGroupReportResponse getPatientGroupReport(LisPatientGroupReportRequest request) { + final String method="GetPatientReportByReportCode"; + Object[] params = new Object[2]; + params[0]=method; + params[1]= LisReportConverter.convertWsParam(request); + String result = JaxWsDynamicClientUtil.send(lisGroupPrintUrl, null, "DCLInterface", params); + return LisReportConverter.convertWsPatientGroupReportResponse(result); + } + + + + } diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index 57a690d..2c2585f 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -73,6 +73,7 @@ spring: fsy: lis: ws-url: http://10.100.23.96:8095/DCLService.asmx + gp-ws-url: http://10.100.23.96:8095/DCLService.asmx sysflag: 6 assortid: 1213131 diff --git a/src/main/resources/mapper/TBasicMapper.xml b/src/main/resources/mapper/TBasicMapper.xml index 4a7be12..c836c8e 100644 --- a/src/main/resources/mapper/TBasicMapper.xml +++ b/src/main/resources/mapper/TBasicMapper.xml @@ -5,50 +5,61 @@ INSERT INTO `docus_medicalrecord`.`t_basic` - (`patient_id`, `admiss_times`, `inpatient_no`, `name`, `name_spell`, - `sex`, `sex_name`,`age`, `age_month`, `age_day`, `id_card`, `telphone`, - `admiss_date`,`admiss_dept`, `admiss_dept_name`, - `dis_date`,`dis_dept`, `dis_dept_name`, - `attending`, `attending_name`, - `is_dead`,`file_source`, - `jzh`,`bed_no`, `jz_card_no`, `total_cost`, - `create_time`, `update_time`) VALUES - - ( - #{basic.patientId},#{basic.admissTimes},#{basic.inpatientNo},#{basic.name},#{basic.nameSpell}, - #{basic.sex},#{basic.sexName},#{basic.age},#{basic.ageMonth},#{basic.ageDay},#{basic.idCard},#{basic.telphone}, - #{basic.admissDate},#{basic.admissDept},#{basic.admissDeptName}, - #{basic.disDate},#{basic.disDept},#{basic.disDeptName}, - #{basic.attending},#{basic.attendingName}, - #{basic.isDead},#{basic.fileSource}, - #{basic.jzh},#{basic.bedNo},#{basic.jzCardNo},#{basic.totalCost}, - #{basic.createTime},#{basic.updateTime} - ) - + (`patient_id`, `admiss_times`, `inpatient_no`, `name`, `name_spell`, + `sex`, `sex_name`,`age`, `age_month`, `age_day`, `id_card`, `telphone`, + `admiss_date`,`admiss_dept`, `admiss_dept_name`, + `dis_date`,`dis_dept`, `dis_dept_name`, + `attending`, `attending_name`, + `is_dead`,`file_source`, + `jzh`,`bed_no`, `jz_card_no`, `total_cost`, + `create_time`, `update_time`) VALUES + + ( + #{basic.patientId},#{basic.admissTimes},#{basic.inpatientNo},#{basic.name},#{basic.nameSpell}, + #{basic.sex},#{basic.sexName},#{basic.age},#{basic.ageMonth},#{basic.ageDay},#{basic.idCard},#{basic.telphone}, + #{basic.admissDate},#{basic.admissDept},#{basic.admissDeptName}, + #{basic.disDate},#{basic.disDept},#{basic.disDeptName}, + #{basic.attending},#{basic.attendingName}, + #{basic.isDead},#{basic.fileSource}, + #{basic.jzh},#{basic.bedNo},#{basic.jzCardNo},#{basic.totalCost}, + #{basic.createTime},#{basic.updateTime} + ) + - - UPDATE `docus_medicalrecord`.`t_basic` - set inpatient_no=#{basic.inpatientNo},admiss_times=#{basic.admissTimes},name=#{basic.name},name_spell=#{basic.nameSpell}, - `sex`= #{basic.sex}, `sex_name`=#{basic.sexName},`age`=#{basic.age}, `age_month`=#{basic.ageMonth}, - `age_day`=#{basic.ageDay}, `id_card`=#{basic.idCard}, `telphone`=#{basic.telphone}, - `admiss_date`=#{basic.admissDate},`admiss_dept`=#{basic.admissDept}, `admiss_dept_name`=#{basic.admissDeptName}, - `dis_date`= #{basic.disDate},`dis_dept`=#{basic.disDept}, `dis_dept_name`=#{basic.disDeptName}, + + UPDATE `docus_medicalrecord`.`t_basic` + set + inpatient_no=#{basic.inpatientNo},admiss_times=#{basic.admissTimes},name=#{basic.name},name_spell=#{basic.nameSpell}, + `sex`= #{basic.sex}, `sex_name`=#{basic.sexName},`age`=#{basic.age}, `age_month`=#{basic.ageMonth}, + `age_day`=#{basic.ageDay}, `id_card`=#{basic.idCard}, `telphone`=#{basic.telphone}, + `admiss_date`=#{basic.admissDate},`admiss_dept`=#{basic.admissDept}, + `admiss_dept_name`=#{basic.admissDeptName}, + `dis_date`= #{basic.disDate},`dis_dept`=#{basic.disDept}, `dis_dept_name`=#{basic.disDeptName}, `attending`= #{basic.attending}, `attending_name`=#{basic.attendingName}, `is_dead`=#{basic.isDead},`file_source`=#{basic.fileSource}, - `jzh`= #{basic.jzh},`bed_no`=#{basic.bedNo}, `jz_card_no`=#{basic.jzCardNo}, `total_cost`=#{basic.totalCost}, + `jzh`= #{basic.jzh},`bed_no`=#{basic.bedNo}, `jz_card_no`=#{basic.jzCardNo}, + `total_cost`=#{basic.totalCost}, `create_time`= #{basic.createTime}, `update_time`=#{basic.updateTime} WHERE patient_id= #{basic.patientId}; + + update docus_archivefile.t_scan_assort + set is_del=1 + where patient_id = #{patientId} + and source = #{source} + +