|
@@ -15,7 +15,6 @@ import com.diagbot.facade.NeoFacade;
|
|
|
import com.diagbot.facade.TranLisConfigIcssFacade;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.RedisUtil;
|
|
|
-import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.IcssVo;
|
|
|
import com.diagbot.vo.NeoPushVO;
|
|
|
import com.diagbot.vo.PushVO;
|
|
@@ -53,37 +52,49 @@ public class PushProcess {
|
|
|
RedisUtil redisUtil;
|
|
|
|
|
|
|
|
|
- public PushDTO processIcss(PushVO pushVo){
|
|
|
+ public PushDTO processIcss(PushVO pushVo) {
|
|
|
|
|
|
- List<Item> diag1 = pushVo.getDiag();
|
|
|
int length = pushVo.getLength();
|
|
|
Map<String, List<String>> typeWords = Maps.newHashMap();
|
|
|
List<String> ruleTypeList = Arrays.asList(pushVo.getFeatureType().split(","));
|
|
|
List<String> pushDiags = Lists.newArrayList();
|
|
|
+ Map<String, Integer> diag_sign = new LinkedHashMap<>();
|
|
|
PushDTO pushDTO = new PushDTO();
|
|
|
IcssVo icssVo = pushVo2IcssVo(pushVo);
|
|
|
// String s = JSONObject.toJSONString(icssVo);
|
|
|
- if((StringUtils.isNotBlank(icssVo.getChief()) && icssVo.getChief().trim().equals("呼吸困难"))
|
|
|
- || (StringUtils.isNotBlank(icssVo.getSymptom()) && icssVo.getSymptom().trim().equals("呼吸困难"))){
|
|
|
+ if ((StringUtils.isNotBlank(icssVo.getChief()) && icssVo.getChief().trim().equals("呼吸困难"))
|
|
|
+ || (StringUtils.isNotBlank(icssVo.getSymptom()) && icssVo.getSymptom().trim().equals("呼吸困难"))) {
|
|
|
icssVo.setChief("呼吸困难。");
|
|
|
}
|
|
|
Response<ResponseData> annotation = icssPushServiceClient.getAnnotation(icssVo);
|
|
|
- if(annotation != null){
|
|
|
+ if (annotation != null) {
|
|
|
ResponseData data = annotation.getData();
|
|
|
- if(data != null){
|
|
|
+ if (data != null) {
|
|
|
Map<String, Map<String, String>> inputs = data.getInputs();
|
|
|
- if(MapUtils.isNotEmpty(inputs)){
|
|
|
+ if (MapUtils.isNotEmpty(inputs)) {
|
|
|
List<String> words = new ArrayList<>(inputs.keySet());
|
|
|
- typeWords.put(StandConvertEnum.symptom.toString(),words);
|
|
|
- typeWords.put(StandConvertEnum.disease.toString(),words);
|
|
|
- typeWords.put(StandConvertEnum.pacs.toString(),words);
|
|
|
- typeWords.put(StandConvertEnum.lis.toString(),words);
|
|
|
- typeWords.put(StandConvertEnum.vital.toString(),words);
|
|
|
+ typeWords.put(StandConvertEnum.symptom.toString(), words);
|
|
|
+ typeWords.put(StandConvertEnum.disease.toString(), words);
|
|
|
+ typeWords.put(StandConvertEnum.pacs.toString(), words);
|
|
|
+ typeWords.put(StandConvertEnum.lis.toString(), words);
|
|
|
+ typeWords.put(StandConvertEnum.vital.toString(), words);
|
|
|
}
|
|
|
List<FeatureRate> dis = data.getDis();
|
|
|
- if(ListUtil.isNotEmpty(dis)){
|
|
|
+ if (ListUtil.isNotEmpty(dis)) {
|
|
|
pushDiags = dis.stream().filter(x -> x.getDesc() == null || x.getDesc().contains("确诊") || x.getDesc().contains("拟诊"))
|
|
|
- .map(x -> x.getFeatureName()).collect(Collectors.toList());
|
|
|
+ .map(x -> {
|
|
|
+ String diag = x.getFeatureName();
|
|
|
+ Integer sign = 0;
|
|
|
+ Map<String, Object> diag_signs = (Map<String, Object>) redisUtil.get(RedisEnum.diseaseCorrespond.getName() + x.getFeatureName());
|
|
|
+ if (MapUtils.isNotEmpty(diag_signs)) {
|
|
|
+ diag = (String) diag_signs.get("diag_icd");
|
|
|
+ sign = (Integer) diag_signs.get("sign");
|
|
|
+ }
|
|
|
+ diag_sign.put(diag, sign);
|
|
|
+ return diag;
|
|
|
+ }
|
|
|
+ )
|
|
|
+ .collect(Collectors.toList());
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -94,34 +105,19 @@ public class PushProcess {
|
|
|
TreatDTO treatDTO = new TreatDTO();
|
|
|
treatDTO.setName(diaeaseName.getName());
|
|
|
String uniqueName = diaeaseName.getUniqueName();
|
|
|
- uniqueName = StringUtils.isNotBlank(uniqueName)?uniqueName:diaeaseName.getName();
|
|
|
+ uniqueName = StringUtils.isNotBlank(uniqueName) ? uniqueName : diaeaseName.getName();
|
|
|
treatDTO.setUniqueName(uniqueName);
|
|
|
- /*Map<String,List<String>> reverseInfoByDisName = neoFacade.reverseInfoByDisName(uniqueName);
|
|
|
- if(reverseInfoByDisName.containsKey(StaticTypeEnum.DRUG.getName())){
|
|
|
- treatDTO.setMedicineTreat(reverseInfoByDisName.get(StaticTypeEnum.DRUG.getName()).stream().map(x -> {
|
|
|
- PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
- pushBaseDTO.setName(x);
|
|
|
- return pushBaseDTO;
|
|
|
- }).collect(Collectors.toList()));
|
|
|
- }
|
|
|
- if(reverseInfoByDisName.containsKey(StaticTypeEnum.OPT.getName())){
|
|
|
- treatDTO.setOperaterTreat(reverseInfoByDisName.get(StaticTypeEnum.OPT.getName()).stream().map(x -> {
|
|
|
- PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
- pushBaseDTO.setName(x);
|
|
|
- return pushBaseDTO;
|
|
|
- }).collect(Collectors.toList()));
|
|
|
- }*/
|
|
|
collect.add(treatDTO);
|
|
|
pushDTO.setTreat(collect);
|
|
|
}
|
|
|
- Map<String,List<String>> reverseInfoByDisName = null;
|
|
|
+ Map<String, List<String>> reverseInfoByDisName = null;
|
|
|
//推送治疗
|
|
|
- if(diaeaseName != null){
|
|
|
+ if (diaeaseName != null) {
|
|
|
String uniqueName = diaeaseName.getUniqueName();
|
|
|
- uniqueName = StringUtils.isNotBlank(uniqueName)?uniqueName:diaeaseName.getName();
|
|
|
+ uniqueName = StringUtils.isNotBlank(uniqueName) ? uniqueName : diaeaseName.getName();
|
|
|
reverseInfoByDisName = neoFacade.reverseInfoByDisName(uniqueName);
|
|
|
}
|
|
|
- if(reverseInfoByDisName != null){
|
|
|
+ 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();
|
|
@@ -137,16 +133,16 @@ public class PushProcess {
|
|
|
}).collect(Collectors.toList()));
|
|
|
}
|
|
|
}
|
|
|
- if(ListUtil.isNotEmpty(icssVo.getDiagOrder())){
|
|
|
+ if (ListUtil.isNotEmpty(icssVo.getDiagOrder())) {
|
|
|
List<PreResult> diagOrder = icssVo.getDiagOrder();
|
|
|
//把第一个推送出来的诊断set到diagOrder中,再反推
|
|
|
NeoPushVO pushVO = new NeoPushVO();
|
|
|
DiagVo diagVo = new DiagVo();
|
|
|
- diagVo.setDiags(diagOrder.stream().map(x ->{
|
|
|
+ diagVo.setDiags(diagOrder.stream().map(x -> {
|
|
|
String name = x.getName();
|
|
|
Diag diag = new Diag();
|
|
|
- String o = (String)redisUtil.get(RedisEnum.diseaseCorrespond.getName() + name);
|
|
|
- name = StringUtil.isNotBlank(o)?o:name;
|
|
|
+ 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;
|
|
|
diag.setName(name);
|
|
|
return diag;
|
|
|
}).collect(Collectors.toList()));
|
|
@@ -155,11 +151,25 @@ public class PushProcess {
|
|
|
}
|
|
|
try {
|
|
|
boolean allFieldNull = isAllFieldNull(pushDTO);
|
|
|
- if(allFieldNull){
|
|
|
+ if (allFieldNull) {
|
|
|
if (ListUtil.isNotEmpty(pushDiags)) {
|
|
|
//先把所有疾病推出来
|
|
|
if (ruleTypeList.contains("7")) {
|
|
|
- List<PushBaseDTO> diseeases = pushDiags.stream().map(x -> {
|
|
|
+ if(MapUtils.isNotEmpty(diag_sign)){
|
|
|
+ Map.Entry<String, Integer> first = diag_sign.entrySet().stream().findFirst().get();
|
|
|
+ if (first.getValue() == 1){
|
|
|
+ List<String> firstdiag = Lists.newArrayList(first.getKey());
|
|
|
+ List<PushBaseDTO> collect_highrisk = firstdiag.stream().map(x -> {
|
|
|
+ PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
+ pushBaseDTO.setName(x);
|
|
|
+ return pushBaseDTO;
|
|
|
+ }).collect(Collectors.toList());
|
|
|
+ dis.put(DiseaseTypeEnum.highriskDis.getName(), collect_highrisk);
|
|
|
+ }
|
|
|
+
|
|
|
+ }
|
|
|
+
|
|
|
+ List<PushBaseDTO> diseeases = pushDiags.stream().map(x -> {
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
pushBaseDTO.setName(x);
|
|
|
return pushBaseDTO;
|
|
@@ -172,7 +182,7 @@ public class PushProcess {
|
|
|
//把第一个推送出来的诊断set到diagOrder中,再反推
|
|
|
NeoPushVO pushVO = new NeoPushVO();
|
|
|
DiagVo diagVo = new DiagVo();
|
|
|
- diagVo.setDiags(pushDiags.stream().map(x ->{
|
|
|
+ diagVo.setDiags(pushDiags.stream().map(x -> {
|
|
|
Diag diag = new Diag();
|
|
|
diag.setName(x);
|
|
|
return diag;
|
|
@@ -188,13 +198,11 @@ public class PushProcess {
|
|
|
}
|
|
|
|
|
|
|
|
|
-
|
|
|
-
|
|
|
return pushDTO;
|
|
|
}
|
|
|
|
|
|
//判断该对象是否: 返回ture表示所有属性为null 返回false表示不是所有属性都是null
|
|
|
- public static boolean isAllFieldNull(Object obj) throws Exception{
|
|
|
+ public static boolean isAllFieldNull(Object obj) throws Exception {
|
|
|
List<String> params = Lists.newArrayList("operations", "medicines", "treat");
|
|
|
Class stuCla = (Class) obj.getClass();// 得到类对象
|
|
|
Field[] fs = stuCla.getDeclaredFields();//得到属性集合
|
|
@@ -203,7 +211,7 @@ public class PushProcess {
|
|
|
f.setAccessible(true); // 设置属性是可以访问的(私有的也可以)
|
|
|
String name = f.getName();
|
|
|
Object val = f.get(obj);// 得到此属性的值
|
|
|
- if(val!=null && !params.contains(name)) {//只要有1个属性不为空,那么就不是所有的属性值都为空
|
|
|
+ if (val != null && !params.contains(name)) {//只要有1个属性不为空,那么就不是所有的属性值都为空
|
|
|
flag = false;
|
|
|
break;
|
|
|
}
|
|
@@ -213,17 +221,18 @@ public class PushProcess {
|
|
|
|
|
|
/**
|
|
|
* pushVo转Icss入参
|
|
|
+ *
|
|
|
* @param pushVo
|
|
|
* @return
|
|
|
*/
|
|
|
- public IcssVo pushVo2IcssVo(PushVO pushVo){
|
|
|
+ public IcssVo pushVo2IcssVo(PushVO pushVo) {
|
|
|
IcssVo icssVo = new IcssVo();
|
|
|
icssVo.setAge(new Double(pushVo.getAgeNum()).intValue());
|
|
|
String sexs = "";
|
|
|
Integer sex = pushVo.getSex();
|
|
|
- if(sex == 1){
|
|
|
+ if (sex == 1) {
|
|
|
sexs = "M";
|
|
|
- }else if(sex == 2){
|
|
|
+ } else if (sex == 2) {
|
|
|
sexs = "F";
|
|
|
}
|
|
|
icssVo.setSex(sexs);
|
|
@@ -232,32 +241,32 @@ public class PushProcess {
|
|
|
icssVo.setVital(pushVo.getVital());
|
|
|
icssVo.setPasts(pushVo.getPasts());
|
|
|
icssVo.setPersonal(pushVo.getPersonal());
|
|
|
- icssVo.setFeatureType(pushVo.getFeatureType()+",7");
|
|
|
+ icssVo.setFeatureType(pushVo.getFeatureType() + ",7");
|
|
|
|
|
|
List<Lis> lis = pushVo.getLis();
|
|
|
lis = tranLisConfigIcssFacade.addLisUniqueName(lis, "A001");
|
|
|
- List<PreResult> lis_icss = lis.stream().map(x ->{
|
|
|
+ List<PreResult> lis_icss = lis.stream().map(x -> {
|
|
|
PreResult instantiate = BeanUtils.instantiate(PreResult.class);
|
|
|
- BeanUtils.copyProperties(x,instantiate);
|
|
|
- instantiate.setValue(x.getValue()==null?"":x.getValue().toString());
|
|
|
- instantiate.setMaxValue(x.getMaxValue()==null?"":x.getMaxValue().toString());
|
|
|
- instantiate.setMinValue(x.getMinValue()==null?"":x.getMinValue().toString());
|
|
|
+ BeanUtils.copyProperties(x, instantiate);
|
|
|
+ instantiate.setValue(x.getValue() == null ? "" : x.getValue().toString());
|
|
|
+ instantiate.setMaxValue(x.getMaxValue() == null ? "" : x.getMaxValue().toString());
|
|
|
+ instantiate.setMinValue(x.getMinValue() == null ? "" : x.getMinValue().toString());
|
|
|
return instantiate;
|
|
|
}).collect(Collectors.toList());
|
|
|
icssVo.setLis(lis_icss);
|
|
|
|
|
|
List<Pacs> pacs = pushVo.getPacs();
|
|
|
- if(ListUtil.isNotEmpty(pacs)){
|
|
|
- List<PreResult> pacs_icss = pacs.stream().map(x ->{
|
|
|
+ if (ListUtil.isNotEmpty(pacs)) {
|
|
|
+ List<PreResult> pacs_icss = pacs.stream().map(x -> {
|
|
|
PreResult instantiate = new PreResult();
|
|
|
- BeanUtils.copyProperties(x,instantiate);
|
|
|
+ BeanUtils.copyProperties(x, instantiate);
|
|
|
return instantiate;
|
|
|
}).collect(Collectors.toList());
|
|
|
icssVo.setPacs(pacs_icss);
|
|
|
}
|
|
|
|
|
|
- if(ListUtil.isNotEmpty(pushVo.getDiag())){
|
|
|
- List<PreResult> diagOrder = pushVo.getDiag().stream().map(x ->{
|
|
|
+ if (ListUtil.isNotEmpty(pushVo.getDiag())) {
|
|
|
+ List<PreResult> diagOrder = pushVo.getDiag().stream().map(x -> {
|
|
|
String name = x.getName();
|
|
|
PreResult preResult = new PreResult();
|
|
|
preResult.setName(name);
|
|
@@ -281,7 +290,7 @@ public class PushProcess {
|
|
|
if (ListUtil.isNotEmpty(push)) {
|
|
|
//先把所有疾病推出来
|
|
|
if (ruleTypeList.contains("7")) {
|
|
|
- List<PushBaseDTO> diseeases = push.stream().map(x -> {
|
|
|
+ List<PushBaseDTO> diseeases = push.stream().map(x -> {
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|
|
|
pushBaseDTO.setName(x);
|
|
|
return pushBaseDTO;
|
|
@@ -413,7 +422,7 @@ public class PushProcess {
|
|
|
private List<PushBaseDTO> getPackagePushBaseDTO(Map<String, List<String>> typeWords, List<String> symptoms, StandConvertEnum symptom) {
|
|
|
List<PushBaseDTO> symptomPush = symptoms.stream()
|
|
|
.map(x -> {
|
|
|
- x = ListUtil.isNotEmpty(typeWords.get(symptom.toString()))?!typeWords.get(symptom.toString()).contains(x)?x:"":x;
|
|
|
+ x = ListUtil.isNotEmpty(typeWords.get(symptom.toString())) ? !typeWords.get(symptom.toString()).contains(x) ? x : "" : x;
|
|
|
return x;
|
|
|
}).filter(x -> StringUtils.isNotBlank(x)).map(x -> {
|
|
|
PushBaseDTO pushBaseDTO = new PushBaseDTO();
|