瀏覽代碼

兼容病案首页改造

0027005599 2 年之前
父節點
當前提交
423be4d25c

+ 44 - 0
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/afterwaring/XCFYDataTransferService.java

@@ -7,10 +7,12 @@ 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.MedicalRecordHomepage;
 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.IMedicalRecordHomepageService;
 import org.jeecg.modules.medical.service.IOperationService;
 import org.jeecg.modules.medical.service.IPrescriptionOrderService;
 import org.jeecg.modules.system.service.ISysDictService;
@@ -39,6 +41,8 @@ public class XCFYDataTransferService {
     IPrescriptionOrderService prescriptionOrderService;
     @Autowired
     ISysDictService sysDictService;
+    @Autowired
+    IMedicalRecordHomepageService medicalRecordHomepageService;
 
     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)";
 
@@ -71,6 +75,10 @@ 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)";
 
+    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)";
+
+
     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);
@@ -205,5 +213,41 @@ public class XCFYDataTransferService {
 
     }
 
+    public Integer transferMedicalRecordHomePage(String hisId, Map<String, String> dischargeMethodMap) {
+        String querySql = "select * from V_YBKF_MEDICAL_RECORD_HOMEPAGE where BRIDGE_ID=:HISID";
+        log.info("开始同步V_YBKFMEDICAL_RECORD_HOMEPAGE数据,HISID:{}", hisId);
+        Map<String, Object> paramMap = new HashMap<>();
+
+        paramMap.put("HISID", hisId);
+        Integer count = 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;
+            }
+        }, new TransferDataCallFunction() {
+            @Override
+            public Boolean transferData(Map<String, Object> dataMap) throws Exception {
+                medicalRecordHomepageService.lambdaUpdate().eq(MedicalRecordHomepage::getBridgeId, hisId).remove();
+                return true;
+            }
+        });
+        log.info("结束同步V_MEDICAL_RECORD_HOMEPAGE数据,获取hisid:{} 条数:{}", hisId, count);
+        return count;
+    }
+
 
 }

+ 18 - 2
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/job/AfterWaringLogJob.java

@@ -3,8 +3,10 @@ package org.jeecg.modules.medical.job;
 import cn.hutool.core.collection.CollectionUtil;
 import lombok.extern.slf4j.Slf4j;
 import org.apache.commons.lang.StringUtils;
+import org.jeecg.common.system.vo.DictModel;
 import org.jeecg.modules.medical.Constant;
 import org.jeecg.modules.medical.afterwaring.BackDetailToHis;
+import org.jeecg.modules.medical.afterwaring.XCFYDataTransferService;
 import org.jeecg.modules.medical.common.CommonUtil;
 import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
 import org.jeecg.modules.medical.entity.AfterIncidentLog;
@@ -20,6 +22,7 @@ import org.jeecg.modules.medical.service.IMasterAdmissionBillService;
 import org.jeecg.modules.medical.service.IMedicalRecordHomepageService;
 import org.jeecg.modules.medical.service.IOutpatientSettleBillService;
 import org.jeecg.modules.system.entity.SysUser;
+import org.jeecg.modules.system.service.ISysDictService;
 import org.jeecg.modules.system.service.ISysUserService;
 import org.quartz.Job;
 import org.quartz.JobExecutionContext;
@@ -61,6 +64,10 @@ public class AfterWaringLogJob implements Job {
     BackDetailToHis backDetailToHis;
     @Autowired
     RedisTemplate redisTemplate;
+    @Autowired
+    ISysDictService sysDictService;
+    @Autowired
+    XCFYDataTransferService xcfyDataTransferService;
 
     @Override
     public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
@@ -73,6 +80,11 @@ public class AfterWaringLogJob implements Job {
 
     @Async("commonTaskAsyncPool")
     public void dealAftertask(MasterAdmissionBill masterAdmissionBill) {
+        List<DictModel> dictModelList = sysDictService.getDictItems("discharge_method");
+        Map<String, String> dischargeMethodMap = new HashMap<>();
+        for (DictModel dictModel : dictModelList) {
+            dischargeMethodMap.put(dictModel.getText(), dictModel.getValue());
+        }
         boolean updateCount = masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.DEALING).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
         if (!updateCount) {
             log.error("住院结算主单为:{} 未更新到处理状态", masterAdmissionBill.getId());
@@ -129,7 +141,7 @@ public class AfterWaringLogJob implements Job {
             afterIncidentDetailLog.setChangeClass(hospitalizatioSettleDetail.getPType());
 //            afterIncidentDetailLog.setInspectionSite();
             afterIncidentDetailLog.setOutHospDate(masterAdmissionBill.getDischargeDate());
-            String[] diagnoseArr = setDiagnose(masterAdmissionBill);
+            String[] diagnoseArr = setDiagnose(masterAdmissionBill, dischargeMethodMap);
             if (null != diagnoseArr) {
                 afterIncidentDetailLog.setDiagnoseCodeStr(diagnoseArr[0]);
                 afterIncidentDetailLog.setDiagnoseNameStr(diagnoseArr[1]);
@@ -167,7 +179,7 @@ public class AfterWaringLogJob implements Job {
         masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.SUCCESS).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
     }
 
-    public String[] setDiagnose(MasterAdmissionBill masterAdmissionBill){
+    public String[] setDiagnose(MasterAdmissionBill masterAdmissionBill,Map<String,String> dischargeMethodMap){
         List<String> diagnoseCodeList = new ArrayList<>();
         List<String> diagnoseNameList = new ArrayList<>();
         List<String> srcDiagnoseCodeList = new ArrayList<>();
@@ -179,6 +191,10 @@ public class AfterWaringLogJob implements Job {
             srcDiagnoseNameList.add(masterAdmissionBill.getDischargeDiseaseNameMain());
         }
         List<MedicalRecordHomepage> medicalRecordHomepageList = medicalRecordHomepageService.lambdaQuery().eq(MedicalRecordHomepage::getBridgeId, masterAdmissionBill.getHisid()).list();
+        if(CollectionUtil.isEmpty(medicalRecordHomepageList)){
+            xcfyDataTransferService.transferMedicalRecordHomePage(masterAdmissionBill.getHisid(), dischargeMethodMap);
+            medicalRecordHomepageList = medicalRecordHomepageService.lambdaQuery().eq(MedicalRecordHomepage::getBridgeId, masterAdmissionBill.getHisid()).list();
+        }
         if(CollectionUtil.isNotEmpty(medicalRecordHomepageList)){
             if(StringUtils.isNotBlank(masterAdmissionBill.getYbAdmissionDiseaseId())){
                 if(!diagnoseCodeList.contains(masterAdmissionBill.getYbAdmissionDiseaseId())){

+ 1 - 1
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/job/XCFYDataV_MEDICAL_RECORD_HOMEPAGEJob.java

@@ -64,7 +64,6 @@ public class XCFYDataV_MEDICAL_RECORD_HOMEPAGEJob implements Job {
             @Override
             public Boolean transferData(Map<String, Object> dataMap) throws Exception {
                 String hisid = dataMap.get("HISID").toString();
-                medicalRecordHomepageService.lambdaUpdate().eq(MedicalRecordHomepage::getBridgeId, hisid).remove();
                 transferMedicalRecordHomePage(hisid, dischargeMethodMap);
                 return true;
             }
@@ -109,6 +108,7 @@ public class XCFYDataV_MEDICAL_RECORD_HOMEPAGEJob implements Job {
         }, new TransferDataCallFunction() {
             @Override
             public Boolean transferData(Map<String, Object> dataMap) throws Exception {
+                medicalRecordHomepageService.lambdaUpdate().eq(MedicalRecordHomepage::getBridgeId, hisid).remove();
                 return true;
             }
         });

+ 2 - 44
jeecg-module-system/jeecg-system-biz/src/main/java/org/jeecg/modules/medical/job/XCFYDatav_master_admission_billJob.java

@@ -187,7 +187,7 @@ public class XCFYDatav_master_admission_billJob implements Job {
                 xcfyDataTransferService.transferCheckList(hisId);
                 String zyh = dataMap.get("ZYH").toString();
                 xcfyDataTransferService.transferPrescriptionOrder(zyh);
-                transferMedicalRecordHomePage(hisId, dischargeMethodMap);
+                xcfyDataTransferService.transferMedicalRecordHomePage(hisId, dischargeMethodMap);
                 xcfyDataTransferService.transferOperation(zyh);
                 return true;
             }
@@ -213,19 +213,11 @@ public class XCFYDatav_master_admission_billJob implements Job {
      */
     public Integer transferHospSettleDetail(String hisId) {
         try {
-//            List<DictModel> cateGoriesList = sysDictService.getDictItems(Constant.DICT_CATEGORIES_ITEMS_KEY);
             Map<String, String> cateGoriesMap = CommonUtil.getCategoriesItemsMap();
-//            for (DictModel dictModel : cateGoriesList) {
-//                cateGoriesMap.put(dictModel.getText(), dictModel.getValue());
-//            }
-            String whereSql = "";
             log.info("开始同步V_YBKF_HOSP_SETTLE_DETAIL数据,HISID:{}", hisId);
-            String sql = "select * from V_YBKF_HOSP_SETTLE_DETAIL where hisid=:HISID and item_id is not null";
+            String querySql = "select * from V_YBKF_HOSP_SETTLE_DETAIL where hisid=:HISID and item_id is not null";
             Map<String, Object> paramMap = new HashMap<>();
-
             paramMap.put("HISID", hisId);
-
-            String querySql = String.format(sql, whereSql);
             Integer count = xcfyDataTransferService.transferDataList(querySql, hosSeDetailInsertSql, paramMap, new TransferDataCallFunction() {
                 @Override
                 public Boolean transferData(Map<String, Object> dataMap) throws Exception {
@@ -274,41 +266,7 @@ public class XCFYDatav_master_admission_billJob implements Job {
         return 0;
     }
 
-    public Integer transferMedicalRecordHomePage(String hisId, Map<String, String> dischargeMethodMap) {
-        String querySql = "select * from V_YBKF_MEDICAL_RECORD_HOMEPAGE where BRIDGE_ID=:HISID";
-        log.info("开始同步V_YBKFMEDICAL_RECORD_HOMEPAGE数据,HISID:{}", hisId);
-        Map<String, Object> paramMap = new HashMap<>();
 
-        paramMap.put("HISID", hisId);
-        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;
-            }
-        }, new TransferDataCallFunction() {
-            @Override
-            public Boolean transferData(Map<String, Object> dataMap) throws Exception {
-                medicalRecordHomepageService.lambdaUpdate().eq(MedicalRecordHomepage::getBridgeId, hisId).remove();
-                return true;
-            }
-        });
-        log.info("结束同步V_MEDICAL_RECORD_HOMEPAGE数据,获取hisid:{} 条数:{}", hisId, count);
-        return count;
-    }
 
 
     public Date getBillDate() {