Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManagerImpl.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManagerImpl.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManagerImpl.java (revision 28726)
@@ -0,0 +1,140 @@
+package com.forgon.disinfectsystem.webservice.datasync.szhzyy;
+
+import java.util.regex.Matcher;
+import java.util.regex.Pattern;
+
+import javax.jws.WebMethod;
+import javax.jws.WebService;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONException;
+import net.sf.json.JSONObject;
+import net.sf.json.xml.XMLSerializer;
+
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+
+@WebService(serviceName = "/SysUserAndOrgService")
+public class OrgUserDataWebServiceManagerImpl implements OrgUserDataWebServiceManager {
+
+ private final Logger logger = Logger.getLogger(this.getClass());
+
+ @Autowired
+ private DataSynchronizationManager dataSynchronizationManager;
+
+ @Override
+ @WebMethod
+ public String dealOrgUnit(String xmlData) {
+ logger.debug("调用接口推送组织机构数据xmlData="+xmlData);
+ String resultCode = "1";
+ String resultMessage = "";
+ if (StringUtils.isNotBlank(xmlData)) {
+ try {
+ xmlData = fomartParam(xmlData);
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSONObject json = (JSONObject) xmlSerializer.read(xmlData);
+ if(json == null){
+ resultMessage = "入参格式不正确";
+ return " " + resultCode + " " + resultMessage + "";
+ }
+ Object msg = json.opt("Msg");
+ if(msg == null){
+ resultMessage = "未找到相关数据";
+ return " " + resultCode + " " + resultMessage + "";
+ }
+
+ if(msg instanceof JSONObject){
+ JSONObject orgJsonObject = (JSONObject)msg;
+ OrgUnitVo vo = new OrgUnitVo();
+ vo.setCoding(orgJsonObject.optString("DEPT_CODE"));
+ vo.setName(orgJsonObject.optString("DEPT_NAME"));
+ vo.setParentCoding(orgJsonObject.optString("SUPERIOR_DEPT_CODE"));
+ OrgUnitVo[] allVos = {vo};
+ logger.debug(JSONArray.fromObject(allVos));
+ dataSynchronizationManager.processSyncOrgUnitData(allVos);
+ }else{
+ resultMessage = "组织机构数据格式不正确";
+ return " " + resultCode + " " + resultMessage + "";
+ }
+ resultCode = "0";
+ resultMessage = "成功";
+ } catch (JSONException e) {
+ resultMessage = "数据格式有误";
+ e.printStackTrace();
+ } catch (Exception e) {
+ resultMessage = "后台报错";
+ e.printStackTrace();
+ }
+ }else{
+ resultMessage = "入参数据为空";
+ }
+ return " " + resultCode + " " + resultMessage + "";
+ }
+
+ @Override
+ @WebMethod
+ public String dealUser(String xmlData) {
+ logger.error("调用接口推送用户数据xmlData="+xmlData);
+ String resultCode = "1";
+ String resultMessage = "";
+ if (StringUtils.isNotBlank(xmlData)) {
+ try {
+ xmlData = fomartParam(xmlData);
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSONObject json = (JSONObject) xmlSerializer.read(xmlData);
+ if(json == null){
+ resultMessage = "入参格式不正确";
+ return " " + resultCode + " " + resultMessage + "";
+ }
+ Object msg = json.opt("Msg");
+ if(msg == null){
+ resultMessage = "未找到";
+ return " " + resultCode + " " + resultMessage + "";
+ }
+
+ if(msg instanceof JSONObject){
+ JSONObject useJsonObject = (JSONObject)msg;
+ UserVo vo = new UserVo();
+ vo.setCoding(useJsonObject.optString("STAFF_CODE"));
+ vo.setName(useJsonObject.optString("STAFF_NAME"));
+ vo.setOrgUnitCoding(useJsonObject.optString("SUBOR_DEPT_CODE"));
+ UserVo[] allVos = {vo};
+ logger.debug(JSONArray.fromObject(allVos));
+ dataSynchronizationManager.processSyncUserData(allVos);
+ }else{
+ resultMessage = "用户数据格式不正确";
+ return " " + resultCode + " " + resultMessage + "";
+ }
+ resultCode = "0";
+ resultMessage = "成功";
+ } catch (JSONException e) {
+ resultMessage = "数据格式有误";
+ e.printStackTrace();
+ } catch (Exception e) {
+ resultMessage = "后台报错";
+ e.printStackTrace();
+ }
+ }else{
+ resultMessage = "入参数据为空";
+ }
+ return " " + resultCode + " " + resultMessage + "";
+ }
+
+ /**
+ * 文本格式化
+ * @param str
+ * @return
+ */
+ private String fomartParam(String str) {
+ Pattern p = Pattern.compile("\\s*|\t|\r|\n");
+ Matcher m = p.matcher(str);
+ return m.replaceAll("");
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/MQHelper.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/MQHelper.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/MQHelper.java (revision 28726)
@@ -0,0 +1,635 @@
+package com.forgon.disinfectsystem.mq.dao.szhzyy;
+
+import java.io.File;
+import java.lang.reflect.Field;
+import java.lang.reflect.Modifier;
+import java.text.ParseException;
+import java.text.SimpleDateFormat;
+import java.util.ArrayList;
+import java.util.Calendar;
+import java.util.Comparator;
+import java.util.Date;
+import java.util.LinkedList;
+import java.util.List;
+
+import net.sf.json.JSON;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang3.StringUtils;
+import org.apache.log4j.Logger;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+import org.dom4j.io.SAXReader;
+
+import com.forgon.disinfectsystem.common.CssdUtils;
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
+import com.forgon.tools.date.DateTools;
+
+/**
+ * MQ队列帮助类
+ * @author zhouPeiMian
+ * @since 2020-08-11
+ *
+ */
+public class MQHelper {
+
+ private static Logger logger = Logger.getLogger(MQHelper.class);
+
+ /**
+ * 获取入院病人信息(深圳禾正医院)
+ * 需要发送带有住院号的xml消息到平台,然后平台再返回对应的住院病人信息
+ * @return
+ * @throws Exception
+ */
+ @SuppressWarnings("unchecked")
+ public static PatientInfoVO[] getHospitalPatientMessage(String HospitalNumber) {
+ // 查询消息
+ /* 消息内容如下:
+ *
+
+ 1
+ XG
+ 123456
+ BS35008
+
+
+ BS35008
+ S17
+ S00
+ 2019-05-25 14:00:0
+
+
+ 0
+ 500
+
+
+
+
+ //
+
+
+
+
+
+
+ */
+ if (StringUtils.isBlank(HospitalNumber)) {
+ logger.debug("住院号为空!");
+ return null;
+ }
+ //请求响应消费方:一次请求,一条响应 或者 推送发送方:一次推送,一条推送结果(EHSB平台提供的平台接入方法)
+ logger.debug("开始查询并解析手术申请单住院病人信息");
+ String fid = "BS10001";
+ String Req = "1XDGYS123456" + fid + ""
+ + "" + fid + "S16S00" + DateTools.getCurrentDayByFormat("yyyy-MM-dd HH:mm:ss")+ ""
+ + "0500"
+ + ""
+ + "";
+ logger.debug("请求信息:" + Req);
+ String responce = null;
+ try {
+ SDKCaller sc = new SDKCaller("QMGR.S16_1") {
+ @Override
+ public Object OnMessage(String msg, String msgid) {
+ return null;
+ }
+ };
+ responce = sc.putReqAndGetResp(fid, Req, 15);
+ logger.debug("成功接收住院病人信息:" + responce);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.debug("连接消息队列失败!" + e);
+ }
+ if (StringUtils.isNotBlank(responce)) {
+ // 开始解析
+ try {
+ Document doc = DocumentHelper.parseText(responce);
+ String RetConXpath = "/ESBEntry/RetInfo/RetCon"; // 查询结果返回状态
+ String RetCon = processDataByXpath(doc, RetConXpath);
+ if ("查询成功".equals(RetCon)) {
+ // 解析住院病人信息并入库
+ String MsgXpath = "/ESBEntry/MsgInfo/Msg"; // 返回结果可能存在多条住院病人信息
+ XPath xpath = doc.createXPath(MsgXpath);
+ List nodeList2 = xpath.selectNodes(doc, xpath);
+ if (nodeList2 != null && nodeList2.size() > 0) {
+ List patientInfoVOList = new LinkedList();
+ // 解析返回信息中所有住院病人信息
+ for (int i = 1; i <= nodeList2.size(); i++) {
+ String msgXpath = "/ESBEntry/MsgInfo/Msg[" + i + "]";
+ String patientInfo = processDataByXpath(doc, msgXpath); // 住院病人信息
+ if (StringUtils.isNotBlank(patientInfo)) {
+ Document document = DocumentHelper.parseText(patientInfo);
+ // 解析住院病人信息并入库
+ String hospitalNumberXpath = "/msg/body/row/MR_NO";
+ String serialNumberXpath = "/msg/body/row/INHOSP_NO";
+ String patientNameXpath = "/msg/body/row/PAT_NAME";
+ String patientBirthdayXpath = "/msg/body/row/DATE_BIRTH";
+ String patientSexXpath = "/msg/body/row/PHYSI_SEX_NAME";
+ String patientIDCardXpath = "/msg/body/row/ID_NUMBER";
+ String doctorNameXpath = "/msg/body/row/APPLY_DR_NAME";
+ String operationXpath = "/msg/body/row/SURGERY_OPER_NAME";
+ String operationTimeXpath = "/msg/body/row/SURGERY_APPLY_DATE";
+ String patientAreaXpath = "/msg/body/row/WARD_NAME";
+ String ascriptionDepartmentXpath = "/msg/body/row/APPLY_DEPT_NAME";
+ String roomNumberXpath = null; // 没有对应的房间号字段
+ String bedNumberXpath = "/msg/body/row/BED_INDEX_NO";
+ String remarkXpath = "/msg/body/row/NOTE";
+ String visitDateXpath = "/msg/body/row/RECORD_DATE";
+
+ String hospitalNumber = processDataByXpath(document, hospitalNumberXpath);
+ String serialNumber = processDataByXpath(document, serialNumberXpath);
+ String patientName = processDataByXpath(document, patientNameXpath);
+ String patientBirthday = processDataByXpath(document, patientBirthdayXpath);
+ String patientSex = processDataByXpath(document, patientSexXpath);
+ String patientIDCard = processDataByXpath(document, patientIDCardXpath);
+ String doctorName = processDataByXpath(document, doctorNameXpath);
+ String operation = processDataByXpath(document, operationXpath);
+ String operationTime = processDataByXpath(document, operationTimeXpath);
+ String patientArea = processDataByXpath(document, patientAreaXpath);
+ String ascriptionDepartment = processDataByXpath(document, ascriptionDepartmentXpath);
+ String roomNumber = processDataByXpath(document, roomNumberXpath);
+ String bedNumber = processDataByXpath(document, bedNumberXpath);
+ String remark = processDataByXpath(document, remarkXpath);
+ String visitDate = processDataByXpath(document, visitDateXpath); // 记录录入时间
+ if (StringUtils.isNotBlank(visitDate)) {
+ visitDate = visitDate.replace("T", " ");
+ }
+ if (StringUtils.isNotBlank(patientBirthday)) {
+ patientBirthday = patientBirthday.replace("T", " ");
+ }
+
+ PatientInfoVO patientInfoVO = new PatientInfoVO();
+ patientInfoVO.setHospitalNumber(hospitalNumber);
+ patientInfoVO.setSerialNumber(serialNumber);
+ patientInfoVO.setPatientName(patientName);
+ patientInfoVO.setPatientAge(birthdayToAge(patientBirthday));
+ patientInfoVO.setPatientSex(patientSex);
+ patientInfoVO.setPatientIDCard(patientIDCard);
+ patientInfoVO.setDoctorName(doctorName);
+ patientInfoVO.setOperation(operation);
+ patientInfoVO.setOperationTime(operationTime);
+ patientInfoVO.setPatientArea(patientArea);
+ patientInfoVO.setAscriptionDepartment(ascriptionDepartment);
+ patientInfoVO.setRoomNumber(roomNumber);
+ patientInfoVO.setBedNumber(bedNumber);
+ patientInfoVO.setRemark(remark);
+ patientInfoVO.setVisitDate(visitDate);
+
+ if (!checkObjAllFieldsIsNull(patientInfoVO)) {
+ patientInfoVOList.add(patientInfoVO);
+ }
+ }
+ }
+ if (CollectionUtils.isNotEmpty(patientInfoVOList)) {
+ // 根据记录录入时间visitDate排序,只取最新记录
+ patientInfoVOList.sort(new Comparator() {
+ @Override
+ public int compare(PatientInfoVO o1, PatientInfoVO o2) {
+ if (StringUtils.isBlank(o1.getVisitDate()) && StringUtils.isNotBlank(o2.getVisitDate())) {
+ return -1;
+ }
+ if (StringUtils.isBlank(o2.getVisitDate()) && StringUtils.isNotBlank(o1.getVisitDate())) {
+ return 1;
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ Date date1 = sdf.parse(o1.getVisitDate());
+ Date date2 = sdf.parse(o2.getVisitDate());
+ return date2.compareTo(date1);
+ } catch (ParseException e) {
+ logger.debug("住院病人信息排序出错(录入时间【RECORD_DATE】字段格式错误)!");
+ e.printStackTrace();
+ }
+ return 0;
+ }
+ });
+ // 只取最新录入的一条记录
+ PatientInfoVO[] patientInfoArray = {patientInfoVOList.get(0)};
+ logger.debug("完成解析住院病人信息,住院号为:" + patientInfoVOList.get(0).getHospitalNumber());
+ return patientInfoArray;
+ }
+ } else {
+ logger.debug("查询返回的数据不包含住院病人信息!");
+ return null;
+ }
+ } else {
+ logger.debug("查询失败!【RetCon】 = " + RetCon);
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ logger.debug("查询住院病人信息失败,未找到住院号为:【" + HospitalNumber + "】的住院病人信息!");
+ return null;
+ }
+ logger.debug("查询失败!");
+ return null;
+ }
+
+ /**
+ * 获取非手术住院病人信息
+ * @param HospitalNumber
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public static PatientInfoVO[] getNonoperativeHospitalPatientMessage(String HospitalNumber) {
+ if (StringUtils.isBlank(HospitalNumber)) {
+ logger.debug("住院号为空!");
+ return null;
+ }
+ //请求响应消费方:一次请求,一条响应 或者 推送发送方:一次推送,一条推送结果(EHSB平台提供的平台接入方法)
+ logger.debug("开始查询并解析非手术住院病人信息");
+ String fid = "BS10001";
+ String Req = "XDGYS1234561" + fid + ""
+ + "" + fid + "S16S00" + DateTools.getCurrentDayByFormat("yyyy-MM-dd HH:mm:ss")+ ""
+ + "0500"
+ + ""
+ + "";
+ logger.debug("请求信息:" + Req);
+ String responce = null;
+ try {
+ SDKCaller sc = new SDKCaller("QMGR.S16_1") {
+ @Override
+ public Object OnMessage(String msg, String msgid) {
+ return null;
+ }
+ };
+ responce = sc.putReqAndGetResp(fid, Req, 15);
+ logger.debug("成功接收住院病人信息:" + responce);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.debug("连接消息队列失败!" + e);
+ }
+ if (StringUtils.isNotBlank(responce)) {
+ // 开始解析
+ try {
+ Document doc = DocumentHelper.parseText(responce);
+ String RetConXpath = "/ESBEntry/RetInfo/RetCon"; // 查询结果返回状态
+ String RetCon = processDataByXpath(doc, RetConXpath);
+ if ("查询成功".equals(RetCon)) {
+ // 解析住院病人信息并入库
+ String MsgXpath = "/ESBEntry/MsgInfo/Msg"; // 返回结果可能存在多条住院病人信息
+ XPath xpath = doc.createXPath(MsgXpath);
+ List nodeList2 = xpath.selectNodes(doc, xpath);
+ if (nodeList2 != null && nodeList2.size() > 0) {
+ List patientInfoVOList = new LinkedList();
+ // 解析返回信息中所有住院病人信息
+ for (int i = 1; i <= nodeList2.size(); i++) {
+ String msgXpath = "/ESBEntry/MsgInfo/Msg[" + i + "]";
+ String patientInfo = processDataByXpath(doc, msgXpath); // 住院病人信息
+ if (StringUtils.isNotBlank(patientInfo)) {
+ Document document = DocumentHelper.parseText(patientInfo);
+ // 解析住院病人信息并入库
+ String patientIDCardXpath = "/msg/body/row/ID_NUMBER";
+ String patientNameXpath = "/msg/body/row/PAT_NAME";
+ String patientSexXpath = "/msg/body/row/PHYSI_SEX_NAME";
+ String patientBirthdayXpath = "/msg/body/row/DATE_BIRTH";
+ String hospitalNumberXpath = "/msg/body/row/MR_NO";
+ String serialNumberXpath = "/msg/body/row/INHOSP_NO";
+ String operationXpath = "/msg/body/row/ADMIT_DIAG_NAME";
+ String patientAreaXpath = "/msg/body/row/CURR_DEPT_NAME";
+ String doctorNameXpath = "/msg/body/row/ATTEND_DR_NAME";
+ String visitDateXpath = "/msg/body/row/ADMIT_DATE";
+
+ String hospitalNumber = processDataByXpath(document, hospitalNumberXpath);
+ String serialNumber = processDataByXpath(document, serialNumberXpath);
+ String patientName = processDataByXpath(document, patientNameXpath);
+ String patientBirthday = processDataByXpath(document, patientBirthdayXpath);
+ String patientSex = processDataByXpath(document, patientSexXpath);
+ String patientIDCard = processDataByXpath(document, patientIDCardXpath);
+ String doctorName = processDataByXpath(document, doctorNameXpath);
+ String operation = processDataByXpath(document, operationXpath);
+ String patientArea = processDataByXpath(document, patientAreaXpath);
+ String visitDate = processDataByXpath(document, visitDateXpath); // 记录录入时间
+ if (StringUtils.isNotBlank(visitDate)) {
+ visitDate = visitDate.replace("T", " ");
+ }
+ if (StringUtils.isNotBlank(patientBirthday)) {
+ patientBirthday = patientBirthday.replace("T", " ");
+ }
+
+ PatientInfoVO patientInfoVO = new PatientInfoVO();
+ patientInfoVO.setHospitalNumber(hospitalNumber);
+ patientInfoVO.setSerialNumber(serialNumber);
+ patientInfoVO.setPatientName(patientName);
+ patientInfoVO.setPatientAge(birthdayToAge(patientBirthday));
+ patientInfoVO.setPatientSex(patientSex);
+ patientInfoVO.setPatientIDCard(patientIDCard);
+ patientInfoVO.setDoctorName(doctorName);
+ patientInfoVO.setOperation(operation);
+ patientInfoVO.setPatientArea(patientArea);
+ patientInfoVO.setVisitDate(visitDate);
+
+ if (!checkObjAllFieldsIsNull(patientInfoVO)) {
+ patientInfoVOList.add(patientInfoVO);
+ }
+ }
+ }
+ if (CollectionUtils.isNotEmpty(patientInfoVOList)) {
+ // 根据记录录入时间visitDate排序,只取最新记录
+ patientInfoVOList.sort(new Comparator() {
+ @Override
+ public int compare(PatientInfoVO o1, PatientInfoVO o2) {
+ if (StringUtils.isBlank(o1.getVisitDate()) && StringUtils.isNotBlank(o2.getVisitDate())) {
+ return -1;
+ }
+ if (StringUtils.isBlank(o2.getVisitDate()) && StringUtils.isNotBlank(o1.getVisitDate())) {
+ return 1;
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ Date date1 = sdf.parse(o1.getVisitDate());
+ Date date2 = sdf.parse(o2.getVisitDate());
+ return date2.compareTo(date1);
+ } catch (ParseException e) {
+ logger.debug("住院病人信息排序出错(录入时间【RECORD_DATE】字段格式错误)!");
+ e.printStackTrace();
+ }
+ return 0;
+ }
+ });
+ // 只取最新录入的一条记录
+ PatientInfoVO[] patientInfoArray = {patientInfoVOList.get(0)};
+ logger.debug("完成解析住院病人信息,住院号为:" + patientInfoVOList.get(0).getHospitalNumber());
+ return patientInfoArray;
+ }
+ } else {
+ logger.debug("查询返回的数据不包含住院病人信息!");
+ return null;
+ }
+ } else {
+ logger.debug("查询失败!【RetCon】 = " + RetCon);
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ logger.debug("查询住院病人信息失败,未找到住院号为:【" + HospitalNumber + "】的住院病人信息!");
+ return null;
+ }
+ logger.debug("查询失败!");
+ return null;
+ }
+
+ /**
+ * 获取门诊病人信息
+ * @param ClinicNumber
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public static PatientInfoVO[] getClinicPatientMessage(String ClinicNumber) {
+ if (StringUtils.isBlank(ClinicNumber)) {
+ logger.debug("诊疗号为空!");
+ return null;
+ }
+ //请求响应消费方:一次请求,一条响应 或者 推送发送方:一次推送,一条推送结果(EHSB平台提供的平台接入方法)
+ logger.debug("开始查询并解析门诊病人信息");
+ String fid = "BS10001";
+ String Req = "XDGYS1234561" + fid + ""
+ + "" + fid + "S16S00" + DateTools.getCurrentDayByFormat("yyyy-MM-dd HH:mm:ss")+ ""
+ + "0500"
+ + ""
+ + "";
+ logger.debug("请求信息:" + Req);
+ String responce = null;
+ try {
+ SDKCaller sc = new SDKCaller("QMGR.S16_1") {
+ @Override
+ public Object OnMessage(String msg, String msgid) {
+ return null;
+ }
+ };
+ responce = sc.putReqAndGetResp(fid, Req, 15);
+ logger.debug("成功接收门诊病人信息:" + responce);
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.debug("连接消息队列失败!" + e);
+ }
+ if (StringUtils.isNotBlank(responce)) {
+ // 开始解析
+ try {
+ Document doc = DocumentHelper.parseText(responce);
+ String RetConXpath = "/ESBEntry/RetInfo/RetCon"; // 查询结果返回状态
+ String RetCon = processDataByXpath(doc, RetConXpath);
+ if ("查询成功".equals(RetCon)) {
+ // 解析门诊病人信息并入库
+ String MsgXpath = "/ESBEntry/MsgInfo/Msg"; // 返回结果可能存在多条门诊病人信息
+ XPath xpath = doc.createXPath(MsgXpath);
+ List nodeList2 = xpath.selectNodes(doc, xpath);
+ if (nodeList2 != null && nodeList2.size() > 0) {
+ List patientInfoVOList = new LinkedList();
+ // 解析返回信息中所有门诊病人信息
+ for (int i = 1; i <= nodeList2.size(); i++) {
+ String msgXpath = "/ESBEntry/MsgInfo/Msg[" + i + "]";
+ String patientInfo = processDataByXpath(doc, msgXpath); // 门诊病人信息
+ if (StringUtils.isNotBlank(patientInfo)) {
+ Document document = DocumentHelper.parseText(patientInfo);
+ // 解析门诊病人信息并入库
+ String clinicNumberXpath = "/msg/body/row/OUTHOSP_INDEX_NO";
+ String serialNumberXpath = "/msg/body/row/OUTHOSP_NO";
+ String patientNameXpath = "/msg/body/row/PAT_NAME";
+ String patientBirthdayXpath = "/msg/body/row/DATE_BIRTH";
+ String patientSexXpath = "/msg/body/row/PHYSI_SEX_NAME";
+ String patientIDCardXpath = "/msg/body/row/ID_NUMBER";
+ String doctorNameXpath = "/msg/body/row/RECEPT_TREAT_DR_NAME";
+ String operationXpath = "/msg/body/row/OUTHOSP_DIAG_NAME";
+ String patientAreaXpath = "/msg/body/row/VISIT_DEPT_NAME";
+ String visitDateXpath = "/msg/body/row/VISIT_DATE";
+
+ String clinicNumber = processDataByXpath(document, clinicNumberXpath);
+ String serialNumber = processDataByXpath(document, serialNumberXpath);
+ String patientName = processDataByXpath(document, patientNameXpath);
+ String patientBirthday = processDataByXpath(document, patientBirthdayXpath);
+ String patientSex = processDataByXpath(document, patientSexXpath);
+ String patientIDCard = processDataByXpath(document, patientIDCardXpath);
+ String doctorName = processDataByXpath(document, doctorNameXpath);
+ String operation = processDataByXpath(document, operationXpath);
+ String patientArea = processDataByXpath(document, patientAreaXpath);
+ String visitDate = processDataByXpath(document, visitDateXpath); // 记录录入时间
+ if (StringUtils.isNotBlank(visitDate)) {
+ visitDate = visitDate.replace("T", " ");
+ }
+ if (StringUtils.isNotBlank(patientBirthday)) {
+ patientBirthday = patientBirthday.replace("T", " ");
+ }
+
+ PatientInfoVO patientInfoVO = new PatientInfoVO();
+ patientInfoVO.setClinicNumber(clinicNumber);
+ patientInfoVO.setSerialNumber(serialNumber);
+ patientInfoVO.setPatientName(patientName);
+ patientInfoVO.setPatientAge(birthdayToAge(patientBirthday));
+ patientInfoVO.setPatientSex(patientSex);
+ patientInfoVO.setPatientIDCard(patientIDCard);
+ patientInfoVO.setDoctorName(doctorName);
+ patientInfoVO.setOperation(operation);
+ patientInfoVO.setPatientArea(patientArea);
+ patientInfoVO.setVisitDate(visitDate);
+
+ if (!checkObjAllFieldsIsNull(patientInfoVO)) {
+ patientInfoVOList.add(patientInfoVO);
+ }
+ }
+ }
+ if (CollectionUtils.isNotEmpty(patientInfoVOList)) {
+ // 根据记录录入时间visitDate排序,只取最新记录
+ patientInfoVOList.sort(new Comparator() {
+ @Override
+ public int compare(PatientInfoVO o1, PatientInfoVO o2) {
+ if (StringUtils.isBlank(o1.getVisitDate()) && StringUtils.isNotBlank(o2.getVisitDate())) {
+ return -1;
+ }
+ if (StringUtils.isBlank(o2.getVisitDate()) && StringUtils.isNotBlank(o1.getVisitDate())) {
+ return 1;
+ }
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ try {
+ Date date1 = sdf.parse(o1.getVisitDate());
+ Date date2 = sdf.parse(o2.getVisitDate());
+ return date2.compareTo(date1);
+ } catch (ParseException e) {
+ logger.debug("门诊病人信息排序出错(录入时间【VISIT_DATE】字段格式错误)!");
+ e.printStackTrace();
+ }
+ return 0;
+ }
+ });
+ // 只取最新录入的一条记录
+ PatientInfoVO[] patientInfoArray = {patientInfoVOList.get(0)};
+ logger.debug("完成解析门诊病人信息,诊疗号为:" + patientInfoVOList.get(0).getClinicNumber());
+ return patientInfoArray;
+ }
+ } else {
+ logger.debug("查询返回的数据不包含门诊病人信息!");
+ return null;
+ }
+ } else {
+ logger.debug("查询失败!【RetCon】 = " + RetCon);
+ return null;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ } else {
+ logger.debug("查询门诊病人信息失败,未找到诊疗号为:【" + ClinicNumber + "】的门诊病人信息!");
+ return null;
+ }
+ logger.debug("查询失败!");
+ return null;
+ }
+
+ /**
+ * 获取组织机构消息
+ * @return
+ */
+ public static OrgUnitVo[] getOrgUnitMessage() {
+ return null;
+ }
+
+ /**
+ * 获取人员消息
+ * @return
+ */
+ public static UserVo[] getUserMessage() {
+ return null;
+ }
+
+ /**
+ * 根据document和Xpath表达式解析数据
+ * @param document
+ * @param nameSpaceURIMap
+ * @param xpathExp
+ * @return
+ */
+ public static String processDataByXpath(Document document, String xpathExp) {
+ if ((StringUtils.isNotBlank(xpathExp)) && (document != null)) {
+ XPath xpath = document.createXPath(xpathExp);
+ Node node = xpath.selectSingleNode(document);
+ if (node != null) {
+ return node.getStringValue();
+ }
+ }
+ return null;
+ }
+
+ /**
+ * 判断实体对象是否为空、对象所有非静态属性是否都为空
+ * @param object
+ * @return
+ */
+ public static boolean checkObjAllFieldsIsNull (Object object) {
+ if (null == object) {
+ return true;
+ }
+ try {
+ for (Field f : object.getClass().getDeclaredFields()) {
+ f.setAccessible(true);
+ if (f.get(object) != null &&
+ StringUtils.isNotBlank(f.get(object).toString()) &&
+ !Modifier.isStatic(f.getModifiers())) {
+ return false;
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ return true;
+ }
+
+ /**
+ * 测试用:从xml文件读取xml字符串
+ */
+ @SuppressWarnings("unused")
+ private static List xmlFileToStr(String path) {
+ List strList = new ArrayList();
+ String message = null;
+ try {
+ SAXReader saxReader = new SAXReader();
+ File f = new File(path);
+ Document doc;
+ doc = saxReader.read(f);
+ message = doc.asXML();
+ System.out.println(message);
+ strList.add(message);
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ }
+ return strList;
+ }
+
+ /**
+ * 患者年龄处理:
+ * 根据患者出生日期(YYYY-MM-DD hh:mm:ss )计算年龄
+ * @param birthday(YYYY-MM-DD hh:mm:ss )
+ * @return age
+ */
+ private static String birthdayToAge(String birthday) {
+ if(StringUtils.isNotBlank(birthday)) {
+ String[] arr = birthday.split("-");
+ Integer year = Integer.parseInt(arr[0]);
+ Integer month = Integer.parseInt(arr[1]);
+ Integer day = Integer.parseInt(arr[2].split(" ")[0]);
+ Calendar now = Calendar.getInstance();
+ Integer currentYear = now.get(Calendar.YEAR);
+ Integer currentMonth = now.get(Calendar.MONTH) + 1;
+ Integer currentDay = now.get(Calendar.DAY_OF_MONTH);
+ Integer age = currentYear - year;
+ if(currentMonth == month) {
+ if(currentDay < day) {
+ age -= 1;
+ }
+ } else if(currentMonth < month) {
+ age -= 1;
+ }
+ return age.toString();
+ }
+ return null;
+ }
+
+}
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManager.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManager.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szhzyy/OrgUserDataWebServiceManager.java (revision 28726)
@@ -0,0 +1,95 @@
+package com.forgon.disinfectsystem.webservice.datasync.szhzyy;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+/**
+ * 科室人员数据webserivce
+ * @author zhoupeimian
+ * @since 2020-08-11
+ *
+ */
+@WebService
+public interface OrgUserDataWebServiceManager {
+
+ /**
+ * 调用接口推送科室数据
+ * @param xmlData 入参:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ... ...
+
+
+
+
+ * @return 出参:
+ *
+
+
+ 0/1
+
+ 成功/失败原因描述
+
+
+ *
+ */
+ @WebMethod
+ public String dealOrgUnit(@WebParam(name = "xmlData") String xmlData);
+
+ /**
+ * 调用接口推送人员数据
+ * @param xmlData 入参:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ ... ...
+
+
+
+
+
+
+ * @return 出参:
+ *
+
+
+ 0/1
+
+ 成功/失败原因描述
+
+
+ */
+ @WebMethod
+ public String dealUser(@WebParam(name = "xmlData") String xmlData);
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/bjcylyy/SDKCaller.java
===================================================================
diff -u -r26566 -r28726
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/bjcylyy/SDKCaller.java (.../SDKCaller.java) (revision 26566)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/bjcylyy/SDKCaller.java (.../SDKCaller.java) (revision 28726)
@@ -47,6 +47,9 @@
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
return Resp;
}
@@ -73,6 +76,9 @@
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
while(true){
@@ -87,7 +93,10 @@
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
- }
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
}
}
Index: ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/spring/webservice-cxf.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/spring/webservice-cxf.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/spring/webservice-cxf.xml (revision 28726)
@@ -0,0 +1,22 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/stdxfsdyyy/SDKCaller.java
===================================================================
diff -u -r27793 -r28726
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/stdxfsdyyy/SDKCaller.java (.../SDKCaller.java) (revision 27793)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/stdxfsdyyy/SDKCaller.java (.../SDKCaller.java) (revision 28726)
@@ -47,6 +47,9 @@
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
return Resp;
}
@@ -73,6 +76,9 @@
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
while(true){
@@ -87,6 +93,9 @@
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
}
}
Index: ssts-web/build.gradle
===================================================================
diff -u -r27959 -r28726
--- ssts-web/build.gradle (.../build.gradle) (revision 27959)
+++ ssts-web/build.gradle (.../build.gradle) (revision 28726)
@@ -305,7 +305,8 @@
// 排除lib和classes文件夹,因为war命令会把src\main\java和src\main\resources的所有文件打包进war文件
// 如果不排除,会导致war包内的文件重复
exclude 'WEB-INF/lib/*'
- exclude 'WEB-INF/classes/**'
+ // 排除WEB-INF/classes/目录下的文件
+ exclude 'WEB-INF/classes/*.*'
// 排除各项目的定制文件,本项目需要的文件已经拷贝为web.xml
exclude 'WEB-INF/web-*.xml'
@@ -316,6 +317,14 @@
}
}
+ // 排除webapp/src/main/webapp/WEB-INF/classes/文件夹下除mqConfig文件夹外的其它文件夹
+ new File(webProjectDir + "/src/main/webapp/WEB-INF/classes").eachDir{
+ if (it.name != 'mqConfig'){
+ println it.name
+ exclude 'WEB-INF/classes/' + it.name + '/**'
+ }
+ }
+
}
def cleanDir_Method(){
@@ -372,6 +381,22 @@
}
*/
+ // 拷贝各项目的esbmq-config.xml,到/src/main/webapp/disinfectsystem/config/" + projectName + "/interfaces/mqConfig/目录下
+ def mqConfigFileSource = webProjectDir + "/src/main/webapp/disinfectsystem/config/" + projectName + "/interfaces/mqConfig/esbmq-config.xml"
+ def mqConfigFileDirTarget = webAppClassesDir + "/mqConfig";
+ def existFile = new File(mqConfigFileSource).exists();
+ if(existFile){
+ println "拷贝esbmq-config.xml到" + mqConfigFileDirTarget;
+ file = new File(mqConfigFileDirTarget);
+ if (!file.exists()) {
+ file.mkdir();
+ }
+ copy {
+ from mqConfigFileSource
+ into mqConfigFileDirTarget
+ }
+ }
+
}
def copyToWebappClasses_Method(){
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/SDKCaller.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/SDKCaller.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/SDKCaller.java (revision 28726)
@@ -0,0 +1,126 @@
+package com.forgon.disinfectsystem.mq.dao.szhzyy;
+
+import java.io.IOException;
+
+import com.ewell.mq.queue.QueueTools;
+import com.ibm.mq.MQException;
+import com.ibm.mq.MQQueueManager;
+
+/*
+ * 请求响应模式消费方 和 有推送结果的推送模式发送方 使用的SDK操作类
+ */
+public abstract class SDKCaller {
+
+ private QueueTools queueTools;
+ private MQQueueManager queueManager;
+
+ /*
+ * gateKeeper为配置文件 EWELL。MQCONFIG下的子节点名字,用于指定连接那个队列管理器
+ */
+ public SDKCaller(String gateKeeper) {
+ // TODO Auto-generated constructor stub
+ queueTools = new QueueTools();
+ try {
+ queueManager = queueTools.connect(gateKeeper);
+ } catch (MQException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ //不写gateKeeper,则连接默认"default"
+ public SDKCaller() {
+ // TODO Auto-generated constructor stub
+ this("default");
+ }
+
+ //放消息后取出一条消息,等待时间自定
+ public String putReqAndGetResp(String fid,String Req,int waittime){
+ String Resp = "";
+ String msgId = "";
+ try {
+ msgId = queueTools.putMsg(queueManager, fid, Req);
+ Resp = queueTools.getMsgById(queueManager, fid, msgId, waittime);
+ } catch (MQException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ return Resp;
+ }
+ //不写时间,默认等待5秒
+ public String putReqAndGetResp(String fid,String Req){
+ String Resp = "";
+ Resp = putReqAndGetResp(fid,Req,5);
+ return Resp;
+ }
+ //不写时间,默认等待5秒
+ public void putReqAndGetResps(String fid,String Req){
+ putReqAndGetResps(fid,Req,5);
+ }
+ //放消息后取出多条消息,等待时间自定
+ public void putReqAndGetResps(String fid,String Req,int waittime){
+ String Resp = "";
+ String msgId = "";
+
+ try {
+ msgId = queueTools.putMsg(queueManager, fid, Req);
+ } catch (MQException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+
+ while(true){
+ try {
+
+ Resp = queueTools.getMsgById(queueManager, fid, msgId, waittime);
+ if(Resp != null) OnMessage(Resp,msgId);
+ else break;
+ } catch (MQException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (IOException e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ } catch (Exception e) {
+ // TODO Auto-generated catch block
+ e.printStackTrace();
+ }
+ }
+
+ }
+
+ public abstract Object OnMessage(String msg, String msgid);
+
+ @Override
+ protected void finalize() throws Throwable {
+ // TODO Auto-generated method stub
+ queueTools.disconnect(queueManager);
+ queueTools = null;
+ super.finalize();
+ }
+ public QueueTools getQueueTools() {
+ return queueTools;
+ }
+ public void setQueueTools(QueueTools queueTools) {
+ this.queueTools = queueTools;
+ }
+ public MQQueueManager getQueueManager() {
+ return queueManager;
+ }
+ public void setQueueManager(MQQueueManager queueManager) {
+ this.queueManager = queueManager;
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/MQDataDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/MQDataDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/szhzyy/MQDataDaoImpl.java (revision 28726)
@@ -0,0 +1,144 @@
+package com.forgon.disinfectsystem.mq.dao.szhzyy;
+
+import java.text.SimpleDateFormat;
+import java.util.Date;
+
+import org.apache.commons.lang.StringUtils;
+import org.springframework.beans.factory.annotation.Autowired;
+import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
+import com.forgon.disinfectsystem.entity.useRecord.gyey.PatientAdmissionInfo;
+import com.forgon.disinfectsystem.inventorymanagement.dao.BaseDataDao;
+import com.forgon.tools.hibernate.ObjectDao;
+
+/**
+ * MQ队列数据处理类
+ * @author zhouPeiMian
+ * @since 2020-08-11
+ *
+ */
+public class MQDataDaoImpl implements BaseDataDao {
+
+ @Autowired
+ private ObjectDao objectDao;
+
+ @Override
+ public PatientInfoVO[] getAllPatientData() throws Exception {
+ return null;
+ }
+
+ @Override
+ public OrgUnitVo[] getAllOrgUnitVoData() throws Exception {
+ return null;
+ }
+
+ @Override
+ public UserVo[] getAllUserVoData() throws Exception {
+ return null;
+ }
+
+ @Override
+ public Object[] getAllBaseData() {
+ return null;
+ }
+
+ @Override
+ public Object[] getAllDepartAndUserData() {
+ return null;
+ }
+
+ @Override
+ public void invokeMethodOnceAfterStart(){
+
+ }
+
+ @Override
+ public PatientInfoVO[] syncMqPatientInfoByHospitalNumber(String hospitalNum) {
+ // 从EHSB平台获取住院病人信息(优先同步“住院病人接口”)
+ //PatientInfoVO[] patientInfoVOArray = MQHelper.getHospitalPatientMessage(hospitalNum);
+ //if (null == patientInfoVOArray || patientInfoVOArray.length == 0) {
+ // 从“非手术住院病人接口”同步数据
+ PatientInfoVO[] patientInfoVOArray = MQHelper.getNonoperativeHospitalPatientMessage(hospitalNum);
+ //}
+ // 保存到数据库
+ if (null != patientInfoVOArray && patientInfoVOArray.length > 0) {
+ try {
+ for (PatientInfoVO patientInfoVO : patientInfoVOArray) {
+ PatientAdmissionInfo patientAdmissionInfo = new PatientAdmissionInfo();
+ patientAdmissionInfo.setHospitalNumber(patientInfoVO.getHospitalNumber());
+ patientAdmissionInfo.setHospitalSerialNumber(patientInfoVO.getPatientNumber());
+ patientAdmissionInfo.setTreatmentNum(patientInfoVO.getClinicNumber());
+ patientAdmissionInfo.setPatientName(patientInfoVO.getPatientName());
+ patientAdmissionInfo.setPatientAge(patientInfoVO.getPatientAge());
+ patientAdmissionInfo.setPatientSex(patientInfoVO.getPatientSex());
+ patientAdmissionInfo.setPatientIDCard(patientInfoVO.getPatientIDCard());
+ patientAdmissionInfo.setPatientArea(patientInfoVO.getPatientArea());
+ patientAdmissionInfo.setRoomNumber(patientInfoVO.getRoomNumber());
+ patientAdmissionInfo.setBedNumber(patientInfoVO.getBedNumber());
+ patientAdmissionInfo.setOrgunitId(null);
+ patientAdmissionInfo.setOrgunitName(patientInfoVO.getAscriptionDepartment());
+ patientAdmissionInfo.setDoctorName(patientInfoVO.getDoctorName());
+ patientAdmissionInfo.setSurgeryName(patientInfoVO.getOperation());
+ patientAdmissionInfo.setTime(new Date());
+ if (StringUtils.isNotBlank(patientInfoVO.getOperationTime())) {
+ //2019-06-26T10:25:40
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date inDate;
+ inDate = sdf.parse(patientInfoVO.getOperationTime().replace('T', ' ').trim());
+ patientAdmissionInfo.setInDate(inDate);
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getVisitAmount())) {
+ patientAdmissionInfo.setVisitAmount(Long.parseLong(patientInfoVO.getVisitAmount()));
+ }
+ objectDao.saveOrUpdate(patientAdmissionInfo);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return patientInfoVOArray;
+ }
+
+ @Override
+ public PatientInfoVO[] syncMqPatientInfoByTreatmentNum(String treatmentNum) {
+ PatientInfoVO[] patientInfoVOArray = MQHelper.getClinicPatientMessage(treatmentNum);
+ if (patientInfoVOArray != null && patientInfoVOArray.length > 0) {
+ try {
+ for (PatientInfoVO patientInfoVO : patientInfoVOArray) {
+ PatientAdmissionInfo patientAdmissionInfo = new PatientAdmissionInfo();
+ patientAdmissionInfo.setHospitalNumber(patientInfoVO.getHospitalNumber());
+ patientAdmissionInfo.setHospitalSerialNumber(patientInfoVO.getPatientNumber());
+ patientAdmissionInfo.setTreatmentNum(patientInfoVO.getClinicNumber());
+ patientAdmissionInfo.setPatientName(patientInfoVO.getPatientName());
+ patientAdmissionInfo.setPatientAge(patientInfoVO.getPatientAge());
+ patientAdmissionInfo.setPatientSex(patientInfoVO.getPatientSex());
+ patientAdmissionInfo.setPatientIDCard(patientInfoVO.getPatientIDCard());
+ patientAdmissionInfo.setPatientArea(patientInfoVO.getPatientArea());
+ patientAdmissionInfo.setRoomNumber(patientInfoVO.getRoomNumber());
+ patientAdmissionInfo.setBedNumber(patientInfoVO.getBedNumber());
+ patientAdmissionInfo.setOrgunitId(null);
+ patientAdmissionInfo.setOrgunitName(patientInfoVO.getAscriptionDepartment());
+ patientAdmissionInfo.setDoctorName(patientInfoVO.getDoctorName());
+ patientAdmissionInfo.setSurgeryName(patientInfoVO.getOperation());
+ patientAdmissionInfo.setTime(new Date());
+ if (StringUtils.isNotBlank(patientInfoVO.getOperationTime())) {
+ //2019-06-26T10:25:40
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
+ Date inDate;
+ inDate = sdf.parse(patientInfoVO.getOperationTime().replace('T', ' ').trim());
+ patientAdmissionInfo.setInDate(inDate);
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getVisitAmount())) {
+ patientAdmissionInfo.setVisitAmount(Long.parseLong(patientInfoVO.getVisitAmount()));
+ }
+ objectDao.saveOrUpdate(patientAdmissionInfo);
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return patientInfoVOArray;
+ }
+
+}
Index: localrepo/com.ibm.mq/MQSDK1.6/3.0.1/MQSDK1.6-3.0.1.jar
===================================================================
diff -u -r26566 -r28726
Binary files differ
Index: ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/interfaces/mqConfig/esbmq-config.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/interfaces/mqConfig/esbmq-config.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/interfaces/mqConfig/esbmq-config.xml (revision 28726)
@@ -0,0 +1,26 @@
+
+
+
+
+
+ 192.168.1.241
+
+ 5016
+
+ QMGR.S16_1
+
+ C.S16.C
+
+ 1381
+
+ 1392
+
+ D:\test
+
+
+ EQ.S16.BS10001.PUT
+ EQ.S16.BS10001.GET
+
+
+
+
\ No newline at end of file
Index: ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/spring/HIS.xml
===================================================================
diff -u -r28698 -r28726
--- ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/spring/HIS.xml (.../HIS.xml) (revision 28698)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szhzyy/spring/HIS.xml (.../HIS.xml) (revision 28726)
@@ -116,4 +116,8 @@
+
+
+
+
\ No newline at end of file