Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/timer.xml
===================================================================
diff -u -r30504 -r36024
--- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/timer.xml (.../timer.xml) (revision 30504)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/timer.xml (.../timer.xml) (revision 36024)
@@ -46,12 +46,36 @@
+
+
+
+
+
+
+ timingReviewAndConvertUseRecordByPatientSurgicalStatusView
+
+
+
+
+
+
+
+
+
+
+ 0 0/5 * * * ?
+
+
+
+
+
Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/model/PatientInfoVO.java
===================================================================
diff -u -r34408 -r36024
--- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/model/PatientInfoVO.java (.../PatientInfoVO.java) (revision 34408)
+++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/model/PatientInfoVO.java (.../PatientInfoVO.java) (revision 36024)
@@ -117,6 +117,11 @@
* 手术部位(外来器械申请单“手术部位”字段BLXRMYY-34)
*/
private String operationPart;
+
+ /**
+ * 手术状态SZSDSRMYY-111
+ */
+ private String operationStatus;
public static final String TYPE_HOSPITAL = "住院号";
public static final String TYPE_CLINIC = "诊疗号";
@@ -452,5 +457,15 @@
public void setOperationPart(String operationPart) {
this.operationPart = operationPart;
}
+
+ public String getOperationStatus() {
+ return operationStatus;
+ }
+
+
+ public void setOperationStatus(String operationStatus) {
+ this.operationStatus = operationStatus;
+ }
+
}
Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java
===================================================================
diff -u -r35854 -r36024
--- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 35854)
+++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManager.java (.../UseRecordManager.java) (revision 36024)
@@ -443,4 +443,9 @@
* @return
*/
public List loadLoginUserCanSeeUseRecordDepart(String spell);
+
+ /**
+ * 定时读取病人状态视图,并根据手术状态自动审核使用记录SZSDSRMYY-111
+ */
+ public void timingReviewAndConvertUseRecordByPatientSurgicalStatusView();
}
Index: ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/FindPatientSurgicalStatusByHospitalNumberDao.java
===================================================================
diff -u
--- ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/FindPatientSurgicalStatusByHospitalNumberDao.java (revision 0)
+++ ssts-datasync/src/main/java/com/forgon/disinfectsystem/datasynchronization/dao/FindPatientSurgicalStatusByHospitalNumberDao.java (revision 36024)
@@ -0,0 +1,23 @@
+package com.forgon.disinfectsystem.datasynchronization.dao;
+
+import java.util.List;
+
+import org.apache.ibatis.annotations.Param;
+
+import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
+
+/**
+ * 查询手术病人状态的dao(SZSDSRMYY-111)
+ */
+public interface FindPatientSurgicalStatusByHospitalNumberDao {
+
+ /**
+ * 感觉手术状态获取患者信息
+ * @param operationStatus 手术状态(目前只查手术状态为【患者离室】的患者该信息)
+ * @param startDate 开始时间
+ * @param endDate 结束时间
+ * @return
+ */
+ public List findPatientSurgicalStatusByHospitalNumber(@Param("hospitalNumber") String hospitalNumber);
+
+}
Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/HIS.xml
===================================================================
diff -u -r29942 -r36024
--- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/HIS.xml (.../HIS.xml) (revision 29942)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/spring/HIS.xml (.../HIS.xml) (revision 36024)
@@ -154,4 +154,27 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file
Index: ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java
===================================================================
diff -u -r35854 -r36024
--- ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 35854)
+++ ssts-userecord/src/main/java/com/forgon/disinfectsystem/useRecord/service/UseRecordManagerImpl.java (.../UseRecordManagerImpl.java) (revision 36024)
@@ -74,6 +74,7 @@
import com.forgon.disinfectsystem.basedatamanager.warehouse.service.StorageRecordManager;
import com.forgon.disinfectsystem.basedatamanager.warehouse.service.WareHouseManager;
import com.forgon.disinfectsystem.common.CssdUtils;
+import com.forgon.disinfectsystem.datasynchronization.dao.FindPatientSurgicalStatusByHospitalNumberDao;
import com.forgon.disinfectsystem.datasynchronization.dao.UseRecordPushDao;
import com.forgon.disinfectsystem.datasynchronization.model.PatientInfoVO;
import com.forgon.disinfectsystem.datasynchronization.service.DataSynchronizationManager;
@@ -234,7 +235,14 @@
private OperationManager operationManager;
private OrgUnitManager orgUnitManager;
+
+ private FindPatientSurgicalStatusByHospitalNumberDao findPatientSurgicalStatusByHospitalNumberDao;
+ public void setFindPatientSurgicalStatusByHospitalNumberDao(
+ FindPatientSurgicalStatusByHospitalNumberDao findPatientSurgicalStatusByHospitalNumberDao) {
+ this.findPatientSurgicalStatusByHospitalNumberDao = findPatientSurgicalStatusByHospitalNumberDao;
+ }
+
public void setOrgUnitManager(OrgUnitManager orgUnitManager) {
this.orgUnitManager = orgUnitManager;
}
@@ -11989,4 +11997,111 @@
return objectDao.findByHql(hql);
}
+
+ @Override
+ public void timingReviewAndConvertUseRecordByPatientSurgicalStatusView(){
+ try {
+ timingReviewAndConvertUseRecordByPatientSurgicalStatusView_internal();
+ } catch (Exception e) {
+ e.printStackTrace();
+ logger.debug("定时审核使用记录并转换申请单报错:" + e.getMessage());
+ }
+ }
+
+ /**
+ * 定时审核使用记录并转换申请单
+ */
+ @SuppressWarnings("unchecked")
+ private void timingReviewAndConvertUseRecordByPatientSurgicalStatusView_internal() {
+ logger.debug("定时审核使用记录并转换申请单");
+ if(findPatientSurgicalStatusByHospitalNumberDao == null){
+ logger.debug("未找到findPatientSurgicalStatusByHospitalNumberDao");
+ return;
+ }
+ //查询状态为待审核并且住院号不为空的使用记录
+ String sql = " where status = '"+ UseRecord.STATUS_UNAUDITED +"' and hospitalNum is not null ";
+ List unAuditedUseRecordList =
+ objectDao.findBySql_ForUpdate(UseRecord.class.getSimpleName(), sql);
+ if(CollectionUtils.isEmpty(unAuditedUseRecordList)){
+ logger.debug("没有待审核使用记录需要处理");
+ return;
+ }
+ List ids = new ArrayList();
+ List auditedUseRecordList = new ArrayList();
+ for (UseRecord useRecord : unAuditedUseRecordList) {
+
+ String hospitalNumber = useRecord.getHospitalNum();
+ if(StringUtils.isBlank(hospitalNumber)){
+ logger.debug("住院号为空的使用记录不需要处理");
+ continue;
+ }
+ List patientInfoVOList = findPatientSurgicalStatusByHospitalNumberDao.findPatientSurgicalStatusByHospitalNumber(hospitalNumber);
+ if(CollectionUtils.isEmpty(patientInfoVOList)){
+ logger.debug("手术病人状态视图没有住院号为【" + hospitalNumber + "】的数据");
+ continue;
+ }
+ //同一个住院号多个记录时,只找手术时间最近的记录
+ PatientInfoVO patientInfoVO = patientInfoVOList.get(0);
+ logger.debug("住院号为【" + hospitalNumber + "】的手术病人状态为【" + patientInfoVO.getOperationStatus() + "】");
+ if(!StringUtils.equals(patientInfoVO.getOperationStatus(), "患者离室")){
+ continue;
+ }
+ //判断使用记录的物品是否为空
+ String validate = "";
+ try {
+ useRecord.validateUseRecordItemsWhenReviewing(objectDao);
+ } catch (Exception e) {
+ e.printStackTrace();
+ validate = e.getMessage();
+ }
+ if(StringUtils.isNotBlank(validate)){
+ logger.debug(validate);
+ continue;
+ }
+ ids.add(useRecord.getId());
+ auditedUseRecordList.add(useRecord);
+ }
+ if(CollectionUtils.isEmpty(ids)){
+ logger.debug("没有手术状态为【患者离室】待审核使用记录需要处理");
+ return;
+ }
+ multiAuditedUseRecordsMergeConvertRecyclingApplication(ids, "定时");
+ //改审核人为登记人
+ List operatorList = new ArrayList();
+ if(CollectionUtils.isNotEmpty(auditedUseRecordList)){
+ for (UseRecord useRecord : auditedUseRecordList) {
+ String operator = useRecord.getOperator();
+ if(StringUtils.isNotBlank(operator)
+ && !operatorList.contains(operator)){
+ operatorList.add(operator);
+ }
+ }
+ Map userMap = new HashMap();
+ List userList = objectDao.getCollection(User.class.getSimpleName(), "fullName", operatorList);
+ if(CollectionUtils.isNotEmpty(userList)){
+ for (User user : userList) {
+ userMap.put(user.getFullName(), user);
+ }
+ }
+ StringBuffer updateSql = new StringBuffer();
+ for (UseRecord useRecord : auditedUseRecordList) {
+ String operator = useRecord.getOperator();
+ if(StringUtils.isBlank(operator)){
+ continue;
+ }
+ User user = userMap.get(operator);
+ if(user == null){
+ continue;
+ }
+ //审核操作人
+ String tempUpdateSql = String.format("update %s set reviewer = '%s', reviewerCode = '%s' where id = %s ;",
+ UseRecord.class.getSimpleName(),
+ StringTools.defaultString(user.getFullName()),
+ StringTools.defaultString(user.getName()),
+ useRecord.getId());
+ updateSql.append(tempUpdateSql);
+ }
+ objectDao.excuteSQL(updateSql.toString());
+ }
+ }
}
Index: ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/interfaces/mybatis/FindPatientSurgicalStatusByHospitalNumberMapper.xml
===================================================================
diff -u
--- ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/interfaces/mybatis/FindPatientSurgicalStatusByHospitalNumberMapper.xml (revision 0)
+++ ssts-web/src/main/webapp/disinfectsystem/config/szsdsrmyy/interfaces/mybatis/FindPatientSurgicalStatusByHospitalNumberMapper.xml (revision 36024)
@@ -0,0 +1,21 @@
+
+
+
+
+
+
+
+
\ No newline at end of file