From 2c172470a5aea05babe1a2001685cce7a4d1090d Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Fri, 9 Jun 2023 14:40:37 +0800
Subject: [PATCH] =?UTF-8?q?=E6=A3=80=E9=AA=8C=E6=8A=A5=E5=91=8A=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=20=E6=9B=B4=E6=96=B0=E6=96=B0=E5=A2=9E?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../collection/webservice/ReceiveServer.java | 154 ++++++++++-------
.../webservice/impl/ReceiveServerImpl.java | 12 ++
.../report/webservice/IReportServer.java | 17 ++
...IP1010LaboratoryReportAdditionHandler.java | 159 ++++++++++++++++-
...HIP1011LaboratoryReportUpdatesHandler.java | 162 +++++++++++++++++-
.../webservice/impl/SdryReportServerImpl.java | 9 +-
6 files changed, 442 insertions(+), 71 deletions(-)
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);
+ }
}