|
|
@@ -1,11 +1,17 @@
|
|
|
package org.jeecg.modules.medical.job;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import cn.hutool.core.date.DateUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.apache.commons.lang.StringUtils;
|
|
|
+import org.jeecg.common.system.vo.DictModel;
|
|
|
import org.jeecg.modules.medical.afterwaring.XCFYDataTransferService;
|
|
|
+import org.jeecg.modules.medical.common.CommonUtil;
|
|
|
import org.jeecg.modules.medical.entity.HospitalizatioSettleDetail;
|
|
|
import org.jeecg.modules.medical.ruleengine.TransferDataCallFunction;
|
|
|
import org.jeecg.modules.medical.service.IHospitalizatioSettleDetailService;
|
|
|
+import org.jeecg.modules.system.service.ISysDictService;
|
|
|
+import org.jeecg.modules.utils.DateTimeUtil;
|
|
|
import org.quartz.Job;
|
|
|
import org.quartz.JobExecutionContext;
|
|
|
import org.quartz.JobExecutionException;
|
|
|
@@ -29,44 +35,72 @@ public class XCFYDataV_MEDICAL_RECORD_HOMEPAGEJob implements Job {
|
|
|
XCFYDataTransferService xcfyDataTransferService;
|
|
|
@Autowired
|
|
|
JdbcTemplate jdbcTemplate;
|
|
|
+ @Autowired
|
|
|
+ ISysDictService sysDictService;
|
|
|
|
|
|
- String insertSql = "INSERT INTO medical_record_homepage (id, bridge_id, zyh, hospital_id, patient_name, patient_id, social_card_id, patient_address, patient_company, icd10_code_basy, icd10_name_basy, icd10_name_describe, special_remarks, disease_id1, disease_name1, icd9_code_basy, icd9_name_basy, icd9_code1, icd9_name1, nb_weight, nb_admission_weight, bm_hours, icu_flag, icu_hours, main_con_desc, treatment_process, pathological_findings, discharge_condition, discharge_order, death_date, death_diagnosis, death_cause, admission_plan, disease_his, past_his, personal_his, auxiliary_inspection, assist_lab_test_results, auxiliary_imaging_ex_results, discharge_status, create_time, create_by) " +
|
|
|
- "VALUES (:ID,:BRIDGE_ID,:ZYH,:HOSPITAL_ID,:PATIENT_NAME,:PATIENT_ID,:SOCIAL_CARD_ID,:PATIENT_ADDRESS,:PATIENT_COMPANY,:ICD10_CODE_BASY,:ICD10_NAME_BASY,:ICD10_NAME_DESCRIBE,:SPECIAL_REMARKS,:DISEASE_ID1,:DISEASE_NAME1,:ICD9_CODE_BASY,:ICD9_NAME_BASY,:ICD9_CODE1,:ICD9_NAME1,:NB_WEIGHT,:NB_ADMISSION_WEIGHT,:BM_HOURS,:ICU_FLAG,:ICU_HOURS,:MAIN_CON_DESC,:TREATMENT_PROCESS,:PATHOLOGICAL_FINDINGS,:DISCHARGE_CONDITION,:DISCHARGE_ORDER,:DEATH_DATE,:DEATH_DIAGNOSIS,:DEATH_CAUSE,:ADMISSION_PLAN,:DISEASE_HIS,:PAST_HIS,:PERSONAL_HIS,:AUXILIARY_INSPECTION,:ASSIST_LAB_TEST_RESULTS,:AUXILIARY_IMAGING_EX_RESULTS,:DISCHARGE_STATUS,:CREATE_TIME,:CREATE_BY)";
|
|
|
+ String recordHomePageInsertSql = "INSERT INTO medical_record_homepage (bridge_id, zyh, hospital_id, patient_name, patient_id, social_card_id, patient_address, patient_company, icd10_code_basy, icd10_name_basy, icd10_name_describe, special_remarks, disease_id1, disease_name1, icd9_code_basy, icd9_name_basy, icd9_code1, icd9_name1, nb_weight, nb_admission_weight, bm_hours, icu_flag, icu_hours, main_con_desc, treatment_process, pathological_findings, discharge_condition, discharge_order, death_date, death_diagnosis, death_cause, admission_plan, disease_his, past_his, personal_his, auxiliary_inspection, assist_lab_test_results, auxiliary_imaging_ex_results, discharge_status, create_time, create_by) " +
|
|
|
+ "VALUES (:BRIDGE_ID,:ZYH,:HOSPITAL_ID,:PATIENT_NAME,:PATIENT_ID,:SOCIAL_CARD_ID,:PATIENT_ADDRESS,:PATIENT_COMPANY,:ICD10_CODE_BASY,:ICD10_NAME_BASY,:ICD10_NAME_DESCRIBE,:SPECIAL_REMARKS,:DISEASE_ID1,:DISEASE_NAME1,:ICD9_CODE_BASY,:ICD9_NAME_BASY,:ICD9_CODE1,:ICD9_NAME1,:NB_WEIGHT,:NB_ADMISSION_WEIGHT,:BM_HOURS,:ICU_FLAG,:ICU_HOURS,:MAIN_CON_DESC,:TREATMENT_PROCESS,:PATHOLOGICAL_FINDINGS,:DISCHARGE_CONDITION,:DISCHARGE_ORDER,:DEATH_DATE,:DEATH_DIAGNOSIS,:DEATH_CAUSE,:ADMISSION_PLAN,:DISEASE_HIS,:PAST_HIS,:PERSONAL_HIS,:AUXILIARY_INSPECTION,:ASSIST_LAB_TEST_RESULTS,:AUXILIARY_IMAGING_EX_RESULTS,:DISCHARGE_STATUS,:CREATE_TIME,:CREATE_BY)";
|
|
|
|
|
|
@Override
|
|
|
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
|
|
- String sql = "select * from V_MEDICAL_RECORD_HOMEPAGE where rownum<1000 %s";
|
|
|
- while(true) {
|
|
|
- log.info("开始同步V_MEDICAL_RECORD_HOMEPAGE数据");
|
|
|
- String whereSql = "";
|
|
|
- Long hsdId = getLastId();
|
|
|
- log.info("开始同步V_MEDICAL_RECORD_HOMEPAGE数据,获取上个同步记录访问最大主键ID:{}", hsdId);
|
|
|
- Map<String,Object> paramMap = new HashMap<>();
|
|
|
- if(null != hsdId && hsdId>0){
|
|
|
- whereSql = "and ID>:ID";
|
|
|
- paramMap.put("ID", hsdId);
|
|
|
- }
|
|
|
+ List<DictModel> dictModelList = sysDictService.getDictItems("discharge_method");
|
|
|
+ Map<String,String> dischargeMethodMap = new HashMap<>();
|
|
|
+ for(DictModel dictModel : dictModelList){
|
|
|
+ dischargeMethodMap.put(dictModel.getText(), dictModel.getValue());
|
|
|
+ }
|
|
|
|
|
|
+ transferHomePage(dischargeMethodMap);
|
|
|
+ }
|
|
|
|
|
|
- String querySql = String.format(sql, whereSql);
|
|
|
- Integer count = xcfyDataTransferService.transferDataList(querySql, insertSql, paramMap, new TransferDataCallFunction() {
|
|
|
- @Override
|
|
|
- public void transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
- dataMap.put("CREATE_BY", "auto");
|
|
|
- dataMap.put("CREATE_TIME", new Date());
|
|
|
- }
|
|
|
- });
|
|
|
- if(count<=0){
|
|
|
- log.info("V_MEDICAL_RECORD_HOMEPAGE 大于ID:{} 没有的数据,停止同步", hsdId);
|
|
|
- return;
|
|
|
+ public void transferHomePage(Map<String,String> dischargeMethodMap){
|
|
|
+ String querySql = "select * from V_MASTER_ADMISSION_BILL where hisid is not null and to_char(bill_date,'yyyy-MM-dd')=to_char(sysdate-10,'yyyy-MM-dd') ";
|
|
|
+ Date endBillDate = DateUtil.offsetDay(new Date(), -10);
|
|
|
+ log.info("开始10天前master_admission_bill数据,获取同步日期:{}", endBillDate);
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+ Integer count = xcfyDataTransferService.transferDataList(querySql, null, paramMap, new TransferDataCallFunction() {
|
|
|
+ @Override
|
|
|
+ public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
+
|
|
|
+ String zyh = dataMap.get("ZYH").toString();
|
|
|
+ transferMedicalRecordHomePage(zyh, dischargeMethodMap);
|
|
|
+ return true;
|
|
|
}
|
|
|
+ });
|
|
|
+ if (count <= 0) {
|
|
|
+ log.error("V_MASTER_ADMISSION_BILL 未查询到等于住院billdate:{} 的数据,停止同步", endBillDate);
|
|
|
+ return;
|
|
|
}
|
|
|
-
|
|
|
}
|
|
|
|
|
|
- public Long getLastId(){
|
|
|
- Long id = jdbcTemplate.queryForObject("select max(id) as id from medical_record_homepage", Long.class);
|
|
|
- return id;
|
|
|
+ public Integer transferMedicalRecordHomePage(String zyh,Map<String,String> dischargeMethodMap) {
|
|
|
+ String querySql = "select * from V_MEDICAL_RECORD_HOMEPAGE where ZYH=:ZYH";
|
|
|
+
|
|
|
+ log.info("开始同步V_MEDICAL_RECORD_HOMEPAGE数据,获取zyh:{}", zyh);
|
|
|
+ Map<String, Object> paramMap = new HashMap<>();
|
|
|
+
|
|
|
+ paramMap.put("ZYH", zyh);
|
|
|
+ Integer count = xcfyDataTransferService.transferDataList(querySql, recordHomePageInsertSql, paramMap, new TransferDataCallFunction() {
|
|
|
+ @Override
|
|
|
+ public Boolean transferData(Map<String, Object> dataMap) throws Exception {
|
|
|
+ dataMap.put("CREATE_BY", "auto");
|
|
|
+ dataMap.put("CREATE_TIME", new Date());
|
|
|
+ //视图枚举:'1','医嘱离院','2','医嘱转院','3','医嘱转社区卫生服务机构/乡镇卫生院','4','非医嘱离院','5','死亡','其他'
|
|
|
+
|
|
|
+ // 医保控费枚举:1医嘱离院
|
|
|
+ //2医嘱转院
|
|
|
+ //3医嘱转社区卫生服务机构/乡镇卫生院
|
|
|
+ //4非医嘱离院
|
|
|
+ //5死亡
|
|
|
+ //9其他
|
|
|
+ String dischargeStatus = dataMap.getOrDefault("DISCHARGE_STATUS","其他").toString();
|
|
|
+ if(dischargeMethodMap.containsKey(dischargeStatus)){
|
|
|
+ dataMap.put("DISCHARGE_STATUS", dischargeMethodMap.get(dischargeStatus));
|
|
|
+ }
|
|
|
+ return true;
|
|
|
+ }
|
|
|
+ });
|
|
|
+ log.info("结束同步V_MEDICAL_RECORD_HOMEPAGE数据,获取zyh:{} 条数:{}", zyh, count);
|
|
|
+ return count;
|
|
|
}
|
|
|
|
|
|
}
|