package com.goodwillcis; import javax.jws.WebParam; import org.apache.commons.lang.StringUtils; import org.apache.log4j.Logger; import org.dom4j.Document; import org.springframework.beans.factory.annotation.Autowired; import com.forgon.disinfectsystem.useRecord.service.gyey.PatientAdmissionInfoManager; import com.forgon.tools.HL7ToXmlConverter; /** * 病人数据webservice接口服务实现类(广医二院) * @author shuyongfu * @since 2017-09-05 */ public class HL7V2ServiceImpl implements HL7V2Service { private static Logger logger = Logger.getLogger(HL7V2ServiceImpl.class); @Autowired private PatientAdmissionInfoManager patientAdmissionInfoManager; @Override public String send(@WebParam(name = "hl7v2") String hl7v2) { String returnhl7 =""; logger.warn("Hl7v2=" + hl7v2); // 1. 针对gyey解析hl7v2成xmL Document document = HL7ToXmlConverter.convertToXmlObject(hl7v2); // 2. 获得消息头事件类型:手术申请:S01 ,患者入科:A01 String eventType = HL7ToXmlConverter.getText(document,"MSH/MSH.9/MSH.9.2"); if(StringUtils.isNotEmpty(eventType)){ // 3 . 根据事件类型保存、更新入院信息 switch (eventType) { //手术申请:S01 case "S01": try { // 更新手术申请信息 returnhl7 = patientAdmissionInfoManager.updatePatientAdmissionInfo(document); } catch (Exception e) { e.printStackTrace(); return HL7ToXmlConverter.returnHl7(document,"AE","执行手术申请失败:"+e.getMessage()); } break; //患者入科:A01 case "A01": try { // 保存患者入院信息 returnhl7 = patientAdmissionInfoManager.savePatientAdmissionInfo(document); } catch (Exception e) { e.printStackTrace(); return HL7ToXmlConverter.returnHl7(document,"AE","执行患者入院失败:"+e.getMessage()); } break; default: logger.error("xml:EVN/EVN.1 消息头事件类型不为:手术申请:S01/患者入科:A01"); return HL7ToXmlConverter.returnHl7(document,"AE","xml:EVN/EVN.1 消息头事件类型不为:手术申请:S01/患者入科:A01"); } }else{ logger.error("xml:EVN/EVN.1 消息头事件类型不存在"); return HL7ToXmlConverter.returnHl7(document,"AE","xml:EVN/EVN.1 消息头事件类型不存在"); } // 4. 返回 hl7回复信息 return returnhl7; } }