Преглед на файлове

Merge branch 'develop' into dev/tcm_20210512

gaodm преди 4 години
родител
ревизия
f4b44eb247

+ 158 - 0
src/main/java/com/diagbot/entity/TranOperationConfig.java

@@ -0,0 +1,158 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 手术映射表
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-12-22
+ */
+public class TranOperationConfig implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    /**
+     * 主键
+     */
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 是否删除,N:未删除,Y:删除
+     */
+    private String isDeleted;
+
+    /**
+     * 记录创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 记录修改时间,如果时间是1970年则表示纪录未修改
+     */
+    private Date gmtModified;
+
+    /**
+     * 创建人,0表示无创建人值
+     */
+    private String creator;
+
+    /**
+     * 修改人,如果为0则表示纪录未修改
+     */
+    private String modifier;
+
+    /**
+     * 医院id
+     */
+    private Long hospitalId;
+
+    /**
+     * 医院项目名称
+     */
+    private String hisName;
+
+    /**
+     * 标准名称
+     */
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    private String uniqueCode;
+
+    public Long getId() {
+        return id;
+    }
+
+    public void setId(Long id) {
+        this.id = id;
+    }
+    public String getIsDeleted() {
+        return isDeleted;
+    }
+
+    public void setIsDeleted(String isDeleted) {
+        this.isDeleted = isDeleted;
+    }
+    public Date getGmtCreate() {
+        return gmtCreate;
+    }
+
+    public void setGmtCreate(Date gmtCreate) {
+        this.gmtCreate = gmtCreate;
+    }
+    public Date getGmtModified() {
+        return gmtModified;
+    }
+
+    public void setGmtModified(Date gmtModified) {
+        this.gmtModified = gmtModified;
+    }
+    public String getCreator() {
+        return creator;
+    }
+
+    public void setCreator(String creator) {
+        this.creator = creator;
+    }
+    public String getModifier() {
+        return modifier;
+    }
+
+    public void setModifier(String modifier) {
+        this.modifier = modifier;
+    }
+    public Long getHospitalId() {
+        return hospitalId;
+    }
+
+    public void setHospitalId(Long hospitalId) {
+        this.hospitalId = hospitalId;
+    }
+    public String getHisName() {
+        return hisName;
+    }
+
+    public void setHisName(String hisName) {
+        this.hisName = hisName;
+    }
+    public String getUniqueName() {
+        return uniqueName;
+    }
+
+    public void setUniqueName(String uniqueName) {
+        this.uniqueName = uniqueName;
+    }
+    public String getUniqueCode() {
+        return uniqueCode;
+    }
+
+    public void setUniqueCode(String uniqueCode) {
+        this.uniqueCode = uniqueCode;
+    }
+
+    @Override
+    public String toString() {
+        return "TranOperationConfig{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", hospitalId=" + hospitalId +
+            ", hisName=" + hisName +
+            ", uniqueName=" + uniqueName +
+            ", uniqueCode=" + uniqueCode +
+        "}";
+    }
+}

+ 206 - 55
src/main/java/com/diagbot/facade/CommonFacade.java

@@ -42,12 +42,14 @@ import com.diagbot.vo.neoPushEntity.PacsPushVo;
 import com.diagbot.vo.neoPushEntity.PresentPushVo;
 import com.diagbot.vo.neoPushEntity.Symptom;
 import com.google.common.collect.Lists;
+import org.apache.commons.beanutils.BeanUtils;
 import org.apache.commons.lang3.StringUtils;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
 import java.util.ArrayList;
 import java.util.Iterator;
+import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
 import java.util.stream.Collectors;
@@ -66,6 +68,8 @@ public class CommonFacade {
     @Autowired
     PacsConfigFacade pacsConfigFacade;
     @Autowired
+    TranOperationConfigFacade tranOperationConfigFacade;
+    @Autowired
     CommonRule commonRule;
     @Autowired
     RedisUtil redisUtil;
@@ -206,23 +210,23 @@ public class CommonFacade {
         }
         standConvert.setDiaglList(diagList);
 
-        // 【所有化验】
-        List<String> allLis = new ArrayList<>();
-        // 1、普通化验——取明细
-        CoreUtil.addList(allLis, CoreUtil.filterUniqueList(wordCrfDTO.getLis(), "detailName"));
-        // 2、开单化验——取套餐
-        CoreUtil.addList(allLis, CoreUtil.filterUniqueList(wordCrfDTO.getLisOrder()));
-        standConvert.setLisList(allLis);
-
-        // 【所有辅助项目】
-        List<String> allPacs = new ArrayList<>();
-        // 1、模型解析辅检项目
-        CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacsLabel().getItem()));
-        // 2、结构化辅检项目
-        CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacs()));
-        // 3、开单辅检项目
-        CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacsOrder()));
-        standConvert.setPacsList(allPacs);
+        // // 【所有化验】
+        // List<String> allLis = new ArrayList<>();
+        // // 1、普通化验——取明细
+        // CoreUtil.addList(allLis, CoreUtil.filterUniqueList(wordCrfDTO.getLis(), "detailName"));
+        // // 2、开单化验——取套餐
+        // CoreUtil.addList(allLis, CoreUtil.filterUniqueList(wordCrfDTO.getLisOrder()));
+        // standConvert.setLisList(allLis);
+        //
+        // // 【所有辅助项目】
+        // List<String> allPacs = new ArrayList<>();
+        // // 1、模型解析辅检项目
+        // CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacsLabel().getItem()));
+        // // 2、结构化辅检项目
+        // CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacs()));
+        // // 3、开单辅检项目
+        // CoreUtil.addList(allPacs, CoreUtil.filterUniqueList(wordCrfDTO.getPacsOrder()));
+        // standConvert.setPacsList(allPacs);
 
         // 【所有药品】
         List<String> drugList = new ArrayList<>();
@@ -240,23 +244,23 @@ public class CommonFacade {
         CoreUtil.addList(drugList, CoreUtil.filterUniqueList(wordCrfDTO.getDrug()));
         standConvert.setDrugList(drugList);
 
-        // 【所有手术】
-        List<String> operationList = new ArrayList<>();
-        // 1、主诉手术
-        CoreUtil.addList(operationList, CoreUtil.getPropertyList(chiefLabel.getOperations()));
-        // 2、现病史手术
-        CoreUtil.addList(operationList, CoreUtil.getPropertyList(presentLabel.getOperations()));
-        // 3、既往史手术
-        CoreUtil.addList(operationList, CoreUtil.getPropertyList(pastLabel.getOperations()));
-        // 4、开单手术
-        CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperationOrder()));
-        // 5、结构化手术
-        CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperation()));
-        // 6、选中手术
-        if (wordCrfDTO.getOperationName() != null && StringUtils.isBlank(wordCrfDTO.getOperationName().getUniqueName())) {
-            operationList.add(wordCrfDTO.getOperationName().getName());
-        }
-        standConvert.setOperationList(operationList);
+        // // 【所有手术】
+        // List<String> operationList = new ArrayList<>();
+        // // 1、主诉手术
+        // CoreUtil.addList(operationList, CoreUtil.getPropertyList(chiefLabel.getOperations()));
+        // // 2、现病史手术
+        // CoreUtil.addList(operationList, CoreUtil.getPropertyList(presentLabel.getOperations()));
+        // // 3、既往史手术
+        // CoreUtil.addList(operationList, CoreUtil.getPropertyList(pastLabel.getOperations()));
+        // // 4、开单手术
+        // CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperationOrder()));
+        // // 5、结构化手术
+        // CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperation()));
+        // // 6、选中手术
+        // if (wordCrfDTO.getOperationName() != null && StringUtils.isBlank(wordCrfDTO.getOperationName().getUniqueName())) {
+        //     operationList.add(wordCrfDTO.getOperationName().getName());
+        // }
+        // standConvert.setOperationList(operationList);
 
         // 【所有体征】(临床表现、体征结果)
         List<String> vitalList = new ArrayList<>();
@@ -317,19 +321,24 @@ public class CommonFacade {
         // 6、结构化药品
         CoreUtil.setPropertyList(wordCrfDTO.getDrug(), "name", "uniqueName", map.get(StandConvertEnum.drug.toString()));
 
-        // 【化验回填】
-        // 1、普通化验
-        CoreUtil.setPropertyList(lis, "detailName", "uniqueName", map.get(StandConvertEnum.lis.toString()));
-        // 2、开单化验——取套餐
-        CoreUtil.setPropertyList(wordCrfDTO.getLisOrder(), "name", "uniqueName", map.get(StandConvertEnum.lis.toString()));
-
-        // 【辅助项目回填】
-        // 1、模型解析辅检项目
-        CoreUtil.setPropertyList(pacsList, "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
-        // 2、结构化辅检项目
-        CoreUtil.setPropertyList(wordCrfDTO.getPacs(), "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
-        // 3、开单辅检项目
-        CoreUtil.setPropertyList(wordCrfDTO.getPacsOrder(), "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
+//        // 【化验回填】
+//        // 1、普通化验
+//        CoreUtil.setPropertyList(lis, "detailName", "uniqueName", map.get(StandConvertEnum.lis.toString()));
+//        // 2、开单化验——取套餐
+//        CoreUtil.setPropertyList(wordCrfDTO.getLisOrder(), "name", "uniqueName", map.get(StandConvertEnum.lis.toString()));
+//
+//        // 【辅助项目回填】
+//        // 1、模型解析辅检项目
+//        CoreUtil.setPropertyList(pacsList, "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
+//        // 2、结构化辅检项目
+//        CoreUtil.setPropertyList(wordCrfDTO.getPacs(), "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
+//        // 3、开单辅检项目
+//        CoreUtil.setPropertyList(wordCrfDTO.getPacsOrder(), "name", "uniqueName", map.get(StandConvertEnum.pacs.toString()));
+
+        CoreUtil.setUninameFromDetail(wordCrfDTO.getLis(),"detailName");
+        CoreUtil.setUninameFromDetail(wordCrfDTO.getLisOrder(),"name");
+
+        pacsGetAndSet(wordCrfDTO);
 
         // 【体征回填】
         // CoreUtil.setPropertyList(vitalLabel.getVitals(), map.get(StandConvertEnum.vital.toString()));
@@ -337,20 +346,162 @@ public class CommonFacade {
 
         // 【手术回填】
         // 1、主诉手术
-        CoreUtil.setPropertyList(chiefLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        // CoreUtil.setPropertyList(chiefLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        // // 2、现病史手术
+        // CoreUtil.setPropertyList(presentLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        // // 3、既往史手术
+        // CoreUtil.setPropertyList(pastLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        // // 4、开单手术
+        // CoreUtil.setPropertyList(wordCrfDTO.getOperationOrder(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        // // 5、结构化手术
+        // CoreUtil.setPropertyList(wordCrfDTO.getOperation(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        // // 6、选中手术
+        // CoreUtil.setPropertyList(wordCrfDTO.getOperationName(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        operateGetAndSet(wordCrfDTO);
+
+        //【输血回填】
+        CoreUtil.setPropertyList(wordCrfDTO.getTransfusionOrder(), "name", "uniqueName", map.get(StandConvertEnum.transfusion.toString()));
+    }
+
+    /**
+     * 手术映射(关闭同义词转换)
+     *
+     * @param wordCrfDTO
+     */
+    public void operateGetAndSet(WordCrfDTO wordCrfDTO) {
+        // 【所有手术】
+        List<String> operationList = new ArrayList<>();
+        // 1、主诉手术
+        CoreUtil.addList(operationList, CoreUtil.getPropertyList(wordCrfDTO.getChiefLabel().getOperations()));
         // 2、现病史手术
-        CoreUtil.setPropertyList(presentLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        CoreUtil.addList(operationList, CoreUtil.getPropertyList(wordCrfDTO.getPresentLabel().getOperations()));
         // 3、既往史手术
-        CoreUtil.setPropertyList(pastLabel.getOperations(), map.get(StandConvertEnum.operation.toString()));
+        CoreUtil.addList(operationList, CoreUtil.getPropertyList(wordCrfDTO.getPastLabel().getOperations()));
         // 4、开单手术
-        CoreUtil.setPropertyList(wordCrfDTO.getOperationOrder(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperationOrder()));
         // 5、结构化手术
-        CoreUtil.setPropertyList(wordCrfDTO.getOperation(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        CoreUtil.addList(operationList, CoreUtil.filterUniqueList(wordCrfDTO.getOperation()));
         // 6、选中手术
-        CoreUtil.setPropertyList(wordCrfDTO.getOperationName(), "name", "uniqueName", map.get(StandConvertEnum.operation.toString()));
+        if (wordCrfDTO.getOperationName() != null && StringUtils.isBlank(wordCrfDTO.getOperationName().getUniqueName())) {
+            operationList.add(wordCrfDTO.getOperationName().getName());
+        }
+        operationList = operationList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        Map<String, Map<String, Long>> configMap = new LinkedHashMap<>();
+        if (ListUtil.isNotEmpty(operationList)) {
+            configMap = tranOperationConfigFacade.getConfigMap(wordCrfDTO.getHospitalId(), operationList, null);
+            // 1、主诉手术
+            setListProperty(wordCrfDTO.getChiefLabel(), "operations", "standName", configMap);
+            // 2、现病史手术
+            setListProperty(wordCrfDTO.getPresentLabel(), "operations", "standName", configMap);
+            // 3、既往史手术
+            setListProperty(wordCrfDTO.getPastLabel(), "operations", "standName", configMap);
+            // 4、开单手术
+            setListProperty(wordCrfDTO, "operation", "uniqueName", configMap);
+            // 5、结构化手术
+            setListProperty(wordCrfDTO, "operationOrder", "uniqueName", configMap);
+            // 6、选中手术
+            if (wordCrfDTO.getOperationName() != null &&
+                    StringUtil.isNotBlank(wordCrfDTO.getOperationName().getName()) &&
+                    StringUtil.isBlank(wordCrfDTO.getOperationName().getUniqueName())) {
+                wordCrfDTO.getOperationName().setUniqueName(wordCrfDTO.getOperationName().getName());
+            }
+        }
+    }
 
-        //【输血回填】
-        CoreUtil.setPropertyList(wordCrfDTO.getTransfusionOrder(), "name", "uniqueName", map.get(StandConvertEnum.transfusion.toString()));
+    /**
+     * 辅检映射(关闭同义词转换)
+     *
+     * @param wordCrfDTO
+     */
+    public void pacsGetAndSet(WordCrfDTO wordCrfDTO) {
+        // 【所有辅检】
+        List<String> pacsList = new ArrayList<>();
+        // 1、结构化
+        CoreUtil.addList(pacsList, CoreUtil.getPropertyList(wordCrfDTO.getPacs()));
+        // 2、开单
+        CoreUtil.addList(pacsList, CoreUtil.getPropertyList(wordCrfDTO.getPacsOrder()));
+
+        pacsList = pacsList
+                .stream()
+                .distinct()
+                .collect(Collectors.toList());
+
+        Map<String, Map<String, Long>> configMap = new LinkedHashMap<>();
+        if (ListUtil.isNotEmpty(pacsList)) {
+            configMap = pacsConfigFacade.getConfigMap(wordCrfDTO.getHospitalId(), pacsList, null);
+
+            // 4、结构化
+            setListProperty(wordCrfDTO, "pacs", "uniqueName", configMap);
+            // 5、开单
+            setListProperty(wordCrfDTO, "pacsOrder", "uniqueName", configMap);
+        }
+    }
+
+    /**
+     * 替换映射内容
+     *
+     * @param obj 对象
+     * @param listProperty 获取List属性名
+     * @param objProperty 对象属性名
+     * @param configMap 映射Map
+     */
+    public <T> void setListProperty(Object obj, String listProperty, String objProperty, Map<String, Map<String, Long>> configMap) {
+        Object tList = CoreUtil.getFieldValue(obj, listProperty);
+        List<T> newList = convertStandName((List)tList, configMap, objProperty);
+        CoreUtil.setFieldValue(obj, listProperty, newList);
+    }
+
+    /**
+     * 标准名称转换
+     *
+     * @param list
+     * @param configMap
+     * @param fieldName
+     * @param <T>
+     * @return
+     */
+    public <T> List<T> convertStandName(List<T> list, Map<String, Map<String, Long>> configMap, String fieldName) {
+        List<T> retList = new ArrayList<>();
+        try {
+            if (ListUtil.isEmpty(list)) {
+                return retList;
+            }
+            for (T item : list) {
+                String name = item.getClass().getMethod("getName").invoke(item).toString();
+                if (StringUtil.isBlank(name)) {
+                    retList.add(item);
+                    continue;
+                }
+                if (fieldName.equals("uniqueName")) {
+                    String uniqueName = item.getClass().getMethod("getUniqueName").invoke(item).toString();
+                    if (StringUtil.isNotBlank(uniqueName)) {
+                        retList.add(item);
+                        continue;
+                    }
+                }
+                if (configMap.containsKey(name)) {
+                    List<String> standNames = new ArrayList<>(configMap.get(name).keySet());
+                    for (String stdName : standNames) {
+                        T o = (T) item.getClass().newInstance();
+                        BeanUtil.copyProperties(item, o);
+                        BeanUtils.copyProperty(o, fieldName, stdName);
+                        retList.add(o);
+                    }
+                } else {
+                    if (fieldName.equals("uniqueName")) {
+                        BeanUtils.copyProperty(item, fieldName, name);
+                    }
+                    retList.add(item);
+                }
+            }
+        } catch (Exception e) {
+            e.printStackTrace();
+        }
+        return retList;
     }
 
     /**

+ 14 - 9
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -498,18 +498,23 @@ public class NeoFacade {
 
         List<StandConvertCrfVO> standConvertCrfVOList = new ArrayList<>();
         List<String> clinicalConList = getConvertList(standConvert.getClinicalList(), StandConvertEnum.symptom.toString(), standConvertCrfVOList);
-        List<String> operationConList = getConvertList(standConvert.getOperationList(), StandConvertEnum.operation.toString(), standConvertCrfVOList);
+        // List<String> operationConList = getConvertList(standConvert.getOperationList(), StandConvertEnum.operation.toString(), standConvertCrfVOList);
         List<String> drugConList = getConvertList(standConvert.getDrugList(), StandConvertEnum.drug.toString(), standConvertCrfVOList);
         List<String> vitallConList = getConvertList(standConvert.getVitalList(), StandConvertEnum.vital.toString(), standConvertCrfVOList);
         List<String> diseaseConList = getConvertList(standConvert.getDiaglList(), StandConvertEnum.disease.toString(), standConvertCrfVOList);
-        List<String> pacsConList = getConvertList(standConvert.getPacsList(), StandConvertEnum.pacs.toString(), standConvertCrfVOList);
-        List<String> lisConList = getConvertList(standConvert.getLisList(), StandConvertEnum.lis.toString(), standConvertCrfVOList);
+        // List<String> pacsConList = getConvertList(standConvert.getPacsList(), StandConvertEnum.pacs.toString(), standConvertCrfVOList);
+        // List<String> lisConList = getConvertList(standConvert.getLisList(), StandConvertEnum.lis.toString(), standConvertCrfVOList);
         List<String> transfusionConList = getConvertList(standConvert.getTransfusionList(), StandConvertEnum.transfusion.toString(), standConvertCrfVOList);
 
         StandConvertCrfBatchDTO standConvertCrfBatchDTO = new StandConvertCrfBatchDTO();
-        if (!(ListUtil.isEmpty(clinicalConList) && ListUtil.isEmpty(operationConList) && ListUtil.isEmpty(drugConList)
-                && ListUtil.isEmpty(vitallConList) && ListUtil.isEmpty(diseaseConList) && ListUtil.isEmpty(pacsConList)
-                && ListUtil.isEmpty(lisConList) && ListUtil.isEmpty(transfusionConList))) {
+        if (!(ListUtil.isEmpty(clinicalConList)
+                // && ListUtil.isEmpty(operationConList)
+                && ListUtil.isEmpty(drugConList)
+                && ListUtil.isEmpty(vitallConList)
+                && ListUtil.isEmpty(diseaseConList)
+                // && ListUtil.isEmpty(pacsConList)
+                // && ListUtil.isEmpty(lisConList)
+                && ListUtil.isEmpty(transfusionConList))) {
             try {
                 standConvertCrfBatchDTO = standConvertServiceClient.similarityBatch(standConvertCrfVOList);
             } catch (Exception e) {
@@ -519,12 +524,12 @@ public class NeoFacade {
 
         Map<String, Map<String, StandConvertCrfDTO>> crfMap = standConvertCrfBatchDTO.getData();
         getConvertMap(crfMap, StandConvertEnum.symptom.toString(), clinicalConList, standConvert.getClinicalList(), map);
-        getConvertMap(crfMap, StandConvertEnum.operation.toString(), operationConList, standConvert.getOperationList(), map);
+        // getConvertMap(crfMap, StandConvertEnum.operation.toString(), operationConList, standConvert.getOperationList(), map);
         getConvertMap(crfMap, StandConvertEnum.drug.toString(), drugConList, standConvert.getDrugList(), map);
         getConvertMap(crfMap, StandConvertEnum.vital.toString(), vitallConList, standConvert.getVitalList(), map);
         getConvertMap(crfMap, StandConvertEnum.disease.toString(), diseaseConList, standConvert.getDiaglList(), map);
-        getConvertMap(crfMap, StandConvertEnum.pacs.toString(), pacsConList, standConvert.getPacsList(), map);
-        getConvertMap(crfMap, StandConvertEnum.lis.toString(), lisConList, standConvert.getLisList(), map);
+        // getConvertMap(crfMap, StandConvertEnum.pacs.toString(), pacsConList, standConvert.getPacsList(), map);
+        // getConvertMap(crfMap, StandConvertEnum.lis.toString(), lisConList, standConvert.getLisList(), map);
         getConvertMap(crfMap, StandConvertEnum.transfusion.toString(), transfusionConList, standConvert.getTransfusionList(), map);
 
         return map;

+ 57 - 0
src/main/java/com/diagbot/facade/TranOperationConfigFacade.java

@@ -0,0 +1,57 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.TranOperationConfig;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.TranOperationConfigService;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * @Description:
+ * @Author:zhaops
+ * @time: 2020/7/29 15:05
+ */
+@Component
+public class TranOperationConfigFacade {
+    @Autowired
+    private TranOperationConfigService tranOperationConfigService;
+
+    /**
+     * 获取映射关系-公表名
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    public Map<String, Map<String, Long>> getConfigMap(Long hospitalId, List<String> hisNames, List<String> uniqueNames) {
+        Map<String, Map<String, Long>> retMap = new HashMap<>();
+        QueryWrapper<TranOperationConfig> queryWrapper = new QueryWrapper<>();
+        queryWrapper.eq("is_deleted", IsDeleteEnum.N.getKey())
+                .eq("hospital_id", hospitalId);
+        if (ListUtil.isNotEmpty(hisNames)) {
+            queryWrapper.in("his_name", hisNames);
+        }
+        if (ListUtil.isNotEmpty(uniqueNames)) {
+            queryWrapper.in("unique_name", uniqueNames);
+        }
+        List<TranOperationConfig> records = tranOperationConfigService.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<TranOperationConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<TranOperationConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "uniqueName", "id"));
+            }
+        }
+        return retMap;
+    }
+}

+ 16 - 0
src/main/java/com/diagbot/mapper/TranOperationConfigMapper.java

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.TranOperationConfig;
+
+/**
+ * <p>
+ * 手术映射表 Mapper 接口
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-12-22
+ */
+public interface TranOperationConfigMapper extends BaseMapper<TranOperationConfig> {
+
+}

+ 4 - 8
src/main/java/com/diagbot/rule/GroupRule.java

@@ -7,6 +7,7 @@ import com.diagbot.dto.RuleSimpleDTO;
 import com.diagbot.dto.WordCrfDTO;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.MsgUtil;
+import com.diagbot.util.RegexUtil;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Component;
 
@@ -14,8 +15,6 @@ import java.util.Arrays;
 import java.util.LinkedHashMap;
 import java.util.List;
 import java.util.Map;
-import java.util.regex.Matcher;
-import java.util.regex.Pattern;
 
 /**
  * @description: 人群规则
@@ -88,12 +87,9 @@ public class GroupRule {
                 break;
             case "月经期":
                 String regex = "月经第(([零一二三四五六七八九十]{0,3})||([0-9]{0,2}))天";
-                Pattern pattern = Pattern.compile(regex);
-                Matcher matcher = pattern.matcher(symptom);
-                boolean rs = matcher.find();
-                Matcher matcher1 = pattern.matcher(menstrual);
-                boolean rs1 = matcher1.find();
-                if (rs || rs1 || symptom.contains("经期") || menstrual.contains("经期")) {
+                String regex2 = "(?<!上一次)经期";
+                if (RegexUtil.getRegexRes(symptom, regex) || RegexUtil.getRegexRes(menstrual, regex)
+                        || RegexUtil.getRegexRes(symptom, regex2) || RegexUtil.getRegexRes(menstrual, regex2)) {
                     flag = true;
                 }
                 break;

+ 16 - 0
src/main/java/com/diagbot/service/TranOperationConfigService.java

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.TranOperationConfig;
+
+/**
+ * <p>
+ * 手术映射表 服务类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-12-22
+ */
+public interface TranOperationConfigService extends IService<TranOperationConfig> {
+
+}

+ 22 - 0
src/main/java/com/diagbot/service/impl/TranOperationConfigServiceImpl.java

@@ -0,0 +1,22 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.dynamic.datasource.annotation.DS;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.TranOperationConfig;
+import com.diagbot.mapper.TranOperationConfigMapper;
+import com.diagbot.service.TranOperationConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 手术映射表 服务实现类
+ * </p>
+ *
+ * @author gaodm
+ * @since 2020-12-22
+ */
+@Service
+@DS("cdss")
+public class TranOperationConfigServiceImpl extends ServiceImpl<TranOperationConfigMapper, TranOperationConfig> implements TranOperationConfigService {
+
+}

+ 38 - 0
src/main/java/com/diagbot/util/CoreUtil.java

@@ -254,6 +254,44 @@ public class CoreUtil {
 
     }
 
+    /**
+     * 将列表中uniqueName为空的值,用其他属性值赋值
+     *
+     * @param list
+     * @param targetProperty
+     * @param <T>
+     */
+    public static <T> void setUninameFromDetail(List<T> list, String targetProperty) {
+        for (T r : list) {
+            String value = (String)getFieldValue(r, "uniqueName");
+            if (StringUtil.isBlank(value)) {
+                String detailName = (String) getFieldValue(r, targetProperty);
+                setFieldValue(r, "uniqueName", detailName);
+            }
+        }
+    }
+
+    /**
+     * 对象赋值
+     *
+     * @param object
+     * @param property
+     * @param value
+     */
+    public static void setFieldValue(Object object, String property, Object value){
+        //根据 对象和属性名通过反射 调用上面的方法获取 Field对象
+        Field field = getDeclaredField(object, property) ;
+        //抑制Java对其的检查
+        field.setAccessible(true) ;
+        try {
+            field.set(object, value);
+        } catch (IllegalArgumentException e) {
+            e.printStackTrace();
+        } catch (IllegalAccessException e) {
+            e.printStackTrace();
+        }
+    }
+
     /**
      * 将对象添加到列表中
      *

+ 19 - 0
src/main/resources/mapper/TranOperationConfigMapper.xml

@@ -0,0 +1,19 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="com.diagbot.mapper.TranOperationConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.TranOperationConfig">
+        <id column="id" property="id" />
+        <result column="is_deleted" property="isDeleted" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="his_name" property="hisName" />
+        <result column="unique_name" property="uniqueName" />
+        <result column="unique_code" property="uniqueCode" />
+    </resultMap>
+
+</mapper>