|
@@ -3,33 +3,41 @@ package org.jeecg.modules.medical.job;
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
import org.apache.commons.lang.StringUtils;
|
|
import org.apache.commons.lang.StringUtils;
|
|
|
|
|
+import org.jeecg.common.system.vo.DictModel;
|
|
|
import org.jeecg.modules.medical.Constant;
|
|
import org.jeecg.modules.medical.Constant;
|
|
|
import org.jeecg.modules.medical.afterwaring.BackDetailToHis;
|
|
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.common.CommonUtil;
|
|
|
import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
|
|
import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
|
|
|
import org.jeecg.modules.medical.entity.AfterIncidentLog;
|
|
import org.jeecg.modules.medical.entity.AfterIncidentLog;
|
|
|
import org.jeecg.modules.medical.entity.AfterwardsAudit;
|
|
import org.jeecg.modules.medical.entity.AfterwardsAudit;
|
|
|
import org.jeecg.modules.medical.entity.HospitalizatioSettleDetail;
|
|
import org.jeecg.modules.medical.entity.HospitalizatioSettleDetail;
|
|
|
import org.jeecg.modules.medical.entity.MasterAdmissionBill;
|
|
import org.jeecg.modules.medical.entity.MasterAdmissionBill;
|
|
|
|
|
+import org.jeecg.modules.medical.entity.MedicalRecordHomepage;
|
|
|
import org.jeecg.modules.medical.ruleengine.RuleEngine;
|
|
import org.jeecg.modules.medical.ruleengine.RuleEngine;
|
|
|
import org.jeecg.modules.medical.service.IAfterIncidentDetailLogService;
|
|
import org.jeecg.modules.medical.service.IAfterIncidentDetailLogService;
|
|
|
import org.jeecg.modules.medical.service.IAfterIncidentLogService;
|
|
import org.jeecg.modules.medical.service.IAfterIncidentLogService;
|
|
|
import org.jeecg.modules.medical.service.IHospitalizatioSettleDetailService;
|
|
import org.jeecg.modules.medical.service.IHospitalizatioSettleDetailService;
|
|
|
import org.jeecg.modules.medical.service.IMasterAdmissionBillService;
|
|
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.medical.service.IOutpatientSettleBillService;
|
|
|
import org.jeecg.modules.system.entity.SysUser;
|
|
import org.jeecg.modules.system.entity.SysUser;
|
|
|
|
|
+import org.jeecg.modules.system.service.ISysDictService;
|
|
|
import org.jeecg.modules.system.service.ISysUserService;
|
|
import org.jeecg.modules.system.service.ISysUserService;
|
|
|
import org.quartz.Job;
|
|
import org.quartz.Job;
|
|
|
import org.quartz.JobExecutionContext;
|
|
import org.quartz.JobExecutionContext;
|
|
|
import org.quartz.JobExecutionException;
|
|
import org.quartz.JobExecutionException;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
|
+import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.scheduling.annotation.Async;
|
|
import org.springframework.scheduling.annotation.Async;
|
|
|
|
|
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
|
|
+import java.util.HashSet;
|
|
|
import java.util.Iterator;
|
|
import java.util.Iterator;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
|
|
|
+import java.util.Set;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* 事后监管任务生成-住院就诊类型
|
|
* 事后监管任务生成-住院就诊类型
|
|
@@ -45,6 +53,8 @@ public class AfterWaringLogJob implements Job {
|
|
|
@Autowired
|
|
@Autowired
|
|
|
IMasterAdmissionBillService masterAdmissionBillService;
|
|
IMasterAdmissionBillService masterAdmissionBillService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
|
|
+ IMedicalRecordHomepageService medicalRecordHomepageService;
|
|
|
|
|
+ @Autowired
|
|
|
IHospitalizatioSettleDetailService hospitalizatioSettleDetailService;
|
|
IHospitalizatioSettleDetailService hospitalizatioSettleDetailService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
IOutpatientSettleBillService outpatientSettleBillService;
|
|
IOutpatientSettleBillService outpatientSettleBillService;
|
|
@@ -52,6 +62,12 @@ public class AfterWaringLogJob implements Job {
|
|
|
ISysUserService sysUserService;
|
|
ISysUserService sysUserService;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
BackDetailToHis backDetailToHis;
|
|
BackDetailToHis backDetailToHis;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ RedisTemplate redisTemplate;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ ISysDictService sysDictService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ XCFYDataTransferService xcfyDataTransferService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
|
public void execute(JobExecutionContext jobExecutionContext) throws JobExecutionException {
|
|
@@ -64,6 +80,11 @@ public class AfterWaringLogJob implements Job {
|
|
|
|
|
|
|
|
@Async("commonTaskAsyncPool")
|
|
@Async("commonTaskAsyncPool")
|
|
|
public void dealAftertask(MasterAdmissionBill masterAdmissionBill) {
|
|
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();
|
|
boolean updateCount = masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.DEALING).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
|
|
|
if (!updateCount) {
|
|
if (!updateCount) {
|
|
|
log.error("住院结算主单为:{} 未更新到处理状态", masterAdmissionBill.getId());
|
|
log.error("住院结算主单为:{} 未更新到处理状态", masterAdmissionBill.getId());
|
|
@@ -78,6 +99,7 @@ public class AfterWaringLogJob implements Job {
|
|
|
doctorLevel = sysUserList.get(0).getDoctorLevel();
|
|
doctorLevel = sysUserList.get(0).getDoctorLevel();
|
|
|
}
|
|
}
|
|
|
masterAdmissionBill.setDoctorLevel(doctorLevel);
|
|
masterAdmissionBill.setDoctorLevel(doctorLevel);
|
|
|
|
|
+
|
|
|
AfterIncidentLog afterIncidentLog = afterIncidentLogService.addAfterIncidentLog(masterAdmissionBill);
|
|
AfterIncidentLog afterIncidentLog = afterIncidentLogService.addAfterIncidentLog(masterAdmissionBill);
|
|
|
List<HospitalizatioSettleDetail> hospitalizatioSettleDetails = hospitalizatioSettleDetailService.lambdaQuery().eq(HospitalizatioSettleDetail::getHisid, masterAdmissionBill.getHisid()).list();
|
|
List<HospitalizatioSettleDetail> hospitalizatioSettleDetails = hospitalizatioSettleDetailService.lambdaQuery().eq(HospitalizatioSettleDetail::getHisid, masterAdmissionBill.getHisid()).list();
|
|
|
sumDetail(hospitalizatioSettleDetails);
|
|
sumDetail(hospitalizatioSettleDetails);
|
|
@@ -86,12 +108,8 @@ public class AfterWaringLogJob implements Job {
|
|
|
|
|
|
|
|
for (HospitalizatioSettleDetail hospitalizatioSettleDetail : hospitalizatioSettleDetails) {
|
|
for (HospitalizatioSettleDetail hospitalizatioSettleDetail : hospitalizatioSettleDetails) {
|
|
|
afterIncidentDetailLog = new AfterIncidentDetailLog();
|
|
afterIncidentDetailLog = new AfterIncidentDetailLog();
|
|
|
-
|
|
|
|
|
afterIncidentDetailLog.setAfterIncidentLogId(afterIncidentLog.getId());
|
|
afterIncidentDetailLog.setAfterIncidentLogId(afterIncidentLog.getId());
|
|
|
- afterIncidentDetailLog.setMedicalDiagnoseNameStr(masterAdmissionBill.getYbAdmissionDiseaseName());
|
|
|
|
|
- afterIncidentDetailLog.setMedicalDiagnoseCodeStr(masterAdmissionBill.getYbAdmissionDiseaseId());
|
|
|
|
|
afterIncidentDetailLog.setAmount(hospitalizatioSettleDetail.getCost());
|
|
afterIncidentDetailLog.setAmount(hospitalizatioSettleDetail.getCost());
|
|
|
-
|
|
|
|
|
if (StringUtils.isNotBlank(hospitalizatioSettleDetail.getItemId())) {
|
|
if (StringUtils.isNotBlank(hospitalizatioSettleDetail.getItemId())) {
|
|
|
afterIncidentDetailLog.setMedicalProjectCode(hospitalizatioSettleDetail.getItemId());
|
|
afterIncidentDetailLog.setMedicalProjectCode(hospitalizatioSettleDetail.getItemId());
|
|
|
afterIncidentDetailLog.setMedicalProjectName(hospitalizatioSettleDetail.getItemName());
|
|
afterIncidentDetailLog.setMedicalProjectName(hospitalizatioSettleDetail.getItemName());
|
|
@@ -120,9 +138,12 @@ public class AfterWaringLogJob implements Job {
|
|
|
afterIncidentDetailLog.setChangeClass(hospitalizatioSettleDetail.getPType());
|
|
afterIncidentDetailLog.setChangeClass(hospitalizatioSettleDetail.getPType());
|
|
|
// afterIncidentDetailLog.setInspectionSite();
|
|
// afterIncidentDetailLog.setInspectionSite();
|
|
|
afterIncidentDetailLog.setOutHospDate(masterAdmissionBill.getDischargeDate());
|
|
afterIncidentDetailLog.setOutHospDate(masterAdmissionBill.getDischargeDate());
|
|
|
- if (StringUtils.isNotBlank(masterAdmissionBill.getDischargeDiseaseIdMain())) {
|
|
|
|
|
- afterIncidentDetailLog.setDiagnoseCodeStr(masterAdmissionBill.getDischargeDiseaseIdMain().trim());
|
|
|
|
|
- afterIncidentDetailLog.setDiagnoseNameStr(masterAdmissionBill.getDischargeDiseaseNameMain());
|
|
|
|
|
|
|
+ String[] diagnoseArr = setDiagnose(masterAdmissionBill, dischargeMethodMap);
|
|
|
|
|
+ if (null != diagnoseArr) {
|
|
|
|
|
+ afterIncidentDetailLog.setDiagnoseCodeStr(diagnoseArr[0]);
|
|
|
|
|
+ afterIncidentDetailLog.setDiagnoseNameStr(diagnoseArr[1]);
|
|
|
|
|
+ afterIncidentDetailLog.setMedicalDiagnoseCodeStr(diagnoseArr[2]);
|
|
|
|
|
+ afterIncidentDetailLog.setMedicalDiagnoseNameStr(diagnoseArr[3]);
|
|
|
}
|
|
}
|
|
|
afterIncidentDetailLog.setMedicalInsuranceMark(masterAdmissionBill.getPayMethod());
|
|
afterIncidentDetailLog.setMedicalInsuranceMark(masterAdmissionBill.getPayMethod());
|
|
|
afterIncidentDetailLog.setMedicalSpecification(hospitalizatioSettleDetail.getDrugSpec());
|
|
afterIncidentDetailLog.setMedicalSpecification(hospitalizatioSettleDetail.getDrugSpec());
|
|
@@ -155,6 +176,69 @@ public class AfterWaringLogJob implements Job {
|
|
|
masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.SUCCESS).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
|
|
masterAdmissionBillService.lambdaUpdate().set(MasterAdmissionBill::getState, Constant.SUCCESS).eq(MasterAdmissionBill::getId, masterAdmissionBill.getId()).update();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public String[] setDiagnose(MasterAdmissionBill masterAdmissionBill,Map<String,String> dischargeMethodMap){
|
|
|
|
|
+ List<String> diagnoseCodeList = new ArrayList<>();
|
|
|
|
|
+ List<String> diagnoseNameList = new ArrayList<>();
|
|
|
|
|
+ List<String> srcDiagnoseCodeList = new ArrayList<>();
|
|
|
|
|
+ List<String> srcDiagnoseNameList = new ArrayList<>();
|
|
|
|
|
+ if(StringUtils.isNotBlank(masterAdmissionBill.getYbDischargeDiseaseIdMain())){
|
|
|
|
|
+ diagnoseCodeList.add(masterAdmissionBill.getYbDischargeDiseaseIdMain().trim());
|
|
|
|
|
+ diagnoseNameList.add(masterAdmissionBill.getYbDischargeDiseaseNameMain());
|
|
|
|
|
+ srcDiagnoseCodeList.add(masterAdmissionBill.getDischargeDiseaseIdMain());
|
|
|
|
|
+ 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())){
|
|
|
|
|
+ diagnoseCodeList.add(masterAdmissionBill.getYbAdmissionDiseaseId().trim());
|
|
|
|
|
+ diagnoseNameList.add(masterAdmissionBill.getYbAdmissionDiseaseName());
|
|
|
|
|
+ srcDiagnoseCodeList.add(masterAdmissionBill.getAdmissionDiseaseId());
|
|
|
|
|
+ srcDiagnoseNameList.add(masterAdmissionBill.getAdmissionDiseaseName());
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ String diagnoseCodeStr = medicalRecordHomepageList.get(0).getIcd10CodeBasy();
|
|
|
|
|
+ String diagnoseNameStr = medicalRecordHomepageList.get(0).getIcd10NameBasy();
|
|
|
|
|
+ if(StringUtils.isNotBlank(diagnoseCodeStr)) {
|
|
|
|
|
+ String[] medicalCodeAndNameArr = CommonUtil.getMedicalCodeAndName(diagnoseCodeStr);
|
|
|
|
|
+ if (null != medicalCodeAndNameArr) {
|
|
|
|
|
+ if(!diagnoseCodeList.contains(medicalCodeAndNameArr[0])){
|
|
|
|
|
+ diagnoseCodeList.add(medicalCodeAndNameArr[0]);
|
|
|
|
|
+ diagnoseNameList.add(medicalCodeAndNameArr[1]);
|
|
|
|
|
+ srcDiagnoseCodeList.add(diagnoseCodeStr);
|
|
|
|
|
+ srcDiagnoseNameList.add(diagnoseNameStr);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ String diagnoseCode1Str = medicalRecordHomepageList.get(0).getDiseaseId1();
|
|
|
|
|
+ String diagnoseName1Str = medicalRecordHomepageList.get(0).getDiseaseName1();
|
|
|
|
|
+ if(StringUtils.isNotBlank(diagnoseCode1Str)) {
|
|
|
|
|
+ String[] medicalCodeAndNameArr = CommonUtil.getMedicalCodeAndName(diagnoseCode1Str);
|
|
|
|
|
+ if (null != medicalCodeAndNameArr) {
|
|
|
|
|
+ if(!diagnoseCodeList.contains(medicalCodeAndNameArr[0])){
|
|
|
|
|
+ diagnoseCodeList.add(medicalCodeAndNameArr[0]);
|
|
|
|
|
+ diagnoseNameList.add(medicalCodeAndNameArr[1]);
|
|
|
|
|
+ srcDiagnoseCodeList.add(diagnoseCode1Str);
|
|
|
|
|
+ srcDiagnoseNameList.add(diagnoseName1Str);
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ if(CollectionUtil.isNotEmpty(diagnoseCodeList)){
|
|
|
|
|
+ String srcDiagnoseCodeStr = CollectionUtil.join(srcDiagnoseCodeList, Constant.SPLIT_STR);
|
|
|
|
|
+ String srcDiagnoseNameStr = CollectionUtil.join(srcDiagnoseNameList, Constant.SPLIT_STR);
|
|
|
|
|
+ String diagnoseCodeStr = CollectionUtil.join(diagnoseCodeList, Constant.SPLIT_STR);
|
|
|
|
|
+ String diagnoseNameStr = CollectionUtil.join(diagnoseNameList, Constant.SPLIT_STR);
|
|
|
|
|
+ return new String[]{srcDiagnoseCodeStr, srcDiagnoseNameStr, diagnoseCodeStr, diagnoseNameStr};
|
|
|
|
|
+ }
|
|
|
|
|
+ return null;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
/**
|
|
/**
|
|
|
* 抵扣负条数记录
|
|
* 抵扣负条数记录
|
|
|
* @param detailList
|
|
* @param detailList
|