|
@@ -50,7 +50,6 @@ import com.diagbot.vo.IcssVo;
|
|
|
import com.diagbot.vo.NeoPushVO;
|
|
|
import com.diagbot.vo.PushVO;
|
|
|
import com.diagbot.vo.ReverseVO;
|
|
|
-import com.diagbot.vo.StandConvert;
|
|
|
import com.diagbot.vo.neoPushEntity.Diag;
|
|
|
import com.diagbot.vo.neoPushEntity.DiagVo;
|
|
|
import com.google.common.collect.Lists;
|
|
@@ -67,7 +66,6 @@ import java.util.Arrays;
|
|
|
import java.util.Collections;
|
|
|
import java.util.HashMap;
|
|
|
import java.util.LinkedHashMap;
|
|
|
-import java.util.LinkedHashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Map;
|
|
|
import java.util.stream.Collectors;
|
|
@@ -117,7 +115,7 @@ public class PushProcess {
|
|
|
Map<String, Integer> diag_sign = new LinkedHashMap<>();
|
|
|
PushDTO pushDTO = new PushDTO();
|
|
|
IcssVo icssVo = pushVo2IcssVo(pushVo);
|
|
|
-// String s = JSONObject.toJSONString(icssVo);
|
|
|
+ // String s = JSONObject.toJSONString(icssVo);
|
|
|
if ((StringUtils.isNotBlank(icssVo.getChief()) && icssVo.getChief().trim().equals("呼吸困难"))
|
|
|
|| (StringUtils.isNotBlank(icssVo.getSymptom()) && icssVo.getSymptom().trim().equals("呼吸困难"))) {
|
|
|
icssVo.setChief("呼吸困难。");
|
|
@@ -176,15 +174,15 @@ public class PushProcess {
|
|
|
DiseaseItemVO diseaseItemVO = new DiseaseItemVO();
|
|
|
diseaseItemVO.setDiseaseName(uniqueName);
|
|
|
Map<Long, List<String>> items = klRelationFacade.getItemByDiseaseMap(diseaseItemVO);
|
|
|
- if (MapUtils.isNotEmpty(items)){
|
|
|
- if (ruleTypeList.contains("8") && ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.DRUG.getKey()))){
|
|
|
+ if (MapUtils.isNotEmpty(items)) {
|
|
|
+ if (ruleTypeList.contains("8") && ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.DRUG.getKey()))) {
|
|
|
pushDTO.setMedicines(items.get(PushRelationTypeEnum.DRUG.getKey()).stream().map(x -> {
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
pushBaseDTO.setName(x);
|
|
|
return pushBaseDTO;
|
|
|
}).collect(Collectors.toList()));
|
|
|
}
|
|
|
- if (ruleTypeList.contains("9") && ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.OPERATION.getKey()))){
|
|
|
+ if (ruleTypeList.contains("9") && ListUtil.isNotEmpty(items.get(PushRelationTypeEnum.OPERATION.getKey()))) {
|
|
|
pushDTO.setOperations(items.get(PushRelationTypeEnum.OPERATION.getKey()).stream().map(x -> {
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
pushBaseDTO.setName(x);
|
|
@@ -193,22 +191,22 @@ public class PushProcess {
|
|
|
}
|
|
|
}
|
|
|
}
|
|
|
-// if (reverseInfoByDisName != null) {
|
|
|
-// if (ruleTypeList.contains("8") && reverseInfoByDisName.containsKey(StaticTypeEnum.DRUG.getName())) {
|
|
|
-// pushDTO.setMedicines(reverseInfoByDisName.get(StaticTypeEnum.DRUG.getName()).stream().map(x -> {
|
|
|
-// PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
-// pushBaseDTO.setName(x);
|
|
|
-// return pushBaseDTO;
|
|
|
-// }).collect(Collectors.toList()));
|
|
|
-// }
|
|
|
-// if (ruleTypeList.contains("9") && reverseInfoByDisName.containsKey(StaticTypeEnum.OPT.getName())) {
|
|
|
-// pushDTO.setOperations(reverseInfoByDisName.get(StaticTypeEnum.OPT.getName()).stream().map(x -> {
|
|
|
-// PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
-// pushBaseDTO.setName(x);
|
|
|
-// return pushBaseDTO;
|
|
|
-// }).collect(Collectors.toList()));
|
|
|
-// }
|
|
|
-// }
|
|
|
+ // if (reverseInfoByDisName != null) {
|
|
|
+ // if (ruleTypeList.contains("8") && reverseInfoByDisName.containsKey(StaticTypeEnum.DRUG.getName())) {
|
|
|
+ // pushDTO.setMedicines(reverseInfoByDisName.get(StaticTypeEnum.DRUG.getName()).stream().map(x -> {
|
|
|
+ // PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
+ // pushBaseDTO.setName(x);
|
|
|
+ // return pushBaseDTO;
|
|
|
+ // }).collect(Collectors.toList()));
|
|
|
+ // }
|
|
|
+ // if (ruleTypeList.contains("9") && reverseInfoByDisName.containsKey(StaticTypeEnum.OPT.getName())) {
|
|
|
+ // pushDTO.setOperations(reverseInfoByDisName.get(StaticTypeEnum.OPT.getName()).stream().map(x -> {
|
|
|
+ // PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
+ // pushBaseDTO.setName(x);
|
|
|
+ // return pushBaseDTO;
|
|
|
+ // }).collect(Collectors.toList()));
|
|
|
+ // }
|
|
|
+ // }
|
|
|
if (ListUtil.isNotEmpty(icssVo.getDiagOrder())) {
|
|
|
List<PreResult> diagOrder = icssVo.getDiagOrder();
|
|
|
//把第一个推送出来的诊断set到diagOrder中,再反推
|
|
@@ -218,7 +216,7 @@ public class PushProcess {
|
|
|
String name = x.getName();
|
|
|
Diag diag = new Diag();
|
|
|
Map<String, Object> diag_signs = (Map<String, Object>) redisUtil.get(RedisEnum.diseaseCorrespond.getName() + name);
|
|
|
- name = MapUtils.isNotEmpty(diag_signs)? (String) diag_signs.get("diag_icd"):name;
|
|
|
+ name = MapUtils.isNotEmpty(diag_signs) ? (String) diag_signs.get("diag_icd") : name;
|
|
|
diag.setName(name);
|
|
|
return diag;
|
|
|
}).collect(Collectors.toList()));
|
|
@@ -233,9 +231,9 @@ public class PushProcess {
|
|
|
if (ListUtil.isNotEmpty(pushDiags)) {
|
|
|
//先把所有疾病推出来
|
|
|
if (ruleTypeList.contains("7")) {
|
|
|
- if(MapUtils.isNotEmpty(diag_sign)){
|
|
|
+ if (MapUtils.isNotEmpty(diag_sign)) {
|
|
|
Map.Entry<String, Integer> first = diag_sign.entrySet().stream().findFirst().get();
|
|
|
- if (first.getValue() == 1){
|
|
|
+ if (first.getValue() == 1) {
|
|
|
List<String> firstdiag = Lists.newArrayList(first.getKey());
|
|
|
List<PushBaseDTO> collect_highrisk = firstdiag.stream().map(x -> {
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
@@ -359,26 +357,35 @@ public class PushProcess {
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
- * 反推
|
|
|
+ * 根据诊断反推(根据性别和年龄过滤,并根据界面已有信息过滤,根据长度截取)
|
|
|
*
|
|
|
+ * @param pushDTO
|
|
|
* @param pushVo
|
|
|
- * @param standConvertMap
|
|
|
* @param wordCrfDTO
|
|
|
* @return
|
|
|
*/
|
|
|
- public PushDTO process(PushDTO pushDTO, PushVO pushVo, WordCrfDTO wordCrfDTO) {
|
|
|
- int length = pushVo.getLength();
|
|
|
- // 需要获取的类型
|
|
|
- List<String> ruleTypeList = Arrays.asList(pushVo.getFeatureType().split(","));
|
|
|
+ public void process(PushDTO pushDTO, PushVO pushVo, WordCrfDTO wordCrfDTO) {
|
|
|
+ // 生成反推的入参
|
|
|
+ List<String> ruleTypeList = Lists.newArrayList(pushVo.getFeatureType().split(",")); // 需要获取的类型
|
|
|
+ Map<String, List<PushBaseDTO>> dis = pushDTO.getDis();
|
|
|
+ ReverseVO reverseVO = generateReverseVO(wordCrfDTO, ruleTypeList, dis);
|
|
|
+ if (StringUtil.isBlank(reverseVO.getLibName())) {
|
|
|
+ pushDTO.getDebug().put("反推依据诊断", "无"); // 调试信息
|
|
|
+ return;
|
|
|
+ } else {
|
|
|
+ pushDTO.getDebug().put("反推依据诊断", reverseVO.getLibName()); // 调试信息
|
|
|
+ }
|
|
|
+ // 查询数据
|
|
|
+ List<ReverseDTO> reverseDTOList = conceptInfoFacade.getReverseFac(reverseVO);
|
|
|
// 界面过滤元素
|
|
|
Map<String, List<String>> typeWords = filterWords(wordCrfDTO);
|
|
|
- // 根据诊断反推(根据性别和年龄过滤,并根据界面已有信息过滤,根据长度截取)
|
|
|
- reversePushPackage(pushDTO, ruleTypeList, typeWords, wordCrfDTO, length);
|
|
|
- return pushDTO;
|
|
|
+ // 设置推送信息(过滤已有)
|
|
|
+ setPushItem(pushDTO, ruleTypeList, typeWords, reverseDTOList, pushVo.getLength());
|
|
|
}
|
|
|
|
|
|
/**
|
|
|
* 根据诊断依据推送疾病
|
|
|
+ *
|
|
|
* @param wordCrfDTO
|
|
|
*/
|
|
|
public PushDTO pushDiagnose(WordCrfDTO wordCrfDTO) {
|
|
@@ -529,29 +536,6 @@ public class PushProcess {
|
|
|
return typeWordsMap;
|
|
|
}
|
|
|
|
|
|
- /**
|
|
|
- * 6.0 根据诊断反推其他信息
|
|
|
- *
|
|
|
- * @param pushDTO
|
|
|
- * @param ruleTypeList
|
|
|
- * @param typeWords
|
|
|
- * @param length
|
|
|
- */
|
|
|
- private void reversePushPackage(PushDTO pushDTO, List<String> ruleTypeList, Map<String, List<String>> typeWords, WordCrfDTO wordCrfDTO, int length){
|
|
|
- Map<String, List<PushBaseDTO>> dis = pushDTO.getDis();
|
|
|
- // 生成反推的入参
|
|
|
- ReverseVO reverseVO = generateReverseVO(wordCrfDTO, ruleTypeList, dis);
|
|
|
- if (StringUtil.isEmpty(reverseVO.getLibName())) {
|
|
|
- return ;
|
|
|
- }
|
|
|
- pushDTO.getDebug().put("反推依据诊断", reverseVO.getLibName());
|
|
|
- // 查询数据
|
|
|
- List<ReverseDTO> reverseDTOList = conceptInfoFacade.getReverseFac(reverseVO);
|
|
|
-
|
|
|
- // 设置其他推送信息
|
|
|
- setPushItem(pushDTO, ruleTypeList, typeWords, reverseDTOList, length);
|
|
|
- }
|
|
|
-
|
|
|
/**
|
|
|
* 设置其他推送信息
|
|
|
*
|
|
@@ -628,7 +612,7 @@ public class PushProcess {
|
|
|
* 将名称列表生成推送返回类型
|
|
|
*
|
|
|
* @param nameList
|
|
|
- * @param length 最长个数
|
|
|
+ * @param length 最长个数
|
|
|
* @return
|
|
|
*/
|
|
|
public List<PushBaseDTO> getPushBaseDTO(List<String> nameList, int length) {
|
|
@@ -656,9 +640,6 @@ public class PushProcess {
|
|
|
*/
|
|
|
public ReverseVO generateReverseVO(WordCrfDTO wordCrfDTO, List<String> ruleTypeList, Map<String, List<PushBaseDTO>> dis) {
|
|
|
ReverseVO reverseVO = new ReverseVO();
|
|
|
- reverseVO.setAge(wordCrfDTO.getAgeNum());
|
|
|
- reverseVO.setSexType(wordCrfDTO.getSex());
|
|
|
- reverseVO.setLibType(LexiconEnum.Disease.getKey());
|
|
|
String disName = "";
|
|
|
// 按以下顺序获取一个诊断: 下的诊断->确诊->拟诊->警惕->可能
|
|
|
if (ListUtil.isNotEmpty(wordCrfDTO.getDiag())) {
|
|
@@ -675,32 +656,37 @@ public class PushProcess {
|
|
|
}
|
|
|
}
|
|
|
reverseVO.setLibName(disName);
|
|
|
-
|
|
|
- // 关联类型
|
|
|
- List<Integer> relationType = new ArrayList<>();
|
|
|
- if (ruleTypeList.contains("1")) {
|
|
|
- relationType.add(RelationshipEnum.R501.getKey()); // 主症状
|
|
|
- relationType.add(RelationshipEnum.R502.getKey()); // 次症状
|
|
|
- }
|
|
|
- if (ruleTypeList.contains("4")) {
|
|
|
- relationType.add(RelationshipEnum.R503.getKey()); // 查体结果
|
|
|
- }
|
|
|
- if (ruleTypeList.contains("5")) {
|
|
|
- relationType.add(RelationshipEnum.R504.getKey()); // 化验套餐
|
|
|
- }
|
|
|
- if (ruleTypeList.contains("6")) {
|
|
|
- relationType.add(RelationshipEnum.R505.getKey()); // 辅助检查项目
|
|
|
- }
|
|
|
- if (ruleTypeList.contains("7")) {
|
|
|
- relationType.add(RelationshipEnum.R508.getKey()); // 鉴别诊断
|
|
|
- }
|
|
|
- if (ruleTypeList.contains("8")) {
|
|
|
- relationType.add(RelationshipEnum.R506.getKey()); // 药品
|
|
|
- }
|
|
|
- if (ruleTypeList.contains("9")) {
|
|
|
- relationType.add(RelationshipEnum.R507.getKey()); // 手术
|
|
|
+ // 诊断名称不为空才反推
|
|
|
+ if (StringUtil.isNotBlank(disName)) {
|
|
|
+ reverseVO.setAge(wordCrfDTO.getAgeNum());
|
|
|
+ reverseVO.setSexType(wordCrfDTO.getSex());
|
|
|
+ reverseVO.setLibType(LexiconEnum.Disease.getKey());
|
|
|
+ // 关联类型
|
|
|
+ List<Integer> relationType = new ArrayList<>();
|
|
|
+ if (ruleTypeList.contains("1")) {
|
|
|
+ relationType.add(RelationshipEnum.R501.getKey()); // 主症状
|
|
|
+ relationType.add(RelationshipEnum.R502.getKey()); // 次症状
|
|
|
+ }
|
|
|
+ if (ruleTypeList.contains("4")) {
|
|
|
+ relationType.add(RelationshipEnum.R503.getKey()); // 查体结果
|
|
|
+ }
|
|
|
+ if (ruleTypeList.contains("5")) {
|
|
|
+ relationType.add(RelationshipEnum.R504.getKey()); // 化验套餐
|
|
|
+ }
|
|
|
+ if (ruleTypeList.contains("6")) {
|
|
|
+ relationType.add(RelationshipEnum.R505.getKey()); // 辅助检查项目
|
|
|
+ }
|
|
|
+ if (ruleTypeList.contains("7")) {
|
|
|
+ relationType.add(RelationshipEnum.R508.getKey()); // 鉴别诊断
|
|
|
+ }
|
|
|
+ if (ruleTypeList.contains("8")) {
|
|
|
+ relationType.add(RelationshipEnum.R506.getKey()); // 药品
|
|
|
+ }
|
|
|
+ if (ruleTypeList.contains("9")) {
|
|
|
+ relationType.add(RelationshipEnum.R507.getKey()); // 手术
|
|
|
+ }
|
|
|
+ reverseVO.setRelationType(relationType);
|
|
|
}
|
|
|
- reverseVO.setRelationType(relationType);
|
|
|
return reverseVO;
|
|
|
}
|
|
|
|