|
@@ -4,12 +4,14 @@ import com.alibaba.fastjson.JSONObject;
|
|
|
import com.diagbot.client.TranServiceClient;
|
|
|
import com.diagbot.client.bean.FeatureRate;
|
|
|
import com.diagbot.client.bean.GdbResponse;
|
|
|
+import com.diagbot.client.bean.HosCodeVO;
|
|
|
import com.diagbot.client.bean.MedicalIndication;
|
|
|
import com.diagbot.client.bean.MedicalIndicationDetail;
|
|
|
import com.diagbot.client.bean.ResponseData;
|
|
|
-import com.diagbot.client.bean.SearchData;
|
|
|
import com.diagbot.dto.ConceptPushDTO;
|
|
|
+import com.diagbot.dto.LisResult;
|
|
|
import com.diagbot.dto.PushDTO;
|
|
|
+import com.diagbot.dto.RespDTO;
|
|
|
import com.diagbot.entity.Concept;
|
|
|
import com.diagbot.enums.ConceptTypeEnum;
|
|
|
import com.diagbot.enums.FeatureTypeEnum;
|
|
@@ -20,6 +22,7 @@ import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.FastJsonUtils;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.ParamConvertUtil;
|
|
|
+import com.diagbot.util.RespDTOUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
import com.diagbot.vo.ConceptBaseVO;
|
|
|
import com.diagbot.vo.SearchVo;
|
|
@@ -60,12 +63,30 @@ public class PushFacade {
|
|
|
*/
|
|
|
public PushDTO pushInner(SearchVo searchVo) {
|
|
|
PushDTO pushDTO = new PushDTO();
|
|
|
+ //是否对接
|
|
|
+ RespDTO<Boolean> dockingRes = tranServiceClient.isDocking();
|
|
|
+ Boolean isDocking = false;
|
|
|
+ if (RespDTOUtil.respIsOK(dockingRes)) {
|
|
|
+ isDocking = dockingRes.data;
|
|
|
+ if (isDocking) {
|
|
|
+ if (StringUtil.isBlank(searchVo.getHosCode())) {
|
|
|
+ throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "请输入医院编码");
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ //化验转公表项处理
|
|
|
+ if (isDocking) {
|
|
|
+ List<LisResult> lisArr = searchVo.getLisArr();
|
|
|
+ lisArr = addUniqueName(lisArr, searchVo.getHosCode());
|
|
|
+ searchVo.setLisArr(lisArr);
|
|
|
+ }
|
|
|
ResponseData data = clinicalFacade.processClinicalData(searchVo);
|
|
|
|
|
|
String featureType = searchVo.getFeatureType();
|
|
|
String[] featureTypes = featureType.split(",|,");
|
|
|
Set<String> featureTypeSet = new HashSet(Arrays.asList(featureTypes));
|
|
|
|
|
|
+
|
|
|
//确定推送科室
|
|
|
List<FeatureRate> dis = data.getDis();
|
|
|
pushDTO.setDept(getDept(dis));
|
|
@@ -96,7 +117,11 @@ public class PushFacade {
|
|
|
if (ListUtil.isNotEmpty(lis)) {
|
|
|
List<String> nameList = lis.stream().map(featureRate -> featureRate.getFeatureName()).collect(Collectors.toList());
|
|
|
if (ListUtil.isNotEmpty(nameList)) {
|
|
|
- pushDTO.setLab(getConceptDTOList(nameList, LexiconTypeEnum.LIS_TABLES.getKey()));
|
|
|
+ List<ConceptPushDTO> lisDTO = getConceptDTOList(nameList, LexiconTypeEnum.LIS_TABLES.getKey());
|
|
|
+ if (isDocking) {
|
|
|
+ lisDTO = addClientName(lisDTO, searchVo.getHosCode(), ConceptTypeEnum.Lis.getKey());
|
|
|
+ }
|
|
|
+ pushDTO.setLab(lisDTO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -106,7 +131,11 @@ public class PushFacade {
|
|
|
if (ListUtil.isNotEmpty(pacs)) {
|
|
|
List<String> nameList = pacs.stream().map(featureRate -> featureRate.getFeatureName()).collect(Collectors.toList());
|
|
|
if (ListUtil.isNotEmpty(nameList)) {
|
|
|
- pushDTO.setPacs(getConceptDTOList(nameList, LexiconTypeEnum.PACS_ITEMS.getKey()));
|
|
|
+ List<ConceptPushDTO> pacsDTO = getConceptDTOList(nameList, LexiconTypeEnum.PACS_ITEMS.getKey());
|
|
|
+ if (isDocking) {
|
|
|
+ pacsDTO = addClientName(pacsDTO, searchVo.getHosCode(), ConceptTypeEnum.Pacs.getKey());
|
|
|
+ }
|
|
|
+ pushDTO.setPacs(pacsDTO);
|
|
|
}
|
|
|
}
|
|
|
}
|
|
@@ -133,6 +162,9 @@ public class PushFacade {
|
|
|
}
|
|
|
if (ListUtil.isNotEmpty(hrNameList)) {
|
|
|
List<ConceptPushDTO> hrDisDTO = getConceptDTOList(hrNameList, LexiconTypeEnum.DIAGNOSIS.getKey());
|
|
|
+ if (isDocking) {
|
|
|
+ hrDisDTO = addClientName(hrDisDTO, searchVo.getHosCode(), ConceptTypeEnum.Disease.getKey());
|
|
|
+ }
|
|
|
disMapDTO.put("警惕", hrDisDTO);
|
|
|
}
|
|
|
}
|
|
@@ -156,6 +188,9 @@ public class PushFacade {
|
|
|
List<String> nameListByDisClass = entry.getValue().stream().map(featureRate -> featureRate.getFeatureName()).collect(Collectors.toList());
|
|
|
if (ListUtil.isNotEmpty(nameListByDisClass)) {
|
|
|
List<ConceptPushDTO> disDTO = getConceptDTOList(nameListByDisClass, LexiconTypeEnum.DIAGNOSIS.getKey());
|
|
|
+ if (isDocking) {
|
|
|
+ disDTO = addClientName(disDTO, searchVo.getHosCode(), ConceptTypeEnum.Disease.getKey());
|
|
|
+ }
|
|
|
disMapDTO.put(entry.getKey(), disDTO);
|
|
|
}
|
|
|
}
|
|
@@ -221,6 +256,16 @@ public class PushFacade {
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ /**
|
|
|
+ * 获取量表推理内容
|
|
|
+ *
|
|
|
+ * @param searchVo
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public Map<String, Object> scale(SearchVo searchVo) {
|
|
|
+ Map<String, Object> data = clinicalFacade.scale(searchVo);
|
|
|
+ return data;
|
|
|
+ }
|
|
|
|
|
|
/**
|
|
|
* 获取治疗方案
|
|
@@ -299,4 +344,90 @@ public class PushFacade {
|
|
|
}
|
|
|
return deptDTO;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 增加化验公表项
|
|
|
+ *
|
|
|
+ * @param lisResults
|
|
|
+ * @param hosCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<LisResult> addUniqueName(List<LisResult> lisResults, String hosCode) {
|
|
|
+ HosCodeVO hosCodeVO = new HosCodeVO();
|
|
|
+ hosCodeVO.setHosCode(hosCode);
|
|
|
+ //化验项转公表内容,参数处理
|
|
|
+ if (ListUtil.isNotEmpty(lisResults)) {
|
|
|
+ RespDTO<Map<String, Map<String, String>>> lisConfigRes = tranServiceClient.getLisConfigByHosCode_NotEmptyItemName(hosCodeVO);
|
|
|
+ RespDTO<Map<String, String>> lisConfigWithEmptyItemNameRes = tranServiceClient.getLisConfigByHosCode_EmptyItemName(hosCodeVO);
|
|
|
+ Map<String, Map<String, String>> lisConfigMap = new LinkedHashMap<>();
|
|
|
+ Map<String, String> lisConfigMap_emptyItemName = new LinkedHashMap<>();
|
|
|
+ if (RespDTOUtil.respIsOK(lisConfigRes)) {
|
|
|
+ lisConfigMap = lisConfigRes.data;
|
|
|
+ }
|
|
|
+ if (RespDTOUtil.respIsOK(lisConfigWithEmptyItemNameRes)) {
|
|
|
+ lisConfigMap_emptyItemName = lisConfigWithEmptyItemNameRes.data;
|
|
|
+ }
|
|
|
+
|
|
|
+ for (LisResult lisResult : lisResults) {
|
|
|
+ if (StringUtil.isNotBlank(lisResult.getName())) {
|
|
|
+ if (StringUtil.isNotBlank(lisResult.getDetailName())) {
|
|
|
+ if (lisConfigMap.get(lisResult.getName()) != null) {
|
|
|
+ lisResult.setUniqueName(lisConfigMap.get(lisResult.getName()).get(lisResult.getDetailName()));
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ lisResult.setUniqueName(lisConfigMap_emptyItemName.get(lisResult.getName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return lisResults;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 添加外部名称(调用方)
|
|
|
+ *
|
|
|
+ * @param concepts
|
|
|
+ * @param hosCode
|
|
|
+ * @param type
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<ConceptPushDTO> addClientName(List<ConceptPushDTO> concepts, String hosCode, Integer type) {
|
|
|
+ HosCodeVO hosCodeVO = new HosCodeVO();
|
|
|
+ hosCodeVO.setHosCode(hosCode);
|
|
|
+ if (type.equals(ConceptTypeEnum.Lis.getKey())) {
|
|
|
+ RespDTO<Map<String, List<String>>> lisRes = tranServiceClient.getLisConfigByUniqueNameAndHosCode(hosCodeVO);
|
|
|
+ if (RespDTOUtil.respIsOK(lisRes)) {
|
|
|
+ Map<String, List<String>> lisMappingByUniqueName = lisRes.data;
|
|
|
+ for (ConceptPushDTO concept : concepts) {
|
|
|
+ List<String> clientNames = lisMappingByUniqueName.get(concept.getName());
|
|
|
+ if (ListUtil.isNotEmpty(clientNames)) {
|
|
|
+ concept.setClientName(clientNames.get(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type.equals(ConceptTypeEnum.Pacs.getKey())) {
|
|
|
+ RespDTO<Map<String, List<String>>> pacsRes = tranServiceClient.getLisConfigByUniqueNameAndHosCode(hosCodeVO);
|
|
|
+ if (RespDTOUtil.respIsOK(pacsRes)) {
|
|
|
+ Map<String, List<String>> pacsConfigMapByUniqueName = pacsRes.data;
|
|
|
+ for (ConceptPushDTO concept : concepts) {
|
|
|
+ List<String> clientNames = pacsConfigMapByUniqueName.get(concept.getName());
|
|
|
+ if (ListUtil.isNotEmpty(clientNames)) {
|
|
|
+ concept.setClientName(clientNames.get(0));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ } else if (type.equals(ConceptTypeEnum.Disease.getKey())) {
|
|
|
+ RespDTO<Map<String, String>> disRes = tranServiceClient.getDiseaseIcdByHosCode(hosCodeVO);
|
|
|
+ if (RespDTOUtil.respIsOK(disRes)) {
|
|
|
+ Map<String, String> disMap = disRes.data;
|
|
|
+ for (ConceptPushDTO concept : concepts) {
|
|
|
+ String clientName = disMap.get(concept.getName());
|
|
|
+ if (StringUtil.isNotBlank(clientName)) {
|
|
|
+ concept.setClientName(disMap.get(concept.getName()));
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return concepts;
|
|
|
+ }
|
|
|
}
|