Browse Source

Merge remote-tracking branch 'origin/master'

MarkHuang 4 years ago
parent
commit
a365279913

+ 0 - 1
src/main/java/com/diagbot/dto/PushDTO.java

@@ -25,7 +25,6 @@ public class PushDTO {
     private List<PushBaseDTO> pacs = new ArrayList<>();
     private List<PushBaseDTO> pacs = new ArrayList<>();
     // 手术
     // 手术
     private List<PushBaseDTO> operations = new ArrayList<>();
     private List<PushBaseDTO> operations = new ArrayList<>();
-
     // 药品
     // 药品
     private List<PushBaseDTO> medicines = new ArrayList<>();
     private List<PushBaseDTO> medicines = new ArrayList<>();
     // 并发症
     // 并发症

+ 183 - 0
src/main/java/com/diagbot/entity/LisConfig.java

@@ -0,0 +1,183 @@
+package com.diagbot.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import javax.validation.constraints.NotBlank;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 化验公表映射
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+@Data
+@TableName("tran_lis_config")
+public class LisConfig 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;
+
+    /**
+     * his大项名称
+     */
+    @Excel(name = "his大项名称", width = 40)
+    @NotBlank(message = "请输入大项名称")
+    private String hisName;
+
+    /**
+     * his小项名称
+     */
+    @Excel(name = "his小项名称", width = 40)
+    private String hisDetailName;
+
+    /**
+     * 标准名
+     */
+    @Excel(name = "标准名", width = 40)
+    @NotBlank(message = "请输入公表名称")
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    @Excel(name = "标准编码", width = 40)
+    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 getHisDetailName() {
+        return hisDetailName;
+    }
+
+    public void setHisDetailName(String hisDetailName) {
+        this.hisDetailName = hisDetailName;
+    }
+    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 "LisConfig{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", hospitalId=" + hospitalId +
+            ", hisName=" + hisName +
+            ", hisDetailName=" + hisDetailName +
+            ", uniqueName=" + uniqueName +
+            ", uniqueCode=" + uniqueCode +
+        "}";
+    }
+}

+ 164 - 0
src/main/java/com/diagbot/entity/PacsConfig.java

@@ -0,0 +1,164 @@
+package com.diagbot.entity;
+
+import cn.afterturn.easypoi.excel.annotation.Excel;
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 检查公表映射
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+@TableName("tran_pacs_config")
+public class PacsConfig 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;
+
+    /**
+     * his名称
+     */
+    @Excel(name="HIS名称", width = 40)
+    private String hisName;
+
+    /**
+     * 标准名
+     */
+    @Excel(name = "标准名称", width = 40)
+    private String uniqueName;
+
+    /**
+     * 标准编码
+     */
+    @Excel(name="标准编码", width = 40)
+    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 "PacsConfig{" +
+            "id=" + id +
+            ", isDeleted=" + isDeleted +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", hospitalId=" + hospitalId +
+            ", hisName=" + hisName +
+            ", uniqueName=" + uniqueName +
+            ", uniqueCode=" + uniqueCode +
+        "}";
+    }
+}

+ 74 - 0
src/main/java/com/diagbot/facade/LisConfigFacade.java

@@ -0,0 +1,74 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.LisConfig;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.LisConfigService;
+import com.diagbot.service.impl.LisConfigServiceImpl;
+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:03
+ */
+@Component
+public class LisConfigFacade extends LisConfigServiceImpl {
+
+    /**
+     * 获取映射关系-id
+     * Map<hisName,Map<hisDetailName,Map<uniqueName,id>>>
+     *
+     * @param hospitalId
+     * @param hisNames
+     * @param uniqueNames
+     * @return
+     */
+    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<LisConfig> 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<LisConfig> records = this.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+
+        records.forEach(lisConfig -> {
+            if (lisConfig.getHisDetailName() == null) {
+                lisConfig.setHisDetailName("");
+            }
+        });
+
+        Map<String, List<LisConfig>> hisNameMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<LisConfig>> entry : hisNameMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                Map<String, Map<String, Long>> detailNameMap = new HashMap<>();
+                //his名称映射到标准词,1:n
+                Map<String, List<LisConfig>> hisDetailNameMap
+                        = EntityUtil.makeEntityListMap(entry.getValue(), "hisDetailName");
+                for (Map.Entry<String, List<LisConfig>> detailEntry : hisDetailNameMap.entrySet()) {
+                    if (ListUtil.isNotEmpty(detailEntry.getValue())) {
+                        detailNameMap.put(detailEntry.getKey(),
+                                EntityUtil.makeMapWithKeyValue(detailEntry.getValue(), "uniqueName", "id"));
+                    }
+                }
+                retMap.put(entry.getKey(), detailNameMap);
+            }
+        }
+        return retMap;
+    }
+}

+ 47 - 13
src/main/java/com/diagbot/facade/NeoFacade.java

@@ -3,19 +3,41 @@ package com.diagbot.facade;
 import com.alibaba.fastjson.JSONArray;
 import com.alibaba.fastjson.JSONArray;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.ChiefPresentSimilarityServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
 import com.diagbot.client.StandConvertServiceClient;
-import com.diagbot.dto.*;
+import com.diagbot.dto.BillNeoDTO;
+import com.diagbot.dto.CriticalNeoDTO;
+import com.diagbot.dto.HighRiskNeoDTO;
+import com.diagbot.dto.NeoPushDTO;
+import com.diagbot.dto.StandConvertCrfBatchDTO;
+import com.diagbot.dto.StandConvertCrfDTO;
 import com.diagbot.entity.node.ICDDisease;
 import com.diagbot.entity.node.ICDDisease;
 import com.diagbot.entity.node.Medicine_Code;
 import com.diagbot.entity.node.Medicine_Code;
 import com.diagbot.entity.node.OralMedicine;
 import com.diagbot.entity.node.OralMedicine;
-import com.diagbot.entity.node.YiBaoDisease;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.enums.StandConvertEnum;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonErrorCode;
 import com.diagbot.exception.CommonException;
 import com.diagbot.exception.CommonException;
-import com.diagbot.repository.*;
+import com.diagbot.repository.DiseaseRepository;
+import com.diagbot.repository.ICDDiseaseNode;
+import com.diagbot.repository.ICDDiseaseRepository;
+import com.diagbot.repository.LisNode;
+import com.diagbot.repository.LisPackNode;
+import com.diagbot.repository.LisPackRepository;
+import com.diagbot.repository.LisRepository;
+import com.diagbot.repository.MedicineCodeRepository;
+import com.diagbot.repository.MedicineNode;
+import com.diagbot.repository.MedicineRepository;
+import com.diagbot.repository.OperationNode;
+import com.diagbot.repository.OperationRepository;
+import com.diagbot.repository.PACSNode;
+import com.diagbot.repository.PacsRepository;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.RedisUtil;
 import com.diagbot.util.StringUtil;
 import com.diagbot.util.StringUtil;
-import com.diagbot.vo.*;
+import com.diagbot.vo.BillNeoVO;
+import com.diagbot.vo.CriticalNeoVO;
+import com.diagbot.vo.HighRiskNeoVO;
+import com.diagbot.vo.NeoPushVO;
+import com.diagbot.vo.StandConvert;
+import com.diagbot.vo.StandConvertCrfVO;
 import com.diagbot.vo.neoPushEntity.Diag;
 import com.diagbot.vo.neoPushEntity.Diag;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.beans.factory.annotation.Value;
 import org.springframework.beans.factory.annotation.Value;
@@ -23,7 +45,13 @@ import org.springframework.cache.annotation.Cacheable;
 import org.springframework.stereotype.Component;
 import org.springframework.stereotype.Component;
 
 
 import java.math.BigDecimal;
 import java.math.BigDecimal;
-import java.util.*;
+import java.util.ArrayList;
+import java.util.Arrays;
+import java.util.HashMap;
+import java.util.Iterator;
+import java.util.LinkedHashMap;
+import java.util.List;
+import java.util.Map;
 
 
 /**
 /**
  * @Description: 图谱facade
  * @Description: 图谱facade
@@ -76,14 +104,14 @@ public class NeoFacade {
 
 
         while (iterator.hasNext()) {
         while (iterator.hasNext()) {
             current = iterator.next();
             current = iterator.next();
-            if (current.getMedicine_related_chem().size()>0) {
+            if (current.getMedicine_related_chem().size() > 0) {
                 sets = new ArrayList<>(current.getMedicine_related_chem());
                 sets = new ArrayList<>(current.getMedicine_related_chem());
                 med_code = current.getName();
                 med_code = current.getName();
                 med_type = sets.get(0).getName();
                 med_type = sets.get(0).getName();
-                if (res.get(med_type)==null) {
+                if (res.get(med_type) == null) {
                     res.put(med_type, new ArrayList<>());
                     res.put(med_type, new ArrayList<>());
                 }
                 }
-                if (res.get(med_type).indexOf(med_code)==-1) {
+                if (res.get(med_type).indexOf(med_code) == -1) {
                     res.get(med_type).add(med_code);
                     res.get(med_type).add(med_code);
                 }
                 }
             }
             }
@@ -97,6 +125,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 图谱反推的数据
      * 图谱反推的数据
+     *
      * @param pushVO
      * @param pushVO
      * @return
      * @return
      */
      */
@@ -118,6 +147,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 图谱正推的数据
      * 图谱正推的数据
+     *
      * @param pushVO
      * @param pushVO
      * @return
      * @return
      */
      */
@@ -132,6 +162,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 处理开单合理性图谱数据
      * 处理开单合理性图谱数据
+     *
      * @param billNeoVO
      * @param billNeoVO
      * @return
      * @return
      */
      */
@@ -148,9 +179,9 @@ public class NeoFacade {
     }
     }
 
 
 
 
-
     /**
     /**
      * 处理高危项目图谱数据
      * 处理高危项目图谱数据
+     *
      * @param highRiskNeoVO
      * @param highRiskNeoVO
      * @return
      * @return
      */
      */
@@ -175,7 +206,6 @@ public class NeoFacade {
     }
     }
 
 
 
 
-
     /**
     /**
      * 处理处方开单合理性
      * 处理处方开单合理性
      */
      */
@@ -226,6 +256,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 推送疾病信息
      * 推送疾病信息
+     *
      * @param neoPushVO
      * @param neoPushVO
      * @return
      * @return
      */
      */
@@ -245,7 +276,7 @@ public class NeoFacade {
             if (icdDisease != null) {
             if (icdDisease != null) {
                 pushDTO = icdDiseaseNode.ICDDiseasetoPushDTO(icdDisease, neoPushVO);
                 pushDTO = icdDiseaseNode.ICDDiseasetoPushDTO(icdDisease, neoPushVO);
 
 
-                if (null!=pushDTO) {
+                if (null != pushDTO) {
                     neoPushDTOs.add(pushDTO);
                     neoPushDTOs.add(pushDTO);
                 }
                 }
             }
             }
@@ -268,6 +299,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 处理高危药品数据
      * 处理高危药品数据
+     *
      * @param drugs
      * @param drugs
      * @return
      * @return
      */
      */
@@ -281,6 +313,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 处理高危手术和操作数据
      * 处理高危手术和操作数据
+     *
      * @param operations
      * @param operations
      * @return
      * @return
      */
      */
@@ -293,6 +326,7 @@ public class NeoFacade {
 
 
     /**
     /**
      * 提取方法
      * 提取方法
+     *
      * @param jsonArray
      * @param jsonArray
      * @param originName
      * @param originName
      * @param map
      * @param map
@@ -316,7 +350,7 @@ public class NeoFacade {
      * 类型,疾病: disease,症状: symptom,手术和操作:operation,药品: drug,实验室检查:lis,辅助检查:pacs, 辅助检查:vital"
      * 类型,疾病: disease,症状: symptom,手术和操作:operation,药品: drug,实验室检查:lis,辅助检查:pacs, 辅助检查:vital"
      *
      *
      * @param standConvert
      * @param standConvert
-     * @return  Map<String, Map<String, String>> -->Map<类型, Map<原始词, 标准词>>
+     * @return Map<String   ,       Map   <   String   ,       String>> -->Map<类型, Map<原始词, 标准词>>
      */
      */
     public Map<String, Map<String, String>> standConvertCrf(StandConvert standConvert) {
     public Map<String, Map<String, String>> standConvertCrf(StandConvert standConvert) {
         Map<String, Map<String, String>> map = new LinkedHashMap<>();
         Map<String, Map<String, String>> map = new LinkedHashMap<>();
@@ -392,7 +426,7 @@ public class NeoFacade {
      * @param map
      * @param map
      */
      */
     public void getConvertMap(Map<String, Map<String, StandConvertCrfDTO>> crfDTO, String type, List<String> convertList,
     public void getConvertMap(Map<String, Map<String, StandConvertCrfDTO>> crfDTO, String type, List<String> convertList,
-                          List<String> orginList, Map<String, Map<String, String>> map) {
+                              List<String> orginList, Map<String, Map<String, String>> map) {
         Map<String, StandConvertCrfDTO> crfMap = crfDTO.get(type);
         Map<String, StandConvertCrfDTO> crfMap = crfDTO.get(type);
         Map<String, String> typeMap = new LinkedHashMap<>();
         Map<String, String> typeMap = new LinkedHashMap<>();
         if (ListUtil.isEmpty(convertList) || crfMap == null) {
         if (ListUtil.isEmpty(convertList) || crfMap == null) {

+ 55 - 0
src/main/java/com/diagbot/facade/PacsConfigFacade.java

@@ -0,0 +1,55 @@
+package com.diagbot.facade;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.PacsConfig;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.service.impl.PacsConfigServiceImpl;
+import com.diagbot.util.EntityUtil;
+import com.diagbot.util.ListUtil;
+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:03
+ */
+@Component
+public class PacsConfigFacade extends PacsConfigServiceImpl {
+
+    /**
+     * 获取映射关系-公表名
+     *
+     * @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<PacsConfig> 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<PacsConfig> records = this.list(queryWrapper);
+        if (ListUtil.isEmpty(records)) {
+            return retMap;
+        }
+        Map<String, List<PacsConfig>> configMap = EntityUtil.makeEntityListMap(records, "hisName");
+        for (Map.Entry<String, List<PacsConfig>> entry : configMap.entrySet()) {
+            if (ListUtil.isNotEmpty(entry.getValue())) {
+                retMap.put(entry.getKey(), EntityUtil.makeMapWithKeyValue(entry.getValue(), "uniqueName", "id"));
+            }
+        }
+        return retMap;
+    }
+
+}

+ 15 - 0
src/main/java/com/diagbot/mapper/LisConfigMapper.java

@@ -0,0 +1,15 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.LisConfig;
+
+/**
+ * <p>
+ * 化验公表映射 Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+public interface LisConfigMapper extends BaseMapper<LisConfig> {
+}

+ 15 - 0
src/main/java/com/diagbot/mapper/PacsConfigMapper.java

@@ -0,0 +1,15 @@
+package com.diagbot.mapper;
+
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.entity.PacsConfig;
+
+/**
+ * <p>
+ * 检查公表映射 Mapper 接口
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+public interface PacsConfigMapper extends BaseMapper<PacsConfig> {
+}

+ 3 - 0
src/main/java/com/diagbot/process/BillProcess.java

@@ -180,6 +180,9 @@ public class BillProcess {
             // 服用药品(现病史一般情况后的药品)
             // 服用药品(现病史一般情况后的药品)
             DrugRule.compareDrugWithBill(bill.getOralmeds(), takeMedicine(presentLabel), bill, billMsgList, drugMap, NeoEnum.oralmeds.getName());
             DrugRule.compareDrugWithBill(bill.getOralmeds(), takeMedicine(presentLabel), bill, billMsgList, drugMap, NeoEnum.oralmeds.getName());
         }
         }
+
+        // 24小时重复开单项
+        CommonRule.repeat24Bill(wordCrfDTO, billMsgList);
         indicationDTO.setBillMsgList(billMsgList);
         indicationDTO.setBillMsgList(billMsgList);
     }
     }
 
 

+ 197 - 0
src/main/java/com/diagbot/rule/CommonRule.java

@@ -1,13 +1,25 @@
 package com.diagbot.rule;
 package com.diagbot.rule;
 
 
+import com.diagbot.biz.push.entity.Item;
+import com.diagbot.biz.push.entity.Lis;
+import com.diagbot.biz.push.entity.Pacs;
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillMsg;
 import com.diagbot.dto.BillNeoMaxDTO;
 import com.diagbot.dto.BillNeoMaxDTO;
 import com.diagbot.dto.NodeNeoDTO;
 import com.diagbot.dto.NodeNeoDTO;
+import com.diagbot.dto.WordCrfDTO;
+import com.diagbot.enums.TypeEnum;
 import com.diagbot.model.entity.Negative;
 import com.diagbot.model.entity.Negative;
+import com.diagbot.util.CatalogueUtil;
 import com.diagbot.util.CoreUtil;
 import com.diagbot.util.CoreUtil;
+import com.diagbot.util.EntityUtil;
 import com.diagbot.util.ListUtil;
 import com.diagbot.util.ListUtil;
+import com.diagbot.util.StringUtil;
 import org.apache.commons.lang3.StringUtils;
 import org.apache.commons.lang3.StringUtils;
 
 
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Comparator;
+import java.util.Date;
 import java.util.HashMap;
 import java.util.HashMap;
 import java.util.List;
 import java.util.List;
 import java.util.Map;
 import java.util.Map;
@@ -51,4 +63,189 @@ public class CommonRule {
             }
             }
         }
         }
     }
     }
+
+    /**
+     * 24小时重复开单总入口
+     *
+     * @param wordCrfDTO
+     * @param billMsgList
+     */
+    public static void repeat24Bill(WordCrfDTO wordCrfDTO, List<BillMsg> billMsgList) {
+        // repeat24BillWithLisType(billMsgList, wordCrfDTO.getLisOrder(), TypeEnum.lis.getName()); // 化验重复开单
+        repeat24BillWithPacsType(billMsgList, wordCrfDTO.getPacsOrder(), TypeEnum.pacs.getName()); // 辅检重复开单
+        repeat24BillWithType(billMsgList, wordCrfDTO.getDrugOrder(), TypeEnum.drug.getName()); // 药品重复开单
+        repeat24BillWithType(billMsgList, wordCrfDTO.getOperationOrder(), TypeEnum.operation.getName()); // 手术重复开单
+    }
+
+    /**
+     * 24小时重复开单入口(化验)
+     *
+     * @param billMsgList
+     * @param itemList
+     * @param type
+     */
+    public static <T> void repeat24BillWithPacsType(List<BillMsg> billMsgList, List<Pacs> itemList, String type) {
+        if (ListUtil.isEmpty(itemList)) {
+            return ;
+        }
+        Map<String, List<Pacs>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
+        for (String key : map.keySet()) {
+            List<Pacs> items = map.get(key);
+
+            // 个数大于2个才比较
+            if (ListUtil.isNotEmpty(items) && items.size() > 1) {
+                // items 按照时间排序
+                Collections.sort(items, new Comparator<Pacs>() {
+                    @Override
+                    public int compare(Pacs o1, Pacs o2) {
+                        if (StringUtil.isBlank(o1.getDateValue()) || StringUtil.isBlank(o2.getDateValue())) {
+                            return -1;
+                        } else {
+                            return o1.getDateValue().compareTo(o2.getDateValue());
+                        }
+                    }
+                });
+
+                // 比较时间是否在24小时内
+                List<Date> dateList = new ArrayList<>();
+                for (Pacs it : items) {
+                    if (StringUtil.isNotBlank(it.getDateValue())) {
+                        Date cur = CatalogueUtil.parseStringDate(it.getDateValue());
+                        // 如果为null,说明日期格式出错,不比较
+                        if (cur != null) {
+                            if (ListUtil.isNotEmpty(dateList)) {
+                                Date last = dateList.get(dateList.size() - 1);
+                                if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
+                                    BillMsg commonBillMsg = CoreUtil.getBillMsg24Repeat(
+                                            it.getName(), it.getUniqueName(),
+                                            it.getName(), type);
+                                    billMsgList.add(commonBillMsg);
+                                    break;
+                                } else {
+                                    dateList.add(cur);
+                                }
+                            } else {
+                                dateList.add(cur);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+    /**
+     * 24小时重复开单入口(化验)
+     *
+     * @param billMsgList
+     * @param itemList
+     * @param type
+     */
+    public static <T> void repeat24BillWithLisType(List<BillMsg> billMsgList, List<Lis> itemList, String type) {
+        if (ListUtil.isEmpty(itemList)) {
+            return ;
+        }
+        Map<String, List<Lis>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
+        for (String key : map.keySet()) {
+            List<Lis> items = map.get(key);
+
+            // 个数大于2个才比较
+            if (ListUtil.isNotEmpty(items) && items.size() > 1) {
+                // items 按照时间排序
+                Collections.sort(items, new Comparator<Lis>() {
+                    @Override
+                    public int compare(Lis o1, Lis o2) {
+                        if (StringUtil.isBlank(o1.getDateValue()) || StringUtil.isBlank(o2.getDateValue())) {
+                            return -1;
+                        } else {
+                            return o1.getDateValue().compareTo(o2.getDateValue());
+                        }
+                    }
+                });
+
+                // 比较时间是否在24小时内
+                List<Date> dateList = new ArrayList<>();
+                for (Lis it : items) {
+                    if (StringUtil.isNotBlank(it.getDateValue())) {
+                        Date cur = CatalogueUtil.parseStringDate(it.getDateValue());
+                        // 如果为null,说明日期格式出错,不比较
+                        if (cur != null) {
+                            if (ListUtil.isNotEmpty(dateList)) {
+                                Date last = dateList.get(dateList.size() - 1);
+                                if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
+                                    BillMsg commonBillMsg = CoreUtil.getBillMsg24Repeat(
+                                            it.getName(), it.getUniqueName(),
+                                            it.getName(), type);
+                                    billMsgList.add(commonBillMsg);
+                                    break;
+                                } else {
+                                    dateList.add(cur);
+                                }
+                            } else {
+                                dateList.add(cur);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
+
+
+    /**
+     * 24小时重复开单入口
+     *
+     * @param billMsgList
+     * @param itemList
+     * @param type
+     */
+    public static void repeat24BillWithType(List<BillMsg> billMsgList, List<Item> itemList, String type) {
+        if (ListUtil.isEmpty(itemList)) {
+            return ;
+        }
+        Map<String, List<Item>> map = EntityUtil.makeEntityListMap(itemList, "uniqueName");
+        for (String key : map.keySet()) {
+            List<Item> items = map.get(key);
+
+            // 个数大于2个才比较
+            if (ListUtil.isNotEmpty(items) && items.size() > 1) {
+                // items 按照时间排序
+                Collections.sort(items, new Comparator<Item>() {
+                    @Override
+                    public int compare(Item o1, Item o2) {
+                        if (StringUtil.isBlank(o1.getDateValue()) || StringUtil.isBlank(o2.getDateValue())) {
+                            return -1;
+                        } else {
+                            return o1.getDateValue().compareTo(o2.getDateValue());
+                        }
+                    }
+                });
+
+                // 比较时间是否在24小时内
+                List<Date> dateList = new ArrayList<>();
+                for (Item it : items) {
+                    if (StringUtil.isNotBlank(it.getDateValue())) {
+                        Date cur = CatalogueUtil.parseStringDate(it.getDateValue());
+                        // 如果为null,说明日期格式出错,不比较
+                        if (cur != null) {
+                            if (ListUtil.isNotEmpty(dateList)) {
+                                Date last = dateList.get(dateList.size() - 1);
+                                if (!CatalogueUtil.compareTime(last, cur, 60L * 24)) {
+                                    BillMsg commonBillMsg = CoreUtil.getBillMsg24Repeat(
+                                            it.getName(), it.getUniqueName(),
+                                            it.getName(), type);
+                                    billMsgList.add(commonBillMsg);
+                                    break;
+                                } else {
+                                    dateList.add(cur);
+                                }
+                            } else {
+                                dateList.add(cur);
+                            }
+                        }
+                    }
+                }
+            }
+        }
+    }
 }
 }

+ 15 - 0
src/main/java/com/diagbot/service/LisConfigService.java

@@ -0,0 +1,15 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.LisConfig;
+
+/**
+ * <p>
+ * 化验公表映射 服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+public interface LisConfigService extends IService<LisConfig> {
+}

+ 15 - 0
src/main/java/com/diagbot/service/PacsConfigService.java

@@ -0,0 +1,15 @@
+package com.diagbot.service;
+
+import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.entity.PacsConfig;
+
+/**
+ * <p>
+ * 检查公表映射 服务类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+public interface PacsConfigService extends IService<PacsConfig> {
+}

+ 19 - 0
src/main/java/com/diagbot/service/impl/LisConfigServiceImpl.java

@@ -0,0 +1,19 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.LisConfig;
+import com.diagbot.mapper.LisConfigMapper;
+import com.diagbot.service.LisConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 化验公表映射 服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+@Service
+public class LisConfigServiceImpl extends ServiceImpl<LisConfigMapper, LisConfig> implements LisConfigService {
+}

+ 19 - 0
src/main/java/com/diagbot/service/impl/PacsConfigServiceImpl.java

@@ -0,0 +1,19 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.PacsConfig;
+import com.diagbot.mapper.PacsConfigMapper;
+import com.diagbot.service.PacsConfigService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ * 检查公表映射 服务实现类
+ * </p>
+ *
+ * @author zhaops
+ * @since 2020-07-28
+ */
+@Service
+public class PacsConfigServiceImpl extends ServiceImpl<PacsConfigMapper, PacsConfig> implements PacsConfigService {
+}

+ 2 - 3
src/main/java/com/diagbot/util/CatalogueUtil.java

@@ -170,7 +170,7 @@ public class CatalogueUtil {
         }
         }
         Calendar calendar_s = Calendar.getInstance();
         Calendar calendar_s = Calendar.getInstance();
         Calendar calendar_e = Calendar.getInstance();
         Calendar calendar_e = Calendar.getInstance();
-        Long time_s, time_e, time_diff;
+        Long time_s, time_e;
         try {
         try {
             calendar_s.setTime(startDate);
             calendar_s.setTime(startDate);
             calendar_e.setTime(endDate);
             calendar_e.setTime(endDate);
@@ -178,8 +178,7 @@ public class CatalogueUtil {
             time_s = calendar_s.getTimeInMillis();
             time_s = calendar_s.getTimeInMillis();
             time_e = calendar_e.getTimeInMillis();
             time_e = calendar_e.getTimeInMillis();
 
 
-            time_diff = (time_e - time_s) / (1000 * 60);
-            if (time_diff > diff) {
+            if ((time_e - time_s) >  diff * 1000 * 60) {
                 overtime = true;
                 overtime = true;
             }
             }
         } catch (Exception e) {
         } catch (Exception e) {

+ 1 - 1
src/main/java/com/diagbot/util/Content.java

@@ -251,7 +251,7 @@ public class Content {
 
 
     public static final String timestamp = "timestamp";
     public static final String timestamp = "timestamp";
 
 
-    public static String[] dateFormats = {
+    public static String[]  dateFormats = {
             "yyyy年MM月dd日HH时mm分",
             "yyyy年MM月dd日HH时mm分",
             "yyyy年MM月dd日HH:mm",
             "yyyy年MM月dd日HH:mm",
             "yyyy年MM月dd日H时mm分",
             "yyyy年MM月dd日H时mm分",

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

@@ -253,6 +253,26 @@ public class CoreUtil {
         return billMsg;
         return billMsg;
     }
     }
 
 
+    /**
+     * 开单合理性24小时重复开通用提示信息
+     *
+     * @param orderName 原开单项
+     * @param orderStandName 标准开单项
+     * @param content 匹配内容
+     * @param type 类型
+     * @return
+     */
+    public static BillMsg getBillMsg24Repeat(String orderName, String orderStandName, String content, String type) {
+        BillMsg billMsg = new BillMsg();
+        String msg = String.format("%s重复开立", orderName);
+        billMsg.setMsg(msg);
+        billMsg.setOrderName(orderName);
+        billMsg.setOrderStandName(orderStandName);
+        billMsg.setContent(content);
+        billMsg.setType(type);
+        return billMsg;
+    }
+
     /**
     /**
      * 将对象添加到列表中
      * 将对象添加到列表中
      *
      *

+ 1 - 1
src/main/java/com/diagbot/util/StringUtil.java

@@ -66,7 +66,7 @@ public class StringUtil {
     public static String remove_ctl(String str) {
     public static String remove_ctl(String str) {
         String trim = "";
         String trim = "";
         if(StringUtils.isNotEmpty(str)){
         if(StringUtils.isNotEmpty(str)){
-            trim = str.replaceAll("\r|\n|\r\n|/r/n", "").trim();
+            trim = str.replaceAll("\r|\n|\r\n", "").trim();
         }
         }
         return trim;
         return trim;
     }
     }

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

@@ -122,7 +122,7 @@ public class SearchData extends HospitalBaseVO {
      */
      */
     private List<Item> drug = new ArrayList<>();
     private List<Item> drug = new ArrayList<>();
     /**
     /**
-     * 手术操作
+     * 手术操作
      */
      */
     private List<Item> operation = new ArrayList<>();
     private List<Item> operation = new ArrayList<>();
     /**
     /**

+ 20 - 0
src/main/resources/mapper/LisConfigMapper.xml

@@ -0,0 +1,20 @@
+<?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.LisConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.LisConfig">
+        <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="his_detail_name" property="hisDetailName" />
+        <result column="unique_name" property="uniqueName" />
+        <result column="unique_code" property="uniqueCode" />
+    </resultMap>
+
+</mapper>

+ 19 - 0
src/main/resources/mapper/PacsConfigMapper.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.PacsConfigMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.PacsConfig">
+        <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>