|
@@ -10,14 +10,12 @@ import com.diagbot.dto.NeoPushDTO;
|
|
|
import com.diagbot.dto.PushBaseDTO;
|
|
|
import com.diagbot.dto.PushDTO;
|
|
|
import com.diagbot.dto.ReverseDTO;
|
|
|
-import com.diagbot.dto.RuleBaseDTO;
|
|
|
import com.diagbot.dto.TreatDTO;
|
|
|
import com.diagbot.dto.WordCrfDTO;
|
|
|
import com.diagbot.dto.icss.FeatureRate;
|
|
|
import com.diagbot.dto.icss.Response;
|
|
|
import com.diagbot.dto.icss.ResponseData;
|
|
|
import com.diagbot.entity.PreResult;
|
|
|
-import com.diagbot.enums.BaseDiagnoseTypeEnum;
|
|
|
import com.diagbot.enums.DiagnoseTypeEnum;
|
|
|
import com.diagbot.enums.DiseaseTypeEnum;
|
|
|
import com.diagbot.enums.LexiconEnum;
|
|
@@ -33,7 +31,6 @@ import com.diagbot.facade.KlRelationFacade;
|
|
|
import com.diagbot.facade.LisConfigFacade;
|
|
|
import com.diagbot.facade.NeoFacade;
|
|
|
import com.diagbot.facade.TranLisConfigIcssFacade;
|
|
|
-import com.diagbot.model.entity.Clinical;
|
|
|
import com.diagbot.rule.AgeRule;
|
|
|
import com.diagbot.rule.CommonRule;
|
|
|
import com.diagbot.rule.GroupRule;
|
|
@@ -65,7 +62,6 @@ import org.springframework.stereotype.Component;
|
|
|
import java.lang.reflect.Field;
|
|
|
import java.util.ArrayList;
|
|
|
import java.util.Arrays;
|
|
|
-import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.LinkedHashMap;
|
|
|
import java.util.List;
|
|
@@ -496,63 +492,8 @@ public class PushProcess {
|
|
|
return pushDTO;
|
|
|
}
|
|
|
// 匹配的诊断依据规则
|
|
|
- List<Long> baseIdList = new ArrayList<>();
|
|
|
-
|
|
|
- /**---------------------------数据统一处理开始--------------------------------- */
|
|
|
- // 【临床表现数据来源】(主诉、现病史)
|
|
|
- List<Clinical> clinicals = commonFacade.getClinicalSource(wordCrfDTO);
|
|
|
- /**---------------------------数据统一处理结束--------------------------------- */
|
|
|
-
|
|
|
- // 规则处理
|
|
|
- for (BaseDiagnoseDTO base : diagnoselist) {
|
|
|
- RuleBaseDTO ruleBaseDTO = new RuleBaseDTO();
|
|
|
- BeanUtil.copyProperties(base, ruleBaseDTO);
|
|
|
- String baseIds = base.getIds();
|
|
|
- switch (BaseDiagnoseTypeEnum.getEnum(base.getBaseType())) {
|
|
|
- case equals: // 等于术语本身
|
|
|
- switch (LexiconEnum.getEnum(base.getBaseLibType())) {
|
|
|
- case Symptom: // 症状
|
|
|
- commonRule.compareNameWithPush(clinicals, ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case Disease: // 疾病【病史】
|
|
|
- commonRule.compareNameWithPush(wordCrfDTO.getPastLabel().getDiags(), ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case VitalResult: // 体格检查结果
|
|
|
- vitalRule.push(wordCrfDTO.getVitalLabel(), ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case Group: // 人群
|
|
|
- groupRule.push(wordCrfDTO, ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case PacsResult: // 辅助检查结果
|
|
|
- commonRule.compareItemWithPush(wordCrfDTO.getPacsLabel().getRes(), ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- case compare: // 比较
|
|
|
- switch (LexiconEnum.getEnum(base.getBaseLibType())) {
|
|
|
- case LisSubName: // 化验
|
|
|
- lisRule.push(wordCrfDTO.getLis(), ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case Age: // 年龄
|
|
|
- ageRule.push(wordCrfDTO, ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case Vital: // 体格检查项目
|
|
|
- vitalRule.push(wordCrfDTO.getVitalLabel(), ruleBaseDTO, baseIdList, baseIds);
|
|
|
- break;
|
|
|
- }
|
|
|
- break;
|
|
|
- case regexChiefSymptom: // 主诉现病史正则
|
|
|
- commonRule.getRegexResPush(wordCrfDTO.getChief() + wordCrfDTO.getSymptom(),
|
|
|
- base.getBaseEqValue(), baseIdList, baseIds);
|
|
|
- break;
|
|
|
- case regexPast: // 既往史正则
|
|
|
- commonRule.getRegexResPush(wordCrfDTO.getPasts() + wordCrfDTO.getPersonal() + wordCrfDTO.getMenstrual() + wordCrfDTO.getMarital() + wordCrfDTO.getFamily(),
|
|
|
- base.getBaseEqValue(), baseIdList, baseIds);
|
|
|
- break;
|
|
|
- }
|
|
|
- }
|
|
|
- // 根据诊断依据推送诊断
|
|
|
- Collections.sort(baseIdList); // id排序,方便调试查看
|
|
|
+ List<Long> baseIdList = commonRule.matchBase(wordCrfDTO, diagnoselist);
|
|
|
+
|
|
|
pushDTO.getDebug().put("诊断依据ID列表", StringUtils.join(baseIdList, ","));
|
|
|
Map<String, List<PushBaseDTO>> pushDiagnoseDTO = setPushDiagnose(wordCrfDTO, baseIdList);
|
|
|
pushDTO.setDis(pushDiagnoseDTO);
|