fix: 佛山三院lis采集接口修改

master
wyb 4 months ago
parent 4b7abc096a
commit 874fb72aee

@ -3,6 +3,7 @@ package com.docus.server.archive.job;
import com.docus.core.util.Func; import com.docus.core.util.Func;
import com.docus.infrastructure.web.api.CommonResult; import com.docus.infrastructure.web.api.CommonResult;
import com.docus.infrastructure.web.api.ResultCode; 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.DownPlatformService;
import com.docus.server.archive.rpc.TaskDistributeService; import com.docus.server.archive.rpc.TaskDistributeService;
import com.docus.server.archive.rpc.dto.ReportDownDto; 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.ReportHospitalTwoDto;
import com.docus.server.archive.rpc.dto.ReportPatientTwoDto; import com.docus.server.archive.rpc.dto.ReportPatientTwoDto;
import com.docus.server.fsy.api.LisReportService; 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.LisPatientListRequest;
import com.docus.server.fsy.api.dto.LisPatientListResponse; 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.docus.server.fsy.converter.LisReportConverter;
import com.xxl.job.core.handler.annotation.XxlJob; import com.xxl.job.core.handler.annotation.XxlJob;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -23,6 +24,7 @@ import org.springframework.stereotype.Component;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.util.List; import java.util.List;
import java.util.Objects; import java.util.Objects;
import java.util.stream.Collectors;
/** /**
* @author YongBin Wen * @author YongBin Wen
@ -42,6 +44,8 @@ public class LisPatientReportCollectJob {
private DownPlatformService downPlatformService; private DownPlatformService downPlatformService;
@Resource @Resource
private TaskDistributeService taskDistributeService; private TaskDistributeService taskDistributeService;
@Resource
private TBasicMapper tBasicMapper;
/** /**
@ -80,20 +84,34 @@ public class LisPatientReportCollectJob {
LisPatientListResponse patientListResponse = lisReportService.getPatientList(lisPatientListRequest); LisPatientListResponse patientListResponse = lisReportService.getPatientList(lisPatientListRequest);
List<LisPatientListResponse.Patient> patientList = patientListResponse.getPatientList(); List<LisPatientListResponse.Patient> patientList = patientListResponse.getPatientList();
if (Func.isEmpty(patientList)) { if (Func.isEmpty(patientList)) {
log.info("佛山三院Lis检验报告采集任务,采集任务id{} 未查询到List患者文件数据", taskId); log.info("佛山三院Lis检验报告采集任务,采集任务id{} 未查询到Lis患者文件数据", taskId);
continue; continue;
} }
// 文件列表查询每个文件,进行上报下载服务
for (LisPatientListResponse.Patient patient : patientList) {
LisPatientReportRequest lisPatientReportRequest = new LisPatientReportRequest(); /// 文件列表查询每个文件,进行上报下载服务 ,于 2025-3-11 更换为 合并获取接口
lisPatientReportRequest.setRepId(patient.getRepId()); // for (LisPatientListResponse.Patient patient : patientList) {
lisPatientReportRequest.setCustomReportSuffix(""); // LisPatientReportRequest lisPatientReportRequest = new LisPatientReportRequest();
LisPatientReportResponse lisReportServicePatientReport = lisReportService.getPatientReport(lisPatientReportRequest); // lisPatientReportRequest.setRepId(patient.getRepId());
ReportDownDto reportDownDto = LisReportConverter.convertDownloadPlatform(reportDownTwoDto, patient, lisReportServicePatientReport); // lisPatientReportRequest.setCustomReportSuffix("");
reportDownDto.setCollectorid(lisCollectorId); // LisPatientReportResponse lisReportServicePatientReport = lisReportService.getPatientReport(lisPatientReportRequest);
reportDownDto.setAssortid(lisAssortId); // ReportDownDto reportDownDto = LisReportConverter.convertDownloadPlatform(reportDownTwoDto, patient, lisReportServicePatientReport);
downPlatformService.report(reportDownDto); // 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) { } catch (Exception ex) {
log.error("====================> 佛山三院Lis检验报告采集任务出现异常_" + ex.getMessage(), ex); log.error("====================> 佛山三院Lis检验报告采集任务出现异常_" + ex.getMessage(), ex);

@ -21,4 +21,6 @@ public interface TBasicMapper {
int insertBatch(@Param("basicList") List<TBasic> basicList); int insertBatch(@Param("basicList") List<TBasic> basicList);
int updateBatch(@Param("basicList") List<TBasic> updateList); int updateBatch(@Param("basicList") List<TBasic> updateList);
int cancelFileBySource(@Param("source")String source,@Param("patientId") String patientId);
} }

@ -1,5 +1,7 @@
package com.docus.server.fsy.api; 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.LisPatientListRequest;
import com.docus.server.fsy.api.dto.LisPatientListResponse; import com.docus.server.fsy.api.dto.LisPatientListResponse;
import com.docus.server.fsy.api.dto.LisPatientReportRequest; import com.docus.server.fsy.api.dto.LisPatientReportRequest;
@ -27,4 +29,12 @@ public interface LisReportService {
* @return * @return
*/ */
LisPatientReportResponse getPatientReport(LisPatientReportRequest request); LisPatientReportResponse getPatientReport(LisPatientReportRequest request);
/**
* PDF
*
* @param request
* @return
*/
LisPatientGroupReportResponse getPatientGroupReport(LisPatientGroupReportRequest request);
} }

@ -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;
}

@ -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;
/**
* PDFbase64
*/
private String patientReport;
}

@ -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.ReportDownScanFileDto;
import com.docus.server.archive.rpc.dto.ReportDownTwoDto; import com.docus.server.archive.rpc.dto.ReportDownTwoDto;
import com.docus.server.archive.utils.XmlUtil; 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.LisPatientListRequest;
import com.docus.server.fsy.api.dto.LisPatientListResponse; import com.docus.server.fsy.api.dto.LisPatientListResponse;
import com.docus.server.fsy.api.dto.LisPatientReportRequest; import com.docus.server.fsy.api.dto.LisPatientReportRequest;
@ -39,6 +41,15 @@ public class LisReportConverter {
"</Request>"; "</Request>";
} }
public static void main(String[] args) {
System.out.println("<Request>\n" +
" <PidInNo></PidInNo>\n" +
" <PidAddmissTimes></PidAddmissTimes>\n" +
" <StartDate></StartDate>\n" +
" <EndDate></EndDate>\n" +
"</Request>");
}
/** /**
* test-pass * test-pass
*/ */
@ -52,6 +63,13 @@ public class LisReportConverter {
"</Request>"; "</Request>";
} }
public static String convertWsParam(LisPatientGroupReportRequest request) {
return "<Request>\n" +
" <RepIds>" + request.getRepIds() + "</RepIds>\n" +
" <ReportCode>" + request.getReportCode() + "</ReportCode>\n" +
"</Request>";
}
/** /**
* test-pass * test-pass
*/ */
@ -157,4 +175,49 @@ public class LisReportConverter {
reportDownDto.setScanfiles(scanfiles); reportDownDto.setScanfiles(scanfiles);
return reportDownDto; 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<ReportDownScanFileDto> 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;
}
} }

@ -2,6 +2,8 @@ package com.docus.server.fsy.service.impl;
import com.docus.server.archive.utils.JaxWsDynamicClientUtil; import com.docus.server.archive.utils.JaxWsDynamicClientUtil;
import com.docus.server.fsy.api.LisReportService; 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.LisPatientListRequest;
import com.docus.server.fsy.api.dto.LisPatientListResponse; import com.docus.server.fsy.api.dto.LisPatientListResponse;
import com.docus.server.fsy.api.dto.LisPatientReportRequest; import com.docus.server.fsy.api.dto.LisPatientReportRequest;
@ -21,6 +23,9 @@ public class LisReportServiceImpl implements LisReportService {
@Value("${fsy.lis.ws-url}") @Value("${fsy.lis.ws-url}")
private String lisUrl; private String lisUrl;
@Value("${fsy.lis.gp-ws-url}")
private String lisGroupPrintUrl;
@Override @Override
public LisPatientListResponse getPatientList(LisPatientListRequest request) { public LisPatientListResponse getPatientList(LisPatientListRequest request) {
final String method="GetPatientList"; final String method="GetPatientList";
@ -41,5 +46,18 @@ public class LisReportServiceImpl implements LisReportService {
return LisReportConverter.convertWsPatientReportResponse(result); 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);
}
} }

@ -73,6 +73,7 @@ spring:
fsy: fsy:
lis: lis:
ws-url: http://10.100.23.96:8095/DCLService.asmx ws-url: http://10.100.23.96:8095/DCLService.asmx
gp-ws-url: http://10.100.23.96:8095/DCLService.asmx
sysflag: 6 sysflag: 6
assortid: 1213131 assortid: 1213131

@ -5,50 +5,61 @@
<mapper namespace="com.docus.server.archive.mapper.TBasicMapper"> <mapper namespace="com.docus.server.archive.mapper.TBasicMapper">
<insert id="insertBatch"> <insert id="insertBatch">
INSERT INTO `docus_medicalrecord`.`t_basic` INSERT INTO `docus_medicalrecord`.`t_basic`
(`patient_id`, `admiss_times`, `inpatient_no`, `name`, `name_spell`, (`patient_id`, `admiss_times`, `inpatient_no`, `name`, `name_spell`,
`sex`, `sex_name`,`age`, `age_month`, `age_day`, `id_card`, `telphone`, `sex`, `sex_name`,`age`, `age_month`, `age_day`, `id_card`, `telphone`,
`admiss_date`,`admiss_dept`, `admiss_dept_name`, `admiss_date`,`admiss_dept`, `admiss_dept_name`,
`dis_date`,`dis_dept`, `dis_dept_name`, `dis_date`,`dis_dept`, `dis_dept_name`,
`attending`, `attending_name`, `attending`, `attending_name`,
`is_dead`,`file_source`, `is_dead`,`file_source`,
`jzh`,`bed_no`, `jz_card_no`, `total_cost`, `jzh`,`bed_no`, `jz_card_no`, `total_cost`,
`create_time`, `update_time`) VALUES `create_time`, `update_time`) VALUES
<foreach collection="basicList" separator="," item="basic"> <foreach collection="basicList" separator="," item="basic">
( (
#{basic.patientId},#{basic.admissTimes},#{basic.inpatientNo},#{basic.name},#{basic.nameSpell}, #{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.sex},#{basic.sexName},#{basic.age},#{basic.ageMonth},#{basic.ageDay},#{basic.idCard},#{basic.telphone},
#{basic.admissDate},#{basic.admissDept},#{basic.admissDeptName}, #{basic.admissDate},#{basic.admissDept},#{basic.admissDeptName},
#{basic.disDate},#{basic.disDept},#{basic.disDeptName}, #{basic.disDate},#{basic.disDept},#{basic.disDeptName},
#{basic.attending},#{basic.attendingName}, #{basic.attending},#{basic.attendingName},
#{basic.isDead},#{basic.fileSource}, #{basic.isDead},#{basic.fileSource},
#{basic.jzh},#{basic.bedNo},#{basic.jzCardNo},#{basic.totalCost}, #{basic.jzh},#{basic.bedNo},#{basic.jzCardNo},#{basic.totalCost},
#{basic.createTime},#{basic.updateTime} #{basic.createTime},#{basic.updateTime}
) )
</foreach> </foreach>
</insert> </insert>
<update id="updateBatch"> <update id="updateBatch">
<foreach collection="basicList" item="basic"> <foreach collection="basicList" item="basic">
UPDATE `docus_medicalrecord`.`t_basic` UPDATE `docus_medicalrecord`.`t_basic`
set inpatient_no=#{basic.inpatientNo},admiss_times=#{basic.admissTimes},name=#{basic.name},name_spell=#{basic.nameSpell}, set
`sex`= #{basic.sex}, `sex_name`=#{basic.sexName},`age`=#{basic.age}, `age_month`=#{basic.ageMonth}, inpatient_no=#{basic.inpatientNo},admiss_times=#{basic.admissTimes},name=#{basic.name},name_spell=#{basic.nameSpell},
`age_day`=#{basic.ageDay}, `id_card`=#{basic.idCard}, `telphone`=#{basic.telphone}, `sex`= #{basic.sex}, `sex_name`=#{basic.sexName},`age`=#{basic.age}, `age_month`=#{basic.ageMonth},
`admiss_date`=#{basic.admissDate},`admiss_dept`=#{basic.admissDept}, `admiss_dept_name`=#{basic.admissDeptName}, `age_day`=#{basic.ageDay}, `id_card`=#{basic.idCard}, `telphone`=#{basic.telphone},
`dis_date`= #{basic.disDate},`dis_dept`=#{basic.disDept}, `dis_dept_name`=#{basic.disDeptName}, `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}, `attending`= #{basic.attending}, `attending_name`=#{basic.attendingName},
`is_dead`=#{basic.isDead},`file_source`=#{basic.fileSource}, `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} `create_time`= #{basic.createTime}, `update_time`=#{basic.updateTime}
WHERE patient_id= #{basic.patientId}; WHERE patient_id= #{basic.patientId};
</foreach> </foreach>
</update> </update>
<update id="cancelFileBySource">
update docus_archivefile.t_scan_assort
set is_del=1
where patient_id = #{patientId}
and source = #{source}
</update>
<select id="getByJzh" resultType="com.docus.server.archive.entity.TBasic"> <select id="getByJzh" resultType="com.docus.server.archive.entity.TBasic">
select patient_id as patientId, select patient_id as patientId,
jzh, jzh,
create_time as createTime create_time as createTime
from docus_medicalrecord.t_basic from docus_medicalrecord.t_basic
where jzh in <foreach collection="jzhs" item="jzh" open="(" close=")" separator=","> where jzh in
#{jzh} <foreach collection="jzhs" item="jzh" open="(" close=")" separator=",">
</foreach> #{jzh}
</foreach>
</select> </select>
</mapper> </mapper>

Loading…
Cancel
Save