Index: ssts-webservice/src/main/java/com/goodwillcis/HL7V2ServiceImpl.java =================================================================== diff -u -r19876 -r20003 --- ssts-webservice/src/main/java/com/goodwillcis/HL7V2ServiceImpl.java (.../HL7V2ServiceImpl.java) (revision 19876) +++ ssts-webservice/src/main/java/com/goodwillcis/HL7V2ServiceImpl.java (.../HL7V2ServiceImpl.java) (revision 20003) @@ -1,18 +1,130 @@ package com.goodwillcis; +import java.text.DateFormat; +import java.util.Calendar; +import java.util.Date; 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.diposablegoods.service.DisposableGoodsStorageRecordManager; +import com.forgon.disinfectsystem.entity.useRecord.gyey.PatientAdmissionInfo; +import com.forgon.disinfectsystem.useRecord.service.gyey.PatientAdmissionInfoManager; +import com.forgon.tools.HL7ToXmlConverter; +import com.forgon.tools.MathTools; /** * 病人数据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) { - // TODO Auto-generated method stub - return hl7v2; + public String send(@WebParam(name = "hl7v2") String hl7v2) { + logger.warn("Hl7v2=" + hl7v2); + // 针对gyey解析hl7v2成xmL + Document document = HL7ToXmlConverter.ConvertToXmlObject(hl7v2); + // 保存患者入院信息 + String returnhl7=savepatientAdmissionInfo(document); + //返回 hl7回复信息 + return returnhl7; } - + + /* + * 保存患者入院信息 + */ + public String savepatientAdmissionInfo(Document document) { + String returnhl7=null; + // 获得住院号 + String hospitalNumber = HL7ToXmlConverter.GetText(document,"PV1/PV1.19"); + if (StringUtils.isNotBlank(hospitalNumber)) { + // 获得出身日期 + String birthdayyear = HL7ToXmlConverter.GetText(document,"PID/PID.7"); + String patientAge = null; + if (StringUtils.isNotBlank(birthdayyear)) { + try { + Long patientbirthday = Long.parseLong(birthdayyear.substring(0, 4)); + Calendar cal = Calendar.getInstance(); + long year = (cal.get(Calendar.YEAR)); + // 计算年龄 + Long Age = MathTools.sub(year, patientbirthday).longValue(); + patientAge = Age.toString(); + } catch (Exception e) { + e.printStackTrace(); + return HL7ToXmlConverter.returnhl7(document,"AE","执行患者入院失败:"+e.getMessage()); + } + } + // 获得性别 + String Sex = HL7ToXmlConverter.GetText(document, "PID/PID.8"); + String patientSex = null; + if (StringUtils.isNotBlank(Sex)) { + switch (Sex) { + case "F": + patientSex = "女"; + break; + case "M": + patientSex = "男"; + break; + default: + patientSex = Sex; + break; + } + } + // 获得住院次数 + String Amount = HL7ToXmlConverter.GetText(document, "PV1/PV1.1"); + Long visitAmount = null; + if (StringUtils.isNotBlank(Amount)) { + try { + visitAmount = Long.parseLong(Amount); + } catch (Exception e) { + e.printStackTrace(); + return HL7ToXmlConverter.returnhl7(document,"AE","执行患者入院失败:"+e.getMessage()); + } + } + String Name = HL7ToXmlConverter.GetText(document,"PID/PID.5"); + String patientName=Name; + if(Name.contains("^")){ + patientName=Name.substring(Name.indexOf("^")+1); + } + String patientIDCard = HL7ToXmlConverter.GetText(document,"PID/PID.19"); + String patientArea = HL7ToXmlConverter.GetText(document,"PV1/PV1.3/PV1.3.1"); + String roomNumber = HL7ToXmlConverter.GetText(document,"PV1/PV1.3/PV1.3.2"); + String bedNumber = HL7ToXmlConverter.GetText(document,"PV1/PV1.3/PV1.3.3"); + String orgunitId = HL7ToXmlConverter.GetText(document,"PV1/PV1.3/PV1.3.4.1"); + String orgunitName = HL7ToXmlConverter.GetText(document,"PV1/PV1.3/PV1.3.4.2"); + String doctorName = HL7ToXmlConverter.GetText(document,"PV1/PV1.7/PV1.7.3"); + // 设置患者入院信息 + PatientAdmissionInfo patientAdmissionInfo = new PatientAdmissionInfo(); + try { + patientAdmissionInfo.setPatientName(patientName); + patientAdmissionInfo.setPatientSex(patientSex); + patientAdmissionInfo.setPatientAge(patientAge); + patientAdmissionInfo.setPatientIDCard(patientIDCard); + patientAdmissionInfo.setVisitAmount(visitAmount); + patientAdmissionInfo.setPatientArea(patientArea); + patientAdmissionInfo.setRoomNumber(roomNumber); + patientAdmissionInfo.setBedNumber(bedNumber); + patientAdmissionInfo.setOrgunitId(orgunitId); + patientAdmissionInfo.setOrgunitName(orgunitName); + patientAdmissionInfo.setDoctorName(doctorName); + patientAdmissionInfo.setHospitalNumber(hospitalNumber); + patientAdmissionInfo.setTime(new Date()); + } catch (Exception e) { + e.printStackTrace(); + return HL7ToXmlConverter.returnhl7(document,"AE","执行患者入院失败:"+e.getMessage()); + } + patientAdmissionInfoManager.save(patientAdmissionInfo); + return HL7ToXmlConverter.returnhl7(document,"AA","执行患者入院成功"); + } else { + logger.error("xml:PV1/PV1.19 住院号不存在"); + return HL7ToXmlConverter.returnhl7(document,"AE","执行患者入院失败:xml:PV1/PV1.19 住院号不存在"); + } + + } + } + \ No newline at end of file