|
|
@@ -6,7 +6,15 @@ import org.apache.commons.lang.StringUtils;
|
|
|
import org.jeecg.common.util.dynamic.db.DynamicDBUtil;
|
|
|
import org.jeecg.modules.medical.Constant;
|
|
|
import org.jeecg.modules.medical.common.CommonUtil;
|
|
|
+import org.jeecg.modules.medical.entity.CheckList;
|
|
|
+import org.jeecg.modules.medical.entity.Operation;
|
|
|
+import org.jeecg.modules.medical.entity.PrescriptionOrder;
|
|
|
import org.jeecg.modules.medical.ruleengine.TransferDataCallFunction;
|
|
|
+import org.jeecg.modules.medical.service.ICheckListService;
|
|
|
+import org.jeecg.modules.medical.service.IOperationService;
|
|
|
+import org.jeecg.modules.medical.service.IPrescriptionOrderService;
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.jdbc.core.namedparam.MapSqlParameterSource;
|
|
|
import org.springframework.jdbc.core.namedparam.NamedParameterJdbcTemplate;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
@@ -20,6 +28,14 @@ import java.util.Map;
|
|
|
@Slf4j
|
|
|
@Component
|
|
|
public class XCFYDataTransferService {
|
|
|
+ @Autowired
|
|
|
+ ICheckListService checkListService;
|
|
|
+ @Autowired
|
|
|
+ IOperationService operationService;
|
|
|
+ @Autowired
|
|
|
+ RedisTemplate redisTemplate;
|
|
|
+ @Autowired
|
|
|
+ IPrescriptionOrderService prescriptionOrderService;
|
|
|
|
|
|
String checkListInsertSql = "INSERT INTO check_list (id, hisid, patient_id, gender, age, department, inp_outpatient_number, check_list_num, item_id, item_name, check_time, create_time, create_by, report_time) VALUES (:ID,:HISID,:PATIENT_ID,:GENDER,:AGE,:DEPARTMENT,:INP_OUTPATIENT_NUMBER,:CHECK_LIST_NUM,:ITEM_ID,:ITEM_NAME,:CHECK_TIME,:CREATE_TIME,:CREATE_BY,:REPORT_TIME)";
|
|
|
|
|
|
@@ -52,15 +68,19 @@ public class XCFYDataTransferService {
|
|
|
":ANESTHESIA_TYPE_NAME,:ANESTHESIA_DOC_NO,:ANESTHESIA_DOC_NAME,:ANESTHESIA_START_TIME,:ANESTHESIA_END_TIME,:ANTIBACTERIAL_TIME,:PREMEDICATION_TIME_POINT," +
|
|
|
":INTRAOPERATIVE_DOSING,:AMOUNT,:CREATE_BY,:CREATE_TIME)";
|
|
|
|
|
|
- public Integer transferDataList(String querySql, String insertSql, Map<String, Object> paramMap, TransferDataCallFunction transferDataCallFunction) {
|
|
|
+ public Integer transferDataList(String querySql, String insertSql, Map<String, Object> paramMap, TransferDataCallFunction transferDataCallFunction, TransferDataCallFunction deleteDataCallFunction) {
|
|
|
NamedParameterJdbcTemplate namedParameterJdbcTemplate = DynamicDBUtil.getNamedParameterJdbcTemplate(Constant.FY_ORACLE);
|
|
|
NamedParameterJdbcTemplate localNamedParameterJdbcTemplate = DynamicDBUtil.getNamedParameterJdbcTemplate(Constant.LOCAL_MYSQL);
|
|
|
-
|
|
|
List<Map<String, Object>> dataList = namedParameterJdbcTemplate.queryForList(querySql, paramMap);
|
|
|
if (CollectionUtil.isEmpty(dataList)) {
|
|
|
log.error("querySql:{} paramMap:{} 未查询到数据,返回", querySql, paramMap);
|
|
|
return 0;
|
|
|
}
|
|
|
+ try {
|
|
|
+ deleteDataCallFunction.transferData(paramMap);
|
|
|
+ } catch (Exception e) {
|
|
|
+ log.error(e.getMessage(), e);
|
|
|
+ }
|
|
|
log.info("querySql:{} paramMap:{} 查询到数据条数:{}", querySql, paramMap, dataList.size());
|
|
|
|
|
|
List<MapSqlParameterSource> batchArgs = new ArrayList<>();
|
|
|
@@ -94,6 +114,7 @@ public class XCFYDataTransferService {
|
|
|
log.info("开始同步v_YBKF_check_list数据,获取HISID:{}", hsdId);
|
|
|
Map<String, Object> paramMap = new HashMap<>();
|
|
|
paramMap.put("HISID", hsdId);
|
|
|
+ Object openStr = redisTemplate.opsForValue().get(Constant.JOB_DELETE_OLD_DATE_SWITCH);
|
|
|
Integer count = transferDataList(querySql, checkListInsertSql, paramMap, new TransferDataCallFunction() {
|
|
|
@Override
|
|
|
public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
@@ -103,6 +124,14 @@ public class XCFYDataTransferService {
|
|
|
dataMap.put("GENDER", CommonUtil.getMedicalSex(patientGender));
|
|
|
return true;
|
|
|
}
|
|
|
+ }, new TransferDataCallFunction() {
|
|
|
+ @Override
|
|
|
+ public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
+ if(openStr != null && Constant.SWITCH_OPEN.equals(openStr.toString())) {
|
|
|
+ checkListService.lambdaUpdate().eq(CheckList::getHisid, hsdId).remove();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
});
|
|
|
log.info("结束同步v_YBKF_check_list数据,获取HISID:{} 条数:{}", hsdId, count);
|
|
|
return count;
|
|
|
@@ -119,7 +148,7 @@ public class XCFYDataTransferService {
|
|
|
log.info("开始同步V_YBKF_PRESCRIPTION_ORDER数据,获取住院号:{}", vistNo);
|
|
|
Map<String, Object> paramMap = new HashMap<>();
|
|
|
paramMap.put("INP_OUTPATIENT_NUMBER", vistNo);
|
|
|
-
|
|
|
+ Object openStr = redisTemplate.opsForValue().get(Constant.JOB_DELETE_OLD_DATE_SWITCH);
|
|
|
Integer count = transferDataList(querySql, prescriptionOrderInsertSql, paramMap, new TransferDataCallFunction() {
|
|
|
@Override
|
|
|
public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
@@ -127,6 +156,14 @@ public class XCFYDataTransferService {
|
|
|
dataMap.put("CREATE_TIME", new Date());
|
|
|
return true;
|
|
|
}
|
|
|
+ }, new TransferDataCallFunction() {
|
|
|
+ @Override
|
|
|
+ public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
+ if(null != openStr && Constant.SWITCH_OPEN.equals(openStr)) {
|
|
|
+ prescriptionOrderService.lambdaUpdate().eq(PrescriptionOrder::getInpOutpatientNumber, vistNo).remove();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
});
|
|
|
log.info("结束同步V_YBKF_PRESCRIPTION_ORDER数据,获取住院号:{} 条数:{}", vistNo, count);
|
|
|
return count;
|
|
|
@@ -139,21 +176,30 @@ public class XCFYDataTransferService {
|
|
|
log.info("开始同步V_YBKF_OPERATION数据,获取住院号/门诊号:{}", visitNo);
|
|
|
Map<String, Object> paramMap = new HashMap<>();
|
|
|
paramMap.put("VISIT_NO", visitNo);
|
|
|
+ Object openStr = redisTemplate.opsForValue().get(Constant.JOB_DELETE_OLD_DATE_SWITCH);
|
|
|
Integer count = transferDataList(querySql, operationInsertSql, paramMap, new TransferDataCallFunction() {
|
|
|
@Override
|
|
|
public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
dataMap.put("CREATE_BY", "auto");
|
|
|
dataMap.put("CREATE_TIME", new Date());
|
|
|
String treatmentTypeSrc = dataMap.get("TREATMENT_TYPE").toString();
|
|
|
- if("住院".equals(treatmentTypeSrc)){
|
|
|
- dataMap.put("TREATMENT_TYPE","1");
|
|
|
- }else if("门诊".equals(treatmentTypeSrc)){
|
|
|
- dataMap.put("TREATMENT_TYPE","2");
|
|
|
+ if ("住院".equals(treatmentTypeSrc)) {
|
|
|
+ dataMap.put("TREATMENT_TYPE", "1");
|
|
|
+ } else if ("门诊".equals(treatmentTypeSrc)) {
|
|
|
+ dataMap.put("TREATMENT_TYPE", "2");
|
|
|
}
|
|
|
Object patientGender = dataMap.get("PATIENT_GENDER");
|
|
|
dataMap.put("PATIENT_GENDER", CommonUtil.getMedicalSex(patientGender));
|
|
|
return true;
|
|
|
}
|
|
|
+ }, new TransferDataCallFunction() {
|
|
|
+ @Override
|
|
|
+ public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
+ if(null != openStr && Constant.SWITCH_OPEN.equals(openStr)) {
|
|
|
+ operationService.lambdaUpdate().eq(Operation::getVisitNo, visitNo).remove();
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
});
|
|
|
log.info("结束同步V_YBKF_OPERATION数据,获取住院号/门诊号:{} 条数:{}", visitNo, count);
|
|
|
return count;
|