|
|
@@ -1,8 +1,10 @@
|
|
|
package org.jeecg.modules.medical.ruleengine.dict;
|
|
|
|
|
|
import cn.hutool.core.collection.CollectionUtil;
|
|
|
+import com.alibaba.fastjson.JSON;
|
|
|
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.entity.AdviceDetailsVO;
|
|
|
import org.jeecg.modules.medical.entity.AfterIncidentDetailLog;
|
|
|
@@ -13,8 +15,10 @@ import org.jeecg.modules.medical.service.IDiagnoseItemsService;
|
|
|
import org.jeecg.modules.medical.service.IMaterialItemsService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsuranceDrugsService;
|
|
|
import org.jeecg.modules.medical.service.IMedicineService;
|
|
|
+import org.jeecg.modules.medical.service.IOperativeItemsService;
|
|
|
import org.jeecg.modules.medical.service.IOperativeService;
|
|
|
import org.jeecg.modules.medical.service.ITreatmentItemsService;
|
|
|
+import org.jeecg.modules.system.service.ISysDictService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.data.redis.core.RedisTemplate;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
@@ -23,6 +27,7 @@ import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
|
|
/**
|
|
|
* 字典转换工具
|
|
|
@@ -44,7 +49,9 @@ public class DictUtil {
|
|
|
@Autowired
|
|
|
private IDiagnoseItemsService diagnoseItemsService;
|
|
|
@Autowired
|
|
|
- private IOperativeService operativeService;
|
|
|
+ private IOperativeItemsService operativeItemsService;
|
|
|
+ @Autowired
|
|
|
+ private ISysDictService sysDictService;
|
|
|
|
|
|
public void genHospItemsAndSendNotice(AdviceDetailsVO adviceDetailsVO, DiagnosesVO diagnose){
|
|
|
if(null != adviceDetailsVO){
|
|
|
@@ -59,9 +66,11 @@ public class DictUtil {
|
|
|
materialItemsService.saveMaterialItems(adviceDetailsVO);
|
|
|
break;
|
|
|
case Constant.PROJECT_TYPE_OPERATIVE:
|
|
|
-
|
|
|
-
|
|
|
+ String json = JSON.toJSONString(adviceDetailsVO);
|
|
|
+ operativeItemsService.saveHisOperativeItems(adviceDetailsVO.getProject_code(), adviceDetailsVO.getProject_name(), json);
|
|
|
break;
|
|
|
+ default:
|
|
|
+ log.error("存在未知的项目类型数据:{}", adviceDetailsVO);
|
|
|
}
|
|
|
|
|
|
}
|
|
|
@@ -260,6 +269,7 @@ public class DictUtil {
|
|
|
Object value = redisTemplate.opsForHash().get(Constant.HIS_MEDICAL_DICT_KEY, afterIncidentDetailLog.getProject_code());
|
|
|
if (value == null) {
|
|
|
log.error("字段未配置该项目编码映射的医保记录,项目:{}", afterIncidentDetailLog);
|
|
|
+ genHisProjectAndNotice(afterIncidentDetailLog);
|
|
|
value = afterIncidentDetailLog.getProject_code();
|
|
|
afterIncidentDetailLog.setMedical_project_code(value.toString());
|
|
|
afterIncidentDetailLog.setMedical_project_name(afterIncidentDetailLog.getProject_name());
|
|
|
@@ -274,6 +284,32 @@ public class DictUtil {
|
|
|
|
|
|
}
|
|
|
|
|
|
+ public void genHisProjectAndNotice(AfterIncidentDetailLog afterIncidentDetailLog){
|
|
|
+ String exCategory = afterIncidentDetailLog.getExpenseCategory();
|
|
|
+ if(StringUtils.isNotBlank(exCategory)){
|
|
|
+ List<DictModel> dictModelList = sysDictService.queryDictItemsByCode(Constant.CATEGORY_PROJECTTYPE_KEY);
|
|
|
+ Map<String,String> exCateGoryAndProjectTypeMap = dictModelList.stream().collect(Collectors.toMap(DictModel::getValue, DictModel::getText));
|
|
|
+ String projectType = exCateGoryAndProjectTypeMap.getOrDefault(exCategory, Constant.PROJECT_TYPE_DIAGNOSIS_TREATMENT);
|
|
|
+ AdviceDetailsVO adviceDetailsVO = new AdviceDetailsVO();
|
|
|
+ adviceDetailsVO.setProject_code(afterIncidentDetailLog.getProject_code());
|
|
|
+ adviceDetailsVO.setProject_name(afterIncidentDetailLog.getProject_name());
|
|
|
+ adviceDetailsVO.setProject_type(projectType);
|
|
|
+ if(null != afterIncidentDetailLog.getPrice()) {
|
|
|
+ adviceDetailsVO.setPrice(afterIncidentDetailLog.getPrice().doubleValue());
|
|
|
+ }
|
|
|
+ adviceDetailsVO.setExpense_category(afterIncidentDetailLog.getExpenseCategory());
|
|
|
+ adviceDetailsVO.setDose_day(afterIncidentDetailLog.getDoseDay());
|
|
|
+ adviceDetailsVO.setDose_form(afterIncidentDetailLog.getDoseForm());
|
|
|
+ adviceDetailsVO.setDose_day(afterIncidentDetailLog.getDoseDay());
|
|
|
+ adviceDetailsVO.setSingle_dose_number(afterIncidentDetailLog.getSingleDoseNumber());
|
|
|
+ adviceDetailsVO.setSingle_dose_unit(afterIncidentDetailLog.getSingleDoseUnit());
|
|
|
+ adviceDetailsVO.setTake_frequence(afterIncidentDetailLog.getTakeFrequence());
|
|
|
+ adviceDetailsVO.setUse_day(afterIncidentDetailLog.getUseDay());
|
|
|
+ genHospItemsAndSendNotice(adviceDetailsVO, null);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 转换医保和医院编码
|
|
|
*
|