|
@@ -10,6 +10,8 @@ import org.jeecg.modules.medical.Constant;
|
|
|
import org.jeecg.modules.medical.entity.FactorEnchance;
|
|
import org.jeecg.modules.medical.entity.FactorEnchance;
|
|
|
import org.jeecg.modules.medical.entity.MedicalInsRuleInfo;
|
|
import org.jeecg.modules.medical.entity.MedicalInsRuleInfo;
|
|
|
import org.jeecg.modules.medical.entity.MedicalInsRuleProject;
|
|
import org.jeecg.modules.medical.entity.MedicalInsRuleProject;
|
|
|
|
|
+import org.jeecg.modules.medical.entity.MidIncidentAudit;
|
|
|
|
|
+import org.jeecg.modules.medical.entity.MidIncidentWarningVO;
|
|
|
import org.jeecg.modules.medical.entity.RuleAttr;
|
|
import org.jeecg.modules.medical.entity.RuleAttr;
|
|
|
import org.jeecg.modules.medical.entity.RuleFactorRela;
|
|
import org.jeecg.modules.medical.entity.RuleFactorRela;
|
|
|
import org.jeecg.modules.medical.ruleengine.plugin.InterfItemListPlugin;
|
|
import org.jeecg.modules.medical.ruleengine.plugin.InterfItemListPlugin;
|
|
@@ -19,6 +21,7 @@ import org.jeecg.modules.medical.service.IFactorCondRelaService;
|
|
|
import org.jeecg.modules.medical.service.IFactorEnchanceService;
|
|
import org.jeecg.modules.medical.service.IFactorEnchanceService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleInfoService;
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleInfoService;
|
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleProjectService;
|
|
import org.jeecg.modules.medical.service.IMedicalInsRuleProjectService;
|
|
|
|
|
+import org.jeecg.modules.medical.service.IMidIncidentAuditService;
|
|
|
import org.jeecg.modules.medical.service.IRuleAttrService;
|
|
import org.jeecg.modules.medical.service.IRuleAttrService;
|
|
|
import org.jeecg.modules.medical.service.IRuleFactorRelaService;
|
|
import org.jeecg.modules.medical.service.IRuleFactorRelaService;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
@@ -28,6 +31,7 @@ import org.springframework.stereotype.Component;
|
|
|
|
|
|
|
|
import javax.annotation.PostConstruct;
|
|
import javax.annotation.PostConstruct;
|
|
|
import java.util.ArrayList;
|
|
import java.util.ArrayList;
|
|
|
|
|
+import java.util.Date;
|
|
|
import java.util.HashMap;
|
|
import java.util.HashMap;
|
|
|
import java.util.List;
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
import java.util.Map;
|
|
@@ -61,6 +65,10 @@ public class RuleEngine {
|
|
|
private RedisTemplate redisTemplate;
|
|
private RedisTemplate redisTemplate;
|
|
|
@Autowired
|
|
@Autowired
|
|
|
InterfItemListPlugin interfItemListPlugin;
|
|
InterfItemListPlugin interfItemListPlugin;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ IMidIncidentAuditService midIncidentAuditService;
|
|
|
|
|
+
|
|
|
|
|
+ public static ThreadLocal<MidIncidentWarningVO> midIncidentWarningVOThreadLocal = new ThreadLocal<>();
|
|
|
|
|
|
|
|
@PostConstruct
|
|
@PostConstruct
|
|
|
public void initMedicalInsRule() {
|
|
public void initMedicalInsRule() {
|
|
@@ -124,17 +132,43 @@ public class RuleEngine {
|
|
|
return null;
|
|
return null;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
- public Result dealInterfaceEngin(String intefName, Map<String, Object> paramMap) {
|
|
|
|
|
- List<RuleAttr> ruleAttrList = ruleAttrService.lambdaQuery().eq(RuleAttr::getInterfName, intefName).list();
|
|
|
|
|
- List<Integer> medicalInsRuleInfoIdList = getMedicalInsRuleInfoIdByIntef(intefName, paramMap, ruleAttrList);
|
|
|
|
|
- List<Map<String, Object>> itemList = interfItemListPlugin.findProIntersection(paramMap, ruleAttrList);
|
|
|
|
|
- for(Map<String, Object> itemMap : itemList){
|
|
|
|
|
- runEngine(itemMap, medicalInsRuleInfoIdList);
|
|
|
|
|
|
|
+ public Result dealMidInterfaceEngin(String intefName, Map<String, Object> paramMap, MidIncidentWarningVO midIncidentWarningVO) {
|
|
|
|
|
+ midIncidentWarningVOThreadLocal.set(midIncidentWarningVO);
|
|
|
|
|
+ try {
|
|
|
|
|
+ List<RuleAttr> ruleAttrList = ruleAttrService.lambdaQuery().eq(RuleAttr::getInterfName, intefName).list();
|
|
|
|
|
+ List<Integer> medicalInsRuleInfoIdList = getMedicalInsRuleInfoIdByIntef(intefName, paramMap, ruleAttrList);
|
|
|
|
|
+ List<Map<String, Object>> itemList = interfItemListPlugin.findProIntersection(paramMap, ruleAttrList);
|
|
|
|
|
+
|
|
|
|
|
+ for (Map<String, Object> itemMap : itemList) {
|
|
|
|
|
+ runEngine(itemMap, medicalInsRuleInfoIdList);
|
|
|
|
|
+ }
|
|
|
|
|
+ }finally {
|
|
|
|
|
+ midIncidentWarningVOThreadLocal.remove();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
return Result.ok();
|
|
return Result.ok();
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ public void insertMidWarning(MedicalInsRuleInfo medicalInsRuleInfo){
|
|
|
|
|
+ MidIncidentWarningVO midIncidentWarningVO = RuleEngine.midIncidentWarningVOThreadLocal.get();
|
|
|
|
|
+ MidIncidentAudit midIncidentAudit = new MidIncidentAudit();
|
|
|
|
|
+ midIncidentAudit.setMedicalDeptCode(midIncidentWarningVO.getMedical_dept_code());
|
|
|
|
|
+ midIncidentAudit.setMedicalDeptName(midIncidentWarningVO.getMedical_dept_name());
|
|
|
|
|
+ Date date = new Date(System.currentTimeMillis());
|
|
|
|
|
+ midIncidentAudit.setCreateTime(date);
|
|
|
|
|
+ midIncidentAudit.setDoctorName(midIncidentWarningVO.getDoctor_name());
|
|
|
|
|
+ midIncidentAudit.setDoctorId(midIncidentWarningVO.getDoctor_code());
|
|
|
|
|
+ midIncidentAudit.setPatientId(midIncidentWarningVO.getPatient_id());
|
|
|
|
|
+ midIncidentAudit.setPatientName(midIncidentWarningVO.getPatient_name());
|
|
|
|
|
+ midIncidentAudit.setMedicalInsRuleInfoId(medicalInsRuleInfo.getId());
|
|
|
|
|
+ midIncidentAudit.setMedicalInsRuleInfoCode(medicalInsRuleInfo.getRuleCode());
|
|
|
|
|
+ midIncidentAudit.setMedicalInsRuleInfoName(medicalInsRuleInfo.getRuleName());
|
|
|
|
|
+ midIncidentAudit.setViolationLevel(medicalInsRuleInfo.getViolationLevel());
|
|
|
|
|
+ midIncidentAudit.setTreatmentType(medicalInsRuleInfo.getTreatmentType());
|
|
|
|
|
+ midIncidentAudit.setNoticeType("事中预警");
|
|
|
|
|
+ midIncidentAuditService.save(midIncidentAudit);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
public List<Integer> getMedicalInsRuleInfoIdByIntef(String intefName, Map<String, Object> paramMap, List<RuleAttr> ruleAttrList) {
|
|
public List<Integer> getMedicalInsRuleInfoIdByIntef(String intefName, Map<String, Object> paramMap, List<RuleAttr> ruleAttrList) {
|
|
|
|
|
|
|
|
List<Integer> medicalIdList = new ArrayList<>();
|
|
List<Integer> medicalIdList = new ArrayList<>();
|