diff --git a/src/main/java/com/docus/server/collection/webservice/ReceiveServer.java b/src/main/java/com/docus/server/collection/webservice/ReceiveServer.java index 7ef5638..3ac7ec0 100644 --- a/src/main/java/com/docus/server/collection/webservice/ReceiveServer.java +++ b/src/main/java/com/docus/server/collection/webservice/ReceiveServer.java @@ -9,70 +9,92 @@ import javax.jws.WebService; @WebService public interface ReceiveServer { - /** - * 科室信息接收,进行操作 - * @param receiveUser 接收到的科室数据 - * @return 返回结果 - */ - String deptModify(String receiveUser); - - String setTBasic(String str); - - String updateTBasic(String str); - /** - * 用户信息接收,进行操作 - * @param receiveUser 接收到的用户参数 - * @return 返回结果 - */ - String userModify(String receiveUser); - - - /** - * 接收重症报告信息 - * - * @param icuReportMessage 重症报告信息 - * @return 返回信息 - */ - String pushICUReport(String icuReportMessage); - - /** - * 接收检验报告信息 - * - * @param examinationReportMessage 检验报告信息 - * @return 返回信息 - */ - public String pushExaminationReport(String examinationReportMessage); - /** - * HIP1166-pdf件上传服务 顺德人医 ,和检查报告配合 - * @param uploadMessage pdf上传信息 - * @return 成功或者异常信息 - */ - String pdfUpload(String uploadMessage); - /** - * 接收检查报告的信息 - 新增 - * - * @param inspectionReportMessage 检查报告信息 - 新增 - * @return 成功或者异常信息 - */ - String pushAddInspectionReport(String inspectionReportMessage); - - /** - * 接收检查报告的信息 - 更新 - * - * @param inspectionReportMessage 检查报告信息 -更新 - * @return 成功或者异常信息 - */ - String pushUpdateInspectionReport(String inspectionReportMessage); - - - - /** - * 接收检查报告的信息 - 更新 - * - * @param xml 检查报告信息 -更新 - * @return 成功或者异常信息 - */ - String querySdJxIndexTest(String xml); - - String querySdJxIndexNoResultTest(String xml); + /** + * 科室信息接收,进行操作 + * + * @param receiveUser 接收到的科室数据 + * @return 返回结果 + */ + String deptModify(String receiveUser); + + String setTBasic(String str); + + String updateTBasic(String str); + + /** + * 用户信息接收,进行操作 + * + * @param receiveUser 接收到的用户参数 + * @return 返回结果 + */ + String userModify(String receiveUser); + + + /** + * 接收重症报告信息 + * + * @param icuReportMessage 重症报告信息 + * @return 返回信息 + */ + String pushICUReport(String icuReportMessage); + + /** + * 接收检验报告信息 + * + * @param examinationReportMessage 检验报告信息 + * @return 返回信息 + */ + public String pushExaminationReport(String examinationReportMessage); + + /** + * HIP1166-pdf件上传服务 顺德人医 ,和检查报告配合 + * + * @param uploadMessage pdf上传信息 + * @return 成功或者异常信息 + */ + String pdfUpload(String uploadMessage); + + /** + * 接收检查报告的信息 - 新增 + * + * @param inspectionReportMessage 检查报告信息 - 新增 + * @return 成功或者异常信息 + */ + String pushAddInspectionReport(String inspectionReportMessage); + + /** + * 接收检查报告的信息 - 更新 + * + * @param inspectionReportMessage 检查报告信息 -更新 + * @return 成功或者异常信息 + */ + String pushUpdateInspectionReport(String inspectionReportMessage); + + /** + * 接收检验报告的信息 新增 + * + * @param laboratoryMessage 检验报告信息 + * @return 成功或者异常信息 + */ + String pushAddLaboratoryReport(String laboratoryMessage); + + + /** + * 接收检验报告的信息 更新 + * + * @param laboratoryMessage 检验报告信息 + * @return 成功或者异常信息 + */ + String pushUpdateLaboratoryReport(String laboratoryMessage); + + + /** + * 接收检查报告的信息 - 更新 + * + * @param xml 检查报告信息 -更新 + * @return 成功或者异常信息 + */ + String querySdJxIndexTest(String xml); + + String querySdJxIndexNoResultTest(String xml); } diff --git a/src/main/java/com/docus/server/collection/webservice/impl/ReceiveServerImpl.java b/src/main/java/com/docus/server/collection/webservice/impl/ReceiveServerImpl.java index c16966f..5360b43 100644 --- a/src/main/java/com/docus/server/collection/webservice/impl/ReceiveServerImpl.java +++ b/src/main/java/com/docus/server/collection/webservice/impl/ReceiveServerImpl.java @@ -78,6 +78,18 @@ public class ReceiveServerImpl implements ReceiveServer { return reportServer.pushUpdateInspectionReport(inspectionReportMessage); } + @Override + public String pushAddLaboratoryReport(String laboratoryMessage) { + return reportServer.pushAddLaboratoryReport(laboratoryMessage); + } + + @Override + public String pushUpdateLaboratoryReport(String laboratoryMessage) { + return reportServer.pushUpdateLaboratoryReport(laboratoryMessage); + } + + + @Override public String querySdJxIndexTest(String xml) { System.out.println("收到那个人想查报告的动机,参数为:"+xml); diff --git a/src/main/java/com/docus/server/report/webservice/IReportServer.java b/src/main/java/com/docus/server/report/webservice/IReportServer.java index b7a061b..2ecba3a 100644 --- a/src/main/java/com/docus/server/report/webservice/IReportServer.java +++ b/src/main/java/com/docus/server/report/webservice/IReportServer.java @@ -50,4 +50,21 @@ public interface IReportServer { * @return 成功或者异常信息 */ String pdfUpload(String uploadMessage); + + /** + * 接收检验报告的信息 新增 + * + * @param laboratoryMessage 检验报告信息 + * @return 成功或者异常信息 + */ + String pushAddLaboratoryReport(String laboratoryMessage); + + + /** + * 接收检验报告的信息 更新 + * + * @param laboratoryMessage 检验报告信息 + * @return 成功或者异常信息 + */ + String pushUpdateLaboratoryReport(String laboratoryMessage); } diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1010LaboratoryReportAdditionHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1010LaboratoryReportAdditionHandler.java index 092df02..1ab6d1c 100644 --- a/src/main/java/com/docus/server/report/webservice/impl/HIP1010LaboratoryReportAdditionHandler.java +++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1010LaboratoryReportAdditionHandler.java @@ -1,12 +1,21 @@ package com.docus.server.report.webservice.impl; +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.report.api.dto.ReportDto; +import com.docus.server.report.config.ZdAssortConfig; import com.docus.server.report.service.ReportService; +import com.docus.server.report.util.IdUtil; +import com.docus.server.report.util.XmlUtil; import com.docus.server.report.webservice.WebserviceMessageType; import com.docus.server.report.webservice.WebserviceReceiveServerHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.w3c.dom.Node; import javax.annotation.Resource; +import java.util.Date; /** * HIP1010-检验报告新增服务 @@ -20,7 +29,153 @@ public class HIP1010LaboratoryReportAdditionHandler implements WebserviceReceive @Override public String handle(String receiveMessage) { - // todo 未完成 - return null; + log.info("收到检验报告新增消息:{}", receiveMessage); + String msgId = ""; + String sender = ""; + String receiver = ""; + try { + XmlUtil xmlUtil = XmlUtil.of(receiveMessage); + msgId = xmlUtil.getNode("/PRPA_HIP1010/id/@extension").getNodeValue(); + sender = xmlUtil.getNode("/PRPA_HIP1010/sender/device/id/item/@extension").getNodeValue(); + receiver = xmlUtil.getNode("/PRPA_HIP1010/receiver/device/id/item/@extension").getNodeValue(); + ReportDto reportDto = getReportDtoByLaboratoryAddMsg(xmlUtil); + verifyReportDto(reportDto); + reportService.report(reportDto); + return insertSuccess(msgId, sender, receiver); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + return insertFailed(msgId, sender, receiver, baseException.getMessage()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return insertFailed(msgId, sender, receiver, "系统错误!"); + } } + + public static ReportDto getReportDtoByLaboratoryAddMsg(XmlUtil xmlUtil) { + Node senderNode = xmlUtil.getNode("/PRPA_HIP1010/sender/device/id/item/@extension"); + String sender = senderNode.getNodeValue(); + String zdAssortId = ZdAssortConfig.getZdAssortId(sender); + if(Func.isBlank(zdAssortId)){ + zdAssortId=ZdAssortConfig.getOtherAssortId(); + } + + Node inpatientNoNode = xmlUtil.getNode("/PRPA_HIP1010/controlActProcess/subject/encounterEvent/inpNo"); + String inpatientNo = inpatientNoNode.getTextContent(); + + Node admissTimesNode = xmlUtil.getNode("/PRPA_HIP1010/controlActProcess/subject/encounterEvent/visitId"); + Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent()); + + // 检查报告单号标识 + Node reportFlagNode = xmlUtil.getNode("/PRPA_HIP1010/controlActProcess/subject/encounterEvent/id[@root='2.16.156.10011.1.33']/@extension"); + String reportFlag = reportFlagNode.getNodeValue(); + //电子申请单编号 + Node eafNoNode = xmlUtil.getNode("/PRPA_HIP1010/controlActProcess/subject/encounterEvent/id[@root='2.16.156.10011.1.24']/@extension"); + String eafNo = eafNoNode.getNodeValue(); + String serialnum = reportFlag + "@" + eafNo; + + + Node fileTitleNode = xmlUtil.getNode("/PRPA_HIP1010/controlActProcess/subject/encounterEvent/labReportName/@value"); + String fileTitle = fileTitleNode.getNodeValue(); + + Node downUrlNode = xmlUtil.getNode("/PRPA_HIP1010/controlActProcess/subject/encounterEvent/component/structuredBody/component/section/entry/observationMedia/value"); + String downUrl = downUrlNode.getTextContent(); + + ReportDto reportDto = new ReportDto(); + reportDto.setReportSn(reportFlag); + reportDto.setAdmisstimes(admissTimes); + reportDto.setInpatientNo(inpatientNo); + reportDto.setSerialnum(serialnum); + reportDto.setFileTitle(fileTitle); + reportDto.setDownUrl(downUrl); + reportDto.setAssortId(zdAssortId); + reportDto.setSysFlag(sender); + reportDto.setFileSource("1"); + reportDto.setFilestoragetype("1"); + return reportDto; + } + + /** + * 返回检查报告新增成功消息 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @return 新增成功消息响应 + */ + public String insertSuccess(String msgId, String sender, String receiver) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + } + + /** + * 返回检查报告插入失败响应消息 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @return 检查报告新增失败响应消息 + */ + public String insertFailed(String msgId, String sender, String receiver, String failedMessage) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + } + } diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1011LaboratoryReportUpdatesHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1011LaboratoryReportUpdatesHandler.java index a48e920..931b66e 100644 --- a/src/main/java/com/docus/server/report/webservice/impl/HIP1011LaboratoryReportUpdatesHandler.java +++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1011LaboratoryReportUpdatesHandler.java @@ -1,12 +1,21 @@ package com.docus.server.report.webservice.impl; +import com.docus.core.util.DateUtil; +import com.docus.core.util.Func; +import com.docus.infrastructure.core.exception.BaseException; +import com.docus.server.report.api.dto.ReportDto; +import com.docus.server.report.config.ZdAssortConfig; import com.docus.server.report.service.ReportService; +import com.docus.server.report.util.IdUtil; +import com.docus.server.report.util.XmlUtil; import com.docus.server.report.webservice.WebserviceMessageType; import com.docus.server.report.webservice.WebserviceReceiveServerHandler; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; +import org.w3c.dom.Node; import javax.annotation.Resource; +import java.util.Date; /** * HIP1009-检查报告更新服务 @@ -20,9 +29,158 @@ public class HIP1011LaboratoryReportUpdatesHandler implements WebserviceReceiveS @Override public String handle(String receiveMessage) { - // todo 未完成 - return null; + log.info("收到检验报告更新消息{}", receiveMessage); + String msgId = ""; + String sender = ""; + String receiver = ""; + try { + XmlUtil xmlUtil = XmlUtil.of(receiveMessage); + msgId = xmlUtil.getNode("/PRPA_HIP1011/id/@extension").getNodeValue(); + sender = xmlUtil.getNode("/PRPA_HIP1011/sender/device/id/item/@extension").getNodeValue(); + receiver = xmlUtil.getNode("/PRPA_HIP1011/receiver/device/id/item/@extension").getNodeValue(); + ReportDto reportDto = getReportDtoByLaboratoryUpdate(xmlUtil); + verifyReportDto(reportDto); + reportService.report(reportDto); + return updateSuccess(msgId, sender, receiver); + } catch (BaseException baseException) { + log.error(baseException.getMessage(), baseException); + return updateFailed(msgId, sender, receiver, baseException.getMessage()); + } catch (Exception ex) { + log.error(ex.getMessage(), ex); + return updateFailed(msgId, sender, receiver, "系统错误"); + } } + public static ReportDto getReportDtoByLaboratoryUpdate(XmlUtil xmlUtil) { + Node senderNode = xmlUtil.getNode("/PRPA_HIP1011/sender/device/id/item/@extension"); + String sender = senderNode.getNodeValue(); + String zdAssortId = ZdAssortConfig.getZdAssortId(sender); + if(Func.isBlank(zdAssortId)){ + zdAssortId=ZdAssortConfig.getOtherAssortId(); + } + + Node inpatientNoNode = xmlUtil.getNode("/PRPA_HIP1011/controlActProcess/subject/encounterEvent/inpNo"); + String inpatientNo = inpatientNoNode.getTextContent(); + + Node admissTimesNode = xmlUtil.getNode("/PRPA_HIP1011/controlActProcess/subject/encounterEvent/visitId"); + Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent()); + + // 检查报告单号标识 + Node reportFlagNode = xmlUtil.getNode("/PRPA_HIP1011/controlActProcess/subject/encounterEvent/id[@root='2.16.156.10011.1.33']/@extension"); + String reportFlag = reportFlagNode.getNodeValue(); + //电子申请单编号 + Node eafNoNode = xmlUtil.getNode("/PRPA_HIP1011/controlActProcess/subject/encounterEvent/id[@root='2.16.156.10011.1.24']/@extension"); + String eafNo = eafNoNode.getNodeValue(); + String serialnum = reportFlag + "@" + eafNo; + + + Node fileTitleNode = xmlUtil.getNode("/PRPA_HIP1011/controlActProcess/subject/encounterEvent/labReportName/@value"); + String fileTitle = fileTitleNode.getNodeValue(); + + Node downUrlNode = xmlUtil.getNode("/PRPA_HIP1011/controlActProcess/subject/encounterEvent/component/structuredBody/component/section/entry/observationMedia/value"); + String downUrl = downUrlNode.getTextContent(); + + ReportDto reportDto = new ReportDto(); + reportDto.setReportSn(reportFlag); + reportDto.setAdmisstimes(admissTimes); + reportDto.setInpatientNo(inpatientNo); + reportDto.setSerialnum(serialnum); + reportDto.setFileTitle(fileTitle); + reportDto.setDownUrl(downUrl); + reportDto.setAssortId(zdAssortId); + reportDto.setSysFlag(sender); + reportDto.setFileSource("1"); + reportDto.setFilestoragetype("1"); + return reportDto; + } + + + /** + * 返回检查报告更新成功响应消息 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @return 更新成功响应消息 + */ + public String updateSuccess(String msgId, String sender, String receiver) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + + return "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + } + + /** + * 检查报告更新失败响应 + * + * @param msgId 消息id + * @param sender 发送路由 + * @param receiver 接收路由 + * @param failedMessage 失败信息 + * @return 更新失败响应信息 + */ + public String updateFailed(String msgId, String sender, String receiver, String failedMessage) { + String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI); + return "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + "" + + ""; + } + + } diff --git a/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java b/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java index 7a5803e..d53ef49 100644 --- a/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java +++ b/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java @@ -51,7 +51,14 @@ public class SdryReportServerImpl implements IReportServer { return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1166).handle(uploadMessage); } + @Override + public String pushAddLaboratoryReport(String laboratoryMessage) { + return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1010).handle(laboratoryMessage); + } - + @Override + public String pushUpdateLaboratoryReport(String laboratoryMessage) { + return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1011).handle(laboratoryMessage); + } }