检验报告推送 更新新增

3.2.4.44
wyb 2 years ago
parent 9a70993048
commit 2c172470a5

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

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

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

@ -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 "<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
* @return
*/
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>";
}
}

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

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

Loading…
Cancel
Save