Index: ssts-web/src/main/resources/spring/projects/cszxyy/applicationContext-disinfectsystem-cxf-syncService.xml
===================================================================
diff -u
--- ssts-web/src/main/resources/spring/projects/cszxyy/applicationContext-disinfectsystem-cxf-syncService.xml (revision 0)
+++ ssts-web/src/main/resources/spring/projects/cszxyy/applicationContext-disinfectsystem-cxf-syncService.xml (revision 17457)
@@ -0,0 +1,41 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/mobilenursing/common/service/MobileNursingWebServiceImpl.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/mobilenursing/common/service/MobileNursingWebServiceImpl.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/mobilenursing/common/service/MobileNursingWebServiceImpl.java (revision 17457)
@@ -0,0 +1,302 @@
+package com.forgon.disinfectsystem.webservice.mobilenursing.common.service;
+
+import java.util.Date;
+import java.util.List;
+
+import javax.jws.WebService;
+
+import org.apache.commons.collections4.CollectionUtils;
+import org.apache.commons.lang.StringUtils;
+
+import net.sf.json.JSONArray;
+import net.sf.json.JSONObject;
+import net.sf.json.xml.XMLSerializer;
+import jxl.common.Logger;
+
+import com.forgon.directory.acegi.tools.AcegiHelper;
+import com.forgon.directory.model.BarcodeDevice;
+import com.forgon.disinfectsystem.barcode.service.BarcodeManager;
+import com.forgon.disinfectsystem.common.CssdUtils;
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
+import com.forgon.disinfectsystem.entity.assestmanagement.DisposableGoodsBatch;
+import com.forgon.disinfectsystem.entity.assestmanagement.ExpensiveDisposablegoods;
+import com.forgon.disinfectsystem.entity.basedatamanager.toussedefinition.TousseInstance;
+import com.forgon.disinfectsystem.entity.idcardinstance.IDCardInstance;
+import com.forgon.disinfectsystem.entity.useRecord.UseDiposableGoodsItem;
+import com.forgon.disinfectsystem.entity.useRecord.UseRecord;
+import com.forgon.disinfectsystem.tousse.toussedefinition.service.TousseInstanceManager;
+import com.forgon.disinfectsystem.useRecord.service.UseRecordManager;
+import com.forgon.tools.db.DatabaseUtil;
+import com.forgon.tools.hibernate.ObjectDao;
+import com.forgon.tools.json.JSONUtil;
+
+/**
+ * 移动护理相关接口
+ * 1. 器械包签收接口
+ * 2. 扫描住院号加载使用记录及已扫描器械包接口
+ * 3. 扫描器械包更新使用记录接口
+ * 4. 使用记录审核并转申请单接口
+ * @author shuyongfu
+ * @since date:2017-03-20
+ */
+@WebService(endpointInterface = "com.forgon.disinfectsystem.webservice.mobilenursing.common.service.MobileNursingWebService", serviceName = "/mobileNursingWebService")
+public class MobileNursingWebServiceImpl implements MobileNursingWebService {
+
+ private Logger logger = Logger.getLogger(this.getClass());
+
+ private ObjectDao objectDao;
+
+ private TousseInstanceManager tousseInstanceManager;
+
+ private UseRecordManager useRecordManager;
+
+ private BarcodeManager barcodeManager;
+
+ private DataSynchronizationManager dataSynchronizationManager;
+
+ public void setTousseInstanceManager(TousseInstanceManager tousseInstanceManager) {
+ this.tousseInstanceManager = tousseInstanceManager;
+ }
+
+ public void setObjectDao(ObjectDao objectDao) {
+ this.objectDao = objectDao;
+ }
+
+ public void setUseRecordManager(UseRecordManager useRecordManager) {
+ this.useRecordManager = useRecordManager;
+ }
+
+ public void setBarcodeManager(BarcodeManager barcodeManager) {
+ this.barcodeManager = barcodeManager;
+ }
+
+ @Override
+ public String signTousse(String param) {
+ logger.debug("signTousse param=" + param);
+ try{
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSONObject jsonObject = (JSONObject)xmlSerializer.read(param);
+ String result = tousseInstanceManager.singTousseInstanceByBarcode(jsonObject.optString("barcode"));
+ JSONObject jsonResult = JSONObject.fromObject(result);
+ return JSONUtil.buildJsonObject(jsonResult.optBoolean("success"), jsonResult.optString("message")).toString();
+ }catch(Exception e){
+ e.printStackTrace();
+ return JSONUtil.buildJsonObject(false, e.getCause().getMessage()).toString();
+ }
+ }
+
+ @Override
+ public String loadDataByHospitalNumber(String param) {
+ logger.debug("loadDataByHospitalNumber param=" + param);
+ try{
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSONObject jsonObject = (JSONObject)xmlSerializer.read(param);
+ String hospitalNumber = jsonObject.optString("hospitalNumber");
+ UseRecord useRecord = null;
+ List list = objectDao.findBySql(UseRecord.class.getSimpleName(),
+ "where hospitalNum='" + hospitalNumber + "' and status='" + UseRecord.STATUS_UNAUDITED + "' order by id desc");
+ if(CollectionUtils.isEmpty(list)){
+ PatientInfoVO[] vos = dataSynchronizationManager.findPatientInfoByHospitalNum(hospitalNumber);
+ if(vos == null || vos.length == 0){
+ return JSONUtil.buildJsonObject(false, "未找到住院号为" + hospitalNumber + "的使用记录及病人信息").toString();
+ }
+ PatientInfoVO vo = vos[vos.length - 1];
+ useRecord = new UseRecord();
+ useRecord.setBedNumber(vo.getBedNumber());
+ useRecord.setCircuitNurse(vo.getCircuitNurse());
+ useRecord.setDepart(AcegiHelper.getCurrentOrgUnitName());
+ useRecord.setDepartCoding(AcegiHelper.getCurrentOrgUnitName());
+ useRecord.setDoctorName(vo.getDoctorName());
+ useRecord.setEditTime(new Date());
+ useRecord.setEnteringDate(useRecord.getEditTime());
+ useRecord.setHospitalNum(hospitalNumber);
+ useRecord.setOperation(vo.getOperation());
+ useRecord.setOperationRoom(vo.getOpRoomId());
+ useRecord.setOperator(AcegiHelper.getLoginUserFullName());
+ useRecord.setPatientAge(vo.getPatientAge());
+ useRecord.setPatientIDCard(vo.getPatientIDCard());
+ useRecord.setPatientName(vo.getPatientName());
+ useRecord.setPatientSex(vo.getPatientSex());
+ useRecord.setRemark(vo.getRemark());
+ useRecord.setRoomNumber(vo.getRoomNumber());
+ useRecord.setSpecialInfection(vo.getSpecialInfection());
+ useRecord.setStatus(UseRecord.STATUS_UNAUDITED);
+ useRecord.setStatusSequence(UseRecord.STATUS_SEQ_UNAUDITED);
+ useRecord.setVisitId(vo.getVisitId());
+ useRecord.setWashHandNurse(vo.getWashHandNurse());
+ objectDao.saveOrUpdate(useRecord);
+ }else{
+ useRecord = list.get(0);
+ }
+
+
+ JSONObject jsonResult = new JSONObject();
+ jsonResult.put("success", true);
+ jsonResult.put("useRecordId",useRecord.getId());
+ jsonResult.put("hospitalNumber",useRecord.getHospitalNum());
+ jsonResult.put("patientName",useRecord.getPatientName());
+ jsonResult.put("patientAge",useRecord.getPatientAge());
+ jsonResult.put("patientSex",useRecord.getPatientSex());
+ jsonResult.put("patientIDCard",useRecord.getPatientIDCard());
+ jsonResult.put("doctorName",useRecord.getDoctorName());
+ jsonResult.put("operation",useRecord.getOperation());
+ //jsonResult.put("operationTime",useRecord.get);
+ //jsonResult.put("patientArea",useRecord.getpa);
+ jsonResult.put("roomNumber",useRecord.getRoomNumber());
+ jsonResult.put("bedNumber",useRecord.getBedNumber());
+ //jsonResult.put("ascriptionDepartment",useRecord.geta);
+ jsonResult.put("washHandNurse",useRecord.getWashHandNurse());
+ jsonResult.put("circuitNurse",useRecord.getCircuitNurse());
+ jsonResult.put("remark",useRecord.getRemark());
+
+ JSONArray jsonArray = new JSONArray();
+
+ List tousseInstanceList = useRecord.getTousseInstanceList(objectDao);
+ List disposableGoodsList = useRecord.getDiposableGoodsItems();
+ if(CollectionUtils.isNotEmpty(tousseInstanceList)){
+ for(TousseInstance tousseInstance : tousseInstanceList){
+ JSONObject itemJsonObject = new JSONObject();
+ itemJsonObject.put("tousseName",tousseInstance.getTousseName());
+ itemJsonObject.put("barcode",tousseInstance.getBarcode());
+ itemJsonObject.put("amount",1);
+ jsonArray.add(itemJsonObject);
+ }
+ }
+
+ if(CollectionUtils.isNotEmpty(disposableGoodsList)){
+ JSONObject itemJsonObject = new JSONObject();
+ for(UseDiposableGoodsItem useDiposableGoodsItem : disposableGoodsList){
+ itemJsonObject.put("tousseName",useDiposableGoodsItem.getName());
+ itemJsonObject.put("barcode",useDiposableGoodsItem.getBarcode());
+ itemJsonObject.put("amount",useDiposableGoodsItem.getAmount());
+ jsonArray.add(itemJsonObject);
+ }
+ }
+
+ jsonResult.put("tousseList",jsonArray);
+
+ return jsonResult.toString();
+ }catch(Exception e){
+ e.printStackTrace();
+ return JSONUtil.buildJsonObject(false, e.getCause().getMessage()).toString();
+ }
+ }
+
+ @Override
+ public String submitUseRecordByBarcode(String param) {
+ logger.debug("submitUseRecordByBarcode param=" + param);
+ try{
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSONObject jsonObject = (JSONObject)xmlSerializer.read(param);
+ UseRecord useRecord = null;
+ String useRecordId = jsonObject.optString("useRecordId");
+ if(DatabaseUtil.isPoIdValid(useRecordId)){
+ useRecord = useRecordManager.getUseRecordById(useRecordId);
+ if(useRecord == null){
+ return JSONUtil.buildJsonObject(false, "未找到id为" + useRecordId + "的使用记录").toString();
+ }
+ }
+
+ //条码
+ String barcode = jsonObject.optString("barcode");
+ if(StringUtils.isNotBlank(barcode)){
+ BarcodeDevice bd = barcodeManager.getBarcodeByBarcode(barcode);
+ if(bd == null){
+ //
+ return JSONUtil.buildJsonObject(false, "未找到条码为" + barcode + "的信息").toString();
+ }
+
+ if(bd instanceof TousseInstance || bd instanceof IDCardInstance
+ || bd instanceof ExpensiveDisposablegoods || bd instanceof DisposableGoodsBatch){
+ if(bd instanceof TousseInstance){
+ TousseInstance ti = (TousseInstance)bd;
+ if(ti.isShipped()){
+ ti.setStatus(TousseInstance.STATUS_USED);
+ ti.setUseRecord_id(useRecord.getId());
+ List list = useRecord.getTousseInstanceList(objectDao);
+ ti.setUseRecordSortNumber(CollectionUtils.isEmpty(list) ? 1 : list.size() + 1);
+ objectDao.saveOrUpdate(ti);
+ }else{
+ return JSONUtil.buildJsonObject(false, "条码为" + barcode + "的器械包状态为" + ti.getStatus() + ",不能登记使用记录").toString();
+ }
+ }
+
+ if(bd instanceof IDCardInstance){
+ IDCardInstance ii = (IDCardInstance)bd;
+ TousseInstance ti = tousseInstanceManager.getTousseInstanceById(String.valueOf(ii.getLastTousseInstanceId()));
+ if(ti.isShipped()){
+ ti.setStatus(TousseInstance.STATUS_USED);
+ ti.setUseRecord_id(useRecord.getId());
+ List list = useRecord.getTousseInstanceList(objectDao);
+ ti.setUseRecordSortNumber(CollectionUtils.isEmpty(list) ? 1 : list.size() + 1);
+ objectDao.saveOrUpdate(ti);
+ }else{
+ return JSONUtil.buildJsonObject(false, "条码为" + barcode + "的器械包状态为" + ti.getStatus() + ",不能登记使用记录").toString();
+ }
+ }
+
+ if(bd instanceof ExpensiveDisposablegoods){
+ ExpensiveDisposablegoods ed = (ExpensiveDisposablegoods)bd;
+ if(ed.delivered()){
+ ed.setStatus(ExpensiveDisposablegoods.STATUS_USED);
+ ed.setUseRecord(useRecord);
+ objectDao.saveOrUpdate(ed);
+ }
+ }
+
+ if(bd instanceof DisposableGoodsBatch){
+ DisposableGoodsBatch dgb = (DisposableGoodsBatch)bd;
+ UseDiposableGoodsItem udgi = new UseDiposableGoodsItem();
+ udgi.setAmount(jsonObject.optInt("amount"));
+ udgi.setBarcode(barcode);
+ udgi.setBatchNo(dgb.getBatchNumber());
+ udgi.setDisposableGoodsId(dgb.getDiposableGoods().getId());
+ udgi.setName(CssdUtils.getDiposableGoodsName(dgb.getDiposableGoods()));
+ udgi.setValidUntil(dgb.getExpDateStr());
+ objectDao.saveOrUpdate(udgi);
+ }
+
+ JSONObject result = new JSONObject();
+ result.put("success", true);
+ result.put("useRecordId", useRecord.getId());
+ return result.toString();
+ }
+ //
+ return JSONUtil.buildJsonObject(false, "只能登记器械包或标识牌或一次性物品或高值耗材的条码").toString();
+ }else{
+ //
+ return JSONUtil.buildJsonObject(false, "未找到id为" + useRecordId + "的使用记录").toString();
+ }
+
+ }catch(Exception e){
+ return JSONUtil.buildJsonObject(false, e.getCause().getMessage()).toString();
+ }
+ }
+
+ @SuppressWarnings("finally")
+ @Override
+ public String reviewAndConvertUseRecord(String param) {
+ logger.debug("reviewAndConvertUseRecord param=" + param);
+ String message = null;
+ try{
+ XMLSerializer xmlSerializer = new XMLSerializer();
+ JSONObject jsonObject = (JSONObject)xmlSerializer.read(param);
+ UseRecord useRecord = useRecordManager.getUseRecordById(jsonObject.optString("useRecordId"));
+ useRecordManager.saveAndReviewAndConvertUseRecordForm_TRANS_REQUIRED(
+ useRecord, AcegiHelper.getLoginUserFullName(),
+ useRecord.getDepart(), useRecord.getDepartCoding(),
+ new Date(), CssdUtils.getSystemSetConfigByName("applicationFormType"));
+
+ return JSONUtil.buildJsonObject(true).toString();
+ }catch(Exception e){
+ message = e.getMessage();
+ e.printStackTrace();
+ //throw new RuntimeException(message);
+ }finally{
+ return JSONUtil.buildJsonObject(false , message).toString();
+ }
+
+ }
+
+}
Index: ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/mobilenursing/common/service/MobileNursingWebService.java
===================================================================
diff -u
--- ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/mobilenursing/common/service/MobileNursingWebService.java (revision 0)
+++ ssts-webservice/src/main/java/com/forgon/disinfectsystem/webservice/mobilenursing/common/service/MobileNursingWebService.java (revision 17457)
@@ -0,0 +1,44 @@
+package com.forgon.disinfectsystem.webservice.mobilenursing.common.service;
+
+import javax.jws.WebService;
+
+/**
+ * 移动护理相关接口
+ * 1. 器械包签收接口
+ * 2. 扫描住院号加载使用记录及已扫描器械包接口
+ * 3. 扫描器械包更新使用记录接口
+ * 4. 使用记录审核并转申请单接口
+ * @author shuyongfu
+ * @since date:2017-03-20
+ */
+@WebService
+public interface MobileNursingWebService {
+
+ /**
+ * 器械包签收接口
+ * @param param 输入参数 如:010000214
+ * @return {success:true}或{success:false,message:’失败消息’}
+ */
+ public String signTousse(String param);
+
+ /**
+ * 扫描条码腕带住院号加载使用记录及已扫描器械包接口
+ * @param param 输入参数 如:010000214 hospitalNumber >
+ * @return
+ */
+ public String loadDataByHospitalNumber(String param);
+
+ /**
+ * 扫描器械包更新使用记录接口
+ * @param param 输入参数 如:11101000021410 amount >
+ * @return
+ */
+ public String submitUseRecordByBarcode(String param);
+
+ /**
+ * 使用记录审核并转申请单接口
+ * @param param 输入参数 如:111
+ * @return
+ */
+ public String reviewAndConvertUseRecord(String param);
+}