Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/applicationContext-his-gzs12rmyy.xml
===================================================================
diff -u -r35651 -r35657
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/applicationContext-his-gzs12rmyy.xml (.../applicationContext-his-gzs12rmyy.xml) (revision 35651)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/applicationContext-his-gzs12rmyy.xml (.../applicationContext-his-gzs12rmyy.xml) (revision 35657)
@@ -107,4 +107,16 @@
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateOperationApplyQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateOperationApplyQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateOperationApplyQueueListener.java (revision 35657)
@@ -0,0 +1,58 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import java.util.List;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 更新手术申请单队列的监听器GZS12RMYY-49
+ */
+public class UpdateOperationApplyQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(UpdateOperationApplyQueueListener.class);
+
+ DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_updateOperationApplyQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的患者信息
+ List patientInfoVOList = MQHelper.getAllPatientInfoVOData(jmsDestination, messageBody);
+ //同步患者信息
+ dataSynchronizationManager.syncMqPatientInfo(patientInfoVOList);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateOperationApplyQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateOperationApplyQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateOperationApplyQueueListener.java (revision 35657)
@@ -0,0 +1,58 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import java.util.List;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 注册手术申请单队列的监听器GZS12RMYY-49
+ */
+public class CreateOperationApplyQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(CreateOperationApplyQueueListener.class);
+
+ DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_createOperationApplyQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的患者信息
+ List patientInfoVOList = MQHelper.getAllPatientInfoVOData(jmsDestination, messageBody);
+ //同步患者信息
+ dataSynchronizationManager.syncMqPatientInfo(patientInfoVOList);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/replicaJmsIbmListener.xml
===================================================================
diff -u -r35651 -r35657
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/replicaJmsIbmListener.xml (.../replicaJmsIbmListener.xml) (revision 35651)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/replicaJmsIbmListener.xml (.../replicaJmsIbmListener.xml) (revision 35657)
@@ -101,4 +101,60 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/MQHelper.java
===================================================================
diff -u -r35651 -r35657
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/MQHelper.java (.../MQHelper.java) (revision 35651)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/MQHelper.java (.../MQHelper.java) (revision 35657)
@@ -82,21 +82,37 @@
public static final String USERMQUEUE = "OUT.S023.MS024.LQ";
/**
- * 医疗卫生机构(科室)信息注册服务队列名称XD_createDepartment
+ * 医疗卫生机构(科室)信息注册服务队列名称XD_createDepartment(GZS12RMYY-48)
*/
public static final String XDGY_createDepartmentQueue = "XDGY_createDepartment";
/**
- * 医疗卫生机构(科室)信息更新服务队列名称XD_updateDepartment
+ * 医疗卫生机构(科室)信息更新服务队列名称XD_updateDepartment(GZS12RMYY-48)
*/
public static final String XDGY_updateDepartmentQueue = "XDGY_updateDepartment";
/**
- * 医疗卫生人员信息注册服务队列名称XD_createPractitioner
+ * 医疗卫生人员信息注册服务队列名称XD_createPractitioner(GZS12RMYY-48)
*/
public static final String XDGY_createPractitionerQueue = "XDGY_createPractitioner";
/**
- * 医疗卫生人员信息更新服务队列名称XD_updatePractitioner
+ * 医疗卫生人员信息更新服务队列名称XD_updatePractitioner(GZS12RMYY-48)
*/
public static final String XDGY_updatePractitionerQueue = "XDGY_updatePractitioner";
+ /**
+ * 手术申请单注册服务队列名称XDGY_createOperationApply(GZS12RMYY-49)
+ */
+ public static final String XDGY_createOperationApplyQueue = "XDGY_createOperationApply";
+ /**
+ * 手术申请单更新服务队列名称XDGY_ updateOperationApply(GZS12RMYY-49)
+ */
+ public static final String XDGY_updateOperationApplyQueue = "XDGY_updateOperationApply";
+ /**
+ * 手术安排信息注册服务队列名称XDGY_createOperationPlan(GZS12RMYY-49)
+ */
+ public static final String XDGY_createOperationPlanQueue = "XDGY_createOperationPlan";
+ /**
+ * 手术安排信息更新服务队列名称XDGY_updateOperationPlan(GZS12RMYY-49)
+ */
+ public static final String XDGY_updateOperationPlanQueue = "XDGY_updateOperationPlan";
/**
* ACK地址
@@ -1049,4 +1065,325 @@
return strList;
}
+ /**
+ * 解析xml获取PatientInfoVO
+ * @param jmsDestination
+ * @param messageBody
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ public static List getAllPatientInfoVOData(
+ String jmsDestination, String messageBody) throws Exception {
+ List resultPatientInfoList = new ArrayList();
+ if(StringUtils.equals(jmsDestination, XDGY_createOperationApplyQueue)){
+
+ //messageBody = xmlFileToStr("D:\\项目\\喀什地区第一人民医院\\科室新增.xml").get(0);
+ messageBody = StringEscapeUtils.unescapeHtml(messageBody);
+ int beginIndex = messageBody.indexOf("");
+ if(beginIndex == -1 || endIndex == -1){
+ return null;
+ }
+ messageBody = messageBody.substring(beginIndex, endIndex + "".length());
+ Document document = DocumentHelper.parseText(messageBody.trim());
+ Map nameSpaceURIMap = new HashMap();
+ nameSpaceURIMap.put("s", "urn:hl7-org:v3");
+
+ //subject节点可以有多个,一个节点代表一个手术申请单
+ String subjectXpath = "/POOR_IN200901UV/s:controlActProcess/s:subject";
+ XPath xpath = document.createXPath(subjectXpath);
+ xpath.setNamespaceURIs(nameSpaceURIMap);
+ List subjectNodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isEmpty(subjectNodeList)){
+ return null;
+ }
+
+ for(int i=1;i<=subjectNodeList.size();i++){
+ PatientInfoVO vo = new PatientInfoVO();
+ String hospitalNumberXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:id/s:item[@root='2.16.156.10011.2.5.1.9']/@extension";
+ String hospitalNumber = processDataByXpath(document, nameSpaceURIMap, hospitalNumberXpath);
+ String patientNameXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:name/s:item/s:part/@value";
+ String patientName = processDataByXpath(document, nameSpaceURIMap, patientNameXpath);
+ String patientSexXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:administrativeGenderCode/s:displayName/@value";
+ String patientSex = processDataByXpath(document, nameSpaceURIMap, patientSexXpath);
+ String patientAgeXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:birthTime/s:originalText/@value";
+ String patientAge = processDataByXpath(document, nameSpaceURIMap, patientAgeXpath);
+ String ascriptionDepartmentXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:name/s:item/s:part/@value";
+ String ascriptionDepartment = processDataByXpath(document, nameSpaceURIMap, ascriptionDepartmentXpath);
+ String patientAreaXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:asOrganizationPartOf/s:wholeOrganization/s:name/s:item/s:part/@value";
+ String patientArea = processDataByXpath(document, nameSpaceURIMap, patientAreaXpath);
+ String operationTimeXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:component2/s:procedureRequest/s:performer/s:time/s:low/@value";
+ String operationTime = processDataByXpath(document, nameSpaceURIMap, operationTimeXpath);
+ String operationXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:component2/s:procedureRequest/s:code/s:displayName/@value";
+ String operation = processDataByXpath(document, nameSpaceURIMap, operationXpath);
+ String doctorNameXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:component2/s:procedureRequest/s:performer/s:assignedEntity/s:assignedPerson/s:name/s:item/s:part/@value";
+ String doctorName = processDataByXpath(document, nameSpaceURIMap, doctorNameXpath);
+ String opRoomIdXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:location/s:serviceDeliveryLocation/s:location/s:name/s:item/s:part/@value";
+ String opRoomId = processDataByXpath(document, nameSpaceURIMap, opRoomIdXpath);
+
+ vo.setHospitalNumber(hospitalNumber);
+ vo.setPatientName(patientName);
+ vo.setPatientSex(patientSex);
+ vo.setPatientAge(patientAge);
+ vo.setAscriptionDepartment(ascriptionDepartment);
+ vo.setPatientArea(patientArea);
+ vo.setOperationTime(operationTime);
+ vo.setOperation(operation);
+ vo.setDoctorName(doctorName);
+ vo.setOpRoomId(opRoomId);
+ resultPatientInfoList.add(vo);
+ }
+ }else if(StringUtils.equals(jmsDestination, XDGY_updateOperationApplyQueue)){
+ //messageBody = xmlFileToStr("D:\\项目\\喀什地区第一人民医院\\科室新增.xml").get(0);
+ messageBody = StringEscapeUtils.unescapeHtml(messageBody);
+ int beginIndex = messageBody.indexOf("");
+ if(beginIndex == -1 || endIndex == -1){
+ return null;
+ }
+ messageBody = messageBody.substring(beginIndex, endIndex + "".length());
+ Document document = DocumentHelper.parseText(messageBody.trim());
+ Map nameSpaceURIMap = new HashMap();
+ nameSpaceURIMap.put("s", "urn:hl7-org:v3");
+
+ //subject节点可以有多个,一个节点代表一个手术申请单
+ String subjectXpath = "/POOR_IN200902UV/s:controlActProcess/s:subject";
+ XPath xpath = document.createXPath(subjectXpath);
+ xpath.setNamespaceURIs(nameSpaceURIMap);
+ List subjectNodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isEmpty(subjectNodeList)){
+ return null;
+ }
+ for(int i=1;i<=subjectNodeList.size();i++){
+ PatientInfoVO vo = new PatientInfoVO();
+ String hospitalNumberXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:id/s:item[@root='2.16.156.10011.2.5.1.9']/@extension";
+ String hospitalNumber = processDataByXpath(document, nameSpaceURIMap, hospitalNumberXpath);
+ String patientNameXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:name/s:item/s:part/@value";
+ String patientName = processDataByXpath(document, nameSpaceURIMap, patientNameXpath);
+ String patientSexXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:administrativeGenderCode/s:displayName/@value";
+ String patientSex = processDataByXpath(document, nameSpaceURIMap, patientSexXpath);
+ String patientAgeXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:birthTime/s:originalText/@value";
+ String patientAge = processDataByXpath(document, nameSpaceURIMap, patientAgeXpath);
+ String ascriptionDepartmentXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:name/s:item/s:part/@value";
+ String ascriptionDepartment = processDataByXpath(document, nameSpaceURIMap, ascriptionDepartmentXpath);
+ String patientAreaXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:asOrganizationPartOf/s:wholeOrganization/s:name/s:item/s:part/@value";
+ String patientArea = processDataByXpath(document, nameSpaceURIMap, patientAreaXpath);
+ String operationTimeXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:component2/s:procedureRequest/s:performer/s:time/s:low/@value";
+ String operationTime = processDataByXpath(document, nameSpaceURIMap, operationTimeXpath);
+ String operationXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:component2/s:procedureRequest/s:code/s:displayName/@value";
+ String operation = processDataByXpath(document, nameSpaceURIMap, operationXpath);
+ String doctorNameXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:component2/s:procedureRequest/s:performer/s:assignedEntity/s:assignedPerson/s:name/s:item/s:part/@value";
+ String doctorName = processDataByXpath(document, nameSpaceURIMap, doctorNameXpath);
+ String opRoomIdXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:location/s:serviceDeliveryLocation/s:location/s:name/s:item/s:part/@value";
+ String opRoomId = processDataByXpath(document, nameSpaceURIMap, opRoomIdXpath);
+
+ vo.setHospitalNumber(hospitalNumber);
+ vo.setPatientName(patientName);
+ vo.setPatientSex(patientSex);
+ vo.setPatientAge(patientAge);
+ vo.setAscriptionDepartment(ascriptionDepartment);
+ vo.setPatientArea(patientArea);
+ vo.setOperationTime(operationTime);
+ vo.setOperation(operation);
+ vo.setDoctorName(doctorName);
+ vo.setOpRoomId(opRoomId);
+ resultPatientInfoList.add(vo);
+ }
+ }else if(StringUtils.equals(jmsDestination, XDGY_createOperationPlanQueue)){
+ //messageBody = xmlFileToStr("D:\\项目\\喀什地区第一人民医院\\科室新增.xml").get(0);
+ messageBody = StringEscapeUtils.unescapeHtml(messageBody);
+ int beginIndex = messageBody.indexOf("");
+ if(beginIndex == -1 || endIndex == -1){
+ return null;
+ }
+ messageBody = messageBody.substring(beginIndex, endIndex + "".length());
+ Document document = DocumentHelper.parseText(messageBody.trim());
+ Map nameSpaceURIMap = new HashMap();
+ nameSpaceURIMap.put("s", "urn:hl7-org:v3");
+
+ //subject节点可以有多个,一个节点代表一个手术申请单
+ String subjectXpath = "/PRSC_IN010101UV01/s:controlActProcess/s:subject";
+ XPath xpath = document.createXPath(subjectXpath);
+ xpath.setNamespaceURIs(nameSpaceURIMap);
+ List subjectNodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isEmpty(subjectNodeList)){
+ return null;
+ }
+ for(int i=1;i<=subjectNodeList.size();i++){
+ PatientInfoVO vo = new PatientInfoVO();
+ String hospitalNumberXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:subject/s:patient/s:id/s:item[@root='2.16.156.10011.2.5.1.9']/@extension";
+ String hospitalNumber = processDataByXpath(document, nameSpaceURIMap, hospitalNumberXpath);
+ String operationScheduleIdXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:referencedOrder/s:actOrder/s:id/@extension";
+ String operationScheduleId = processDataByXpath(document, nameSpaceURIMap, operationScheduleIdXpath);
+ String patientNameXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:subject/s:patient/s:patientPerson/s:name/s:item/s:part/@value";
+ String patientName = processDataByXpath(document, nameSpaceURIMap, patientNameXpath);
+ String patientSexXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:subject/s:patient/s:patientPerson/s:administrativeGenderCode/s:displayName/@value";
+ String patientSex = processDataByXpath(document, nameSpaceURIMap, patientSexXpath);
+ if(StringUtils.isNotBlank(patientSex)){
+ patientSex = patientSex.replace("性", "");
+ }
+ //String patientAgeXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:birthTime/s:originalText/@value";
+ //String patientAge = processDataByXpath(document, nameSpaceURIMap, patientAgeXpath);
+ //String ascriptionDepartmentXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:name/s:item/s:part/@value";
+ //String ascriptionDepartment = processDataByXpath(document, nameSpaceURIMap, ascriptionDepartmentXpath);
+ //String patientAreaXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:asOrganizationPartOf/s:wholeOrganization/s:name/s:item/s:part/@value";
+ //String patientArea = processDataByXpath(document, nameSpaceURIMap, patientAreaXpath);
+ String operationXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:code/s:originalText/@value";
+ String operation = processDataByXpath(document, nameSpaceURIMap, operationXpath);
+ String opRoomIdXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:location/s:serviceDeliveryLocation/s:location/s:name/s:item/s:part/@value";
+ String opRoomId = processDataByXpath(document, nameSpaceURIMap, opRoomIdXpath);
+ String operationTimeXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:effectiveTime/s:low/@value";
+ String operationTime = processDataByXpath(document, nameSpaceURIMap, operationTimeXpath);
+ //String doctorNameXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:performer/s:assignedPerson/s:assignedPerson/s:name/s:item/s:part/@value";
+ //String doctorName = processDataByXpath(document, nameSpaceURIMap, doctorNameXpath);
+
+ /*String washHandNurseXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:performer/s:assignedPerson/s:code[@displayName='手术助手']/s:assignedPerson/s:name/s:item/s:part/@value";
+ String washHandNurse = processDataByXpath(document, nameSpaceURIMap, washHandNurseXpath);
+ String circuitNurseXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:performer/s:assignedPerson/s:code[@codeSystem='2.16.156.10011.0.9.2.3.2.170']/s:assignedPerson/s:name/s:item/s:part/@value";
+ String circuitNurse = processDataByXpath(document, nameSpaceURIMap, circuitNurseXpath);*/
+
+ String doctorName = "";
+ String circuitNurse = "";
+ String washHandNurse = "";
+ String performerNodeXpathStr = subjectXpath + "[" + i + "]/s:actAppointment/s:performer";
+ XPath performerNodeXpath = document.createXPath(performerNodeXpathStr);
+ performerNodeXpath.setNamespaceURIs(nameSpaceURIMap);
+ List performerNodeList = performerNodeXpath.selectNodes(document, performerNodeXpath);
+ if(CollectionUtils.isNotEmpty(performerNodeList)){
+ for(int j=1;j<=performerNodeList.size();j++){
+ String roleNameXapth = performerNodeXpathStr + "[" + j + "]/s:assignedPerson/s:code/s:displayName/@value";
+ String roleName = processDataByXpath(document, nameSpaceURIMap, roleNameXapth);
+ String staffNameXpath = performerNodeXpathStr + "[" + j + "]/s:assignedPerson/s:assignedPerson/s:name/s:item/s:part/@value";
+ String staffName = processDataByXpath(document, nameSpaceURIMap, staffNameXpath);
+ if(StringUtils.isBlank(roleName)){
+ roleNameXapth = performerNodeXpathStr + "[" + j + "]/s:functionCode/s:displayName/@value";
+ roleName = processDataByXpath(document, nameSpaceURIMap, roleNameXapth);
+ }
+ if(StringUtils.equals(roleName, "巡回护士")){
+ circuitNurse = staffName;
+ }else if(StringUtils.equals(roleName, "手术助手")){
+ washHandNurse = staffName;
+ }else if(StringUtils.equals(roleName, "主刀医生")){
+ doctorName = staffName;
+ }
+ }
+ }
+
+ vo.setHospitalNumber(hospitalNumber);
+ vo.setOperationScheduleId(operationScheduleId);
+ vo.setPatientName(patientName);
+ vo.setPatientSex(patientSex);
+ //vo.setPatientAge(patientAge);
+ //vo.setAscriptionDepartment(ascriptionDepartment);
+ //vo.setPatientArea(patientArea);
+ vo.setOperation(operation);
+ vo.setOpRoomId(opRoomId);
+ vo.setOperationTime(operationTime);
+ vo.setDoctorName(doctorName);
+ vo.setWashHandNurse(washHandNurse);
+ vo.setCircuitNurse(circuitNurse);
+ resultPatientInfoList.add(vo);
+ }
+ }else if(StringUtils.equals(jmsDestination, XDGY_updateOperationPlanQueue)){
+
+ //messageBody = xmlFileToStr("D:\\项目\\喀什地区第一人民医院\\科室新增.xml").get(0);
+ messageBody = StringEscapeUtils.unescapeHtml(messageBody);
+ int beginIndex = messageBody.indexOf("");
+ if(beginIndex == -1 || endIndex == -1){
+ return null;
+ }
+ messageBody = messageBody.substring(beginIndex, endIndex + "".length());
+ Document document = DocumentHelper.parseText(messageBody.trim());
+ Map nameSpaceURIMap = new HashMap();
+ nameSpaceURIMap.put("s", "urn:hl7-org:v3");
+
+ //subject节点可以有多个,一个节点代表一个手术申请单
+ String subjectXpath = "/PRSC_IN010201UV01/s:controlActProcess/s:subject";
+ XPath xpath = document.createXPath(subjectXpath);
+ xpath.setNamespaceURIs(nameSpaceURIMap);
+ List subjectNodeList = xpath.selectNodes(document, xpath);
+ if(CollectionUtils.isEmpty(subjectNodeList)){
+ return null;
+ }
+ for(int i=1;i<=subjectNodeList.size();i++){
+ PatientInfoVO vo = new PatientInfoVO();
+ String hospitalNumberXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:subject/s:patient/s:id/s:item[@root='2.16.156.10011.2.5.1.9']/@extension";
+ String hospitalNumber = processDataByXpath(document, nameSpaceURIMap, hospitalNumberXpath);
+ String operationScheduleIdXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:referencedOrder/s:actOrder/s:id/@extension";
+ String operationScheduleId = processDataByXpath(document, nameSpaceURIMap, operationScheduleIdXpath);
+ String patientNameXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:subject/s:patient/s:patientPerson/s:name/s:item/s:part/@value";
+ String patientName = processDataByXpath(document, nameSpaceURIMap, patientNameXpath);
+ String patientSexXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:subject/s:patient/s:patientPerson/s:administrativeGenderCode/s:displayName/@value";
+ String patientSex = processDataByXpath(document, nameSpaceURIMap, patientSexXpath);
+ if(StringUtils.isNotBlank(patientSex)){
+ patientSex = patientSex.replace("性", "");
+ }
+ //String patientAgeXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:subject/s:patient/s:patientPerson/s:birthTime/s:originalText/@value";
+ //String patientAge = processDataByXpath(document, nameSpaceURIMap, patientAgeXpath);
+ //String ascriptionDepartmentXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:name/s:item/s:part/@value";
+ //String ascriptionDepartment = processDataByXpath(document, nameSpaceURIMap, ascriptionDepartmentXpath);
+ //String patientAreaXpath = subjectXpath + "[" + i + "]/s:procedureRequest/s:componentOf1/s:encounter/s:location/s:serviceDeliveryLocation/s:serviceProviderOrganization/s:asOrganizationPartOf/s:wholeOrganization/s:name/s:item/s:part/@value";
+ //String patientArea = processDataByXpath(document, nameSpaceURIMap, patientAreaXpath);
+ String operationXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:code/s:originalText/@value";
+ String operation = processDataByXpath(document, nameSpaceURIMap, operationXpath);
+ String opRoomIdXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:location/s:serviceDeliveryLocation/s:location/s:name/s:item/s:part/@value";
+ String opRoomId = processDataByXpath(document, nameSpaceURIMap, opRoomIdXpath);
+ String operationTimeXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:effectiveTime/s:low/@value";
+ String operationTime = processDataByXpath(document, nameSpaceURIMap, operationTimeXpath);
+ //String doctorNameXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:performer/s:assignedPerson/s:assignedPerson/s:name/s:item/s:part/@value";
+ //String doctorName = processDataByXpath(document, nameSpaceURIMap, doctorNameXpath);
+
+ /*String washHandNurseXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:performer/s:assignedPerson/s:code[@displayName='手术助手']/s:assignedPerson/s:name/s:item/s:part/@value";
+ String washHandNurse = processDataByXpath(document, nameSpaceURIMap, washHandNurseXpath);
+ String circuitNurseXpath = subjectXpath + "[" + i + "]/s:actAppointment/s:performer/s:assignedPerson/s:code[@codeSystem='2.16.156.10011.0.9.2.3.2.170']/s:assignedPerson/s:name/s:item/s:part/@value";
+ String circuitNurse = processDataByXpath(document, nameSpaceURIMap, circuitNurseXpath);*/
+
+ String doctorName = "";
+ String circuitNurse = "";
+ String washHandNurse = "";
+ String performerNodeXpathStr = subjectXpath + "[" + i + "]/s:actAppointment/s:performer";
+ XPath performerNodeXpath = document.createXPath(performerNodeXpathStr);
+ performerNodeXpath.setNamespaceURIs(nameSpaceURIMap);
+ List performerNodeList = performerNodeXpath.selectNodes(document, performerNodeXpath);
+ if(CollectionUtils.isNotEmpty(performerNodeList)){
+ for(int j=1;j<=performerNodeList.size();j++){
+ String roleNameXapth = performerNodeXpathStr + "[" + j + "]/s:assignedPerson/s:code/s:displayName/@value";
+ String roleName = processDataByXpath(document, nameSpaceURIMap, roleNameXapth);
+ String staffNameXpath = performerNodeXpathStr + "[" + j + "]/s:assignedPerson/s:assignedPerson/s:name/s:item/s:part/@value";
+ String staffName = processDataByXpath(document, nameSpaceURIMap, staffNameXpath);
+ if(StringUtils.isBlank(roleName)){
+ roleNameXapth = performerNodeXpathStr + "[" + j + "]/s:functionCode/s:displayName/@value";
+ roleName = processDataByXpath(document, nameSpaceURIMap, roleNameXapth);
+ }
+ if(StringUtils.equals(roleName, "巡回护士")){
+ circuitNurse = staffName;
+ }else if(StringUtils.equals(roleName, "手术助手")){
+ washHandNurse = staffName;
+ }else if(StringUtils.equals(roleName, "主刀医生")){
+ doctorName = staffName;
+ }
+ }
+ }
+
+ vo.setHospitalNumber(hospitalNumber);
+ vo.setOperationScheduleId(operationScheduleId);
+ vo.setPatientName(patientName);
+ vo.setPatientSex(patientSex);
+ //vo.setPatientAge(patientAge);
+ //vo.setAscriptionDepartment(ascriptionDepartment);
+ //vo.setPatientArea(patientArea);
+ vo.setOperation(operation);
+ vo.setOpRoomId(opRoomId);
+ vo.setOperationTime(operationTime);
+ vo.setDoctorName(doctorName);
+ vo.setWashHandNurse(washHandNurse);
+ vo.setCircuitNurse(circuitNurse);
+ resultPatientInfoList.add(vo);
+ }
+ }
+ return resultPatientInfoList;
+ }
+
}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateOperationPlanQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateOperationPlanQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/UpdateOperationPlanQueueListener.java (revision 35657)
@@ -0,0 +1,58 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import java.util.List;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 更新手术安排信息队列的监听器GZS12RMYY-49
+ */
+public class UpdateOperationPlanQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(UpdateOperationPlanQueueListener.class);
+
+ DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_updateOperationPlanQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的患者信息
+ List patientInfoVOList = MQHelper.getAllPatientInfoVOData(jmsDestination, messageBody);
+ //同步患者信息
+ dataSynchronizationManager.syncMqPatientInfo(patientInfoVOList);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/gyey/PatientAdmissionInfo.java
===================================================================
diff -u -r26316 -r35657
--- ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/gyey/PatientAdmissionInfo.java (.../PatientAdmissionInfo.java) (revision 26316)
+++ ssts-basedata/src/main/java/com/forgon/disinfectsystem/entity/useRecord/gyey/PatientAdmissionInfo.java (.../PatientAdmissionInfo.java) (revision 35657)
@@ -3,8 +3,10 @@
import java.util.Date;
import javax.persistence.Entity;
+
import org.hibernate.annotations.DynamicInsert;
import org.hibernate.annotations.DynamicUpdate;
+
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@@ -47,6 +49,10 @@
*/
private String patientArea;
/**
+ * 手术间GZS12RMYY-49
+ */
+ private String operationRoom;
+ /**
* 病房
*/
private String roomNumber;
@@ -101,6 +107,11 @@
*/
private String washHandNurse;
+ /**
+ * 手术申请单号(GZS12RMYY-49)
+ */
+ private String operationScheduleId;
+
@Id
@GeneratedValue(strategy = GenerationType.AUTO)
public Long getId() {
@@ -145,6 +156,12 @@
public void setPatientArea(String patientArea) {
this.patientArea = patientArea;
}
+ public String getOperationRoom() {
+ return operationRoom;
+ }
+ public void setOperationRoom(String operationRoom) {
+ this.operationRoom = operationRoom;
+ }
public String getRoomNumber() {
return roomNumber;
}
@@ -225,5 +242,11 @@
public void setWashHandNurse(String washHandNurse) {
this.washHandNurse = washHandNurse;
}
+ public String getOperationScheduleId() {
+ return operationScheduleId;
+ }
+ public void setOperationScheduleId(String operationScheduleId) {
+ this.operationScheduleId = operationScheduleId;
+ }
}
Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManager.java
===================================================================
diff -u -r29594 -r35657
--- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManager.java (.../DataSynchronizationManager.java) (revision 29594)
+++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManager.java (.../DataSynchronizationManager.java) (revision 35657)
@@ -1,5 +1,7 @@
package com.forgon.disinfectsystem.datasynchronization.service;
+import java.util.List;
+
import com.forgon.disinfectsystem.datasynchronization.model.OrgUnitVo;
import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
import com.forgon.disinfectsystem.datasynchronization.model.UserVo;
@@ -98,6 +100,13 @@
* @throws Exception
*/
public void syncMqPatientInfo() throws Exception;
+
+ /**
+ * 同步患者信息GZS12RMYY-49
+ * @param patientInfoVOList
+ * @throws Exception
+ */
+ public void syncMqPatientInfo(List patientInfoVOList) throws Exception;
/**
* 同步住院病人信息及科室人员信息,项目启动时开始监听消息队列(北京垂杨柳医院)
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/primaryJmsIbmListener.xml
===================================================================
diff -u -r35651 -r35657
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/primaryJmsIbmListener.xml (.../primaryJmsIbmListener.xml) (revision 35651)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/spring/primaryJmsIbmListener.xml (.../primaryJmsIbmListener.xml) (revision 35657)
@@ -100,5 +100,61 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateOperationPlanQueueListener.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateOperationPlanQueueListener.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/mq/dao/gzs12rmyy/CreateOperationPlanQueueListener.java (revision 35657)
@@ -0,0 +1,58 @@
+package com.forgon.disinfectsystem.mq.dao.gzs12rmyy;
+
+import java.util.List;
+
+import javax.jms.Message;
+import javax.jms.MessageListener;
+
+import org.apache.log4j.Logger;
+
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+
+/**
+ * 注册手术安排信息队列的监听器GZS12RMYY-49
+ */
+public class CreateOperationPlanQueueListener implements MessageListener {
+
+ private static Logger logger = Logger.getLogger(CreateOperationPlanQueueListener.class);
+
+ DataSynchronizationManager dataSynchronizationManager;
+
+ public void setDataSynchronizationManager(DataSynchronizationManager dataSynchronizationManager) {
+ this.dataSynchronizationManager = dataSynchronizationManager;
+ }
+
+ @Override
+ public void onMessage(Message message) {
+ String jmsDestination = MQHelper.XDGY_createOperationPlanQueue;
+ String messageBody = "";
+ try {
+ //读取消息内容
+ messageBody = MQHelper.readMessage(jmsDestination, message);
+ try {
+ //解析消息中的患者信息
+ List patientInfoVOList = MQHelper.getAllPatientInfoVOData(jmsDestination, messageBody);
+ //同步患者信息
+ dataSynchronizationManager.syncMqPatientInfo(patientInfoVOList);
+ } catch (Exception e) {
+ logger.info("解析【" + jmsDestination +"】消息失败:" + e.getMessage());
+ }
+ //回调下平台服务
+ new Thread(){
+ @Override
+ public void run() {
+ try {
+ MQHelper.sentAck(jmsDestination, message);
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ }.start();
+ } catch (Exception e) {
+ logger.info("监听【" + jmsDestination +"】消息队列失败:" + e.getMessage());
+ e.printStackTrace();
+ }
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java
===================================================================
diff -u -r34793 -r35657
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 34793)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/service/DataSynchronizationManagerImpl.java (.../DataSynchronizationManagerImpl.java) (revision 35657)
@@ -285,6 +285,153 @@
}
}
+ @Override
+ public synchronized void syncMqPatientInfo(List patientInfoVOList) throws Exception{
+ // 保存病人信息到数据库
+ if (CollectionUtils.isNotEmpty(patientInfoVOList)) {
+ Map DBPatientInfoMap = getDBPatientInfoMap(patientInfoVOList);
+ Map nameOrgUnitMap = getNameOrgUnitMap(patientInfoVOList);
+ for (PatientInfoVO patientInfoVO : patientInfoVOList) {
+ if(StringUtils.isBlank(patientInfoVO.getHospitalNumber())){
+ continue;
+ }
+ PatientAdmissionInfo patientAdmissionInfo = DBPatientInfoMap.get(patientInfoVO.getHospitalNumber());
+ if(patientAdmissionInfo == null){
+ patientAdmissionInfo = new PatientAdmissionInfo();
+ }
+ patientAdmissionInfo.setHospitalNumber(patientInfoVO.getHospitalNumber());
+ if(StringUtils.isNotBlank(patientInfoVO.getPatientName())){
+ patientAdmissionInfo.setPatientName(patientInfoVO.getPatientName());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getPatientAge())){
+ patientAdmissionInfo.setPatientAge(patientInfoVO.getPatientAge());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getPatientSex())){
+ patientAdmissionInfo.setPatientSex(patientInfoVO.getPatientSex());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getPatientIDCard())){
+ patientAdmissionInfo.setPatientIDCard(patientInfoVO.getPatientIDCard());
+ }
+ if(DatabaseUtil.isPoIdValid(patientInfoVO.getVisitAmount())){
+ patientAdmissionInfo.setVisitAmount(Long.valueOf(patientInfoVO.getVisitAmount()));
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getPatientArea())){
+ patientAdmissionInfo.setPatientArea(patientInfoVO.getPatientArea());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getOpRoomId())){
+ patientAdmissionInfo.setOperationRoom(patientInfoVO.getOpRoomId());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getRoomNumber())){
+ patientAdmissionInfo.setRoomNumber(patientInfoVO.getRoomNumber());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getBedNumber())){
+ patientAdmissionInfo.setBedNumber(patientInfoVO.getBedNumber());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getDoctorName())){
+ patientAdmissionInfo.setDoctorName(patientInfoVO.getDoctorName());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getPatientNumber())){
+ patientAdmissionInfo.setHospitalSerialNumber(patientInfoVO.getPatientNumber());
+ }
+ patientAdmissionInfo.setTime(new Date());
+ if(StringUtils.isNotBlank(patientInfoVO.getOperation())){
+ patientAdmissionInfo.setSurgeryName(patientInfoVO.getOperation());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getClinicNumber())){
+ patientAdmissionInfo.setTreatmentNum(patientInfoVO.getClinicNumber());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getWashHandNurse())){
+ patientAdmissionInfo.setWashHandNurse(patientInfoVO.getWashHandNurse());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getCircuitNurse())){
+ patientAdmissionInfo.setCircuitNurse(patientInfoVO.getCircuitNurse());
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getAscriptionDepartment())){
+ OrgUnit orgUnit = nameOrgUnitMap.get(patientInfoVO.getAscriptionDepartment());
+ if(orgUnit != null){
+ patientAdmissionInfo.setOrgunitId(orgUnit.getId()+"");
+ }
+ patientAdmissionInfo.setOrgunitName(patientInfoVO.getAscriptionDepartment());
+ }
+ if (StringUtils.isNotBlank(patientInfoVO.getOperationTime())) {
+ try {
+ SimpleDateFormat sdf = new SimpleDateFormat("yyyyMMddHHmm");
+ Date inDate = sdf.parse(patientInfoVO.getOperationTime().trim());
+ patientAdmissionInfo.setInDate(inDate);
+ } catch (Exception e) {
+ }
+ }
+ if(DatabaseUtil.isPoIdValid(patientInfoVO.getVisitAmount())) {
+ patientAdmissionInfo.setVisitAmount(Long.parseLong(patientInfoVO.getVisitAmount()));
+ }
+ if(StringUtils.isNotBlank(patientInfoVO.getOperationScheduleId())){
+ patientAdmissionInfo.setOperationScheduleId(patientInfoVO.getOperationScheduleId());
+ }
+ patientAdmissionInfoManager.insertPatientAdmissionInfo(patientAdmissionInfo);
+ }
+ }
+ }
+
+ /**
+ * 查询患者所在科室的名称和科室Map
+ * @param patientInfoVOList
+ * @return
+ */
+ private Map getNameOrgUnitMap(
+ List patientInfoVOList) {
+ Map nameOrgUnitMap = new HashMap();
+ if(CollectionUtils.isEmpty(patientInfoVOList)){
+ return nameOrgUnitMap;
+ }
+ List orgUnitNameList = new ArrayList();
+ for (PatientInfoVO patientInfoVO : patientInfoVOList) {
+ if(StringUtils.isBlank(patientInfoVO.getAscriptionDepartment())){
+ continue;
+ }
+ orgUnitNameList.add(patientInfoVO.getAscriptionDepartment());
+ }
+ if(CollectionUtils.isNotEmpty(orgUnitNameList)){
+ List list = orgUnitManager.getCollection("name", orgUnitNameList);
+ if(CollectionUtils.isNotEmpty(list)){
+ for (OrgUnit orgUnit : list) {
+ nameOrgUnitMap.put(orgUnit.getName(), orgUnit);
+ }
+ }
+ }
+ return nameOrgUnitMap;
+ }
+
+ /**
+ * 查询患者信息
+ * @param patientInfoVOList
+ * @return
+ */
+ @SuppressWarnings("unchecked")
+ private Map getDBPatientInfoMap(
+ List patientInfoVOList) {
+ Map DBPatientInfoMap = new HashMap();
+ if(CollectionUtils.isEmpty(patientInfoVOList)){
+ return DBPatientInfoMap;
+ }
+ List hospitalNumberList = new ArrayList();
+ for (PatientInfoVO patientInfoVO : patientInfoVOList) {
+ if(StringUtils.isBlank(patientInfoVO.getHospitalNumber())){
+ continue;
+ }
+ hospitalNumberList.add(patientInfoVO.getHospitalNumber());
+ }
+ if(CollectionUtils.isNotEmpty(hospitalNumberList)){
+ String sql = String.format("select po from %s po where %s order by po.id ", PatientAdmissionInfo.class.getSimpleName(), SqlUtils.getStringFieldInLargeCollectionsPredicate("po.hospitalNumber", hospitalNumberList));
+ List patientAdmissionInfoList = objectDao.findByHql(sql);
+ if(CollectionUtils.isNotEmpty(patientAdmissionInfoList)){
+ for (PatientAdmissionInfo patientAdmissionInfo : patientAdmissionInfoList) {
+ DBPatientInfoMap.put(patientAdmissionInfo.getHospitalNumber(), patientAdmissionInfo);
+ }
+ }
+ }
+ return DBPatientInfoMap;
+ }
+
private PatientInfoVO[] findPatientInfoByHospitalNum(String hospitalNum, Integer sourcePage) {
// 同步到的数据先单独提交事务
runWithTransNewManager.runWith_TRANS_NEW(new RunWithTransNewTask() {
Index: ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/interfaces/mybatis/FindPatientInfoByHospitalNumMapper.xml
===================================================================
diff -u -r27968 -r35657
--- ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/interfaces/mybatis/FindPatientInfoByHospitalNumMapper.xml (.../FindPatientInfoByHospitalNumMapper.xml) (revision 27968)
+++ ssts-web/src/main/webapp/disinfectsystem/config/gzs12rmyy/interfaces/mybatis/FindPatientInfoByHospitalNumMapper.xml (.../FindPatientInfoByHospitalNumMapper.xml) (revision 35657)
@@ -13,10 +13,16 @@
patientSex,
patientIDCard,
doctorName,
- surgeryName,
+ surgeryName operation,
patientArea,
roomNumber,
- bedNumber
+ bedNumber,
+ orgunitName ascriptionDepartment,
+ operationRoom opRoomId,
+ inDate operationTime,
+ operationScheduleId,
+ washHandNurse,
+ circuitNurse
from PatientAdmissionInfo
where hospitalNumber = #{hospitalNum}
]]>
@@ -31,10 +37,16 @@
patientSex,
patientIDCard,
doctorName,
- surgeryName,
+ surgeryName operation,
patientArea,
roomNumber,
- bedNumber
+ bedNumber,
+ orgunitName ascriptionDepartment,
+ operationRoom opRoomId,
+ inDate operationTime,
+ operationScheduleId,
+ washHandNurse,
+ circuitNurse
from PatientAdmissionInfo
where hospitalNumber = #{hospitalNumber}
]]>