Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/webservice-cxf.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/webservice-cxf.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/webservice-cxf.xml (revision 28077)
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/HIS.xml
===================================================================
diff -u -r27989 -r28077
--- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/HIS.xml (.../HIS.xml) (revision 27989)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/HIS.xml (.../HIS.xml) (revision 28077)
@@ -124,4 +124,8 @@
+
+
+
+
\ No newline at end of file
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szsdsrmyy/HIPMessageWebServiceImpl.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szsdsrmyy/HIPMessageWebServiceImpl.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szsdsrmyy/HIPMessageWebServiceImpl.java (revision 28077)
@@ -0,0 +1,404 @@
+package com.forgon.disinfectsystem.webservice.datasync.szsdsrmyy;
+
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.List;
+import java.util.UUID;
+
+import org.apache.commons.collections.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+import org.apache.log4j.Logger;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.forgon.directory.model.BarcodeDevice;
+import com.forgon.disinfectsystem.barcode.service.BarcodeManager;
+import com.forgon.disinfectsystem.datasynchronization.dao.SyncDataFromHIPDao;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+import com.forgon.disinfectsystem.entity.assestmanagement.DiposableGoodsInstance;
+import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoods;
+import com.forgon.disinfectsystem.entity.basedatamanager.materialinstance.MaterialInstance;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseDefinition;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
+import com.forgon.disinfectsystem.entity.invoicemanager.Invoice;
+import com.forgon.disinfectsystem.entity.invoicemanager.InvoicePlan;
+import com.forgon.disinfectsystem.entity.useRecord.UseRecord;
+import com.forgon.disinfectsystem.operationreservation.service.OperationReservationManager;
+import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager;
+import com.forgon.disinfectsystem.useRecord.service.UseRecordManager;
+import com.forgon.tools.hibernate.ObjectDao;
+
+public class HIPMessageWebServiceImpl implements HIPMessageWebService {
+
+ private static Logger logger = Logger.getLogger(HIPMessageWebServiceImpl.class);
+
+ @Autowired
+ private SyncDataFromHIPDao sycnDataFromHIPDao;
+ @Autowired
+ private DataSynchronizationManager dataSynchronizationManager;
+ @Autowired
+ private OperationReservationManager operationReservationManager;
+ @Autowired
+ private TousseInstanceManager tousseInstanceManager;
+ @Autowired
+ private BarcodeManager barcodeManager;
+ @Autowired
+ private ObjectDao objectDao;
+ @Autowired
+ private UseRecordManager useRecordManager;
+
+ /**
+ * 器械包使用登记(消毒物料使用登记)
+ * @param action
+ * @param message
+ * @return
+ */
+ public String applyRegister(String action, String message) {
+ logger.info("applyRegister ---> action : " + action + "; message : " + message);
+ // typeCode 为处理结果, AA 表示成功 AE 表示失败
+ String typeCode = "AE";
+ // 处理结果说明
+ String returnStr = "患者消毒物料使用登记失败";
+ // 消息id
+ String messageId = "";
+ try {
+ UseRecord useRecord = sycnDataFromHIPDao.syncUseRecord(message);
+ if (useRecord != null) {
+ messageId = useRecord.getRemark();
+ List list = useRecord.getTousseInstanceList();
+ List tiList = new ArrayList();
+ // 1、查询器械包实例
+ if(CollectionUtils.isNotEmpty(list)){
+ for (TousseInstance ti : list) {
+ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(ti.getBarcode());
+ if (bd instanceof TousseInstance) {
+ // 1、查询器械包实例
+ TousseInstance tousseInstance = (TousseInstance) bd;
+ if(!StringUtils.equals(TousseInstance.STATUS_SHIPPED, tousseInstance.getStatus())
+ && !StringUtils.equals(TousseInstance.STATUS_SIGNED, tousseInstance.getStatus())){
+ throw new RuntimeException("患者消毒物料使用登记失败 :器械包条码为" + bd.getBarcode() + "的器械包为“" + tousseInstance.getStatus() + "”状态,请录入“已发货”或“已签收”的器械包");
+ }
+ tiList.add(tousseInstance);
+ } else {
+ throw new RuntimeException(ti.getBarcode() + "不是器械包条码");
+ }
+ }
+ }
+ if (CollectionUtils.isNotEmpty(tiList)) {
+ // 2、查询患者信息
+ // (可以调用手麻系统提供患者查询服务,或者调用HIS系统提供患者查询服务,实现其中一种即可,之前已经实现手麻系统提供患者查询服务,所以这里调用的是手麻系统提供患者查询服务)
+ PatientInfoVO patient = sycnDataFromHIPDao.findPatientInfoByHospitalNum(useRecord.getHospitalNum());
+ if (patient == null) {
+ throw new RuntimeException("患者消毒物料使用登记失败 :未找到住院号为" + useRecord.getHospitalNum() + "的患者信息");
+ }
+ // 3、创建使用记录
+ UseRecord newUseRecord = new UseRecord();
+ newUseRecord.setHospitalNum(patient.getHospitalNumber());
+ newUseRecord.setTreatmentNum(patient.getClinicNumber());
+ newUseRecord.setPatientName(patient.getPatientName());
+ newUseRecord.setPatientAge(patient.getPatientAge());
+ newUseRecord.setPatientSex(patient.getPatientSex());
+ newUseRecord.setPatientIDCard(patient.getPatientIDCard());
+ newUseRecord.setDoctorName(patient.getDoctorName());
+ newUseRecord.setOperation(patient.getOperation());
+ newUseRecord.setOperationRoom(patient.getOpRoomId());
+ newUseRecord.setPatientArea(patient.getPatientArea());
+ newUseRecord.setRoomNumber(patient.getRoomNumber());
+ newUseRecord.setBedNumber(patient.getBedNumber());
+ newUseRecord.setDepart(patient.getAscriptionDepartment());
+ newUseRecord.setVisitId(patient.getVisitId());
+ newUseRecord.setWashHandNurse(patient.getWashHandNurse());
+ newUseRecord.setCircuitNurse(patient.getCircuitNurse());
+ // 登记人
+ newUseRecord.setOperator(useRecord.getOperator());
+ // 审核人
+ newUseRecord.setReviewer(useRecord.getOperator());
+ Date currentDate = new Date();
+ // 录入时间
+ newUseRecord.setEnteringDate(useRecord.getOperationTime());
+ // 审核时间
+ newUseRecord.setReviewTime(useRecord.getOperationTime());
+ newUseRecord.setApplicationTime(currentDate);
+ newUseRecord.setOperationTime(useRecord.getOperationTime());
+ // 使用记录转申请单
+ useRecordManager.saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED(
+ newUseRecord, useRecord.getOperator(), null, useRecord.getDepartCoding(),
+ useRecord.getOperationTime(), InvoicePlan.TYPE_COMBO_FORM,
+ useRecord.getOperator(), useRecord.getOperator());
+ // 登记人
+ newUseRecord.setOperator(useRecord.getOperator());
+ // 审核人
+ newUseRecord.setReviewer(useRecord.getOperator());
+ // 录入时间
+ newUseRecord.setEnteringDate(useRecord.getOperationTime());
+ // 审核时间
+ newUseRecord.setReviewTime(useRecord.getOperationTime());
+ objectDao.saveOrUpdate(newUseRecord);
+ for (TousseInstance tousseInstance : tiList) {
+ tousseInstance.setUseRecord_id(newUseRecord.getId());
+ tousseInstance.setStatus(TousseInstance.STATUS_USED);
+ tousseInstance.setPatientName(patient.getPatientName());
+ tousseInstance.setDoctorName(patient.getDoctorName());
+ tousseInstance.setUseTime(useRecord.getOperationTime());
+ }
+ objectDao.batchSaveOrUpdate(tiList);
+ if (StringUtils.isNotBlank(messageId)) {
+ typeCode = "AA";
+ returnStr = "患者消毒物料使用登记成功";
+ }
+ }
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ returnStr = e.getMessage();
+ }
+ StringBuilder returnMsg = new StringBuilder();
+ returnMsg.append("");
+ returnMsg.append(" ");
+ returnMsg.append("");
+ returnMsg.append("" + returnStr + "");
+ returnMsg.append("");
+ logger.info("applyRegister ---> " + returnMsg.toString());
+ return returnMsg.toString();
+ }
+
+ /**
+ * 根据器械包条码查询消毒物料明细查询
+ * @param action
+ * @param message
+ * @return
+ */
+ public String tousseDetailQuery(String action, String message) {
+ logger.info("tousseDetailQuery ---> action : " + action + "; message : " + message);
+ // typeCode 为处理结果, AA 表示成功 AE 表示失败
+ String typeCode = "AE";
+ // 处理结果说明
+ String returnStr = "消毒物料明细查询失败";
+ // 消息id
+ String messageId = "";
+ // guid
+ UUID uuid = UUID.randomUUID();
+ try {
+ TousseInstance ti = sycnDataFromHIPDao.tousseDetailQuery(message);
+ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(ti.getBarcode());
+ if (bd instanceof TousseInstance) {
+ // 生成器械包信息xml
+ TousseInstance tousseInstance = (TousseInstance) bd;
+ TousseDefinition tousseDefinition = tousseInstance.getTousseDefinition();
+ if (tousseDefinition != null) {
+ List materialInstances = tousseDefinition.getMaterialInstances();
+ List diposableGoodsInstanceList = tousseDefinition.getDiposableGoodsItems();
+ messageId = ti.getRemark();
+ typeCode = "AA";
+ //String materialStr = "";
+ StringBuilder materialStr = new StringBuilder();
+ if (CollectionUtils.isNotEmpty(materialInstances)) {
+ for (MaterialInstance materialInstance : materialInstances) {
+ String detailspec = materialInstance.getSpecification() == null ? "" : materialInstance.getSpecification();
+ materialStr.append("" + materialInstance.getMaterialDefinitionId() + "");
+ materialStr.append("" + materialInstance.getMaterialName() + "");
+ materialStr.append("" + detailspec + "");
+ materialStr.append("" + materialInstance.getCount() + "
");
+ }
+ }
+ if (CollectionUtils.isNotEmpty(diposableGoodsInstanceList)) {
+ for (DiposableGoodsInstance disposableGoodsInstance : diposableGoodsInstanceList) {
+ DisposableGoods diposableGoods = disposableGoodsInstance.getDiposableGoods();
+ String detailspec = diposableGoods.getSpecification() == null ? "" : diposableGoods.getSpecification();
+ materialStr.append("" + disposableGoodsInstance.getDiposableGoodsId() + "");
+ materialStr.append("" + diposableGoods.getName() + "");
+ materialStr.append("" + detailspec + "");
+ materialStr.append("" + disposableGoodsInstance.getAmount() + "
");
+ }
+ }
+ StringBuilder returnStrSB = new StringBuilder();
+ returnStrSB.append("");
+ returnStrSB.append("" + tousseInstance.getBarcode() + "
");
+ returnStrSB.append("" + tousseDefinition.getId() + "");
+ returnStrSB.append("" + tousseInstance.getTousseName() + "");
+ returnStrSB.append("" + tousseInstance.getSterileEndTime() + "");
+ returnStrSB.append("" + tousseInstance.getValidUntilStr() + "");
+ if(StringUtils.isNotBlank(materialStr.toString())){
+ returnStrSB.append(materialStr.toString());
+ }else{
+ returnStrSB.append("
");
+ }
+ returnStrSB.append("");
+ returnStr = returnStrSB.toString();
+ }
+ }
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ returnStr = e.getMessage();
+ }
+ StringBuilder returnMsgSB = new StringBuilder();
+ returnMsgSB.append(""+ uuid.toString() +"");
+ returnMsgSB.append("");
+ returnMsgSB.append("");
+ returnMsgSB.append("" + returnStr + "");
+ logger.info("tousseDetailQuery ---> " + returnMsgSB.toString());
+ return returnMsgSB.toString();
+ }
+
+ /**
+ * 医院质控管理需要按患者使用的消毒包条码,进行消毒供应处理步骤的追溯并显示相关信息
+ * @param action
+ * @param message
+ * @return
+ */
+ public String tousseTraceQuery(String action, String message) {
+ logger.info("tousseTraceQuery ---> action : " + action + "; message : " + message);
+ // typeCode 为处理结果, AA 表示成功 AE 表示失败
+ String typeCode = "AE";
+ // 处理结果说明
+ String returnStr = "消毒物料消毒追溯信息查询失败";
+ // 消息id
+ String messageId = "";
+ // guid
+ UUID uuid = UUID.randomUUID();
+ try {
+ // 临时从xml中解析,只存了器械包条码,remark暂时存放请求消息的messageId
+ TousseInstance ti = sycnDataFromHIPDao.tousseDetailQuery(message);
+ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(ti.getBarcode());
+ if (bd instanceof TousseInstance) {
+ // 生成器械包信息xml
+ TousseInstance tousseInstance = (TousseInstance) bd;
+ messageId = ti.getRemark();
+ typeCode = "AA";
+ StringBuilder recoverStrSB = new StringBuilder();
+ recoverStrSB.append("");
+ recoverStrSB.append("" + (tousseInstance.getRecyclingOperator() == null ? "" : tousseInstance.getRecyclingOperator()) + "");
+ recoverStrSB.append("" + (tousseInstance.getRecyclingUser() == null ? "" : tousseInstance.getRecyclingUser()) + "");
+ recoverStrSB.append("" + (tousseInstance.getRecyclingTime() == null ? "" : tousseInstance.getRecyclingTime()) + "");
+ recoverStrSB.append("无");
+ recoverStrSB.append("无");
+ recoverStrSB.append("");
+
+ StringBuilder cleanstrSB = new StringBuilder();
+ cleanstrSB.append("");
+ cleanstrSB.append("" + (tousseInstance.getDisinfectIdentification() == null ? "" : tousseInstance.getDisinfectIdentification()) + "");
+ cleanstrSB.append("" + (tousseInstance.getDisinfectProgram() == null ? "" : tousseInstance.getDisinfectProgram()) + "");
+ cleanstrSB.append("" + (tousseInstance.getWashBasket() == null ? "" : tousseInstance.getWashBasket()) + "");
+ cleanstrSB.append("" + (tousseInstance.getWashOperator() == null ? "" : tousseInstance.getWashOperator()) + "");
+ cleanstrSB.append("");
+ cleanstrSB.append("" + (tousseInstance.getLocation() == null ? "" : tousseInstance.getLocation()) + "");
+ cleanstrSB.append("" + (tousseInstance.getWashStartTime() == null ? "" : tousseInstance.getWashStartTime()) + "");
+ cleanstrSB.append("" + (tousseInstance.getWashEndTime() == null ? "" : tousseInstance.getWashEndTime()) + "");
+ cleanstrSB.append("无");
+ cleanstrSB.append("");
+
+ StringBuilder packageStrSB = new StringBuilder();
+ packageStrSB.append("");
+ packageStrSB.append("" + (tousseInstance.getWrapper() == null ? "" : tousseInstance.getWrapper()) + "");
+ packageStrSB.append("" + (tousseInstance.getOperationTimeStr() == null ? "" : tousseInstance.getOperationTimeStr()) + "");
+ packageStrSB.append("" + (tousseInstance.getPackageType() == null ? "" : tousseInstance.getPackageType()) + "");
+ packageStrSB.append("" + (tousseInstance.getReviewer() == null ? "" : tousseInstance.getReviewer()) + "");
+ packageStrSB.append("" + (tousseInstance.getReviewTimeStr() == null ? "" : tousseInstance.getReviewTimeStr()) + "");
+ packageStrSB.append("");
+
+ StringBuilder sterilizationstrSB = new StringBuilder();
+ sterilizationstrSB.append("");
+ sterilizationstrSB.append("" + (tousseInstance.getSterilizerName() == null ? "" : tousseInstance.getSterilizerName()) + "");
+ sterilizationstrSB.append("" + (tousseInstance.getSterilingType() == null ? "" : tousseInstance.getSterilingType()) + "");
+ sterilizationstrSB.append("" + (tousseInstance.getSterileFrequency() == null ? "" : tousseInstance.getSterileFrequency()) + "");
+ sterilizationstrSB.append("" + (tousseInstance.getSterilizationUser() == null ? "" : tousseInstance.getSterilizationUser()) + "");
+ sterilizationstrSB.append("" + (tousseInstance.getSterileStartTime() == null ? "" : tousseInstance.getSterileStartTime()) + "");
+ sterilizationstrSB.append("" + (tousseInstance.getSterileEndTime() == null ? "" : tousseInstance.getSterileEndTime()) + "");
+ sterilizationstrSB.append("" + (tousseInstance.getSterilizationBasket() == null ? "" : tousseInstance.getSterilizationBasket()) + "");
+ sterilizationstrSB.append("无");
+ sterilizationstrSB.append("无");
+ sterilizationstrSB.append("" + (tousseInstance.getValidUntilStr() == null ? "" : tousseInstance.getValidUntilStr()) + "");
+ sterilizationstrSB.append("");
+
+ Invoice ip = tousseInstance.getInvoice(objectDao);
+ StringBuilder sendstrSB = new StringBuilder();
+ if (ip != null) {
+ sendstrSB.append("");
+ sendstrSB.append("" + (ip.getSerialNumber() == null ? "" : ip.getSerialNumber()) + "");
+ sendstrSB.append("" + (ip.getDepart() == null ? "" : ip.getDepart()) + "");
+ sendstrSB.append("" + (ip.getApplicant() == null ? "" : ip.getApplicant()) + "");
+ sendstrSB.append("" + (ip.getApplicationTime_YYYYMMDDHHMM() == null ? "" : ip.getApplicationTime_YYYYMMDDHHMM()) + "");
+ sendstrSB.append("" + (ip.getSendTime_YYYYMMDDHHMM() == null ? "" : ip.getSendTime_YYYYMMDDHHMM()) + "");
+ sendstrSB.append("" + (ip.getSender() == null ? "" : ip.getSender()) + "");
+ sendstrSB.append("" + (ip.getReceiptingTime_YYYYMMDDHHMM() == null ? "" : ip.getReceiptingTime_YYYYMMDDHHMM()) + "");
+ sendstrSB.append("" + (ip.getReceiptor() == null ? "" : ip.getReceiptor()) + "");
+ sendstrSB.append("");
+ }
+
+ UseRecord ur = tousseInstance.getUseRecord(objectDao);
+ StringBuilder useStrSB = new StringBuilder();
+ if (ur != null) {
+ useStrSB.append("");
+ }
+
+ StringBuilder discardstrSB = new StringBuilder();
+ discardstrSB.append("");
+ discardstrSB.append("" + (tousseInstance.getWasteDateStr() == null ? "" : tousseInstance.getWasteDateStr()) + "");
+ discardstrSB.append("" + (tousseInstance.getWasteReason() == null ? "" : tousseInstance.getWasteReason()) + "");
+ discardstrSB.append("" + (tousseInstance.getOperateUser() == null ? "" : tousseInstance.getOperateUser()) + "");
+ discardstrSB.append("");
+
+ StringBuilder returnStrSB = new StringBuilder();
+ returnStrSB.append("");
+ returnStr = returnStrSB.toString();
+ }
+ } catch (RuntimeException e) {
+ e.printStackTrace();
+ returnStr = e.getMessage();
+ }
+ String returnMsg =
+ ""+ uuid.toString() +"" +
+ "" +
+ "" +
+ "" + returnStr + "";
+ logger.info("tousseTraceQuery ---> " + returnMsg);
+ return returnMsg;
+ }
+
+
+ @Override
+ public String HIPMessageServer(String action, String message) {
+ if ("FJ_DETAILQUERY".equals(action)) {
+ return this.tousseDetailQuery(action, message);
+ } else if ("FJ_APPLYREGIS".equals(action)) {
+ return this.applyRegister(action, message);
+ } else if ("FJ_TRACEQUERY".equals(action)) {
+ return this.tousseTraceQuery(action, message);
+ } else {
+ logger.info("action : " + action + "; message : " + message);
+ // typeCode 为处理结果, AA 表示成功 AE 表示失败
+ String typeCode = "AE";
+ // 处理结果说明
+ String returnStr = "错误的action值";
+ // guid
+ UUID uuid = UUID.randomUUID();
+ StringBuilder returnMsgSB = new StringBuilder();
+ returnMsgSB.append("" + uuid.toString() + "");
+ returnMsgSB.append("");
+ returnMsgSB.append("");
+ returnMsgSB.append("" + returnStr + "");
+ String returnMsg = returnMsgSB.toString();
+ logger.info("returnMsg : " + returnMsg);
+ return returnMsg;
+ }
+ }
+
+}
Index: ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/SycnDataFromHIPDaoImpl.java
===================================================================
diff -u
--- ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/SycnDataFromHIPDaoImpl.java (revision 0)
+++ ssts-datasync-default-impl/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/szsdsrmyy/SycnDataFromHIPDaoImpl.java (revision 28077)
@@ -0,0 +1,163 @@
+package com.forgon.disinfectsystem.datasynchronization.dao.szsdsrmyy;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+import org.apache.commons.lang.StringUtils;
+import org.dom4j.Document;
+import org.dom4j.DocumentException;
+import org.dom4j.DocumentHelper;
+import org.dom4j.Node;
+import org.dom4j.XPath;
+import org.springframework.beans.factory.annotation.Autowired;
+
+import com.forgon.disinfectsystem.barcode.service.BarcodeManager;
+import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientInfoByHospitalNumDao;
+import com.forgon.disinfectsystem.datasynchronization.dao.SyncDataFromHIPDao;
+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.basedatamanager.toussedefinition.TousseInstance;
+import com.forgon.disinfectsystem.entity.operationreservation.OperationReservation;
+import com.forgon.disinfectsystem.entity.useRecord.UseRecord;
+import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager;
+import com.forgon.tools.date.DateTools;
+import com.forgon.tools.hibernate.ObjectDao;
+
+public class SycnDataFromHIPDaoImpl implements SyncDataFromHIPDao {
+
+ @Autowired
+ private TousseInstanceManager tousseInstanceManager;
+ @Autowired
+ private BarcodeManager barcodeManager;
+ @Autowired
+ private ObjectDao objectDao;
+ @Autowired
+ private FindPatientInfoByHospitalNumDao findPatientInfoByHospitalNumDao;
+
+ /**
+ * 根据document和Xpath表达式解析数据
+ * @param document
+ * @param nameSpaceURIMap
+ * @param xpathExp
+ * @return
+ */
+ private static String processDataByXpath(Document document, Map nameSpaceURIMap, String xpathExp) {
+ if ((StringUtils.isNotBlank(xpathExp)) && (document != null)) {
+ XPath xpath = document.createXPath(xpathExp);
+ if (nameSpaceURIMap != null) {
+ xpath.setNamespaceURIs(nameSpaceURIMap);
+ }
+ Node node = xpath.selectSingleNode(document);
+ if (node != null) {
+ return node.getStringValue();
+ }
+ }
+ return null;
+ }
+
+ @Override
+ public List paramToOrgUnitVos(String action, String xmlStr) {
+ return null;
+ }
+
+ @Override
+ public List paramToUserVos(String action, String xmlStr) {
+ return null;
+ }
+
+
+ @Override
+ public List paramToOperationReservation(String xmlStr) {
+ return null;
+ }
+
+ @Override
+ public UseRecord syncUseRecord(String xmlStr) {
+ if (StringUtils.isBlank(xmlStr)) {
+ throw new RuntimeException("参数message为空!");
+ }
+ String messageIdXpath = "/req/message_id";
+ String codeXpath = "/req/message_cont/INPUT/code";
+ //String patientIdXpath = "/req/message_cont/INPUT/patient_id";
+ String inpatientnoXpath = "/req/message_cont/INPUT/inpatientno";
+ String excutorXpath = "/req/message_cont/INPUT/excutor";
+ String excutimeXpath = "/req/message_cont/INPUT/excutime";
+ String excutdeptnoXpath = "/req/message_cont/INPUT/excutdeptno";
+ try {
+ Document document = DocumentHelper.parseText(xmlStr);
+ String messageId = processDataByXpath(document, null, messageIdXpath);
+ // 器械包条码
+ String barcode = processDataByXpath(document, null, codeXpath);
+ // 患者标识
+ //String patientId = processDataByXpath(document, null, patientIdXpath);
+ // 患者住院号
+ String inpatientno = processDataByXpath(document, null, inpatientnoXpath);
+ String excutor = processDataByXpath(document, null, excutorXpath);
+ String excutime = processDataByXpath(document, null, excutimeXpath);
+ String excutdeptno = processDataByXpath(document, null, excutdeptnoXpath);
+ if (StringUtils.isBlank(messageId) || StringUtils.isBlank(barcode) || StringUtils.isBlank(inpatientno)) {
+ throw new RuntimeException("xml中关键参数不能为空!");
+ }
+ // 1、查询器械包实例
+ String[] barcodes = barcode.split(";");
+ List list = new ArrayList();
+ for (String code : barcodes) {
+ TousseInstance tousseInstance = new TousseInstance();
+ tousseInstance.setBarcode(code);
+ list.add(tousseInstance);
+ }
+ // 2、生成使用记录
+ UseRecord useRecord = new UseRecord();
+ useRecord.setTousseInstanceList(list);
+ useRecord.setHospitalNum(inpatientno);
+ useRecord.setDepartCoding(excutdeptno);
+ useRecord.setOperator(excutor);
+ // 存放使用记录录入时间
+ useRecord.setOperationTime(DateTools.coverStrToDate(excutime, "yyyyMMddHHmmss"));
+ // remark暂时存放请求消息的messageId
+ useRecord.setRemark(messageId);
+ return useRecord;
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ throw new RuntimeException("xml解析失败!");
+ }
+ }
+
+ @Override
+ public TousseInstance tousseDetailQuery(String xmlStr) {
+ if (StringUtils.isBlank(xmlStr)) {
+ throw new RuntimeException("参数message为空!");
+ }
+ String messageIdXpath = "/req/message_id";
+ String barcodeXpath = "/req/message_cont/INPUT/code";
+ try {
+ Document document = DocumentHelper.parseText(xmlStr);
+ // 器械包条码
+ String barcode = processDataByXpath(document, null, barcodeXpath);
+ String messageId = processDataByXpath(document, null, messageIdXpath);
+ if (StringUtils.isBlank(messageId) || StringUtils.isBlank(barcode)) {
+ throw new RuntimeException("xml中关键参数不能为空!");
+ }
+ TousseInstance ti = new TousseInstance();
+ ti.setBarcode(barcode);
+ // remark暂时存放请求消息的messageId
+ ti.setRemark(messageId);
+ return ti;
+ } catch (DocumentException e) {
+ e.printStackTrace();
+ throw new RuntimeException("xml解析失败!");
+ }
+ }
+
+ @Override
+ public PatientInfoVO findPatientInfoByHospitalNum(String hospitalNum) {
+ PatientInfoVO[] patientInfoVOs = findPatientInfoByHospitalNumDao.findPatientInfoByHospitalNum(hospitalNum);
+ if(patientInfoVOs != null && patientInfoVOs.length > 0){
+ return patientInfoVOs[0];
+ }
+ return null;
+ }
+
+}
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szsdsrmyy/HIPMessageWebService.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szsdsrmyy/HIPMessageWebService.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/datasync/szsdsrmyy/HIPMessageWebService.java (revision 28077)
@@ -0,0 +1,19 @@
+package com.forgon.disinfectsystem.webservice.datasync.szsdsrmyy;
+
+import javax.jws.WebMethod;
+import javax.jws.WebParam;
+import javax.jws.WebService;
+
+/**
+ * 深圳市第三人民医院DYSYY-53
+ * 二期合同接口开发
+ * @author zhoupeimian
+ * @since 2020-06-04
+ */
+@WebService(serviceName="HIPMessageWebService")
+public interface HIPMessageWebService {
+
+ @WebMethod(operationName="HIPMessageServer")
+ public String HIPMessageServer(@WebParam(name="action") String action, @WebParam(name="message") String message);
+
+}