Bläddra i källkod

1、给药途径入参映射

zhaops 3 år sedan
förälder
incheckning
1c16393049

+ 113 - 7
src/main/java/com/diagbot/aggregate/AssembleAggregate.java

@@ -47,7 +47,8 @@ public class AssembleAggregate {
             @DataConsumer("drugConfigMap") Map<String, Map<String, Map<String, List<String>>>> drugConfigMap,
             @DataConsumer("drugConfigMap") Map<String, Map<String, Map<String, List<String>>>> drugConfigMap,
             @DataConsumer("operationConfigMap") Map<String, Map<String, Map<String, List<String>>>> operationConfigMap,
             @DataConsumer("operationConfigMap") Map<String, Map<String, Map<String, List<String>>>> operationConfigMap,
             @DataConsumer("deptConfigMap") Map<String, Map<String, Map<String, List<String>>>> deptConfigMap,
             @DataConsumer("deptConfigMap") Map<String, Map<String, Map<String, List<String>>>> deptConfigMap,
-            @DataConsumer("transfusionConfigMap") Map<String, Map<String, Map<String, List<String>>>> transfusionConfigMap) {
+            @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 (MapUtils.isNotEmpty(lisConfigMap)) {
             if (ListUtil.isNotEmpty(searchData.getLis())) {
             if (ListUtil.isNotEmpty(searchData.getLis())) {
@@ -97,6 +98,18 @@ public class AssembleAggregate {
                 searchData.setDrugOrder(convertItem);
                 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 (MapUtils.isNotEmpty(operationConfigMap)) {
             if (ListUtil.isNotEmpty(searchData.getOperation())) {
             if (ListUtil.isNotEmpty(searchData.getOperation())) {
@@ -196,7 +209,7 @@ public class AssembleAggregate {
         Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap = new HashMap<>();
         Map<String, Map<String, Map<String, List<String>>>> pacsConfigMap = new HashMap<>();
         if (ListUtil.isNotEmpty(pacsHisNameList)) {
         if (ListUtil.isNotEmpty(pacsHisNameList)) {
             pacsConfigMap
             pacsConfigMap
-                    = mappingConfigFacade.groupByHisNameWithName(pacsHisNameList, ConceptTypeEnum.Pacs.getKey(), searchData.getHospitalId(),StatusEnum.Enable.getKey());
+                    = mappingConfigFacade.groupByHisNameWithName(pacsHisNameList, ConceptTypeEnum.Pacs.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
         }
         }
         return pacsConfigMap;
         return pacsConfigMap;
     }
     }
@@ -234,7 +247,7 @@ public class AssembleAggregate {
         Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
         Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
         if (ListUtil.isNotEmpty(diagHisNameList)) {
         if (ListUtil.isNotEmpty(diagHisNameList)) {
             configMap
             configMap
-                    = mappingConfigFacade.groupByHisNameWithName(diagHisNameList, ConceptTypeEnum.Disease.getKey(), searchData.getHospitalId(),StatusEnum.Enable.getKey());
+                    = mappingConfigFacade.groupByHisNameWithName(diagHisNameList, ConceptTypeEnum.Disease.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
         }
         }
         return configMap;
         return configMap;
     }
     }
@@ -267,7 +280,7 @@ public class AssembleAggregate {
         Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
         Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
         if (ListUtil.isNotEmpty(drugHisNameList)) {
         if (ListUtil.isNotEmpty(drugHisNameList)) {
             configMap
             configMap
-                    = mappingConfigFacade.groupByHisNameWithName(drugHisNameList, ConceptTypeEnum.Drug.getKey(), searchData.getHospitalId(),StatusEnum.Enable.getKey());
+                    = mappingConfigFacade.groupByHisNameWithName(drugHisNameList, ConceptTypeEnum.Drug.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
         }
         }
         return configMap;
         return configMap;
     }
     }
@@ -305,7 +318,7 @@ public class AssembleAggregate {
         Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
         Map<String, Map<String, Map<String, List<String>>>> configMap = new HashMap<>();
         if (ListUtil.isNotEmpty(operationHisNameList)) {
         if (ListUtil.isNotEmpty(operationHisNameList)) {
             configMap
             configMap
-                    = mappingConfigFacade.groupByHisNameWithName(operationHisNameList, ConceptTypeEnum.Operation.getKey(), searchData.getHospitalId(),StatusEnum.Enable.getKey());
+                    = mappingConfigFacade.groupByHisNameWithName(operationHisNameList, ConceptTypeEnum.Operation.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
         }
         }
         return configMap;
         return configMap;
     }
     }
@@ -331,7 +344,7 @@ public class AssembleAggregate {
 
 
         if (ListUtil.isNotEmpty(deptHisNameList)) {
         if (ListUtil.isNotEmpty(deptHisNameList)) {
             configMap
             configMap
-                    = mappingConfigFacade.groupByHisNameWithName(deptHisNameList, ConceptTypeEnum.Dept.getKey(), searchData.getHospitalId(),StatusEnum.Enable.getKey());
+                    = mappingConfigFacade.groupByHisNameWithName(deptHisNameList, ConceptTypeEnum.Dept.getKey(), searchData.getHospitalId(), StatusEnum.Enable.getKey());
         }
         }
         return configMap;
         return configMap;
     }
     }
@@ -365,7 +378,40 @@ public class AssembleAggregate {
 
 
         if (ListUtil.isNotEmpty(transfusionHisNameList)) {
         if (ListUtil.isNotEmpty(transfusionHisNameList)) {
             configMap
             configMap
-                    = mappingConfigFacade.groupByHisNameWithName(transfusionHisNameList, ConceptTypeEnum.Transfusion.getKey(), searchData.getHospitalId(),StatusEnum.Enable.getKey());
+                    = 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;
         return configMap;
     }
     }
@@ -456,4 +502,64 @@ public class AssembleAggregate {
         }
         }
         return retList;
         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.size() == 0) {
+            return list;
+        }
+
+        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());
+                        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 {
+                    retList.add(item);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return retList;
+    }
 }
 }

+ 2 - 1
src/main/java/com/diagbot/enums/ConceptTypeEnum.java

@@ -25,7 +25,8 @@ public enum ConceptTypeEnum implements KeyedNamed {
     Tcmdisease(12,"中医疾病"),
     Tcmdisease(12,"中医疾病"),
     Tcmsyndrome(13,"中医证候"),
     Tcmsyndrome(13,"中医证候"),
     Anesthesia(14, "麻醉"),
     Anesthesia(14, "麻醉"),
-    Form(15, "药品剂型");
+    Form(15, "药品剂型"),
+    AdministrationRoute(16,"给药途径");
 
 
     @Setter
     @Setter
     private int key;
     private int key;