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(""); + useStrSB.append("" + (ur.getHospitalNum() == null ? "" : ur.getHospitalNum()) + ""); + useStrSB.append("" + (ur.getTreatmentNum() == null ? "" : ur.getTreatmentNum()) + ""); + useStrSB.append("" + (ur.getPatientName() == null ? "" : ur.getPatientName()) + ""); + useStrSB.append("" + (ur.getPatientIDCard() == null ? "" : ur.getPatientIDCard()) + ""); + useStrSB.append("" + (ur.getOperationTimeStr() == null ? "" : ur.getOperationTimeStr()) + ""); + useStrSB.append("" + (ur.getSurgeon() == null ? "" : ur.getSurgeon()) + ""); + useStrSB.append("" + (ur.getDoctorName() == null ? "" : ur.getDoctorName()) + ""); + useStrSB.append("" + (ur.getOperator() == null ? "" : ur.getOperator()) + ""); + useStrSB.append("" + (ur.getPatientName() == null ? "" : ur.getPatientName()) + ""); + 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(""); + returnStrSB.append(recoverStrSB.toString()); + returnStrSB.append(cleanstrSB.toString()); + returnStrSB.append(packageStrSB.toString()); + returnStrSB.append(sterilizationstrSB.toString()); + returnStrSB.append(sendstrSB.toString()); + returnStrSB.append(useStrSB.toString()); + returnStrSB.append(discardstrSB.toString()); + 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); + +}