From b813533e8a377d4aa4a01c55a70de287c232f2c5 Mon Sep 17 00:00:00 2001
From: wyb <1977763549@qq.com>
Date: Tue, 18 Jul 2023 10:48:32 +0800
Subject: [PATCH] =?UTF-8?q?=E6=AF=8D=E5=A9=B4=E5=85=B3=E7=B3=BB=E6=8E=A8?=
=?UTF-8?q?=E9=80=81=E4=BF=9D=E5=AD=98?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../collection/webservice/ReceiveServer.java | 7 +
.../webservice/impl/ReceiveServerImpl.java | 5 +-
.../HIP1264ReceiveMessageConverter.java | 109 +++++++++++++
.../MaternalInfantRelationshipConverter.java | 35 +++++
.../dto/MaternalInfantRelationshipDTO.java | 51 +++++++
.../entity/MaternalInfantRelationship.java | 44 ++++++
.../MaternalInfantRelationshipMapper.java | 8 +
.../report/webservice/IReportServer.java | 8 +
.../webservice/WebserviceMessageType.java | 1 +
...1264MaternalInfantRelationshipHandler.java | 144 ++++++++++++++++++
.../webservice/impl/SdryReportServerImpl.java | 5 +
.../MaternalInfantRelationshipMapper.xml | 22 +++
12 files changed, 438 insertions(+), 1 deletion(-)
create mode 100644 src/main/java/com/docus/server/report/converter/HIP1264ReceiveMessageConverter.java
create mode 100644 src/main/java/com/docus/server/report/converter/MaternalInfantRelationshipConverter.java
create mode 100644 src/main/java/com/docus/server/report/dto/MaternalInfantRelationshipDTO.java
create mode 100644 src/main/java/com/docus/server/report/entity/MaternalInfantRelationship.java
create mode 100644 src/main/java/com/docus/server/report/mapper/MaternalInfantRelationshipMapper.java
create mode 100644 src/main/java/com/docus/server/report/webservice/impl/HIP1264MaternalInfantRelationshipHandler.java
create mode 100644 src/main/resources/mapper/MaternalInfantRelationshipMapper.xml
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 0307b8f..91f347f 100644
--- a/src/main/java/com/docus/server/collection/webservice/ReceiveServer.java
+++ b/src/main/java/com/docus/server/collection/webservice/ReceiveServer.java
@@ -107,4 +107,11 @@ public interface ReceiveServer {
String querySdJxIndexTest(String xml);
String querySdJxIndexNoResultTest(String xml);
+
+ /**
+ * 母婴关系推送
+ * @param maternalInfantRelationshipMessage 母婴关系消息
+ * @return 成功或者异常信息
+ */
+ String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage);
}
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 681eae6..baedc76 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
@@ -98,7 +98,10 @@ public class ReceiveServerImpl implements ReceiveServer {
return reportServer.pushUpdateLaboratoryReport(laboratoryMessage);
}
-
+ @Override
+ public String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage) {
+ return reportServer.pushMaternalInfantRelationship(maternalInfantRelationshipMessage);
+ }
@Override
public String querySdJxIndexTest(String xml) {
diff --git a/src/main/java/com/docus/server/report/converter/HIP1264ReceiveMessageConverter.java b/src/main/java/com/docus/server/report/converter/HIP1264ReceiveMessageConverter.java
new file mode 100644
index 0000000..7411db1
--- /dev/null
+++ b/src/main/java/com/docus/server/report/converter/HIP1264ReceiveMessageConverter.java
@@ -0,0 +1,109 @@
+package com.docus.server.report.converter;
+
+import com.docus.server.report.dto.MaternalInfantRelationshipDTO;
+import com.docus.server.report.util.XmlUtil;
+import org.w3c.dom.Node;
+
+/**
+ * 母婴关系接收信息转换
+ *
+ * @author wyb
+ */
+public class HIP1264ReceiveMessageConverter {
+ private final String message;
+
+ public HIP1264ReceiveMessageConverter(String message) {
+ this.message = message;
+ }
+
+ public MaternalInfantRelationshipDTO xml2dto() {
+ XmlUtil xmlUtil = XmlUtil.of(this.message);
+ Node messageIdNode = xmlUtil.getNode("/PRPA_HIP1264/id/@extension");
+ Node senderNode = xmlUtil.getNode("/PRPA_HIP1264/sender/device/id/item/@extension");
+ Node receiverNode = xmlUtil.getNode("/PRPA_HIP1264/receiver/device/id/item/@extension");
+ Node babyIdNode = xmlUtil.getNode("/PRPA_HIP1264/controlActProcess/babyId/@value");
+ Node babyHisIdNode = xmlUtil.getNode("/PRPA_HIP1264/controlActProcess/babyHisId/@value");
+ Node momIdNode = xmlUtil.getNode("/PRPA_HIP1264/controlActProcess/patientId/@value");
+ Node parentTimesNode = xmlUtil.getNode("/PRPA_HIP1264/controlActProcess/parentTimes/@value");
+ Node parentHisIdNode = xmlUtil.getNode("/PRPA_HIP1264/controlActProcess/parentHisId/@value");
+ Node hospCodeNode = xmlUtil.getNode("/PRPA_HIP1264/controlActProcess/hospInfo/@code");
+
+ String messageId =messageIdNode==null?"":messageIdNode.getNodeValue();
+ String sender = senderNode==null?"":senderNode.getNodeValue();
+ String receiver = receiverNode==null?"":receiverNode.getNodeValue();
+ String babyId = babyIdNode==null?"":babyIdNode.getNodeValue();;
+ String babyHisId = babyHisIdNode==null?"":babyHisIdNode.getNodeValue();
+ String momId = momIdNode==null?"":momIdNode.getNodeValue();
+ String parentTimes = parentTimesNode==null?"":parentTimesNode.getNodeValue();;
+ String parentHisId = parentHisIdNode==null?"":parentHisIdNode.getNodeValue();
+ String hospCode = hospCodeNode==null?"":hospCodeNode.getNodeValue();
+
+ MaternalInfantRelationshipDTO dto = new MaternalInfantRelationshipDTO();
+ dto.setMsgId(messageId);
+ dto.setSender(sender);
+ dto.setReceiver(receiver);
+ dto.setBabyId(babyId);
+ dto.setBabyHisId(babyHisId);
+ dto.setMomId(momId);
+ dto.setParentTimes(parentTimes);
+ dto.setParentHisId(parentHisId);
+ dto.setHospCode(hospCode);
+ return dto;
+ }
+
+ public String getMessage() {
+ return message;
+ }
+
+ public static void main(String[] args) {
+ String message="\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\t\n" +
+ "\t\t\t\n" +
+ "\t\t\t\t\n" +
+ "\t\t\t\t- \n" +
+ "\t\t\t
\n" +
+ "\t\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\t\n" +
+ "\t\t\t\n" +
+ "\t\t\t\t\n" +
+ "\t\t\t\t- \n" +
+ "\t\t\t
\n" +
+ "\t\t\n" +
+ "\t\n" +
+ "\t\n" +
+ "\t\t\n" +
+ "\t\t\t\n" +
+ "\t\t
\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\t\n" +
+ "\t\n" +
+ "";
+ HIP1264ReceiveMessageConverter converter = new HIP1264ReceiveMessageConverter(message);
+ System.out.println(converter.xml2dto());
+ }
+}
diff --git a/src/main/java/com/docus/server/report/converter/MaternalInfantRelationshipConverter.java b/src/main/java/com/docus/server/report/converter/MaternalInfantRelationshipConverter.java
new file mode 100644
index 0000000..0f75590
--- /dev/null
+++ b/src/main/java/com/docus/server/report/converter/MaternalInfantRelationshipConverter.java
@@ -0,0 +1,35 @@
+package com.docus.server.report.converter;
+
+import com.docus.server.report.dto.MaternalInfantRelationshipDTO;
+import com.docus.server.report.entity.MaternalInfantRelationship;
+
+import java.util.Objects;
+
+/**
+ * 关于 MaternalInfantRelationship 转换的类
+ * @author wyb
+ */
+public class MaternalInfantRelationshipConverter {
+ private final MaternalInfantRelationshipDTO dto;
+
+ public MaternalInfantRelationshipConverter(MaternalInfantRelationshipDTO dto) {
+ this.dto = dto;
+ }
+
+ /**
+ * 传输对象转数据库映射对象
+ * @return 数据库映射对象
+ */
+ public MaternalInfantRelationship dto2po() {
+ Objects.requireNonNull(this.dto);
+ MaternalInfantRelationshipDTO relationshipDTO = this.dto;
+ MaternalInfantRelationship relationship = new MaternalInfantRelationship();
+ relationship.setBabyId(relationshipDTO.getBabyId());
+ relationship.setBabyHisId(relationshipDTO.getBabyHisId());
+ relationship.setMomId(relationshipDTO.getMomId());
+ relationship.setParentTimes(relationshipDTO.getParentTimes());
+ relationship.setParentHisId(relationshipDTO.getParentHisId());
+ relationship.setHospCode(relationshipDTO.getHospCode());
+ return relationship;
+ }
+}
diff --git a/src/main/java/com/docus/server/report/dto/MaternalInfantRelationshipDTO.java b/src/main/java/com/docus/server/report/dto/MaternalInfantRelationshipDTO.java
new file mode 100644
index 0000000..af9a464
--- /dev/null
+++ b/src/main/java/com/docus/server/report/dto/MaternalInfantRelationshipDTO.java
@@ -0,0 +1,51 @@
+package com.docus.server.report.dto;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.util.Date;
+
+/**
+ * 母婴关系dto
+ * @author wyb
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "母婴关系数据传输对象", description = "母婴关系数据传输对象")
+public class MaternalInfantRelationshipDTO {
+
+ @ApiModelProperty(value = "新生儿住院ID")
+ private String babyId;
+
+ @ApiModelProperty(value = "新生儿住院ID_住院次数")
+ private String babyHisId;
+
+ @ApiModelProperty(value = "母亲住院ID")
+ private String momId;
+
+ @ApiModelProperty(value = "母亲住院次数")
+ private String parentTimes;
+
+ @ApiModelProperty(value = "母亲住院ID_住院次数")
+ private String parentHisId;
+
+ @ApiModelProperty(value = "医院代码")
+ private String hospCode;
+
+ @ApiModelProperty(value = "创建时间")
+ private Date createTime;
+
+ @ApiModelProperty(value = "更新时间")
+ private Date updateTime;
+
+ @ApiModelProperty(value = "消息id")
+ private String msgId="";
+
+ @ApiModelProperty(value = "发送者")
+ private String sender="";
+
+ @ApiModelProperty(value = "接收者")
+ private String receiver="";
+}
diff --git a/src/main/java/com/docus/server/report/entity/MaternalInfantRelationship.java b/src/main/java/com/docus/server/report/entity/MaternalInfantRelationship.java
new file mode 100644
index 0000000..334e103
--- /dev/null
+++ b/src/main/java/com/docus/server/report/entity/MaternalInfantRelationship.java
@@ -0,0 +1,44 @@
+package com.docus.server.report.entity;
+
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+import lombok.EqualsAndHashCode;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * 母婴关系
+ * @author wyb
+ */
+@Data
+@EqualsAndHashCode(callSuper = false)
+@ApiModel(value = "MaternalInfantRelationship对象", description = "母婴关系")
+public class MaternalInfantRelationship implements Serializable {
+ private static final long serialVersionUID = 1L;
+
+ @ApiModelProperty(value = "新生儿住院ID")
+ private String babyId;
+
+ @ApiModelProperty(value = "新生儿住院ID_住院次数")
+ private String babyHisId;
+
+ @ApiModelProperty(value = "母亲住院ID")
+ private String momId;
+
+ @ApiModelProperty(value = "母亲住院次数")
+ private String parentTimes;
+
+ @ApiModelProperty(value = "母亲住院ID_住院次数")
+ private String parentHisId;
+
+ @ApiModelProperty(value = "医院代码")
+ private String hospCode;
+
+ @ApiModelProperty(value = "创建时间")
+ private Date createTime;
+
+ @ApiModelProperty(value = "更新时间")
+ private Date updateTime;
+}
diff --git a/src/main/java/com/docus/server/report/mapper/MaternalInfantRelationshipMapper.java b/src/main/java/com/docus/server/report/mapper/MaternalInfantRelationshipMapper.java
new file mode 100644
index 0000000..016e507
--- /dev/null
+++ b/src/main/java/com/docus/server/report/mapper/MaternalInfantRelationshipMapper.java
@@ -0,0 +1,8 @@
+package com.docus.server.report.mapper;
+
+import com.docus.server.report.entity.MaternalInfantRelationship;
+import org.apache.ibatis.annotations.Param;
+
+public interface MaternalInfantRelationshipMapper {
+ int saveOrUpdate(@Param("PO") MaternalInfantRelationship maternalInfantRelationship);
+}
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 2ecba3a..a27c28f 100644
--- a/src/main/java/com/docus/server/report/webservice/IReportServer.java
+++ b/src/main/java/com/docus/server/report/webservice/IReportServer.java
@@ -67,4 +67,12 @@ public interface IReportServer {
* @return 成功或者异常信息
*/
String pushUpdateLaboratoryReport(String laboratoryMessage);
+
+ /**
+ * 母婴关系推送
+ *
+ * @param maternalInfantRelationshipMessage 母婴关系消息
+ * @return 成功或者异常信息
+ */
+ String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage);
}
diff --git a/src/main/java/com/docus/server/report/webservice/WebserviceMessageType.java b/src/main/java/com/docus/server/report/webservice/WebserviceMessageType.java
index c9e48ec..039f53d 100644
--- a/src/main/java/com/docus/server/report/webservice/WebserviceMessageType.java
+++ b/src/main/java/com/docus/server/report/webservice/WebserviceMessageType.java
@@ -10,6 +10,7 @@ public interface WebserviceMessageType {
String HIP1010="HIP1010";
String HIP1011="HIP1011";
String HIP1166="HIP1166";
+ String HIP1264="HIP1264";
String ICU="ICU";
String SA="SA";
String LABORATORY="LABORATORY";
diff --git a/src/main/java/com/docus/server/report/webservice/impl/HIP1264MaternalInfantRelationshipHandler.java b/src/main/java/com/docus/server/report/webservice/impl/HIP1264MaternalInfantRelationshipHandler.java
new file mode 100644
index 0000000..a06f705
--- /dev/null
+++ b/src/main/java/com/docus/server/report/webservice/impl/HIP1264MaternalInfantRelationshipHandler.java
@@ -0,0 +1,144 @@
+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.converter.HIP1264ReceiveMessageConverter;
+import com.docus.server.report.converter.MaternalInfantRelationshipConverter;
+import com.docus.server.report.dto.MaternalInfantRelationshipDTO;
+import com.docus.server.report.entity.MaternalInfantRelationship;
+import com.docus.server.report.mapper.MaternalInfantRelationshipMapper;
+import com.docus.server.report.util.IdUtil;
+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 javax.annotation.Resource;
+import java.util.Date;
+
+/**
+ * HIP1264-母婴关联关系推送
+ *
+ * @author wyb
+ */
+@Service(WebserviceMessageType.HIP1264)
+@Slf4j
+public class HIP1264MaternalInfantRelationshipHandler implements WebserviceReceiveServerHandler {
+ @Resource
+ private MaternalInfantRelationshipMapper maternalInfantRelationshipMapper;
+
+ @Override
+ public String handle(String receiveMessage) {
+ log.info("收到母婴关系消息:{}", receiveMessage);
+ MaternalInfantRelationshipDTO dto = new MaternalInfantRelationshipDTO();
+ try {
+ HIP1264ReceiveMessageConverter converter = new HIP1264ReceiveMessageConverter(receiveMessage);
+ // 转换dto,验证dto,转换实体,保存
+ dto = converter.xml2dto();
+ verifyDto(dto);
+ MaternalInfantRelationshipConverter maternalInfantRelationshipConverter = new MaternalInfantRelationshipConverter(dto);
+ MaternalInfantRelationship maternalInfantRelationship = maternalInfantRelationshipConverter.dto2po();
+ maternalInfantRelationshipMapper.saveOrUpdate(maternalInfantRelationship);
+ return insertSuccess(dto.getMsgId(), dto.getSender(), dto.getReceiver());
+ } catch (BaseException baseException) {
+ log.error(baseException.getMessage(), baseException);
+ return insertFailed(dto.getMsgId(), dto.getSender(), dto.getReceiver(), baseException.getMessage());
+ } catch (Exception ex) {
+ log.error(ex.getMessage(), ex);
+ return insertFailed(dto.getMsgId(), dto.getSender(), dto.getReceiver(), "系统错误!");
+ }
+ }
+
+ private void verifyDto(MaternalInfantRelationshipDTO dto) {
+ if (Func.isBlank( dto.getBabyId())) {
+ throw new BaseException("新生儿住院id不能为空!");
+ }
+ if (Func.isBlank( dto.getMomId())) {
+ throw new BaseException("母亲住院id不能为空!");
+ }
+ }
+
+ /**
+ * 返回母婴关系保存成功响应消息
+ *
+ * @param msgId 消息id
+ * @param sender 发送路由
+ * @param receiver 接收路由
+ */
+ 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 接收路由
+ */
+ 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/SdryReportServerImpl.java b/src/main/java/com/docus/server/report/webservice/impl/SdryReportServerImpl.java
index d53ef49..399f299 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
@@ -61,4 +61,9 @@ public class SdryReportServerImpl implements IReportServer {
public String pushUpdateLaboratoryReport(String laboratoryMessage) {
return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1011).handle(laboratoryMessage);
}
+
+ @Override
+ public String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage) {
+ return webserviceReceiveServerHandler.get(WebserviceMessageType.HIP1264).handle(maternalInfantRelationshipMessage);
+ }
}
diff --git a/src/main/resources/mapper/MaternalInfantRelationshipMapper.xml b/src/main/resources/mapper/MaternalInfantRelationshipMapper.xml
new file mode 100644
index 0000000..6a6533c
--- /dev/null
+++ b/src/main/resources/mapper/MaternalInfantRelationshipMapper.xml
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+ INSERT INTO `docus_medicalrecord`.`t_maternal_infant_relationship`
+ (`baby_id`, `baby_his_id`, `mom_id`, `parent_times`, `parent_his_id`, `hosp_code`, `create_time`, `update_time`)
+ VALUES (#{PO.babyId}, #{PO.babyHisId}, #{PO.momId}, #{PO.parentTimes}, #{PO.parentHisId}, #{PO.hospCode}, NOW(),
+ NOW())
+ ON DUPLICATE KEY
+ UPDATE
+ `baby_his_id`=#{PO.babyHisId},
+ `mom_id`= #{PO.momId},
+ `parent_times`=#{PO.parentTimes},
+ `parent_his_id`=#{PO.parentHisId},
+ `hosp_code`=#{PO.hospCode},
+ `update_time`=NOW()
+
+