zhaops пре 4 година
родитељ
комит
4493b739a8

+ 50 - 9
src/main/java/com/diagbot/aggregate/AssembleAggregate.java

@@ -13,6 +13,7 @@ import com.diagbot.facade.TransfusionConfigFacade;
 import com.diagbot.util.BeanUtil;
 import com.diagbot.util.ListUtil;
 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;
@@ -56,7 +57,7 @@ public class AssembleAggregate {
             @DataConsumer("lisConfigMap") Map<String, Map<String, Map<String, Long>>> lisConfigMap,
             @DataConsumer("pacsConfigMap") Map<String, Map<String, Long>> pacsConfigMap,
             @DataConsumer("diagConfigMap") Map<String, Map<String, Long>> diagConfigMap,
-            @DataConsumer("drugConfigMap") Map<String, Map<String, Long>> drugConfigMap,
+            @DataConsumer("drugConfigMap") Map<String, Map<String, Map<String, Long>>> drugConfigMap,
             @DataConsumer("operationConfigMap") Map<String, Map<String, Long>> operationConfigMap,
             @DataConsumer("deptConfigMap") Map<String, Map<String, Long>> deptConfigMap,
             @DataConsumer("transfusionConfigMap") Map<String, Map<String, Long>> transfusionConfigMap) {
@@ -101,11 +102,11 @@ public class AssembleAggregate {
         //药品
         if (MapUtils.isNotEmpty(drugConfigMap)) {
             if (ListUtil.isNotEmpty(searchData.getDrug())) {
-                List<Item> convertItem = itemConvert(searchData.getDrug(), drugConfigMap);
+                List<Drug> convertItem = drugConvert(searchData.getDrug(), drugConfigMap);
                 searchData.setDrug(convertItem);
             }
             if (ListUtil.isNotEmpty(searchData.getDrugOrder())) {
-                List<Item> convertItem = itemConvert(searchData.getDrugOrder(), drugConfigMap);
+                List<Drug> convertItem = drugConvert(searchData.getDrugOrder(), drugConfigMap);
                 searchData.setDrugOrder(convertItem);
             }
         }
@@ -138,8 +139,6 @@ public class AssembleAggregate {
                 searchData.setTransfusionOrder(convertItem);
             }
         }
-
-
         return searchData;
     }
 
@@ -248,7 +247,7 @@ public class AssembleAggregate {
     }
 
     @DataProvider("drugConfigMap")
-    public Map<String, Map<String, Long>> drugConfigMap(@InvokeParameter("searchData") SearchData searchData) {
+    public Map<String, Map<String, Map<String, Long>>> drugConfigMap(@InvokeParameter("searchData") SearchData searchData) {
         //药品公表转换
         List<String> drugHisNameList = Lists.newArrayList();
         //drug
@@ -272,7 +271,7 @@ public class AssembleAggregate {
                 .distinct()
                 .collect(Collectors.toList());
 
-        Map<String, Map<String, Long>> configMap = new HashMap<>();
+        Map<String, Map<String, Map<String, Long>>> configMap = new HashMap<>();
         if (ListUtil.isNotEmpty(drugHisNameList)) {
             configMap
                     = drugConfigFacade.getConfigMap(searchData.getHospitalId(), drugHisNameList, null);
@@ -454,7 +453,49 @@ public class AssembleAggregate {
     }
 
     /**
-     * 药品、手术、诊断、科室转换
+     * 药品公表转换
+     *
+     * @param drug
+     * @param configMap
+     * @return
+     */
+    public List<Drug> drugConvert(List<Drug> drug, Map<String, Map<String, Map<String, Long>>> configMap) {
+        if (ListUtil.isEmpty(drug)) {
+            return drug;
+        }
+        if (configMap == null || configMap.size() == 0) {
+            return drug;
+        }
+        List<Drug> convertDrug = Lists.newLinkedList();
+
+        drug.forEach(drugRecord -> {
+            if (StringUtil.isBlank(drugRecord.getName())
+                    || StringUtil.isNotBlank(drugRecord.getUniqueName())) {
+                convertDrug.add(drugRecord);
+            } else {
+                Map<String, Long> uniqueNameMap = new HashMap<>();
+                if (StringUtil.isBlank(drugRecord.getForm())) {
+                    drugRecord.setForm("");
+                }
+                if (configMap.get(drugRecord.getName()) != null
+                        && configMap.get(drugRecord.getName()).get(drugRecord.getForm()) != null) {
+                    uniqueNameMap = configMap.get(drugRecord.getName()).get(drugRecord.getForm());
+                }
+                if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
+                    for (String uniqueName : uniqueNameMap.keySet()) {
+                        Drug convertDrugRecord = new Drug();
+                        BeanUtil.copyProperties(drugRecord, convertDrugRecord);
+                        convertDrugRecord.setUniqueName(uniqueName);
+                        convertDrug.add(convertDrugRecord);
+                    }
+                }
+            }
+        });
+        return convertDrug;
+    }
+
+    /**
+     * 手术、诊断、科室转换
      *
      * @param items
      * @param configMap
@@ -526,4 +567,4 @@ public class AssembleAggregate {
         });
         return convertItem;
     }
-}
+}

+ 1 - 1
src/main/java/com/diagbot/aggregate/AssemblePushAggregate.java

@@ -184,7 +184,7 @@ public class AssemblePushAggregate {
             List<String> uniqueNameList = retDrug.stream()
                     .map(i -> i.getName())
                     .collect(Collectors.toList());
-            Map<String, Map<String, Long>> uniqueNameMap
+            Map<String, Map<String, Map<String,Long>>> uniqueNameMap
                     = drugConfigFacade.getUniqueNameConfigMap(hospitalId, null, uniqueNameList);
             if (uniqueNameMap != null && uniqueNameMap.size() > 0) {
                 retDrug.forEach(item -> {

+ 6 - 1
src/main/java/com/diagbot/dto/StaticKnowledgeDTO.java

@@ -42,4 +42,9 @@ public class StaticKnowledgeDTO {
      * 静态知识明细
      */
     private Map<String, List<StaticKnowledgeDetailDTO>> details;
-}
+
+    /**
+     * 剂型
+     */
+    private String form;
+}

+ 37 - 13
src/main/java/com/diagbot/entity/DrugConfig.java

@@ -61,7 +61,7 @@ public class DrugConfig implements Serializable {
     /**
      * his名称
      */
-    @Excel(name="HIS名称", width = 40)
+    @Excel(name = "HIS名称", width = 40)
     @NotBlank(message = "请输入医院端项目名称")
     private String hisName;
 
@@ -75,9 +75,15 @@ public class DrugConfig implements Serializable {
     /**
      * 标准编码
      */
-    @Excel(name="标准编码", width = 40)
+    @Excel(name = "标准编码", width = 40)
     private String uniqueCode;
 
+    /**
+     * 剂型
+     */
+    @Excel(name = "剂型", width = 20)
+    private String form;
+
     public Long getId() {
         return id;
     }
@@ -85,6 +91,7 @@ public class DrugConfig implements Serializable {
     public void setId(Long id) {
         this.id = id;
     }
+
     public String getIsDeleted() {
         return isDeleted;
     }
@@ -92,6 +99,7 @@ public class DrugConfig implements Serializable {
     public void setIsDeleted(String isDeleted) {
         this.isDeleted = isDeleted;
     }
+
     public Date getGmtCreate() {
         return gmtCreate;
     }
@@ -99,6 +107,7 @@ public class DrugConfig implements Serializable {
     public void setGmtCreate(Date gmtCreate) {
         this.gmtCreate = gmtCreate;
     }
+
     public Date getGmtModified() {
         return gmtModified;
     }
@@ -106,6 +115,7 @@ public class DrugConfig implements Serializable {
     public void setGmtModified(Date gmtModified) {
         this.gmtModified = gmtModified;
     }
+
     public String getCreator() {
         return creator;
     }
@@ -113,6 +123,7 @@ public class DrugConfig implements Serializable {
     public void setCreator(String creator) {
         this.creator = creator;
     }
+
     public String getModifier() {
         return modifier;
     }
@@ -120,6 +131,7 @@ public class DrugConfig implements Serializable {
     public void setModifier(String modifier) {
         this.modifier = modifier;
     }
+
     public Long getHospitalId() {
         return hospitalId;
     }
@@ -127,6 +139,7 @@ public class DrugConfig implements Serializable {
     public void setHospitalId(Long hospitalId) {
         this.hospitalId = hospitalId;
     }
+
     public String getHisName() {
         return hisName;
     }
@@ -134,6 +147,7 @@ public class DrugConfig implements Serializable {
     public void setHisName(String hisName) {
         this.hisName = hisName;
     }
+
     public String getUniqueName() {
         return uniqueName;
     }
@@ -141,6 +155,7 @@ public class DrugConfig implements Serializable {
     public void setUniqueName(String uniqueName) {
         this.uniqueName = uniqueName;
     }
+
     public String getUniqueCode() {
         return uniqueCode;
     }
@@ -149,19 +164,28 @@ public class DrugConfig implements Serializable {
         this.uniqueCode = uniqueCode;
     }
 
+    public String getForm() {
+        return form;
+    }
+
+    public void setForm(String form) {
+        this.form = form;
+    }
+
     @Override
     public String toString() {
         return "DrugConfig{" +
-            "id=" + id +
-            ", isDeleted=" + isDeleted +
-            ", gmtCreate=" + gmtCreate +
-            ", gmtModified=" + gmtModified +
-            ", creator=" + creator +
-            ", modifier=" + modifier +
-            ", hospitalId=" + hospitalId +
-            ", hisName=" + hisName +
-            ", uniqueName=" + uniqueName +
-            ", uniqueCode=" + uniqueCode +
-        "}";
+                "id=" + id +
+                ", isDeleted=" + isDeleted +
+                ", gmtCreate=" + gmtCreate +
+                ", gmtModified=" + gmtModified +
+                ", creator=" + creator +
+                ", modifier=" + modifier +
+                ", hospitalId=" + hospitalId +
+                ", hisName=" + hisName +
+                ", uniqueName=" + uniqueName +
+                ", uniqueCode=" + uniqueCode +
+                ", form=" + form +
+                "}";
     }
 }

+ 1 - 1
src/main/java/com/diagbot/facade/ConceptInfoFacade.java

@@ -459,7 +459,7 @@ public class ConceptInfoFacade extends ConceptInfoServiceImpl {
                 }
                 break;
             case 2:
-                Map<String, Map<String, Long>> drugConfigMap
+                Map<String, Map<String, Map<String,Long>>> drugConfigMap
                         = drugConfigFacade.getConfigMap(Long.valueOf(hospitalId),
                         ListUtil.arrayToList(new String[] { staticKnowledgeHISVO.getHisName() }), null);
                 if (drugConfigMap != null) {

+ 68 - 15
src/main/java/com/diagbot/facade/DrugConfigFacade.java

@@ -51,6 +51,13 @@ public class DrugConfigFacade {
                 .eq("hospital_id", Long.valueOf(hospitalId))
                 .eq("his_name", drugConfig.getHisName())
                 .eq("unique_name", drugConfig.getUniqueName());
+        if (StringUtil.isBlank(drugConfig.getForm())) {
+            queryWrapper.and(i -> i.isNull("form")
+                    .or()
+                    .eq("form", ""));
+        } else {
+            queryWrapper.eq("form", drugConfig.getForm());
+        }
         DrugConfig oldRecord = drugConfigService.getOne(queryWrapper, false);
         if (oldRecord != null) {
             return true;
@@ -76,6 +83,13 @@ public class DrugConfigFacade {
                 .eq("hospital_id", Long.valueOf(hospitalId))
                 .eq("his_name", drugConfig.getHisName())
                 .eq("unique_name", drugConfig.getUniqueName());
+        if (StringUtil.isBlank(drugConfig.getForm())) {
+            queryWrapper.and(i -> i.isNull("form")
+                    .or()
+                    .eq("form", ""));
+        } else {
+            queryWrapper.eq("form", drugConfig.getForm());
+        }
         DrugConfig oldRecord = drugConfigService.getOne(queryWrapper, false);
         if (oldRecord != null) {
             drugConfig.setId(oldRecord.getId());
@@ -126,19 +140,30 @@ public class DrugConfigFacade {
                 .filter(i -> StringUtil.isNotBlank(i.getHisName()))
                 .filter(i -> StringUtil.isNotBlank(i.getUniqueName()))
                 .collect(Collectors.toList());
+        List<String> hisNames = drugConfigList
+                .stream()
+                .map(i -> i.getHisName())
+                .collect(Collectors.toList());
+        List<String> uniqueNames = drugConfigList
+                .stream()
+                .map(i -> i.getUniqueName())
+                .collect(Collectors.toList());
 
         // 验证数据是否已存在,已存在的先删除
         // 没id的删除重新插入,有id的更新
         List<Long> deleteIds = Lists.newLinkedList();
-        Map<String, Map<String, Long>> configMap
-                = getConfigMap(Long.valueOf(hospitalId), null, null);
+        Map<String, Map<String, Map<String, Long>>> configMap
+                = getConfigMap(Long.valueOf(hospitalId), hisNames, uniqueNames);
         drugConfigList.forEach(drugConfig -> {
             drugConfig.setHospitalId(Long.valueOf(hospitalId));
             drugConfig.setModifier(userId);
             drugConfig.setGmtModified(now);
+            String form = StringUtil.isBlank(drugConfig.getForm()) ? "" : drugConfig.getForm();
             if (drugConfig.getId() == null) {
-                if (configMap.containsKey(drugConfig.getHisName())) {
-                    deleteIds.add(configMap.get(drugConfig.getHisName()).get(drugConfig.getUniqueName()));
+                if (configMap.get(drugConfig.getHisName()) != null
+                        && configMap.get(drugConfig.getHisName()).get(form) != null
+                        && configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()) != null) {
+                    deleteIds.add(configMap.get(drugConfig.getHisName()).get(form).get(drugConfig.getUniqueName()));
                 }
                 drugConfig.setCreator(userId);
                 drugConfig.setGmtCreate(now);
@@ -147,6 +172,7 @@ public class DrugConfigFacade {
                 drugConfig.setIsDeleted(IsDeleteEnum.N.getKey());
             }
         });
+
         //删除已存在映射关系
         IdListVO idListVO = new IdListVO();
         idListVO.setIds(deleteIds);
@@ -216,10 +242,10 @@ public class DrugConfigFacade {
      * @param hospitalId
      * @param hisNames
      * @param uniqueNames
-     * @return
+     * @return Map<hisName,Map<form,Map<uniqueName,id>>>
      */
-    public Map<String, Map<String, Long>> getConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
-        Map<String, Map<String, Long>> retMap = new HashMap<>();
+    public Map<String, Map<String,Map<String, Long>>> getConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Map<String, Long>>> retMap = new HashMap<>();
         QueryWrapper<DrugConfig> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", hospitalId);
@@ -233,10 +259,24 @@ public class DrugConfigFacade {
         if (ListUtil.isEmpty(records)) {
             return retMap;
         }
-        Map<String, List<DrugConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
-        for (Map.Entry<String, List<DrugConfig>> entry : configMap.entrySet()) {
+        Map<String, List<DrugConfig>> hisNameMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<DrugConfig>> entry : hisNameMap.entrySet()) {
             if (ListUtil.isNotEmpty(entry.getValue())) {
-                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "uniqueName", "id"));
+                Map<String, Map<String, Long>> formMap = new HashMap<>();
+                entry.getValue().forEach(i -> {
+                    if (StringUtil.isBlank(i.getForm())) {
+                        i.setForm("");
+                    }
+                });
+                Map<String, List<DrugConfig>> subMap
+                        = EntityUtil.makeEntityListMap(entry.getValue(), "form");
+                for (Map.Entry<String, List<DrugConfig>> subEntry : subMap.entrySet()) {
+                    if (ListUtil.isNotEmpty(subEntry.getValue())) {
+                        formMap.put(subEntry.getKey(),
+                                EntityUtil.makeMapWithKeyValue(subEntry.getValue(), "uniqueName", "id"));
+                    }
+                }
+                retMap.put(entry.getKey(), formMap);
             }
         }
         return retMap;
@@ -244,15 +284,15 @@ public class DrugConfigFacade {
 
     /**
      * 获取映射关系
-     * Map<uniqueName,Map<hisName,id>>
+     * Map<uniqueName,Map<form,Map<hisName,id>>>
      *
      * @param hospitalId
      * @param hisNames
      * @param uniqueNames
      * @return
      */
-    public Map<String,Map<String,Long>> getUniqueNameConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
-        Map<String, Map<String, Long>> retMap = new HashMap<>();
+    public Map<String,Map<String,Map<String,Long>>> getUniqueNameConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Map<String, Long>>> retMap = new HashMap<>();
         QueryWrapper<DrugConfig> queryWrapper = new QueryWrapper<>();
         queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
                 .eq("hospital_id", hospitalId);
@@ -266,11 +306,24 @@ public class DrugConfigFacade {
         if (ListUtil.isEmpty(records)) {
             return retMap;
         }
-
+        records.forEach(i -> {
+            if (StringUtil.isBlank(i.getForm())) {
+                i.setForm("");
+            }
+        });
         Map<String, List<DrugConfig>> uniqueNameMap = EntityUtil.makeEntityListMap(records, "uniqueName");
         for (Map.Entry<String, List<DrugConfig>> entry : uniqueNameMap.entrySet()) {
             if (ListUtil.isNotEmpty(entry.getValue())) {
-                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "hisName", "id"));
+                Map<String, Map<String, Long>> formMap = new HashMap<>();
+                Map<String, List<DrugConfig>> subMap
+                        = EntityUtil.makeEntityListMap(entry.getValue(), "form");
+                for (Map.Entry<String, List<DrugConfig>> subEntry : subMap.entrySet()) {
+                    if (ListUtil.isNotEmpty(subEntry.getValue())) {
+                        formMap.put(subEntry.getKey(),
+                                EntityUtil.makeMapWithKeyValue(subEntry.getValue(), "hisName", "id"));
+                    }
+                }
+                retMap.put(entry.getKey(), formMap);
             }
         }
         return retMap;

+ 18 - 0
src/main/java/com/diagbot/vo/Drug.java

@@ -0,0 +1,18 @@
+package com.diagbot.vo;
+
+import lombok.Getter;
+import lombok.Setter;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/9/7 20:09
+ */
+@Getter
+@Setter
+public class Drug {
+    private String name;
+    private String form;
+    private String uniqueName;
+    private String dateValue;
+}

+ 5 - 0
src/main/java/com/diagbot/vo/DrugConfigPageVO.java

@@ -33,4 +33,9 @@ public class DrugConfigPageVO extends Page {
      * 标准编码
      */
     private String uniqueCode;
+
+    /**
+     * 剂型
+     */
+    private String form;
 }

+ 2 - 2
src/main/java/com/diagbot/vo/SearchData.java

@@ -120,7 +120,7 @@ public class SearchData extends HospitalBaseVO {
     /**
      * 药品
      */
-    private List<Item> drug = new ArrayList<>();
+    private List<Drug> drug = new ArrayList<>();
     /**
      * 手术及操作
      */
@@ -144,7 +144,7 @@ public class SearchData extends HospitalBaseVO {
     /**
      * 当前药品开单项
      */
-    private List<Item> drugOrder = new ArrayList<>();
+    private List<Drug> drugOrder = new ArrayList<>();
     /**
      * 当前手术开单项
      */

+ 4 - 0
src/main/resources/mapper/DrugConfigMapper.xml

@@ -14,6 +14,7 @@
         <result column="his_name" property="hisName" />
         <result column="unique_name" property="uniqueName" />
         <result column="unique_code" property="uniqueCode" />
+        <result column="form" property="form" />
     </resultMap>
 
     <!-- 分页查询 -->
@@ -33,6 +34,9 @@
         <if test="drugConfigPageVO.uniqueCode!=null and drugConfigPageVO.uniqueCode!=''">
             and a.unique_code like concat("%",#{drugConfigPageVO.uniqueCode},"%")
         </if>
+        <if test="drugConfigPageVO.form!=null and drugConfigPageVO.form!=''">
+            and a.form = #{drugConfigPageVO.form}
+        </if>
         order by a.gmt_modified desc
     </select>