diff --git a/data-config/js-table-type.json b/data-config/js-table-type.json index d8e52c4..8c10ef0 100644 --- a/data-config/js-table-type.json +++ b/data-config/js-table-type.json @@ -11,5 +11,6 @@ "bodyTemperature": "移动护理体温单分段id", "authorization": "知情同意书分段id", "xdxt": "xdxt文件分段id", + "blood": "输血报告单分段id", "other": "其他文件分段id" } \ No newline at end of file diff --git a/src/main/java/com/docus/server/report/api/ShunDePeopleService.java b/src/main/java/com/docus/server/report/api/ShunDePeopleService.java index 971d8ad..fa88daa 100644 --- a/src/main/java/com/docus/server/report/api/ShunDePeopleService.java +++ b/src/main/java/com/docus/server/report/api/ShunDePeopleService.java @@ -1,6 +1,8 @@ package com.docus.server.report.api; +import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.report.api.dto.*; +import com.docus.server.report.api.vo.SdRyBloodReportVO; import java.util.List; @@ -67,4 +69,16 @@ public interface ShunDePeopleService { * @return 移动护理推送结果 */ SdNurDocFailResponse pushSdNurDocFail(SdNurDocFailRequest request); + + /** + * 根据病案号查询输血报告单视图 + * + * @param inpatientNo 住院号 + * @param admissTimes 住院次数 + * @return 血液报告 + */ + CommonResult> getBloodView(String inpatientNo, Integer admissTimes); + } + + diff --git a/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java b/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java index 3c605a0..5ee9e1f 100644 --- a/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java +++ b/src/main/java/com/docus/server/report/api/impl/ShunDePeopleServiceImpl.java @@ -4,10 +4,13 @@ import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpResponse; import cn.hutool.http.HttpUtil; import com.alibaba.fastjson.JSON; +import com.alibaba.fastjson.TypeReference; import com.docus.core.util.DateUtil; import com.docus.core.util.Func; +import com.docus.infrastructure.web.api.CommonResult; import com.docus.server.report.api.ShunDePeopleService; import com.docus.server.report.api.dto.*; +import com.docus.server.report.api.vo.SdRyBloodReportVO; import com.docus.server.report.client.JaxWsDynamicClient; import com.docus.server.report.config.SdRyReportQueryConfig; import com.docus.server.report.util.IdUtil; @@ -154,23 +157,24 @@ public class ShunDePeopleServiceImpl implements ShunDePeopleService { } public static void main(String[] args) { - SdNurseInsertSugarRequest request=new SdNurseInsertSugarRequest("10086","1","nur"); + SdNurseInsertSugarRequest request = new SdNurseInsertSugarRequest("10086", "1", "nur"); String requestParam = Func.toJson(request); System.out.println(requestParam); } + @Override public SdNurseInsertSugarResponse getNurseInsertSugarReport(SdNurseInsertSugarRequest request) { String randomUuid = Func.randomUUID(); NURSE_INSERT_SUGAR_LOCK.lock(); try { String requestParam = Func.toJson(request); - log.info("[{}]查询移动护理,请求地址:{},参数:{}", randomUuid,sdRyReportQueryConfig.getReportQueryNurseInsertSugarUrl(), requestParam); + log.info("[{}]查询移动护理,请求地址:{},参数:{}", randomUuid, sdRyReportQueryConfig.getReportQueryNurseInsertSugarUrl(), requestParam); String respBody = sendPost(sdRyReportQueryConfig.getReportQueryNurseInsertSugarUrl(), requestParam); log.info("[{}]查询移动护理,响应:{}", randomUuid, respBody); TimeUnit.MILLISECONDS.sleep(sdRyReportQueryConfig.getReportQueryNurseInsertSugarInterval()); - return JSON.parseObject(respBody,SdNurseInsertSugarResponse.class); + return JSON.parseObject(respBody, SdNurseInsertSugarResponse.class); } catch (Exception ex) { - log.error("["+randomUuid+"]"+"查询移动护理出错了:" + ex.getMessage(), ex); + log.error("[" + randomUuid + "]" + "查询移动护理出错了:" + ex.getMessage(), ex); return new SdNurseInsertSugarResponse(); } finally { NURSE_INSERT_SUGAR_LOCK.unlock(); @@ -182,20 +186,37 @@ public class ShunDePeopleServiceImpl implements ShunDePeopleService { String randomUuid = Func.randomUUID(); NURSE_INSERT_SUGAR_PUSH_ERR_LOCK.lock(); try { - String body=Func.toJson(request); - log.info("[{}] 移动护理推送错误,请求地址:{},参数:{}", randomUuid,sdRyReportQueryConfig.getReportQueryNurseInsertSugarErrPushUrl(), body); + String body = Func.toJson(request); + log.info("[{}] 移动护理推送错误,请求地址:{},参数:{}", randomUuid, sdRyReportQueryConfig.getReportQueryNurseInsertSugarErrPushUrl(), body); String respBody = sendPost(sdRyReportQueryConfig.getReportQueryNurseInsertSugarErrPushUrl(), body); log.info("[{}] 移动护理推送错误,响应:{}", randomUuid, respBody); TimeUnit.MILLISECONDS.sleep(sdRyReportQueryConfig.getReportQueryNurseInsertSugarErrPushInterval()); - return JSON.parseObject(respBody,SdNurDocFailResponse.class); - }catch (Exception ex){ - log.error("["+randomUuid+"]"+"移动护理推送异常,出错了:" + ex.getMessage(), ex); + return JSON.parseObject(respBody, SdNurDocFailResponse.class); + } catch (Exception ex) { + log.error("[" + randomUuid + "]" + "移动护理推送异常,出错了:" + ex.getMessage(), ex); return null; - }finally { + } finally { NURSE_INSERT_SUGAR_PUSH_ERR_LOCK.unlock(); } } + + @Override + public CommonResult> getBloodView(String inpatientNo, Integer admissTimes) { + String rqId = Func.randomUUID(); + String url = sdRyReportQueryConfig.getBloodUrl() + "?inpatientNo=" + inpatientNo + "&admissTimes=" + admissTimes; + try { + log.info("[{}]查询血液报告地址:{}", rqId, url); + String resp = HttpUtil.get(url); + log.info("[{}]查询血液报告结果:{}", rqId, resp); + return JSON.parseObject(resp, new TypeReference>>() { + }); + } catch (Exception ex) { + log.error("[" + rqId + "]" + "查询血液报告出错了:" + ex.getMessage(), ex); + return CommonResult.failed(""); + } + } + private String organizationQuerySdRyInspectReportUrl(String reportQueryLisUrl) { return reportQueryLisUrl + "/query?uuid=" + IdUtil.standardUUID() + "&action=" + sdRyReportQueryConfig.getReportQueryInspectAction() + diff --git a/src/main/java/com/docus/server/report/api/vo/SdRyBloodReportVO.java b/src/main/java/com/docus/server/report/api/vo/SdRyBloodReportVO.java new file mode 100644 index 0000000..446ed56 --- /dev/null +++ b/src/main/java/com/docus/server/report/api/vo/SdRyBloodReportVO.java @@ -0,0 +1,27 @@ +package com.docus.server.report.api.vo; + +import io.swagger.annotations.ApiModel; +import io.swagger.annotations.ApiModelProperty; +import lombok.Data; + +/** + * 顺德人医输血报告单 视图 + * + * @author WYBDEV + */ +@Data +@ApiModel("顺德人医血液报告单查询结果") +public class SdRyBloodReportVO { + @ApiModelProperty("文件id") + private String fileId; + @ApiModelProperty("住院号") + private String inpatientNo; + @ApiModelProperty("住院次数") + private Integer admissions; + @ApiModelProperty("保存文件名") + private String fileName; + @ApiModelProperty("文件描述标题") + private String fileDesc; + @ApiModelProperty("文件下载地址") + private String fileUrl; +} diff --git a/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java b/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java index 6a14a5a..fe54f67 100644 --- a/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java +++ b/src/main/java/com/docus/server/report/config/SdRyReportQueryConfig.java @@ -65,4 +65,16 @@ public class SdRyReportQueryConfig { private String reportQueryNurseInsertSugarErrPushUrl; @Value("${sdry.report-query-url.nurseInsertSugar.pushErr.interval:1000}") private int reportQueryNurseInsertSugarErrPushInterval; + + + + + @Value("${sdry.report-query-url.blood.collectorId}") + private String bloodCollectorId; + @Value("${sdry.report-query-url.blood.url}") + private String bloodUrl; + @Value("${sdry.report-query-url.blood.defaultAssortType}") + private String bloodDefaultAssortType; + + } diff --git a/src/main/java/com/docus/server/report/job/ReportJob.java b/src/main/java/com/docus/server/report/job/ReportJob.java index 48f48e5..b2bd338 100644 --- a/src/main/java/com/docus/server/report/job/ReportJob.java +++ b/src/main/java/com/docus/server/report/job/ReportJob.java @@ -5,12 +5,14 @@ import com.docus.core.util.Func; import com.docus.infrastructure.core.exception.BaseException; import com.docus.infrastructure.redis.service.IdService; import com.docus.infrastructure.redis.service.RedisOps; +import com.docus.infrastructure.web.api.CommonResult; import com.docus.infrastructure.web.api.ResultCode; import com.docus.server.collection.entity.TBasic; import com.docus.server.collection.mapper.TBasicMapper; import com.docus.server.report.api.ShunDePeopleService; import com.docus.server.report.api.TaskDistributeService; import com.docus.server.report.api.dto.*; +import com.docus.server.report.api.vo.SdRyBloodReportVO; import com.docus.server.report.config.SdRyCollectNurseInsertSugarConfig; import com.docus.server.report.config.SdRyReportQueryConfig; import com.docus.server.report.config.TaskValidateConfig; @@ -71,6 +73,44 @@ public class ReportJob { @Resource RedisOps redisOps; + /** + * 输血报告采集 + */ + @XxlJob("SdRyBloodCollectJob") + public void sdRyBloodCollectJob() { + String bloodCollectorId = sdRyReportQueryConfig.getBloodCollectorId(); + ReportDownTwoDto reportDownTwoDto = taskDistributeService.getNoViewTaskByCollectorId(bloodCollectorId); + if (reportDownTwoDto == null) { + return; + } + String patientId = reportDownTwoDto.getPatient().getPatientId(); + String inpatientNo = reportDownTwoDto.getPatient().getInpatientNo(); + Integer admissTimes = reportDownTwoDto.getHospitals().get(0).getAdmissTimes(); + Long taskId = reportDownTwoDto.getTasks().get(0).getTaskId(); + CommonResult> bloodViewReport = shunDePeopleService.getBloodView(inpatientNo, admissTimes); + List sdRyBloodReportVOList = bloodViewReport.getData(); + if (ResultCode.SUCCESS.getCode().equals(bloodViewReport.getCode()) && Func.isNotEmpty(sdRyBloodReportVOList)) { + ReportDto reportDto; + for (SdRyBloodReportVO bloodReportVO : sdRyBloodReportVOList) { + reportDto = new ReportDto(); + reportDto.setSysFlag(bloodCollectorId); + reportDto.setTaskId(taskId); + reportDto.setDownUrl(bloodReportVO.getFileUrl()); + reportDto.setFileTitle(bloodReportVO.getFileId() + bloodReportVO.getFileDesc()); + reportDto.setSerialnum(bloodReportVO.getFileId()); + reportDto.setAssortId(ZdAssortConfig.getZdAssortId(sdRyReportQueryConfig.getBloodDefaultAssortType())); + reportDto.setAdmisstimes(admissTimes); + reportDto.setInpatientNo(inpatientNo); + reportDto.setPatientId(patientId); + reportDto.setDowntype(1); + reportDto.setFileSource("1"); + reportDto.setFilestoragetype("1"); + reportService.report(reportDto); + } + } + log.info("病案号:{},住院次数:{},输血报告单采集:{} 份", inpatientNo, admissTimes, Func.isEmpty(sdRyBloodReportVOList) ? 0 : sdRyBloodReportVOList.size()); + } + @XxlJob("SdRyLisCollectJob") public void sdRyLisCollectJob() { String reportQueryLisCollectorId = sdRyReportQueryConfig.getReportQueryLisCollectorId(); @@ -512,8 +552,6 @@ public class ReportJob { } /** - * - * * @param visitSn 住院号_住院次数 * @param patientSn 患者id * @return 就诊次数 diff --git a/src/main/resources/bootstrap.yml b/src/main/resources/bootstrap.yml index e6370ba..bab5683 100644 --- a/src/main/resources/bootstrap.yml +++ b/src/main/resources/bootstrap.yml @@ -82,6 +82,14 @@ sdry: url: http://127.0.0.1:9311/api/mockTest/nurseErrMock interval: 1000 + # 输血报告 + blood: + # 输血报告采集器队列 + collectorId: 10086 + # 写docus-unified-message服务的ip和端口 + url: http://127.0.0.1:9314/hospital/sdRy/getBloodView + # js-table-type 中配置的文件分段 + defaultAssortType: blood