|
@@ -2,8 +2,8 @@ package com.diagbot.facade;
|
|
|
|
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.alibaba.fastjson.JSONObject;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
-import com.diagbot.client.AIServiceClient;
|
|
|
|
-import com.diagbot.client.HighRiskServiceClient;
|
|
|
|
|
|
+import com.diagbot.client.BigDataServiceClient;
|
|
|
|
+import com.diagbot.client.GraphServiceClient;
|
|
import com.diagbot.client.TranServiceClient;
|
|
import com.diagbot.client.TranServiceClient;
|
|
import com.diagbot.client.bean.FeatureRate;
|
|
import com.diagbot.client.bean.FeatureRate;
|
|
import com.diagbot.client.bean.GdbResponse;
|
|
import com.diagbot.client.bean.GdbResponse;
|
|
@@ -14,7 +14,6 @@ import com.diagbot.dto.PushDTO;
|
|
import com.diagbot.dto.PushEMRDTO;
|
|
import com.diagbot.dto.PushEMRDTO;
|
|
import com.diagbot.dto.PushKYJDTO;
|
|
import com.diagbot.dto.PushKYJDTO;
|
|
import com.diagbot.dto.QuestionDTO;
|
|
import com.diagbot.dto.QuestionDTO;
|
|
-import com.diagbot.dto.RespDTO;
|
|
|
|
import com.diagbot.entity.DeptInfo;
|
|
import com.diagbot.entity.DeptInfo;
|
|
import com.diagbot.entity.DeptVital;
|
|
import com.diagbot.entity.DeptVital;
|
|
import com.diagbot.entity.QuestionInfo;
|
|
import com.diagbot.entity.QuestionInfo;
|
|
@@ -58,7 +57,7 @@ import java.util.stream.Collectors;
|
|
@Component
|
|
@Component
|
|
public class PushFacade {
|
|
public class PushFacade {
|
|
@Autowired
|
|
@Autowired
|
|
- private AIServiceClient aiServiceClient;
|
|
|
|
|
|
+ private BigDataServiceClient bigDataServiceClient;
|
|
@Autowired
|
|
@Autowired
|
|
private QuestionFacade questionFacade;
|
|
private QuestionFacade questionFacade;
|
|
@Autowired
|
|
@Autowired
|
|
@@ -68,7 +67,7 @@ public class PushFacade {
|
|
@Autowired
|
|
@Autowired
|
|
private TreatmentFacade treatmentFacade;
|
|
private TreatmentFacade treatmentFacade;
|
|
@Autowired
|
|
@Autowired
|
|
- private HighRiskServiceClient highRiskServiceClient;
|
|
|
|
|
|
+ private GraphServiceClient graphServiceClient;
|
|
@Autowired
|
|
@Autowired
|
|
private LisMappingFacade lisMappingFacade;
|
|
private LisMappingFacade lisMappingFacade;
|
|
@Autowired
|
|
@Autowired
|
|
@@ -85,12 +84,14 @@ public class PushFacade {
|
|
searchData.setAge(pushVO.getAge());
|
|
searchData.setAge(pushVO.getAge());
|
|
searchData.setSymptom(pushVO.getSymptom());
|
|
searchData.setSymptom(pushVO.getSymptom());
|
|
searchData.setVital(pushVO.getVital());
|
|
searchData.setVital(pushVO.getVital());
|
|
-
|
|
|
|
-
|
|
|
|
searchData.setPacs(pushVO.getPacs());
|
|
searchData.setPacs(pushVO.getPacs());
|
|
searchData.setPast(pushVO.getPast());
|
|
searchData.setPast(pushVO.getPast());
|
|
searchData.setOther(pushVO.getOther());
|
|
searchData.setOther(pushVO.getOther());
|
|
searchData.setDiag(pushVO.getDiag());
|
|
searchData.setDiag(pushVO.getDiag());
|
|
|
|
+ searchData.setFeatureType(pushVO.getFeatureType());
|
|
|
|
+ searchData.setSysCode("1");
|
|
|
|
+ searchData.setLength(10);
|
|
|
|
+
|
|
switch (pushVO.getSex()) {
|
|
switch (pushVO.getSex()) {
|
|
case 1:
|
|
case 1:
|
|
searchData.setSex("M");
|
|
searchData.setSex("M");
|
|
@@ -105,28 +106,29 @@ public class PushFacade {
|
|
|
|
|
|
//化验项映射,转公表
|
|
//化验项映射,转公表
|
|
if (pushVO.getLis().size() > 0) {
|
|
if (pushVO.getLis().size() > 0) {
|
|
- Map<String, Map<String, String>> lisConfigMap = lisMappingFacade.getLisMapping();
|
|
|
|
|
|
+ Map<String, Map<String, String>> lisConfigMap = lisMappingFacade.getLisMapping_NotEmptyItemName();
|
|
|
|
+ Map<String, String> lisConfigWithEmptyItemNameMap = lisMappingFacade.getLisConfig_EmptyItemName();
|
|
for (LisResultVO lisResultVO : pushVO.getLis()) {
|
|
for (LisResultVO lisResultVO : pushVO.getLis()) {
|
|
- //source=0 icss页面数据,source=1 外部导入数据
|
|
|
|
|
|
+ //source=0 icss页面数据,source=1 外部导入数据,外部导入数据不处理
|
|
if (!lisResultVO.getSource().equals(LisSourceEnum.Inner.getKey())) {
|
|
if (!lisResultVO.getSource().equals(LisSourceEnum.Inner.getKey())) {
|
|
continue;
|
|
continue;
|
|
}
|
|
}
|
|
- if (StringUtil.isNotBlank(lisResultVO.getName()) && lisConfigMap.get(lisResultVO.getName()) != null) {
|
|
|
|
- Map<String, String> detailMap = lisConfigMap.get(lisResultVO.getName());
|
|
|
|
- if (StringUtil.isNotBlank(lisResultVO.getDetailName()) && StringUtil.isNotBlank(detailMap.get(lisResultVO.getDetailName()))) {
|
|
|
|
- lisResultVO.setUniqueName(detailMap.get(lisResultVO.getDetailName()));
|
|
|
|
|
|
+ if (StringUtil.isNotBlank(lisResultVO.getName())) {
|
|
|
|
+ if (StringUtil.isNotBlank(lisResultVO.getDetailName())) {
|
|
|
|
+ Map<String, String> detailMap = lisConfigMap.get(lisResultVO.getName());
|
|
|
|
+ if (StringUtil.isNotBlank(detailMap.get(lisResultVO.getDetailName()))) {
|
|
|
|
+ lisResultVO.setUniqueName(detailMap.get(lisResultVO.getDetailName()));
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ lisResultVO.setUniqueName(lisConfigWithEmptyItemNameMap.get(lisResultVO.getName()));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
}
|
|
-
|
|
|
|
List<LisResult> lisResultList = BeanUtil.listCopyTo(pushVO.getLis(), LisResult.class);
|
|
List<LisResult> lisResultList = BeanUtil.listCopyTo(pushVO.getLis(), LisResult.class);
|
|
searchData.setLisArr(lisResultList);
|
|
searchData.setLisArr(lisResultList);
|
|
- searchData.setFeatureType(pushVO.getFeatureType());
|
|
|
|
- searchData.setSysCode("1");
|
|
|
|
- searchData.setLength(10);
|
|
|
|
|
|
|
|
- Response<ResponseData> res = aiServiceClient.bayesPageData(searchData);
|
|
|
|
|
|
+ Response<ResponseData> res = bigDataServiceClient.bayesPageData(searchData);
|
|
if (null == res || null == res.getData()) {
|
|
if (null == res || null == res.getData()) {
|
|
throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "AI没有返回结果");
|
|
throw new CommonException(CommonErrorCode.SERVER_IS_ERROR, "AI没有返回结果");
|
|
}
|
|
}
|
|
@@ -203,7 +205,7 @@ public class PushFacade {
|
|
highRiskMap.put("disease", String.join(",", diseaseNameList));
|
|
highRiskMap.put("disease", String.join(",", diseaseNameList));
|
|
SearchData searchData = new SearchData();
|
|
SearchData searchData = new SearchData();
|
|
searchData.setDiag(String.join(",", diseaseNameList));
|
|
searchData.setDiag(String.join(",", diseaseNameList));
|
|
- Response<GdbResponse> graphRes = highRiskServiceClient.highRiskPageData(searchData);
|
|
|
|
|
|
+ Response<GdbResponse> graphRes = graphServiceClient.highRiskPageData(searchData);
|
|
if (graphRes != null) {
|
|
if (graphRes != null) {
|
|
Map<String, String> graphResult = graphRes.getData().getResult();
|
|
Map<String, String> graphResult = graphRes.getData().getResult();
|
|
if (graphResult.size() > 0) {
|
|
if (graphResult.size() > 0) {
|
|
@@ -452,37 +454,17 @@ public class PushFacade {
|
|
vitalDTO.add(questionDTO);
|
|
vitalDTO.add(questionDTO);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
- /*if (deptVitalList.size() > 0) {
|
|
|
|
- Map<Long, DeptVital> deptVitalMap = EntityUtil.makeEntityMap(deptVitalList, "vitalId");
|
|
|
|
- //排序
|
|
|
|
- QueryWrapper<VitalOrder> vitalOrderQueryWrapper = new QueryWrapper<>();
|
|
|
|
- vitalOrderQueryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey()).
|
|
|
|
- in("question_id", deptVitalMap.keySet()).
|
|
|
|
- orderByAsc("order_no");
|
|
|
|
- List<VitalOrder> vitalOrderList = vitalOrderFacade.list(vitalOrderQueryWrapper);
|
|
|
|
- Map<Long, VitalOrder> vitalOrderMap = EntityUtil.makeEntityMap(vitalOrderList, "questionId");
|
|
|
|
- //标签列表
|
|
|
|
- for (Map.Entry<Long, VitalOrder> entry : vitalOrderMap.entrySet()) {
|
|
|
|
- QuestionVO questionVO = new QuestionVO();
|
|
|
|
- questionVO.setAge(pushVO.getAge());
|
|
|
|
- questionVO.setSexType(pushVO.getSex());
|
|
|
|
- questionVO.setId(entry.getKey());
|
|
|
|
- QuestionDTO questionDTO = questionFacade.getById(questionVO);
|
|
|
|
- if (questionDTO != null) {
|
|
|
|
- vitalDTO.add(questionDTO);
|
|
|
|
- }
|
|
|
|
- }
|
|
|
|
- }*/
|
|
|
|
return vitalDTO;
|
|
return vitalDTO;
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
- * 电子病历评级推理
|
|
|
|
|
|
+ * 电子病历评级-数据服务模式推理
|
|
*
|
|
*
|
|
* @param emrPushVO
|
|
* @param emrPushVO
|
|
* @return
|
|
* @return
|
|
*/
|
|
*/
|
|
public PushEMRDTO pushEMR(EMRPushVO emrPushVO) {
|
|
public PushEMRDTO pushEMR(EMRPushVO emrPushVO) {
|
|
|
|
+ Boolean isDocking = tranServiceClient.isDocking().data;
|
|
PushEMRDTO pushEMRDTO = new PushEMRDTO();
|
|
PushEMRDTO pushEMRDTO = new PushEMRDTO();
|
|
HosCodeVO hosCodeVO = new HosCodeVO();
|
|
HosCodeVO hosCodeVO = new HosCodeVO();
|
|
hosCodeVO.setHosCode(emrPushVO.getHosCode());
|
|
hosCodeVO.setHosCode(emrPushVO.getHosCode());
|
|
@@ -490,10 +472,15 @@ public class PushFacade {
|
|
BeanUtil.copyProperties(emrPushVO, pushVO);
|
|
BeanUtil.copyProperties(emrPushVO, pushVO);
|
|
//化验项转公表内容,参数处理
|
|
//化验项转公表内容,参数处理
|
|
if (ListUtil.isNotEmpty(pushVO.getLis())) {
|
|
if (ListUtil.isNotEmpty(pushVO.getLis())) {
|
|
- RespDTO<Map<String, Map<String, String>>> respLisConfigMap = tranServiceClient.getLisConfigByHosCode_NotEmptyItemName(hosCodeVO);
|
|
|
|
- Map<String, Map<String, String>> lisConfigMap = respLisConfigMap.data;
|
|
|
|
- RespDTO<Map<String, String>> respLisConfigMap_emptyItemName = tranServiceClient.getLisConfigByHosCode_EmptyItemName(hosCodeVO);
|
|
|
|
- Map<String, String> lisConfigMap_emptyItemName = respLisConfigMap_emptyItemName.data;
|
|
|
|
|
|
+ Map<String, Map<String, String>> lisConfigMap = new LinkedHashMap<>();
|
|
|
|
+ Map<String, String> lisConfigMap_emptyItemName = new LinkedHashMap<>();
|
|
|
|
+ if (isDocking) {
|
|
|
|
+ lisConfigMap = tranServiceClient.getLisConfigByHosCode_NotEmptyItemName(hosCodeVO).data;
|
|
|
|
+ lisConfigMap_emptyItemName = tranServiceClient.getLisConfigByHosCode_EmptyItemName(hosCodeVO).data;
|
|
|
|
+ } else {
|
|
|
|
+ lisConfigMap = lisMappingFacade.getLisMapping_NotEmptyItemName();
|
|
|
|
+ lisConfigMap_emptyItemName = lisMappingFacade.getLisConfig_EmptyItemName();
|
|
|
|
+ }
|
|
List<LisResultVO> lisResultVOList = pushVO.getLis();
|
|
List<LisResultVO> lisResultVOList = pushVO.getLis();
|
|
for (LisResultVO lisResultVO : lisResultVOList) {
|
|
for (LisResultVO lisResultVO : lisResultVOList) {
|
|
if (StringUtil.isNotBlank(lisResultVO.getName())) {
|
|
if (StringUtil.isNotBlank(lisResultVO.getName())) {
|
|
@@ -527,9 +514,9 @@ public class PushFacade {
|
|
}
|
|
}
|
|
if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Disease.getKey()))) {
|
|
if (featureTypeSet.contains(String.valueOf(QuestionTypeEnum.Disease.getKey()))) {
|
|
List<FeatureRate> dis = data.getDis();
|
|
List<FeatureRate> dis = data.getDis();
|
|
|
|
+ List<String> disNameList = dis.stream().map(disease -> disease.getFeatureName()).collect(Collectors.toList());
|
|
Map<String, List<String>> retDisMap = new LinkedHashMap<>();
|
|
Map<String, List<String>> retDisMap = new LinkedHashMap<>();
|
|
- RespDTO<Map<String, String>> respDisDTO = tranServiceClient.getDiseaseIcdByHosCode(hosCodeVO);
|
|
|
|
- Map<String, String> disMap = respDisDTO.data;
|
|
|
|
|
|
+ Map<String, String> disMap = tranServiceClient.getDiseaseIcdByHosCode(hosCodeVO).data;
|
|
|
|
|
|
//诊断分类
|
|
//诊断分类
|
|
for (FeatureRate featureRate : dis) {
|
|
for (FeatureRate featureRate : dis) {
|
|
@@ -542,11 +529,33 @@ public class PushFacade {
|
|
if (retDisMap.get(disClass) != null) {
|
|
if (retDisMap.get(disClass) != null) {
|
|
retDisList = retDisMap.get(disClass);
|
|
retDisList = retDisMap.get(disClass);
|
|
}
|
|
}
|
|
- //转icd10名称
|
|
|
|
- retDisList.add(disMap.get(featureRate.getFeatureName()));
|
|
|
|
|
|
+ if (isDocking) {
|
|
|
|
+ //对接模式转icd10名称
|
|
|
|
+ retDisList.add(disMap.get(featureRate.getFeatureName()));
|
|
|
|
+ } else {
|
|
|
|
+ retDisList.add(featureRate.getFeatureName());
|
|
|
|
+ }
|
|
retDisMap.put(disClass, retDisList);
|
|
retDisMap.put(disClass, retDisList);
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
+ //警惕
|
|
|
|
+ SearchData searchData = new SearchData();
|
|
|
|
+ searchData.setDiag(String.join(",", disNameList));
|
|
|
|
+ Response<GdbResponse> graphRes = graphServiceClient.highRiskPageData(searchData);
|
|
|
|
+ Map<String, String> graphResult = graphRes.getData().getResult();
|
|
|
|
+ if (graphResult.size() > 0) {
|
|
|
|
+ List<String> highRiskDisList = Lists.newLinkedList();
|
|
|
|
+ for (Map.Entry<String, String> entry : graphResult.entrySet()) {
|
|
|
|
+ if (entry.getValue().equals("1")) {
|
|
|
|
+ if (isDocking) {
|
|
|
|
+ highRiskDisList.add(disMap.get(entry.getKey()));
|
|
|
|
+ } else {
|
|
|
|
+ highRiskDisList.add(entry.getKey());
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ retDisMap.put("警惕", highRiskDisList);
|
|
|
|
+ }
|
|
pushEMRDTO.setDis(retDisMap);
|
|
pushEMRDTO.setDis(retDisMap);
|
|
}
|
|
}
|
|
return pushEMRDTO;
|
|
return pushEMRDTO;
|