From 8c0f56d94daf792f820481a1f09b857fc29dc2eb Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Thu, 8 Jun 2023 15:03:25 +0800
Subject: [PATCH] =?UTF-8?q?=E7=BB=93=E6=9E=84=E8=B0=83=E6=95=B4?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../WebserviceReceiveServerHandler.java | 172 ++++
...IP1008InspectionReportAdditionHandler.java | 257 ++++++
...HIP1009InspectionReportUpdatesHandler.java | 253 ++++++
...IP1010LaboratoryReportAdditionHandler.java | 25 +
...HIP1011LaboratoryReportUpdatesHandler.java | 27 +
.../impl/HIP1166PdfUploadHandler.java | 132 +++
.../impl/JsExaminationReportHandler.java | 46 ++
.../webservice/impl/JsIcuReportHandler.java | 46 ++
.../webservice/impl/JsSAReportHandler.java | 47 ++
.../webservice/impl/SdryReportServerImpl.java | 767 +-----------------
10 files changed, 1017 insertions(+), 755 deletions(-)
create mode 100644 src/main/java/com/docus/server/report/webservice/WebserviceReceiveServerHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/HIP1009InspectionReportUpdatesHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/HIP1010LaboratoryReportAdditionHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/HIP1011LaboratoryReportUpdatesHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/HIP1166PdfUploadHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/JsExaminationReportHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/JsSAReportHandler.java
diff --git a/src/main/java/com/docus/server/report/webservice/WebserviceReceiveServerHandler.java b/src/main/java/com/docus/server/report/webservice/WebserviceReceiveServerHandler.java
new file mode 100644
index 0000000..47dde30
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/WebserviceReceiveServerHandler.java
@@ -0,0 +1,172 @@
+package com.docus.server.report.webservice;
+
+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.util.TableJsonRead;
+import com.docus.server.report.util.XmlUtil;
+import org.w3c.dom.Node;
+
+/**
+ * 报告处理
+ * @author jiashi
+ */
+public interface WebserviceReceiveServerHandler {
+ /**
+ * 对接收到的消息进行业务处理,返回结果
+ * @param receiveMessage 接收到的消息
+ * @return 返回消息
+ */
+ String handle(String receiveMessage);
+
+ /**
+ * 验证上报文件的信息
+ *
+ * @param reportDto 上报文件的信息
+ * @throws BaseException 验证不通过抛出业务异常
+ */
+ default void verifyFileInfo(ReportDto reportDto) throws BaseException {
+ if (Func.isBlank(reportDto.getInpatientNo())) {
+ throw new BaseException("住院号不能为空!");
+ }
+ if (Func.isEmpty(reportDto.getAdmisstimes()) && Func.isBlank(reportDto.getJzh())) {
+ throw new BaseException("当住院号与住院次数都为空时,住院流水号/记账号不能为空!");
+ }
+
+ if (Func.isBlank(reportDto.getFileTitle())) {
+ throw new BaseException("文件名不能为空!");
+ }
+ }
+ /**
+ * 验证上报文件的信息
+ *
+ * @param reportDto 上报文件的信息
+ * @throws BaseException 验证不通过抛出业务异常
+ */
+ default void verifyReportDto(ReportDto reportDto) throws BaseException {
+ verifyFileInfo(reportDto);
+ if (Func.isBlank(reportDto.getDownUrl())) {
+ throw new BaseException("文件下载地址不能为空!");
+ }
+ }
+
+
+ /**
+ * 嘉时自定义接收接口使用,从xml工具读取返回文件上报需要的数据
+ *
+ * @param xmlUtil xml消息工具封装
+ * @return 文件上报数据
+ */
+ default ReportDto convert(XmlUtil xmlUtil) {
+ TableJsonRead jsonRead = new TableJsonRead();
+ String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml");
+ XmlUtil configXmlUtil = XmlUtil.of(jsReportConfigXml);
+
+ Node inpatientNoXpathNode = configXmlUtil.getNode("/REPORT/INPATIENT_NO");
+ String inpatientNoXpath = inpatientNoXpathNode.getTextContent();
+ Node inpatientNoNode = xmlUtil.getNode(inpatientNoXpath);
+ String inpatientNo = inpatientNoNode.getTextContent();
+
+ Node jzhXpathNode = configXmlUtil.getNode("/REPORT/JZH");
+ String jzhXpath = jzhXpathNode.getTextContent();
+ Node jzhNode = xmlUtil.getNode(jzhXpath);
+ String jzh = jzhNode.getTextContent();
+
+ Node admissTimesXpathNode = configXmlUtil.getNode("/REPORT/ADMISS_TIMES");
+ String admissTimesXpath = admissTimesXpathNode.getTextContent();
+ Node admissTimesNode = xmlUtil.getNode(admissTimesXpath);
+ Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent());
+
+ Node serialnumXpathNode = configXmlUtil.getNode("/REPORT/SERIALNUM");
+ String serialnumXpath = serialnumXpathNode.getTextContent();
+ Node serialnumNode = xmlUtil.getNode(serialnumXpath);
+ String serialnum = serialnumNode.getTextContent();
+
+ Node fileTitleXpathNode = configXmlUtil.getNode("/REPORT/FILE_TITLE");
+ String fileTitleXpath = fileTitleXpathNode.getTextContent();
+ Node fileTitleNode = xmlUtil.getNode(fileTitleXpath);
+ String fileTitle = fileTitleNode.getTextContent();
+
+ Node downUrlXpathNode = configXmlUtil.getNode("/REPORT/DOWNURL");
+ String downUrlXpath = downUrlXpathNode.getTextContent();
+ Node downUrlNode = xmlUtil.getNode(downUrlXpath);
+ String downUrl = downUrlNode.getTextContent();
+
+ Node tableTypeXpathNode = configXmlUtil.getNode("/REPORT/TABLE_TYPE");
+ String tableTypeXpath = tableTypeXpathNode.getTextContent();
+ Node tableTypeNode = xmlUtil.getNode(tableTypeXpath);
+ String tableType = tableTypeNode.getTextContent();
+
+
+ Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID");
+ String assortIdXpath = assortIdXpathNode.getTextContent();
+ String assortId;
+ if (Func.isBlank(assortIdXpath)) {
+ // 如果没有配置 取value 属性,如果value也未配置 取 tableType 对应的json配置,最终方案默认 other 分段
+ Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value");
+ if (Func.isEmpty(assortIdValueNode)) {
+ assortId = assortIdValueNode.getNodeValue();
+ } else {
+ assortId= ZdAssortConfig.getZdAssortId(tableType);
+ }
+ if (Func.isBlank(assortId)) {
+ assortId = ZdAssortConfig.getOtherAssortId();
+ }
+ } else {
+ Node assortIdNode = xmlUtil.getNode(assortIdXpath);
+ assortId = assortIdNode.getTextContent();
+ }
+
+ Node sysFlagXpathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG");
+ String sysFlagXpath = sysFlagXpathNode.getTextContent();
+ Node sysFlagNode = xmlUtil.getNode(sysFlagXpath);
+ String sysFlag = sysFlagNode.getTextContent();
+
+ Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE");
+ String fileSourceXpath = fileSourceXpathNode.getTextContent();
+ String fileSource;
+ if (Func.isBlank(fileSourceXpath)) {
+ Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value");
+ if (Func.isEmpty(fileSourceValueNode)) {
+ fileSource = null;
+ } else {
+ fileSource = fileSourceValueNode.getNodeValue();
+ }
+
+ } else {
+ Node fileSourceNode = xmlUtil.getNode(fileSourceXpath);
+ fileSource = fileSourceNode.getTextContent();
+ }
+
+
+ Node fileStorageTypeXpathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE");
+ String fileStorageTypeXpath = fileStorageTypeXpathNode.getTextContent();
+ String fileStorageType;
+ if (Func.isBlank(fileStorageTypeXpath)) {
+ Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value");
+ if (Func.isEmpty(filestoragetypeValueNode)) {
+ fileStorageType = "1";
+ } else {
+ fileStorageType = filestoragetypeValueNode.getNodeValue();
+ }
+
+ } else {
+ Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath);
+ fileStorageType = filestoragetypeNode.getTextContent();
+ }
+
+ ReportDto reportDto = new ReportDto();
+ reportDto.setAdmisstimes(admissTimes);
+ reportDto.setInpatientNo(inpatientNo);
+ reportDto.setJzh(jzh);
+ reportDto.setSerialnum(serialnum);
+ reportDto.setFileTitle(fileTitle);
+ reportDto.setDownUrl(downUrl);
+ reportDto.setAssortId(assortId);
+ reportDto.setSysFlag(sysFlag);
+ reportDto.setFileSource(fileSource);
+ reportDto.setFilestoragetype(fileStorageType);
+ return reportDto;
+ }
+}
diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java
new file mode 100644
index 0000000..8660050
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1008InspectionReportAdditionHandler.java
@@ -0,0 +1,257 @@
+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.SdRyReportHandledConfig;
+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.WebserviceReceiveServerHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+import org.w3c.dom.Node;
+
+import javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * HIP1008-检查报告新增服务处理
+ * @author jiahsi
+ */
+@Service("HIP1008")
+@Slf4j
+public class HIP1008InspectionReportAdditionHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ log.info("收到检查报告新增消息:{}", receiveMessage);
+ String msgId = "";
+ String sender = "";
+ String receiver = "";
+ try {
+ XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
+ msgId = xmlUtil.getNode("/POOR_HIP1008/id/@extension").getNodeValue();
+ sender = xmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension").getNodeValue();
+ receiver = xmlUtil.getNode("/POOR_HIP1008/receiver/device/id/item/@extension").getNodeValue();
+ SdRyReportHandledConfig sdRyReportHandledConfig = new SdRyReportHandledConfig();
+ ReportDto reportDto = getReportDtoByInspectionInsert(xmlUtil);
+ verifyFileInfo(reportDto);
+ String sysFlag = reportDto.getSysFlag();
+ if (sdRyReportHandledConfig.isNotHandled(sysFlag)) {
+ return insertSuccess(msgId, sender, receiver);
+ }
+ if(sdRyReportHandledConfig.isBlocking(sysFlag)){
+ reportDto.setDownUrl(null);
+ reportService.reportBuffer(reportDto);
+ return insertSuccess(msgId, sender, receiver);
+ }
+ 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 ReportDto getReportDtoByInspectionInsert(XmlUtil inspectionInsertXmlUtil) {
+ Node senderNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension");
+ String sender = senderNode.getNodeValue();
+ String zdAssortId = ZdAssortConfig.getZdAssortId(sender);
+ if(Func.isBlank(zdAssortId)){
+ zdAssortId=ZdAssortConfig.getOtherAssortId();
+ }
+
+ Node inpatientNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
+ String inpatientNo = inpatientNoNode.getNodeValue();
+
+ Node admissTimesNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
+ Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
+
+ // 检查报告单号标识
+ Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
+ String reportFlag = reportFlagNode.getNodeValue();
+ //电子申请单编号
+ Node eafNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
+ String eafNo = eafNoNode.getNodeValue();
+ String serialnum = reportFlag + "@" + eafNo;
+
+// Node assortIdNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
+// String assortId = assortIdNode.getNodeValue();
+
+// Node sysFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
+// String sysFlag = sysFlagNode.getNodeValue();
+
+ Node fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName");
+ String fileTitle = fileTitleNode.getNodeValue();
+
+ Node downUrlNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/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 "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
+// 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 "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
+// return "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// " " +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// " " +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// " " +
+// "" +
+// "" +
+// "";
+ }
+
+
+}
diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1009InspectionReportUpdatesHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1009InspectionReportUpdatesHandler.java
new file mode 100644
index 0000000..534525a
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1009InspectionReportUpdatesHandler.java
@@ -0,0 +1,253 @@
+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.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-检查报告更新服务
+ * @author jiahsi
+ */
+@Service("HIP1009")
+@Slf4j
+public class HIP1009InspectionReportUpdatesHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ log.info("收到检查报告更新消息{}", receiveMessage);
+ String msgId = "";
+ String sender = "";
+ String receiver = "";
+ try {
+ XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
+ msgId = xmlUtil.getNode("/POOR_HIP1009/id/@extension").getNodeValue();
+ sender = xmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension").getNodeValue();
+ receiver = xmlUtil.getNode("/POOR_HIP1009/receiver/device/id/item/@extension").getNodeValue();
+
+ ReportDto reportDto = getReportDtoByInspectionUpdate(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 ReportDto getReportDtoByInspectionUpdate(XmlUtil inspectionUpdateXmlUtil) {
+ Node senderNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension");
+ String sender = senderNode.getNodeValue();
+ String zdAssortId = ZdAssortConfig.getZdAssortId(sender);
+ if(Func.isBlank(zdAssortId)){
+ zdAssortId=ZdAssortConfig.getOtherAssortId();
+ }
+
+ Node inpatientNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
+ String inpatientNo = inpatientNoNode.getNodeValue();
+
+ Node admissTimesNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
+ Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
+
+ // 检查报告单号标识
+ Node reportFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
+ String reportFlag = reportFlagNode.getNodeValue();
+ //电子申请单编号
+ Node eafNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
+ String eafNo = eafNoNode.getNodeValue();
+ String serialnum = reportFlag + "@" + eafNo;
+
+// Node assortIdNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
+// String assortId = assortIdNode.getNodeValue();
+//
+// Node sysFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
+// String sysFlag = sysFlagNode.getNodeValue();
+
+ Node fileTitleNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName");
+ String fileTitle = fileTitleNode.getNodeValue();
+
+ Node downUrlNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/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 "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
+
+// 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 "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
+
+// return "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// " " +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// " " +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// "" +
+// " " +
+// "" +
+// "" +
+// "";
+ }
+}
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
new file mode 100644
index 0000000..f1ef0c9
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1010LaboratoryReportAdditionHandler.java
@@ -0,0 +1,25 @@
+package com.docus.server.report.webservice.impl;
+
+import com.docus.server.report.service.ReportService;
+import com.docus.server.report.webservice.WebserviceReceiveServerHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * HIP1010-检验报告新增服务
+ * @author jiahsi
+ */
+@Service("HIP1010")
+@Slf4j
+public class HIP1010LaboratoryReportAdditionHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ // todo 未完成
+ return null;
+ }
+}
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
new file mode 100644
index 0000000..6a62d15
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1011LaboratoryReportUpdatesHandler.java
@@ -0,0 +1,27 @@
+package com.docus.server.report.webservice.impl;
+
+import com.docus.server.report.service.ReportService;
+import com.docus.server.report.webservice.WebserviceReceiveServerHandler;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+/**
+ * HIP1009-检查报告更新服务
+ * @author jiahsi
+ */
+@Service("HIP1011")
+@Slf4j
+public class HIP1011LaboratoryReportUpdatesHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ // todo 未完成
+ return null;
+ }
+
+
+}
diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1166PdfUploadHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1166PdfUploadHandler.java
new file mode 100644
index 0000000..2dbc070
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1166PdfUploadHandler.java
@@ -0,0 +1,132 @@
+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.service.ReportService;
+import com.docus.server.report.util.IdUtil;
+import com.docus.server.report.util.XmlUtil;
+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;
+
+/**
+ * 重症症接收
+ *
+ * @author wyb
+ */
+@Service("HIP1166")
+@Slf4j
+public class HIP1166PdfUploadHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ log.info("收到pdf上传信息{}", receiveMessage);
+ String msgId = "";
+ String sender = "";
+ String receiver = "";
+ try {
+ XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
+ msgId = xmlUtil.getNode("/POOR_HIP1166/id/@extension").getNodeValue();
+ sender = xmlUtil.getNode("/POOR_HIP1166/sender/device/id/item/@extension").getNodeValue();
+ receiver = xmlUtil.getNode("/POOR_HIP1166/receiver/device/id/item/@extension").getNodeValue();
+ ReportDto reportDto = getReportDtoByPdfUpload(xmlUtil);
+ reportService.reportBuffer(reportDto);
+ return uploadSuccess(msgId, sender, receiver);
+ } catch (BaseException baseException) {
+ log.error(baseException.getMessage(), baseException);
+ return uploadFailed(msgId, sender, receiver, baseException.getMessage());
+ } catch (Exception ex) {
+ log.error(ex.getMessage(), ex);
+ return uploadFailed(msgId, sender, receiver, "系统错误!");
+ }
+ }
+
+ private ReportDto getReportDtoByPdfUpload(XmlUtil xmlUtil) {
+ // 检查报告单号标识
+ Node reportSnNode = xmlUtil.getNode("/POOR_HIP1166/controlActProcess/component/structuredBody/component[@displayName='文档描述信息']/section/entry/reportInfomation/reportSn/@extension");
+ String reportSn = reportSnNode.getNodeValue();
+
+ Node downUrlNode = xmlUtil.getNode("/POOR_HIP1166/controlActProcess/component/structuredBody/component[@displayName='文档描述信息']/section/entry/reportInfomation/reportPath/@extension");
+ String downUrl = downUrlNode.getTextContent();
+
+ ReportDto reportDto = new ReportDto();
+ reportDto.setReportSn(reportSn);
+ reportDto.setDowntype(1);
+ reportDto.setDownUrl(downUrl);
+ return reportDto;
+ }
+ private String uploadFailed(String msgId, String sender, String receiver, String message) {
+ String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
+ return "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
+ }
+ private String uploadSuccess(String msgId, String sender, String receiver) {
+ String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
+ return "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "- " +
+ "
" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "" +
+ "";
+ }
+}
diff --git a/src/main/java/com/docus/server/report/webservice/impl/JsExaminationReportHandler.java b/src/main/java/com/docus/server/report/webservice/impl/JsExaminationReportHandler.java
new file mode 100644
index 0000000..d686982
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/JsExaminationReportHandler.java
@@ -0,0 +1,46 @@
+package com.docus.server.report.webservice.impl;
+
+import com.docus.infrastructure.core.exception.BaseException;
+import com.docus.server.report.api.dto.ReportDto;
+import com.docus.server.report.service.ReportService;
+import com.docus.server.report.util.JSXMLResult;
+import com.docus.server.report.util.XmlUtil;
+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;
+
+/**
+ * 检验报告接收
+ *
+ * @author wyb
+ */
+@Service("examination")
+@Slf4j
+public class JsExaminationReportHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ log.info("收到检验报告消息:{}", receiveMessage);
+ String msgId = "";
+ try {
+ XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
+ Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
+ msgId = msgNode.getTextContent();
+ ReportDto reportDto = convert(xmlUtil);
+ verifyReportDto(reportDto);
+ reportService.report(reportDto);
+ return JSXMLResult.success(msgId);
+ } catch (BaseException baseException) {
+ log.error(baseException.getMessage(), baseException);
+ return JSXMLResult.failed(msgId, baseException.getMessage());
+ } catch (Exception ex) {
+ log.error(ex.getMessage(), ex);
+ return JSXMLResult.failed(msgId, "系统故障!");
+ }
+ }
+}
diff --git a/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java b/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java
new file mode 100644
index 0000000..9ecbcf9
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/JsIcuReportHandler.java
@@ -0,0 +1,46 @@
+package com.docus.server.report.webservice.impl;
+
+import com.docus.infrastructure.core.exception.BaseException;
+import com.docus.server.report.api.dto.ReportDto;
+import com.docus.server.report.service.ReportService;
+import com.docus.server.report.util.JSXMLResult;
+import com.docus.server.report.util.XmlUtil;
+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;
+
+/**
+ * 重症症接收
+ *
+ * @author wyb
+ */
+@Service("icu")
+@Slf4j
+public class JsIcuReportHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ log.info("收到重症消息:{}", receiveMessage);
+ String msgId = "";
+ try {
+ XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
+ Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
+ msgId = msgNode.getTextContent();
+ ReportDto reportDto = convert(xmlUtil);
+ verifyReportDto(reportDto);
+ reportService.report(reportDto);
+ return JSXMLResult.success(msgId);
+ } catch (BaseException baseException) {
+ log.error(baseException.getMessage(), baseException);
+ return JSXMLResult.failed(msgId, baseException.getMessage());
+ } catch (Exception ex) {
+ log.error(ex.getMessage(), ex);
+ return JSXMLResult.failed(msgId, "系统故障!");
+ }
+ }
+}
diff --git a/src/main/java/com/docus/server/report/webservice/impl/JsSAReportHandler.java b/src/main/java/com/docus/server/report/webservice/impl/JsSAReportHandler.java
new file mode 100644
index 0000000..3d237de
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/JsSAReportHandler.java
@@ -0,0 +1,47 @@
+package com.docus.server.report.webservice.impl;
+
+import com.docus.infrastructure.core.exception.BaseException;
+import com.docus.server.report.api.dto.ReportDto;
+import com.docus.server.report.service.ReportService;
+import com.docus.server.report.util.JSXMLResult;
+import com.docus.server.report.util.XmlUtil;
+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;
+
+/**
+ * 重症症接收
+ *
+ * @author wyb
+ */
+@Service("sa")
+@Slf4j
+public class JsSAReportHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private ReportService reportService;
+
+ @Override
+ public String handle(String receiveMessage) {
+ // 待做
+ log.info("收到手麻消息:{}", receiveMessage);
+ String msgId = "";
+ try {
+ XmlUtil xmlUtil = XmlUtil.of(receiveMessage);
+ Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
+ msgId = msgNode.getTextContent();
+ ReportDto reportDto=convert(xmlUtil);
+ verifyReportDto(reportDto);
+ reportService.report(reportDto);
+ return JSXMLResult.success(msgId);
+ } catch (BaseException baseException) {
+ log.error(baseException.getMessage(), baseException);
+ return JSXMLResult.failed(msgId, baseException.getMessage());
+ } catch (Exception ex) {
+ log.error(ex.getMessage(), ex);
+ return JSXMLResult.failed(msgId, "系统故障!");
+ }
+ }
+}
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 b59960f..e5d36fd 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
@@ -1,23 +1,13 @@
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.SdRyReportHandledConfig;
-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.JSXMLResult;
-import com.docus.server.report.util.TableJsonRead;
-import com.docus.server.report.util.XmlUtil;
import com.docus.server.report.webservice.IReportServer;
+import com.docus.server.report.webservice.WebserviceReceiveServerHandler;
import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
-import org.w3c.dom.Node;
-import javax.annotation.Resource;
-import java.util.Date;
+import java.util.Map;
+import java.util.concurrent.ConcurrentHashMap;
/**
* @author wyb
@@ -27,773 +17,40 @@ import java.util.Date;
@Slf4j
public class SdryReportServerImpl implements IReportServer {
- @Resource
- private ReportService reportService;
+ @Autowired
+ private Map webserviceReceiveServerHandler=new ConcurrentHashMap<>();
@Override
public String pushSAReport(String saReportMessage) {
- // 待做
- log.info("收到手麻消息:{}", saReportMessage);
- String msgId = "";
- try {
- XmlUtil xmlUtil = XmlUtil.of(saReportMessage);
- Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
- msgId = msgNode.getTextContent();
- ReportDto reportDto = getReportDtoByJSXML(xmlUtil);
- verifyReportDto(reportDto);
- reportService.report(reportDto);
- return JSXMLResult.success(msgId);
- } catch (BaseException baseException) {
- log.error(baseException.getMessage(), baseException);
- return JSXMLResult.failed(msgId, baseException.getMessage());
- } catch (Exception ex) {
- log.error(ex.getMessage(), ex);
- return JSXMLResult.failed(msgId, "系统故障!");
- }
- }
-
-
- /**
- * 嘉时自定义接收接口使用,从xml工具读取返回文件上报需要的数据
- *
- * @param xmlUtil xml消息工具封装
- * @return 文件上报数据
- */
- public ReportDto getReportDtoByJSXML(XmlUtil xmlUtil) {
- TableJsonRead jsonRead = new TableJsonRead();
- String jsReportConfigXml = jsonRead.ReadContent("data-config", "js-report-config.xml");
- XmlUtil configXmlUtil = XmlUtil.of(jsReportConfigXml);
-
- Node inpatientNoXpathNode = configXmlUtil.getNode("/REPORT/INPATIENT_NO");
- String inpatientNoXpath = inpatientNoXpathNode.getTextContent();
- Node inpatientNoNode = xmlUtil.getNode(inpatientNoXpath);
- String inpatientNo = inpatientNoNode.getTextContent();
-
- Node jzhXpathNode = configXmlUtil.getNode("/REPORT/JZH");
- String jzhXpath = jzhXpathNode.getTextContent();
- Node jzhNode = xmlUtil.getNode(jzhXpath);
- String jzh = jzhNode.getTextContent();
-
- Node admissTimesXpathNode = configXmlUtil.getNode("/REPORT/ADMISS_TIMES");
- String admissTimesXpath = admissTimesXpathNode.getTextContent();
- Node admissTimesNode = xmlUtil.getNode(admissTimesXpath);
- Integer admissTimes = Integer.valueOf(admissTimesNode.getTextContent());
-
- Node serialnumXpathNode = configXmlUtil.getNode("/REPORT/SERIALNUM");
- String serialnumXpath = serialnumXpathNode.getTextContent();
- Node serialnumNode = xmlUtil.getNode(serialnumXpath);
- String serialnum = serialnumNode.getTextContent();
-
- Node fileTitleXpathNode = configXmlUtil.getNode("/REPORT/FILE_TITLE");
- String fileTitleXpath = fileTitleXpathNode.getTextContent();
- Node fileTitleNode = xmlUtil.getNode(fileTitleXpath);
- String fileTitle = fileTitleNode.getTextContent();
-
- Node downUrlXpathNode = configXmlUtil.getNode("/REPORT/DOWNURL");
- String downUrlXpath = downUrlXpathNode.getTextContent();
- Node downUrlNode = xmlUtil.getNode(downUrlXpath);
- String downUrl = downUrlNode.getTextContent();
-
- Node tableTypeXpathNode = configXmlUtil.getNode("/REPORT/TABLE_TYPE");
- String tableTypeXpath = tableTypeXpathNode.getTextContent();
- Node tableTypeNode = xmlUtil.getNode(tableTypeXpath);
- String tableType = tableTypeNode.getTextContent();
-
-
- Node assortIdXpathNode = configXmlUtil.getNode("/REPORT/ASSORT_ID");
- String assortIdXpath = assortIdXpathNode.getTextContent();
- String assortId;
- if (Func.isBlank(assortIdXpath)) {
- // 如果没有配置 取value 属性,如果value也未配置 取 tableType 对应的json配置,最终方案默认 other 分段
- Node assortIdValueNode = assortIdXpathNode.getAttributes().getNamedItem("value");
- if (Func.isEmpty(assortIdValueNode)) {
- assortId = assortIdValueNode.getNodeValue();
- } else {
- assortId= ZdAssortConfig.getZdAssortId(tableType);
- }
- if (Func.isBlank(assortId)) {
- assortId = ZdAssortConfig.getOtherAssortId();
- }
- } else {
- Node assortIdNode = xmlUtil.getNode(assortIdXpath);
- assortId = assortIdNode.getTextContent();
- }
-
- Node sysFlagXpathNode = configXmlUtil.getNode("/REPORT/SYSTEM_FLAG");
- String sysFlagXpath = sysFlagXpathNode.getTextContent();
- Node sysFlagNode = xmlUtil.getNode(sysFlagXpath);
- String sysFlag = sysFlagNode.getTextContent();
-
- Node fileSourceXpathNode = configXmlUtil.getNode("/REPORT/FILESOURCE");
- String fileSourceXpath = fileSourceXpathNode.getTextContent();
- String fileSource;
- if (Func.isBlank(fileSourceXpath)) {
- Node fileSourceValueNode = fileSourceXpathNode.getAttributes().getNamedItem("value");
- if (Func.isEmpty(fileSourceValueNode)) {
- fileSource = null;
- } else {
- fileSource = fileSourceValueNode.getNodeValue();
- }
-
- } else {
- Node fileSourceNode = xmlUtil.getNode(fileSourceXpath);
- fileSource = fileSourceNode.getTextContent();
- }
-
-
- Node fileStorageTypeXpathNode = configXmlUtil.getNode("/REPORT/FILE_STORAGE_TYPE");
- String fileStorageTypeXpath = fileStorageTypeXpathNode.getTextContent();
- String fileStorageType;
- if (Func.isBlank(fileStorageTypeXpath)) {
- Node filestoragetypeValueNode = fileStorageTypeXpathNode.getAttributes().getNamedItem("value");
- if (Func.isEmpty(filestoragetypeValueNode)) {
- fileStorageType = "1";
- } else {
- fileStorageType = filestoragetypeValueNode.getNodeValue();
- }
-
- } else {
- Node filestoragetypeNode = xmlUtil.getNode(fileStorageTypeXpath);
- fileStorageType = filestoragetypeNode.getTextContent();
- }
-
- ReportDto reportDto = new ReportDto();
- reportDto.setAdmisstimes(admissTimes);
- reportDto.setInpatientNo(inpatientNo);
- reportDto.setJzh(jzh);
- reportDto.setSerialnum(serialnum);
- reportDto.setFileTitle(fileTitle);
- reportDto.setDownUrl(downUrl);
- reportDto.setAssortId(assortId);
- reportDto.setSysFlag(sysFlag);
- reportDto.setFileSource(fileSource);
- reportDto.setFilestoragetype(fileStorageType);
- return reportDto;
+ return webserviceReceiveServerHandler.get("sa").handle(saReportMessage);
}
@Override
public String pushICUReport(String icuReportMessage) {
- log.info("收到重症消息:{}", icuReportMessage);
- String msgId = "";
- try {
- XmlUtil xmlUtil = XmlUtil.of(icuReportMessage);
- Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
- msgId = msgNode.getTextContent();
- ReportDto reportDto = getReportDtoByJSXML(xmlUtil);
- verifyReportDto(reportDto);
- reportService.report(reportDto);
- return JSXMLResult.success(msgId);
- } catch (BaseException baseException) {
- log.error(baseException.getMessage(), baseException);
- return JSXMLResult.failed(msgId, baseException.getMessage());
- } catch (Exception ex) {
- log.error(ex.getMessage(), ex);
- return JSXMLResult.failed(msgId, "系统故障!");
- }
+ return webserviceReceiveServerHandler.get("icu").handle(icuReportMessage);
}
@Override
public String pushExaminationReport(String examinationReportMessage){
- log.info("收到检验报告消息:{}", examinationReportMessage);
- String msgId = "";
- try {
- XmlUtil xmlUtil = XmlUtil.of(examinationReportMessage);
- Node msgNode = xmlUtil.getNode("/Request/Msg/ID");
- msgId = msgNode.getTextContent();
- ReportDto reportDto = getReportDtoByJSXML(xmlUtil);
- verifyReportDto(reportDto);
- reportService.report(reportDto);
- return JSXMLResult.success(msgId);
- } catch (BaseException baseException) {
- log.error(baseException.getMessage(), baseException);
- return JSXMLResult.failed(msgId, baseException.getMessage());
- } catch (Exception ex) {
- log.error(ex.getMessage(), ex);
- return JSXMLResult.failed(msgId, "系统故障!");
- }
+ return webserviceReceiveServerHandler.get("examination").handle(examinationReportMessage);
}
@Override
public String pushAddInspectionReport(String inspectionReportMessage) {
- log.info("收到检查报告新增消息:{}", inspectionReportMessage);
- String msgId = "";
- String sender = "";
- String receiver = "";
- try {
- XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage);
- msgId = xmlUtil.getNode("/POOR_HIP1008/id/@extension").getNodeValue();
- sender = xmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension").getNodeValue();
- receiver = xmlUtil.getNode("/POOR_HIP1008/receiver/device/id/item/@extension").getNodeValue();
- SdRyReportHandledConfig sdRyReportHandledConfig = new SdRyReportHandledConfig();
- ReportDto reportDto = getReportDtoByInspectionInsert(xmlUtil);
- String sysFlag = reportDto.getSysFlag();
- if (sdRyReportHandledConfig.isNotHandled(sysFlag)) {
- return insertSuccess(msgId, sender, receiver);
- }
- if(sdRyReportHandledConfig.isBlocking(sysFlag)){
- reportDto.setDownUrl(null);
- reportService.reportBuffer(reportDto);
- return insertSuccess(msgId, sender, receiver);
- }
- 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, "系统错误!");
- }
+ return webserviceReceiveServerHandler.get("HIP1008").handle(inspectionReportMessage);
}
-
@Override
public String pushUpdateInspectionReport(String inspectionReportMessage) {
- log.info("收到检查报告更新消息{}", inspectionReportMessage);
- String msgId = "";
- String sender = "";
- String receiver = "";
- try {
- XmlUtil xmlUtil = XmlUtil.of(inspectionReportMessage);
- msgId = xmlUtil.getNode("/POOR_HIP1009/id/@extension").getNodeValue();
- sender = xmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension").getNodeValue();
- receiver = xmlUtil.getNode("/POOR_HIP1009/receiver/device/id/item/@extension").getNodeValue();
-
- ReportDto reportDto = getReportDtoByInspectionUpdate(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, "系统错误");
- }
-
+ return webserviceReceiveServerHandler.get("HIP1009").handle(inspectionReportMessage);
}
@Override
public String pdfUpload(String uploadMessage) {
- log.info("收到pdf上传信息{}", uploadMessage);
- String msgId = "";
- String sender = "";
- String receiver = "";
- try {
- XmlUtil xmlUtil = XmlUtil.of(uploadMessage);
- msgId = xmlUtil.getNode("/POOR_HIP1166/id/@extension").getNodeValue();
- sender = xmlUtil.getNode("/POOR_HIP1166/sender/device/id/item/@extension").getNodeValue();
- receiver = xmlUtil.getNode("/POOR_HIP1166/receiver/device/id/item/@extension").getNodeValue();
- ReportDto reportDto = getReportDtoByPdfUpload(xmlUtil);
- reportService.reportBuffer(reportDto);
- return uploadSuccess(msgId, sender, receiver);
- } catch (BaseException baseException) {
- log.error(baseException.getMessage(), baseException);
- return uploadFailed(msgId, sender, receiver, baseException.getMessage());
- } catch (Exception ex) {
- log.error(ex.getMessage(), ex);
- return uploadFailed(msgId, sender, receiver, "系统错误!");
- }
-
- }
-
- private String uploadFailed(String msgId, String sender, String receiver, String message) {
- String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
- return "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
- }
-
- private String uploadSuccess(String msgId, String sender, String receiver) {
- String createTime = Func.format(new Date(), DateUtil.PATTERN_DATETIME_MINI);
- return "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
- }
-
- private ReportDto getReportDtoByPdfUpload(XmlUtil xmlUtil) {
- // 检查报告单号标识
- Node reportSnNode = xmlUtil.getNode("/POOR_HIP1166/controlActProcess/component/structuredBody/component[@displayName='文档描述信息']/section/entry/reportInfomation/reportSn/@extension");
- String reportSn = reportSnNode.getNodeValue();
-
- Node downUrlNode = xmlUtil.getNode("/POOR_HIP1166/controlActProcess/component/structuredBody/component[@displayName='文档描述信息']/section/entry/reportInfomation/reportPath/@extension");
- String downUrl = downUrlNode.getTextContent();
-
- ReportDto reportDto = new ReportDto();
- reportDto.setReportSn(reportSn);
- reportDto.setDowntype(1);
- reportDto.setDownUrl(downUrl);
- return reportDto;
- }
-
-
-
- /**
- * 验证上报文件的信息
- *
- * @param reportDto 上报文件的信息
- * @throws BaseException 验证不通过抛出业务异常
- */
- private void verifyReportDto(ReportDto reportDto) throws BaseException {
-
- if (Func.isBlank(reportDto.getInpatientNo())) {
- throw new BaseException("住院号不能为空!");
- }
-
- if (Func.isEmpty(reportDto.getAdmisstimes()) && Func.isBlank(reportDto.getJzh())) {
- throw new BaseException("当住院号与住院次数都为空时,住院流水号/记账号不能为空!");
- }
-
- if (Func.isBlank(reportDto.getFileTitle())) {
- throw new BaseException("文件名不能为空!");
- }
- if (Func.isBlank(reportDto.getDownUrl())) {
- throw new BaseException("文件下载路径不能为空!");
- }
+ return webserviceReceiveServerHandler.get("HIP1166").handle(uploadMessage);
}
- public ReportDto getReportDtoByInspectionInsert(XmlUtil inspectionInsertXmlUtil) {
- Node senderNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/sender/device/id/item/@extension");
- String sender = senderNode.getNodeValue();
- String zdAssortId = ZdAssortConfig.getZdAssortId(sender);
- if(Func.isBlank(zdAssortId)){
- zdAssortId=ZdAssortConfig.getOtherAssortId();
- }
-
- Node inpatientNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
- String inpatientNo = inpatientNoNode.getNodeValue();
-
- Node admissTimesNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
- Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
-
- // 检查报告单号标识
- Node reportFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
- String reportFlag = reportFlagNode.getNodeValue();
- //电子申请单编号
- Node eafNoNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
- String eafNo = eafNoNode.getNodeValue();
- String serialnum = reportFlag + "@" + eafNo;
-
-// Node assortIdNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
-// String assortId = assortIdNode.getNodeValue();
-
-// Node sysFlagNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
-// String sysFlag = sysFlagNode.getNodeValue();
-
- Node fileTitleNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName");
- String fileTitle = fileTitleNode.getNodeValue();
-
- Node downUrlNode = inspectionInsertXmlUtil.getNode("/POOR_HIP1008/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/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;
- }
-
- public ReportDto getReportDtoByInspectionUpdate(XmlUtil inspectionUpdateXmlUtil) {
- Node senderNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/sender/device/id/item/@extension");
- String sender = senderNode.getNodeValue();
- String zdAssortId = ZdAssortConfig.getZdAssortId(sender);
- if(Func.isBlank(zdAssortId)){
- zdAssortId=ZdAssortConfig.getOtherAssortId();
- }
-
- Node inpatientNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.12']/@extension");
- String inpatientNo = inpatientNoNode.getNodeValue();
-
- Node admissTimesNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/item[@root='1.2.156.112635.1.2.1.7']/@extension");
- Integer admissTimes = Integer.valueOf(admissTimesNode.getNodeValue());
- // 检查报告单号标识
- Node reportFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.32']/@extension");
- String reportFlag = reportFlagNode.getNodeValue();
- //电子申请单编号
- Node eafNoNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/recordTarget/patientRole/id[@root='2.16.156.10011.1.24']/@extension");
- String eafNo = eafNoNode.getNodeValue();
- String serialnum = reportFlag + "@" + eafNo;
-// Node assortIdNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
-// String assortId = assortIdNode.getNodeValue();
-//
-// Node sysFlagNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查类型']/observation/code/@displayName");
-// String sysFlag = sysFlagNode.getNodeValue();
- Node fileTitleNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告']/section/entry[@displayName='检查报告类型']/observation/code/@displayName");
- String fileTitle = fileTitleNode.getNodeValue();
-
- Node downUrlNode = inspectionUpdateXmlUtil.getNode("/POOR_HIP1009/controlActProcess/subject/component/structuredBody/component[@displayName='检查报告图像']/report/entry[@displayName='检查报告图像URL地址']/observation/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 "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
-// 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 "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
-// return "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// " " +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// " " +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// " " +
-// "" +
-// "" +
-// "";
- }
-
- /**
- * 返回检查报告更新成功响应消息
- *
- * @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 "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
-
-// 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 "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "- " +
- "
" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "" +
- "";
-
-// return "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// " " +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// " " +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// "" +
-// " " +
-// "" +
-// "" +
-// "";
- }
}