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() + +