母婴关系推送保存

3.2.4.44
wyb 2 years ago
parent 9b202214f0
commit b813533e8a

@ -107,4 +107,11 @@ public interface ReceiveServer {
String querySdJxIndexTest(String xml);
String querySdJxIndexNoResultTest(String xml);
/**
*
* @param maternalInfantRelationshipMessage
* @return
*/
String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage);
}

@ -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) {

@ -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="<PRPA_HIP1264 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3\">\n" +
"\t<!--id-消息流水号 UUID -->\n" +
"\t<id extension=\"fb8a9cfb-b242-4974-a965-046fa2b4715e\"/>\n" +
"\t<!--creationTime-消息创建时间 -->\n" +
"\t<creationTime value=\"20230216090010\"/>\n" +
"\t<!--interactionId-消息的服务标识 -->\n" +
"\t<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"PRPA_HIP1264\"/>\n" +
"\t<!--processingCode-处理代码。标识此消息是否是产品、训练、调试系统的一部分。D调试P产品T训练 -->\n" +
"\t<processingCode code=\"P\"/>\n" +
"\t<!-- processingModeCode-处理模型代码。定义此消息是一个文档处理还是一个初始装载的一部分。A 存档I初始装载R从存档中恢复T当前处理间隔传递。 -->\n" +
"\t<processingModeCode/>\n" +
"\t<!-- acceptAckCode-接收确认类型 AL总是确认NE从不确认ER仅在错误/或拒绝时确认SU 仅在成功完成时确认。 -->\n" +
"\t<acceptAckCode code=\"AL\"/>\n" +
"\t<receiver typeCode=\"RCV\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<!-- 接收方编号请向集成平台提供商获取 -->\n" +
"\t\t\t\t<item extension=\"Orion-001\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</receiver>\n" +
"\t<sender typeCode=\"SND\">\n" +
"\t\t<device classCode=\"DEV\" determinerCode=\"INSTANCE\">\n" +
"\t\t\t<id>\n" +
"\t\t\t\t<!-- 发送方编号请向集成平台提供商获取 -->\n" +
"\t\t\t\t<item extension=\"OPTG-001\"/>\n" +
"\t\t\t</id>\n" +
"\t\t</device>\n" +
"\t</sender>\n" +
"\t<controlActProcess classCode=\"STC\" moodCode=\"EVN\">\n" +
"\t\t<code code=\"InpatientEncounterStarted\">\n" +
"\t\t\t<displayName value=\"患者住院新生儿服务\"/>\n" +
"\t\t</code>\n" +
"\t\t<!--\t母亲住院ID\t-->\n" +
"\t\t<patientId value=\"z666\"/>\n" +
"\t\t<!--\t新生儿住院ID\t-->\n" +
"\t\t<babyId value=\"z123\"/>\n" +
"\t\t<!--\t母亲住院次数\t-->\n" +
"\t\t<parentTimes value=\"2\"/>\n" +
"\t\t<!--\t母亲住院ID_住院次数\t-->\n" +
"\t\t<parentHisId value=\"z666_2\"/>\n" +
"\t\t<!--\t新生儿住院ID_住院次数\t-->\n" +
"\t\t<babyHisId value=\"z123_1\"/>\n" +
"\t\t<!--\t医院信息 code是医院代码 value是医院名称\t-->\n" +
"\t\t<hospInfo code=\"1008611\" value=\"知名医院\"/>\n" +
"\t</controlActProcess>\n" +
"</PRPA_HIP1264>";
HIP1264ReceiveMessageConverter converter = new HIP1264ReceiveMessageConverter(message);
System.out.println(converter.xml2dto());
}
}

@ -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;
}
}

@ -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="";
}

@ -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;
}

@ -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);
}

@ -67,4 +67,12 @@ public interface IReportServer {
* @return
*/
String pushUpdateLaboratoryReport(String laboratoryMessage);
/**
*
*
* @param maternalInfantRelationshipMessage
* @return
*/
String pushMaternalInfantRelationship(String maternalInfantRelationshipMessage);
}

@ -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";

@ -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 "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
"<acceptAckCode code=\"AL\"/>" +
"<receiver typeCode=\"RCV\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"Orion-001\"/>" +
"</id>" +
"</device>" +
"</receiver>" +
"<sender typeCode=\"SND\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"PaperlessManagementMRIS-001\"/>" +
"</id>" +
"</device>" +
"</sender>" +
"<acknowledgement typeCode=\"AA\">" +
"<targetMessage>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\"成功\"/>" +
"</acknowledgementDetail>" +
"</acknowledgement>" +
"</MCCI_IN000002UV01>";
}
/**
*
*
* @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 "<MCCI_IN000002UV01 xmlns=\"urn:hl7-org:v3\" xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\" ITSVersion=\"XML_1.0\" xsi:schemaLocation=\"urn:hl7-org:v3 file:///E:/hl7/HL7/v3ballot_fullsite_2011MAY/v3ballot/html/processable/multicacheschemas/MCCI _IN000002UV01.xsd\">" +
"<id extension=\"" + IdUtil.standardUUID() + "\"/>" +
"<creationTime value=\"" + createTime + "\"/>" +
"<interactionId root=\"2.16.840.1.113883.1.6\" extension=\"MCCI_IN000002UV01\"/>" +
"<processingCode code=\"P\"/>" +
"<processingModeCode/>" +
"<acceptAckCode code=\"AL\"/>" +
"<receiver typeCode=\"RCV\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"Orion-001\"/>" +
"</id>" +
"</device>" +
"</receiver>" +
"<sender typeCode=\"SND\">" +
"<device classCode=\"DEV\" determinerCode=\"INSTANCE\">" +
"<id>" +
"<item extension=\"PaperlessManagementMRIS-001\"/>" +
"</id>" +
"</device>" +
"</sender>" +
"<acknowledgement typeCode=\"AE\">" +
"<targetMessage>" +
"<id extension=\"" + msgId + "\"/>" +
"</targetMessage>" +
"<acknowledgementDetail>" +
"<text value=\"" + failedMessage + "\"/>" +
"</acknowledgementDetail>" +
"</acknowledgement>" +
"</MCCI_IN000002UV01>";
}
}

@ -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);
}
}

@ -0,0 +1,22 @@
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE mapper
PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
"http://mybatis.org/dtd/mybatis-3-mapper.dtd">
<mapper namespace="com.docus.server.report.mapper.MaternalInfantRelationshipMapper">
<insert id="saveOrUpdate">
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()
</insert>
</mapper>
Loading…
Cancel
Save