|
@@ -0,0 +1,585 @@
|
|
|
|
+package com.diagbot.aggregate;
|
|
|
|
+
|
|
|
|
+import com.diagbot.biz.push.entity.Item;
|
|
|
|
+import com.diagbot.biz.push.entity.Lis;
|
|
|
|
+import com.diagbot.biz.push.entity.Pacs;
|
|
|
|
+import com.diagbot.enums.ConceptTypeEnum;
|
|
|
|
+import com.diagbot.enums.StatusEnum;
|
|
|
|
+import com.diagbot.facade.MappingConfigFacade;
|
|
|
|
+import com.diagbot.util.BeanUtil;
|
|
|
|
+import com.diagbot.util.ListUtil;
|
|
|
|
+import com.diagbot.util.ReflectUtil;
|
|
|
|
+import com.diagbot.util.StringUtil;
|
|
|
|
+import com.diagbot.vo.Drug;
|
|
|
|
+import com.diagbot.vo.ItemExt;
|
|
|
|
+import com.diagbot.vo.SearchData;
|
|
|
|
+import com.google.common.collect.Lists;
|
|
|
|
+import io.github.lvyahui8.spring.annotation.DataConsumer;
|
|
|
|
+import io.github.lvyahui8.spring.annotation.DataProvider;
|
|
|
|
+import io.github.lvyahui8.spring.annotation.InvokeParameter;
|
|
|
|
+import org.apache.commons.collections4.MapUtils;
|
|
|
|
+import org.springframework.beans.factory.annotation.Autowired;
|
|
|
|
+import org.springframework.stereotype.Component;
|
|
|
|
+
|
|
|
|
+import java.lang.reflect.Method;
|
|
|
|
+import java.util.ArrayList;
|
|
|
|
+import java.util.HashMap;
|
|
|
|
+import java.util.List;
|
|
|
|
+import java.util.Map;
|
|
|
|
+import java.util.stream.Collectors;
|
|
|
|
+
|
|
|
|
+/**
|
|
|
|
+ * @Description:
|
|
|
|
+ * @author: gaodm
|
|
|
|
+ * @time: 2020/8/19 13:18
|
|
|
|
+ */
|
|
|
|
+@Component
|
|
|
|
+public class AssembleAggregate {
|
|
|
|
+ @Autowired
|
|
|
|
+ private MappingConfigFacade mappingConfigFacade;
|
|
|
|
+
|
|
|
|
+ @DataProvider("assembleDataAll")
|
|
|
|
+ public SearchData assembleDataAll(
|
|
|
|
+ @InvokeParameter("searchData") SearchData searchData,
|
|
|
|
+ @DataConsumer("lisConfigMap") Map<String, Map<String, Map<String, List<String>>>> lisConfigMap,
|
|
|
|
+ @DataConsumer("pacsConfigMap") Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap,
|
|
|
|
+ @DataConsumer("diagConfigMap") Map<String, Map<String, Map<String, List<String>>>> diagConfigMap,
|
|
|
|
+ @DataConsumer("drugConfigMap") Map<String, Map<String, Map<String, List<String>>>> drugConfigMap,
|
|
|
|
+ @DataConsumer("operationConfigMap") Map<String, Map<String, Map<String, List<String>>>> operationConfigMap,
|
|
|
|
+ @DataConsumer("deptConfigMap") Map<String, Map<String, Map<String, List<String>>>> deptConfigMap,
|
|
|
|
+ @DataConsumer("transfusionConfigMap") Map<String, Map<String, Map<String, List<String>>>> transfusionConfigMap,
|
|
|
|
+ @DataConsumer("routeConfigMap") Map<String, Map<String, Map<String, List<String>>>> routeConfigMap) {
|
|
|
|
+ //检验
|
|
|
|
+ if (MapUtils.isNotEmpty(lisConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getLis())) {
|
|
|
|
+ List<Lis> convertLis = addUniqueName(searchData.getLis(), lisConfigMap, ConceptTypeEnum.LisPack.getKey());
|
|
|
|
+ searchData.setLis(convertLis);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getLisOrder())) {
|
|
|
|
+ List<Lis> convertLis = addUniqueName(searchData.getLisOrder(), lisConfigMap, ConceptTypeEnum.LisPack.getKey());
|
|
|
|
+ searchData.setLisOrder(convertLis);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //检查
|
|
|
|
+ if (MapUtils.isNotEmpty(pacsConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getPacs())) {
|
|
|
|
+ List<Pacs> convertPacs = addUniqueName(searchData.getPacs(), pacsConfigMap, ConceptTypeEnum.Pacs.getKey());
|
|
|
|
+ searchData.setPacs(convertPacs);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getPacsOrder())) {
|
|
|
|
+ List<Pacs> convertPacs = addUniqueName(searchData.getPacsOrder(), pacsConfigMap, ConceptTypeEnum.Pacs.getKey());
|
|
|
|
+ searchData.setPacsOrder(convertPacs);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //诊断
|
|
|
|
+ if (MapUtils.isNotEmpty(diagConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDiag())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(searchData.getDiag(), diagConfigMap, ConceptTypeEnum.Disease.getKey());
|
|
|
|
+ searchData.setDiag(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDiagOrder())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(searchData.getDiagOrder(), diagConfigMap, ConceptTypeEnum.Disease.getKey());
|
|
|
|
+ searchData.setDiagOrder(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (searchData.getDiseaseName() != null
|
|
|
|
+ && StringUtil.isNotBlank(searchData.getDiseaseName().getName())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(Lists.newArrayList(searchData.getDiseaseName()), diagConfigMap, ConceptTypeEnum.Disease.getKey());
|
|
|
|
+ searchData.setDiseaseName(convertItem.get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //药品
|
|
|
|
+ if (MapUtils.isNotEmpty(drugConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrug())) {
|
|
|
|
+ List<Drug> convertItem = addUniqueName(searchData.getDrug(), drugConfigMap, ConceptTypeEnum.Drug.getKey());
|
|
|
|
+ searchData.setDrug(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrugOrder())) {
|
|
|
|
+ List<Drug> convertItem = addUniqueName(searchData.getDrugOrder(), drugConfigMap, ConceptTypeEnum.Drug.getKey());
|
|
|
|
+ searchData.setDrugOrder(convertItem);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //给药途径,没有映射的数据标准术语名称赋值成医院术语名称
|
|
|
|
+ //if (MapUtils.isNotEmpty(routeConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrug())) {
|
|
|
|
+ List<Drug> convertItem = addUniqueName(searchData.getDrug(), routeConfigMap, ConceptTypeEnum.AdministrationRoute.getKey(), "routeName", "routeUniqueName");
|
|
|
|
+ searchData.setDrug(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrugOrder())) {
|
|
|
|
+ List<Drug> convertItem = addUniqueName(searchData.getDrugOrder(), routeConfigMap, ConceptTypeEnum.AdministrationRoute.getKey(), "routeName", "routeUniqueName");
|
|
|
|
+ searchData.setDrugOrder(convertItem);
|
|
|
|
+ }
|
|
|
|
+ //}
|
|
|
|
+
|
|
|
|
+ //手术
|
|
|
|
+ if (MapUtils.isNotEmpty(operationConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getOperation())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(searchData.getOperation(), operationConfigMap, ConceptTypeEnum.Operation.getKey());
|
|
|
|
+ searchData.setOperation(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getOperationOrder())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(searchData.getOperationOrder(), operationConfigMap, ConceptTypeEnum.Operation.getKey());
|
|
|
|
+ searchData.setOperationOrder(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (searchData.getOperationName() != null
|
|
|
|
+ && StringUtil.isNotBlank(searchData.getOperationName().getName())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(Lists.newArrayList(searchData.getOperationName()), operationConfigMap, ConceptTypeEnum.Operation.getKey());
|
|
|
|
+ searchData.setOperationName(convertItem.get(0));
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //科室
|
|
|
|
+ if (MapUtils.isNotEmpty(deptConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDept())) {
|
|
|
|
+ List<Item> convertItem = addUniqueName(searchData.getDept(), deptConfigMap, ConceptTypeEnum.Dept.getKey());
|
|
|
|
+ searchData.setDept(convertItem);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ //输血
|
|
|
|
+ if (MapUtils.isNotEmpty(transfusionConfigMap)) {
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getTransfusion())) {
|
|
|
|
+ List<ItemExt> convertItem = addUniqueName(searchData.getTransfusion(), transfusionConfigMap, ConceptTypeEnum.Transfusion.getKey());
|
|
|
|
+ searchData.setTransfusion(convertItem);
|
|
|
|
+ }
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getTransfusionOrder())) {
|
|
|
|
+ List<ItemExt> convertItem = addUniqueName(searchData.getTransfusionOrder(), transfusionConfigMap, ConceptTypeEnum.Transfusion.getKey());
|
|
|
|
+ searchData.setTransfusionOrder(convertItem);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ return searchData;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("lisConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> lisConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //化验公表转换
|
|
|
|
+ List<String> lisHisNameList = Lists.newArrayList();
|
|
|
|
+ //lis
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getLis())) {
|
|
|
|
+ lisHisNameList.addAll(searchData.getLis()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //lisOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getLisOrder())) {
|
|
|
|
+ lisHisNameList.addAll(searchData.getLisOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ lisHisNameList = lisHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> lisConfigMap = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ if (ListUtil.isNotEmpty(lisHisNameList)) {
|
|
|
|
+ lisConfigMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(lisHisNameList, ConceptTypeEnum.LisPack.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return lisConfigMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("pacsConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //辅检公表转换
|
|
|
|
+ List<String> pacsHisNameList = Lists.newArrayList();
|
|
|
|
+ //pacs
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getPacs())) {
|
|
|
|
+ pacsHisNameList.addAll(searchData.getPacs()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //pacsOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getPacsOrder())) {
|
|
|
|
+ pacsHisNameList.addAll(searchData.getPacsOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ pacsHisNameList = pacsHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap = new HashMap<>();
|
|
|
|
+ if (ListUtil.isNotEmpty(pacsHisNameList)) {
|
|
|
|
+ pacsConfigMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(pacsHisNameList, ConceptTypeEnum.Pacs.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return pacsConfigMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("diagConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> diagConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //诊断公表转换
|
|
|
|
+ List<String> diagHisNameList = Lists.newArrayList();
|
|
|
|
+ //diag
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDiag())) {
|
|
|
|
+ diagHisNameList.addAll(searchData.getDiag()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //diagOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDiagOrder())) {
|
|
|
|
+ diagHisNameList.addAll(searchData.getDiagOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //diseaseName
|
|
|
|
+ if (searchData.getDiseaseName() != null
|
|
|
|
+ && StringUtil.isNotBlank(searchData.getDiseaseName().getName())) {
|
|
|
|
+ diagHisNameList.add(searchData.getDiseaseName().getName());
|
|
|
|
+ }
|
|
|
|
+ diagHisNameList = diagHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
|
|
|
|
+ if (ListUtil.isNotEmpty(diagHisNameList)) {
|
|
|
|
+ configMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(diagHisNameList, ConceptTypeEnum.Disease.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return configMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("drugConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> drugConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //药品公表转换
|
|
|
|
+ List<String> drugHisNameList = Lists.newArrayList();
|
|
|
|
+ //drug
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrug())) {
|
|
|
|
+ drugHisNameList.addAll(searchData.getDrug()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //drugOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrugOrder())) {
|
|
|
|
+ drugHisNameList.addAll(searchData.getDrugOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ drugHisNameList = drugHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
|
|
|
|
+ if (ListUtil.isNotEmpty(drugHisNameList)) {
|
|
|
|
+ configMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(drugHisNameList, ConceptTypeEnum.Drug.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return configMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("operationConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> operationConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //手术公表转换
|
|
|
|
+ List<String> operationHisNameList = Lists.newArrayList();
|
|
|
|
+ //operation
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getOperation())) {
|
|
|
|
+ operationHisNameList.addAll(searchData.getOperation()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //operationOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getOperationOrder())) {
|
|
|
|
+ operationHisNameList.addAll(searchData.getOperationOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //operationName
|
|
|
|
+ if (searchData.getOperationName() != null
|
|
|
|
+ && StringUtil.isNotBlank(searchData.getOperationName().getName())) {
|
|
|
|
+ operationHisNameList.add(searchData.getOperationName().getName());
|
|
|
|
+ }
|
|
|
|
+ operationHisNameList = operationHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
|
|
|
|
+ if (ListUtil.isNotEmpty(operationHisNameList)) {
|
|
|
|
+ configMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(operationHisNameList, ConceptTypeEnum.Operation.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return configMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("deptConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> deptConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //科室公表转换
|
|
|
|
+ List<String> deptHisNameList = Lists.newArrayList();
|
|
|
|
+ //dept
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDept())) {
|
|
|
|
+ deptHisNameList.addAll(searchData.getDept()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ deptHisNameList = deptHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ if (ListUtil.isNotEmpty(deptHisNameList)) {
|
|
|
|
+ configMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(deptHisNameList, ConceptTypeEnum.Dept.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return configMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("transfusionConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> transfusionConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //输血公表转换
|
|
|
|
+ List<String> transfusionHisNameList = Lists.newArrayList();
|
|
|
|
+ //transfusion
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getTransfusion())) {
|
|
|
|
+ transfusionHisNameList.addAll(searchData.getTransfusion()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //transfusionOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getTransfusionOrder())) {
|
|
|
|
+ transfusionHisNameList.addAll(searchData.getTransfusionOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getName()) || StringUtil.isNotBlank(i.getUniqueName()))
|
|
|
|
+ .map(i -> i.getName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ transfusionHisNameList = transfusionHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
|
|
|
|
+
|
|
|
|
+ if (ListUtil.isNotEmpty(transfusionHisNameList)) {
|
|
|
|
+ configMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(transfusionHisNameList, ConceptTypeEnum.Transfusion.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return configMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @DataProvider("routeConfigMap")
|
|
|
|
+ public Map<String, Map<String, Map<String, List<String>>>> routeConfigMap(@InvokeParameter("searchData") SearchData searchData) {
|
|
|
|
+ //药品给药途径公表转换
|
|
|
|
+ List<String> routeHisNameList = Lists.newArrayList();
|
|
|
|
+ //drug
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrug())) {
|
|
|
|
+ routeHisNameList.addAll(searchData.getDrug()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getRouteName()) || StringUtil.isNotBlank(i.getRouteUniqueName()))
|
|
|
|
+ .map(i -> i.getRouteName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ //drugOrder
|
|
|
|
+ if (ListUtil.isNotEmpty(searchData.getDrugOrder())) {
|
|
|
|
+ routeHisNameList.addAll(searchData.getDrugOrder()
|
|
|
|
+ .stream()
|
|
|
|
+ .filter(i -> StringUtil.isNotBlank(i.getRouteName()) || StringUtil.isNotBlank(i.getRouteUniqueName()))
|
|
|
|
+ .map(i -> i.getRouteName())
|
|
|
|
+ .collect(Collectors.toList()));
|
|
|
|
+ }
|
|
|
|
+ routeHisNameList = routeHisNameList
|
|
|
|
+ .stream()
|
|
|
|
+ .distinct()
|
|
|
|
+ .collect(Collectors.toList());
|
|
|
|
+
|
|
|
|
+ Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
|
|
|
|
+ if (ListUtil.isNotEmpty(routeHisNameList)) {
|
|
|
|
+ configMap
|
|
|
|
+ = mappingConfigFacade.groupByHisNameWithName(routeHisNameList, ConceptTypeEnum.AdministrationRoute.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
|
|
|
|
+ }
|
|
|
|
+ return configMap;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 标准名称转换
|
|
|
|
+ *
|
|
|
|
+ * @param list
|
|
|
|
+ * @param configMap
|
|
|
|
+ * @param type
|
|
|
|
+ * @param <T>
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public <T> List<T> addUniqueName(List<T> list, Map<String, Map<String, Map<String, List<String>>>> configMap, Integer type) {
|
|
|
|
+ List<T> retList = new ArrayList<>();
|
|
|
|
+ if (ListUtil.isEmpty(list)) {
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+ if (configMap == null || configMap.size() == 0) {
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ for (T item : list) {
|
|
|
|
+ String name = ReflectUtil.getProperty(item, "name");
|
|
|
|
+ if (StringUtil.isBlank(name)) {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String uniqueName = ReflectUtil.getProperty(item, "uniqueName");
|
|
|
|
+ if (StringUtil.isNotBlank(uniqueName)) {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String hisDetailName = "";
|
|
|
|
+ if (type.equals(ConceptTypeEnum.LisPack.getKey())) {
|
|
|
|
+ hisDetailName = ReflectUtil.getProperty(item, "detailName");
|
|
|
|
+ if (StringUtil.isBlank(hisDetailName)) {
|
|
|
|
+ hisDetailName = "";
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (configMap.containsKey(name)) {
|
|
|
|
+ Map<String, Map<String, List<String>>> subMap = configMap.get(name);
|
|
|
|
+ if (subMap.containsKey(hisDetailName)) {
|
|
|
|
+ if (type.equals(ConceptTypeEnum.Drug.getKey())) {
|
|
|
|
+ if (MapUtils.isNotEmpty(subMap.get(hisDetailName))) {
|
|
|
|
+ for (Map.Entry<String, List<String>> thirdEntry : subMap.get(hisDetailName).entrySet()) {
|
|
|
|
+ if (ListUtil.isNotEmpty(thirdEntry.getValue())) {
|
|
|
|
+ for (String form : thirdEntry.getValue()) {
|
|
|
|
+ T o = (T) item.getClass().newInstance();
|
|
|
|
+ BeanUtil.copyProperties(item, o);
|
|
|
|
+ Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
|
|
|
|
+ setUniqueName.invoke(o, thirdEntry.getKey());
|
|
|
|
+ Method setForm = o.getClass().getMethod("setForm", String.class);
|
|
|
|
+ setForm.invoke(o, form);
|
|
|
|
+ retList.add(o);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ T o = (T) item.getClass().newInstance();
|
|
|
|
+ BeanUtil.copyProperties(item, o);
|
|
|
|
+ Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
|
|
|
|
+ setUniqueName.invoke(o, thirdEntry.getKey());
|
|
|
|
+ retList.add(o);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ List<String> standNames = new ArrayList<>(subMap.get(hisDetailName).keySet());
|
|
|
|
+ if (ListUtil.isNotEmpty(standNames)) {
|
|
|
|
+ for (String stdName : standNames) {
|
|
|
|
+ T o = (T) item.getClass().newInstance();
|
|
|
|
+ BeanUtil.copyProperties(item, o);
|
|
|
|
+ Method setUniqueName = o.getClass().getMethod("setUniqueName", String.class);
|
|
|
|
+ setUniqueName.invoke(o, stdName);
|
|
|
|
+ retList.add(o);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ return retList;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ /**
|
|
|
|
+ * 标准名称转换,指定字段
|
|
|
|
+ *
|
|
|
|
+ * @param list
|
|
|
|
+ * @param configMap
|
|
|
|
+ * @param type
|
|
|
|
+ * @param <T>
|
|
|
|
+ * @return
|
|
|
|
+ */
|
|
|
|
+ public <T> List<T> addUniqueName(List<T> list, Map<String, Map<String, Map<String, List<String>>>> configMap, Integer type,
|
|
|
|
+ String fieldName, String uniqueFieldName) {
|
|
|
|
+ List<T> retList = new ArrayList<>();
|
|
|
|
+ if (ListUtil.isEmpty(list)) {
|
|
|
|
+ return list;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ if (configMap == null) {
|
|
|
|
+ configMap = new HashMap<>();
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ try {
|
|
|
|
+ for (T item : list) {
|
|
|
|
+ String name = ReflectUtil.getProperty(item, fieldName);
|
|
|
|
+ if (StringUtil.isBlank(name)) {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String uniqueName = ReflectUtil.getProperty(item, uniqueFieldName);
|
|
|
|
+ if (StringUtil.isNotBlank(uniqueName)) {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ continue;
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ String hisDetailName = "";
|
|
|
|
+
|
|
|
|
+ if (configMap.containsKey(name)) {
|
|
|
|
+ Map<String, Map<String, List<String>>> subMap = configMap.get(name);
|
|
|
|
+ if (subMap.containsKey(hisDetailName)) {
|
|
|
|
+ List<String> standNames = new ArrayList<>(subMap.get(hisDetailName).keySet());
|
|
|
|
+ //映射关系没找到,uniqueName赋值成name
|
|
|
|
+ if (ListUtil.isEmpty(standNames)) {
|
|
|
|
+ T o = (T) item.getClass().newInstance();
|
|
|
|
+ BeanUtil.copyProperties(item, o);
|
|
|
|
+ Method setUniqueName = o.getClass().getMethod("set" + uniqueFieldName.substring(0, 1).toUpperCase() + uniqueFieldName.substring(1), String.class);
|
|
|
|
+ setUniqueName.invoke(o, name);
|
|
|
|
+ retList.add(o);
|
|
|
|
+ } else {
|
|
|
|
+ for (String stdName : standNames) {
|
|
|
|
+ T o = (T) item.getClass().newInstance();
|
|
|
|
+ BeanUtil.copyProperties(item, o);
|
|
|
|
+ Method setUniqueName = o.getClass().getMethod("set" + uniqueFieldName.substring(0, 1).toUpperCase() + uniqueFieldName.substring(1), String.class);
|
|
|
|
+ setUniqueName.invoke(o, stdName);
|
|
|
|
+ retList.add(o);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ retList.add(item);
|
|
|
|
+ }
|
|
|
|
+ } else {
|
|
|
|
+ T o = (T) item.getClass().newInstance();
|
|
|
|
+ BeanUtil.copyProperties(item, o);
|
|
|
|
+ Method setUniqueName = o.getClass().getMethod("set" + uniqueFieldName.substring(0, 1).toUpperCase() + uniqueFieldName.substring(1), String.class);
|
|
|
|
+ setUniqueName.invoke(o, name);
|
|
|
|
+ retList.add(o);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+ } catch (Exception e) {
|
|
|
|
+ e.printStackTrace();
|
|
|
|
+ }
|
|
|
|
+ return retList;
|
|
|
|
+ }
|
|
|
|
+}
|