|
@@ -5,6 +5,7 @@ import com.diagbot.client.TranServiceClient;
|
|
|
import com.diagbot.client.bean.HosCodeVO;
|
|
|
import com.diagbot.client.bean.ResponseData;
|
|
|
import com.diagbot.dto.LisResult;
|
|
|
+import com.diagbot.dto.PacsResult;
|
|
|
import com.diagbot.dto.PushDTO;
|
|
|
import com.diagbot.dto.RespDTO;
|
|
|
import com.diagbot.dto.SysSetInfoDTO;
|
|
@@ -13,13 +14,19 @@ import com.diagbot.enums.LisSourceEnum;
|
|
|
import com.diagbot.enums.SysTypeEnum;
|
|
|
import com.diagbot.exception.CommonErrorCode;
|
|
|
import com.diagbot.exception.CommonException;
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
+import com.diagbot.util.EntityUtil;
|
|
|
import com.diagbot.util.ListUtil;
|
|
|
import com.diagbot.util.RespDTOUtil;
|
|
|
import com.diagbot.util.StringUtil;
|
|
|
+import com.diagbot.vo.DiseaseIcdVO;
|
|
|
import com.diagbot.vo.HospitalSetVO;
|
|
|
import com.diagbot.vo.LisConfigVO;
|
|
|
+import com.diagbot.vo.PacsConfigVO;
|
|
|
import com.diagbot.vo.SearchVo;
|
|
|
+import com.google.common.collect.Lists;
|
|
|
import io.github.lvyahui8.spring.aggregate.facade.DataBeanAggregateQueryFacade;
|
|
|
+import org.apache.commons.lang3.StringUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Component;
|
|
|
|
|
@@ -90,6 +97,43 @@ public class PushFacade {
|
|
|
lisArr = addUniqueName(lisArr, searchVo.getHosCode());
|
|
|
searchVo.setLisArr(lisArr);
|
|
|
}
|
|
|
+
|
|
|
+ if (isConnect && searchVo.getSysType().equals(SysTypeEnum.LTAPI_SERVICE.getKey())) {
|
|
|
+ //辅检预处理,仅限数据引擎模式
|
|
|
+ List<PacsResult> pacsArr = searchVo.getPacsArr();
|
|
|
+ List<PacsResult> convertPacsArr = addPacsUniqueName(pacsArr, searchVo.getHosCode());
|
|
|
+ searchVo.setPacs(searchVo.getPacs() + ";" + getPacsString(convertPacsArr));
|
|
|
+
|
|
|
+ //诊断预处理
|
|
|
+ if (StringUtil.isNotBlank(searchVo.getDiag())) {
|
|
|
+ String[] diseases = searchVo.getDiag().replace(" ", "").split(",|,|;|;");
|
|
|
+ List<String> diseaseList = Arrays.asList(diseases);
|
|
|
+ diseaseList = diseaseList
|
|
|
+ .stream()
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i))
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ DiseaseIcdVO diseaseIcdVO = new DiseaseIcdVO();
|
|
|
+ diseaseIcdVO.setHosCode(searchVo.getHosCode());
|
|
|
+ diseaseIcdVO.setDiseaseNameList(diseaseList);
|
|
|
+ searchVo.setDiag(convertDisease(diseaseIcdVO, 1));
|
|
|
+ }
|
|
|
+
|
|
|
+ //治疗方案诊断转换
|
|
|
+ if (StringUtil.isNotBlank(searchVo.getDiseaseName())) {
|
|
|
+ String[] diseases = searchVo.getDiseaseName().replace(" ", "").split(",|,|;|;");
|
|
|
+ List<String> diseaseList = Arrays.asList(diseases);
|
|
|
+ diseaseList = diseaseList
|
|
|
+ .stream()
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i))
|
|
|
+ .collect(Collectors.toList());
|
|
|
+ DiseaseIcdVO diseaseIcdVO = new DiseaseIcdVO();
|
|
|
+ diseaseIcdVO.setHosCode(searchVo.getHosCode());
|
|
|
+ diseaseIcdVO.setDiseaseNameList(diseaseList);
|
|
|
+ searchVo.setDiseaseName(convertDisease(diseaseIcdVO, 1));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ResponseData data = clinicalFacade.processClinicalData(searchVo);
|
|
|
|
|
|
String featureType = searchVo.getFeatureType();
|
|
@@ -193,4 +237,92 @@ public class PushFacade {
|
|
|
}
|
|
|
return lisResults;
|
|
|
}
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 辅检公表转换
|
|
|
+ *
|
|
|
+ * @param pacsArr
|
|
|
+ * @param hosCode
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public List<PacsResult> addPacsUniqueName(List<PacsResult> pacsArr, String hosCode) {
|
|
|
+ Map<String, PacsResult> pacsOriginalMap = EntityUtil.makeEntityMap(pacsArr, "name");
|
|
|
+ List<PacsResult> convertPacsArr = Lists.newLinkedList();
|
|
|
+ PacsConfigVO pacsConfigVO = new PacsConfigVO();
|
|
|
+ pacsConfigVO.setHosCode(hosCode);
|
|
|
+ pacsConfigVO.setMealNameList(pacsArr
|
|
|
+ .stream()
|
|
|
+ .map(pacsResult -> pacsResult.getName())
|
|
|
+ .distinct()
|
|
|
+ .collect(Collectors.toList()));
|
|
|
+ RespDTO<Map<String, List<String>>> pacsRespDTO = tranServiceClient.getPacsConfig(pacsConfigVO);
|
|
|
+ if (RespDTOUtil.respIsOK(pacsRespDTO)) {
|
|
|
+ Map<String, List<String>> pacsMap = pacsRespDTO.data;
|
|
|
+ for (Map.Entry<String, PacsResult> entry : pacsOriginalMap.entrySet()) {
|
|
|
+ if (ListUtil.isNotEmpty(pacsMap.get(entry.getKey()))) {
|
|
|
+ for (String uniqueName : pacsMap.get(entry.getKey())) {
|
|
|
+ PacsResult pacsResult = new PacsResult();
|
|
|
+ BeanUtil.copyProperties(entry.getValue(), pacsResult);
|
|
|
+ pacsResult.setUniqueName(uniqueName);
|
|
|
+ convertPacsArr.add(pacsResult);
|
|
|
+ }
|
|
|
+ } else {
|
|
|
+ convertPacsArr.add(entry.getValue());
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return convertPacsArr;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 辅检结构化结果拼接文本
|
|
|
+ *
|
|
|
+ * @param pacsArr
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String getPacsString(List<PacsResult> pacsArr) {
|
|
|
+ String pacsString = "";
|
|
|
+ for (PacsResult pacsResult : pacsArr) {
|
|
|
+ String pacsResultString = "";
|
|
|
+ if (StringUtils.isNotBlank(pacsResult.getUniqueName())) {
|
|
|
+ pacsResultString = pacsResult.getUniqueName() + ":";
|
|
|
+ } else {
|
|
|
+ pacsResultString = pacsResult.getName() + ":";
|
|
|
+ }
|
|
|
+ pacsResultString += pacsResult.getResult() + ";";
|
|
|
+ pacsString += pacsResultString;
|
|
|
+ }
|
|
|
+ return pacsString;
|
|
|
+ }
|
|
|
+
|
|
|
+ /**
|
|
|
+ * 诊断名称映射转换
|
|
|
+ *
|
|
|
+ * @param diseaseIcdVO
|
|
|
+ * @param type 1-外部名称转内部名称,2-内部名称转外部名称
|
|
|
+ * @return
|
|
|
+ */
|
|
|
+ public String convertDisease(DiseaseIcdVO diseaseIcdVO, Integer type) {
|
|
|
+ String convertDiag = "";
|
|
|
+ Map<String, String> disMap = new LinkedHashMap<>();
|
|
|
+ RespDTO<Map<String, String>> disRespDTO = tranServiceClient.getDiseaseIcdMap(diseaseIcdVO);
|
|
|
+ if (RespDTOUtil.respIsOK(disRespDTO)) {
|
|
|
+ disMap = disRespDTO.data;
|
|
|
+ List<String> disNameList = Lists.newLinkedList();
|
|
|
+ if (type.equals(1)) {
|
|
|
+ //外部名称转内部名称
|
|
|
+ disNameList = diseaseIcdVO.getDiseaseNameList();
|
|
|
+ } else if (type.equals(2)) {
|
|
|
+ //内部名称转外部名称
|
|
|
+ disNameList = diseaseIcdVO.getConceptDisNameList();
|
|
|
+ }
|
|
|
+
|
|
|
+ for (String diseaseName : disNameList) {
|
|
|
+ if (StringUtil.isNotBlank(disMap.get(diseaseName))) {
|
|
|
+ convertDiag += disMap.get(diseaseName) + ",";
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return convertDiag;
|
|
|
+ }
|
|
|
}
|