Kaynağa Gözat

Merge remote-tracking branch 'origin/20210512_yw_check' into debug

# Conflicts:
#	src/main/java/com/diagbot/vo/AnalyzeRunVO.java
songxinlu 4 yıl önce
ebeveyn
işleme
4821fe78f2
35 değiştirilmiş dosya ile 854 ekleme ve 89 silme
  1. 1 0
      src/main/java/com/diagbot/config/ResourceServerConfigurer.java
  2. 1 0
      src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java
  3. 4 0
      src/main/java/com/diagbot/dto/MedicalRecordDTO.java
  4. 8 0
      src/main/java/com/diagbot/dto/MsgDTO.java
  5. 71 0
      src/main/java/com/diagbot/entity/MedBehospitalType.java
  6. 38 84
      src/main/java/com/diagbot/entity/MedCheckInfo.java
  7. 108 0
      src/main/java/com/diagbot/entity/MedCheckWork.java
  8. 4 0
      src/main/java/com/diagbot/entity/QcresultDetail.java
  9. 1 1
      src/main/java/com/diagbot/facade/AlgorithmFacade.java
  10. 191 0
      src/main/java/com/diagbot/facade/MedCheckWorkFacade.java
  11. 13 0
      src/main/java/com/diagbot/facade/QcresultInfoFacade.java
  12. 16 0
      src/main/java/com/diagbot/mapper/MedBehospitalTypeMapper.java
  13. 16 0
      src/main/java/com/diagbot/mapper/MedCheckWorkMapper.java
  14. 5 0
      src/main/java/com/diagbot/mapper/MedicalRecordMapper.java
  15. 16 0
      src/main/java/com/diagbot/service/MedBehospitalTypeService.java
  16. 16 0
      src/main/java/com/diagbot/service/MedCheckWorkService.java
  17. 5 0
      src/main/java/com/diagbot/service/MedicalRecordService.java
  18. 20 0
      src/main/java/com/diagbot/service/impl/MedBehospitalTypeServiceImpl.java
  19. 20 0
      src/main/java/com/diagbot/service/impl/MedCheckWorkServiceImpl.java
  20. 12 0
      src/main/java/com/diagbot/service/impl/MedicalRecordServiceImpl.java
  21. 71 0
      src/main/java/com/diagbot/task/BehospitalInfoTypeTask.java
  22. 2 2
      src/main/java/com/diagbot/vo/AnalyzeRunVO.java
  23. 24 0
      src/main/java/com/diagbot/vo/MedCheckWorkAddVO.java
  24. 2 0
      src/main/java/com/diagbot/vo/QcResultAlgVO.java
  25. 24 0
      src/main/java/com/diagbot/vo/RecordTypeVO.java
  26. 0 0
      src/main/java/com/diagbot/web/ADataStrController.java
  27. 11 0
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  28. 12 0
      src/main/java/com/diagbot/web/MedCheckInfoController.java
  29. 42 0
      src/main/java/com/diagbot/web/MedCheckWorkController.java
  30. 9 2
      src/main/resources/mapper/BehospitalInfoMapper.xml
  31. 16 0
      src/main/resources/mapper/MedBehospitalTypeMapper.xml
  32. 8 0
      src/main/resources/mapper/MedCheckInfoMapper.xml
  33. 22 0
      src/main/resources/mapper/MedCheckWorkMapper.xml
  34. 44 0
      src/main/resources/mapper/MedicalRecordMapper.xml
  35. 1 0
      src/main/resources/mapper/QcresultDetailMapper.xml

+ 1 - 0
src/main/java/com/diagbot/config/ResourceServerConfigurer.java

@@ -233,6 +233,7 @@ public class ResourceServerConfigurer extends ResourceServerConfigurerAdapter {
                 .antMatchers("/consoleByDept/medicalCheckFormKs").permitAll()
                 .antMatchers("/print/export/medicalCheckExportByDept").permitAll()
                 .antMatchers("/consoleByDept/medicalCheckTitleKs").permitAll()
+                .antMatchers("/qc/behospitalInfo/logicDelCase").permitAll()
                 .antMatchers("/**").authenticated();
         //                .antMatchers("/**").permitAll();
     }

+ 1 - 0
src/main/java/com/diagbot/config/security/UrlAccessDecisionManager.java

@@ -277,6 +277,7 @@ public class UrlAccessDecisionManager implements AccessDecisionManager {
                 || matchers("/consoleByDept/medicalCheckFormKs", request)
                 || matchers("/print/export/medicalCheckExportByDept", request)
                 || matchers("/consoleByDept/medicalCheckTitleKs", request)
+                || matchers("/qc/behospitalInfo/logicDelCase", request)
                 || matchers("/", request)) {
             return true;
         }

+ 4 - 0
src/main/java/com/diagbot/dto/MedicalRecordDTO.java

@@ -17,6 +17,10 @@ public class MedicalRecordDTO implements Serializable {
 
     private static final long serialVersionUID = 1L;
 
+    /**
+     * 病人住院ID
+     */
+    private String behospitalCode;
     /**
      * 模块id
      */

+ 8 - 0
src/main/java/com/diagbot/dto/MsgDTO.java

@@ -52,6 +52,14 @@ public class MsgDTO {
     private Date gmtCreate;
     // 记录修改时间,如果时间是1970年则表示纪录未修改
     private Date gmtModified;
+    // 记录修改人id
+    private String modifier;
+    // 记录修改人姓名
+    private String linkman;
+    // 逻辑删除标志位
+    private String isDeleted;
+    // 缺陷说明
+    private String explainInfo;
     // 条目id对应页面数据的key值
     private List<Long> pageKeyList = new ArrayList<>();
 }

+ 71 - 0
src/main/java/com/diagbot/entity/MedBehospitalType.java

@@ -0,0 +1,71 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ * 
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+@TableName("med_behospital_type")
+@Data
+public class MedBehospitalType implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病历号
+     */
+    private String behospitalCode;
+
+    /**
+     * 患者类型
+     */
+    private String behospitalType;
+
+    /**
+     * 类型分值
+     */
+    private Integer value;
+
+    /**
+     * 创建时间
+     */
+    private Date createTime;
+
+    /**
+     * 是否删除
+     */
+    private String isDeleted;
+
+    @Override
+    public String toString() {
+        return "MedBehospitalType{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", behospitalType=" + behospitalType +
+            ", value=" + value +
+            ", createTime=" + createTime +
+            ", isDeleted=" + isDeleted +
+        "}";
+    }
+}

+ 38 - 84
src/main/java/com/diagbot/entity/MedCheckInfo.java

@@ -2,8 +2,10 @@ package com.diagbot.entity;
 
 import com.baomidou.mybatisplus.annotation.IdType;
 import com.baomidou.mybatisplus.annotation.TableId;
+import lombok.Data;
 
 import java.io.Serializable;
+import java.time.LocalDateTime;
 import java.util.Date;
 
 /**
@@ -14,6 +16,7 @@ import java.util.Date;
  * @author wangfeng
  * @since 2020-07-06
  */
+@Data
 public class MedCheckInfo implements Serializable {
 
     private static final long serialVersionUID = 1L;
@@ -79,100 +82,51 @@ public class MedCheckInfo implements Serializable {
      */
     private Integer status;
 
+    /**
+     * 核查类型(0病历,1病案首页,2全部)
+     */
     private Integer checkType;
 
-    public Integer getCheckType() {
-        return checkType;
-    }
-
-    public void setCheckType(Integer checkType) {
-        this.checkType = checkType;
-    }
-
-    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;
-    }
+    /**
+     * 生成状态(0未生成,1已生成)
+     */
+    private Integer createStatus;
 
-    public void setCreator(String creator) {
-        this.creator = creator;
-    }
-    public String getModifier() {
-        return modifier;
-    }
+    /**
+     * 核查任务创建人编号
+     */
+    private String jobCreator;
 
-    public void setModifier(String modifier) {
-        this.modifier = modifier;
-    }
-    public String getBehospitalCode() {
-        return behospitalCode;
-    }
+    /**
+     * 核查任务创建人
+     */
+    private String jobCreatorName;
 
-    public void setBehospitalCode(String behospitalCode) {
-        this.behospitalCode = behospitalCode;
-    }
-    public Long getHospitalId() {
-        return hospitalId;
-    }
+    /**
+     * 核查任务生成时间
+     */
+    private Date jobCreateTime;
 
-    public void setHospitalId(Long hospitalId) {
-        this.hospitalId = hospitalId;
-    }
-    public Long getCheckId() {
-        return checkId;
-    }
+    /**
+     * 核查任务类型(0-科室任务 1-院级 2-质控科)
+     */
+    private Integer jobType;
 
-    public void setCheckId(Long checkId) {
-        this.checkId = checkId;
-    }
-    public String getCheckName() {
-        return checkName;
-    }
+    /**
+     * 核查任务分配人编号
+     */
+    private String jobDistributor;
 
-    public void setCheckName(String checkName) {
-        this.checkName = checkName;
-    }
-    public Date getCheckTime() {
-        return checkTime;
-    }
+    /**
+     * 核查任务分配人姓名
+     */
+    private String jobDistributionName;
 
-    public void setCheckTime(Date checkTime) {
-        this.checkTime = checkTime;
-    }
-    public Integer getStatus() {
-        return status;
-    }
+    /**
+     * 核查任务分配时间
+     */
+    private Date jobDistributionTime;
 
-    public void setStatus(Integer status) {
-        this.status = status;
-    }
 
     @Override
     public String toString() {

+ 108 - 0
src/main/java/com/diagbot/entity/MedCheckWork.java

@@ -0,0 +1,108 @@
+package com.diagbot.entity;
+
+import com.baomidou.mybatisplus.annotation.IdType;
+import com.baomidou.mybatisplus.annotation.TableId;
+import com.baomidou.mybatisplus.annotation.TableName;
+import lombok.Data;
+import lombok.Getter;
+import lombok.Setter;
+
+import java.time.LocalDateTime;
+import java.io.Serializable;
+import java.util.Date;
+
+/**
+ * <p>
+ *
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+@TableName("med_check_work")
+@Data
+public class MedCheckWork implements Serializable {
+
+    private static final long serialVersionUID = 1L;
+
+    @TableId(value = "id", type = IdType.AUTO)
+    private Long id;
+
+    /**
+     * 医院ID
+     */
+    private Long hospitalId;
+
+    /**
+     * 病历号
+     */
+    private String behospitalCode;
+
+    /**
+     * 创建者
+     */
+    private String creator;
+
+    /**
+     * 修改者
+     */
+    private String modifier;
+
+    /**
+     * 核查用户
+     */
+    private String checkUser;
+
+    /**
+     * 创建时间
+     */
+    private Date gmtCreate;
+
+    /**
+     * 修改时间
+     */
+    private Date gmtModified;
+
+    /**
+     * 核查时间
+     */
+    private Date checkTime;
+
+    /**
+     * 任务类型(0-科室任务 1-院级 2-质控科)
+     */
+    private String workType;
+
+    /**
+     * 分配状态(0-未分配 1-已分配)
+     */
+    private String distribution;
+
+    /**
+     * 核查状态(0-未核查 1-已核查)
+     */
+    private String checkStatus;
+
+    /**
+     * 是否删除
+     */
+    private String isDeleted;
+    @Override
+    public String toString() {
+        return "MedCheckWork{" +
+            "id=" + id +
+            ", hospitalId=" + hospitalId +
+            ", behospitalCode=" + behospitalCode +
+            ", creator=" + creator +
+            ", modifier=" + modifier +
+            ", checkUser=" + checkUser +
+            ", gmtCreate=" + gmtCreate +
+            ", gmtModified=" + gmtModified +
+            ", checkTime=" + checkTime +
+            ", workType=" + workType +
+            ", distribution=" + distribution +
+            ", checkStatus=" + checkStatus +
+            ", isDeleted=" + isDeleted +
+        "}";
+    }
+}

+ 4 - 0
src/main/java/com/diagbot/entity/QcresultDetail.java

@@ -111,4 +111,8 @@ public class QcresultDetail implements Serializable {
      * 备注
      */
     private String remark;
+    /**
+     * 质控条目说明
+     */
+    private String explainInfo;
 }

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

@@ -28,7 +28,7 @@ import java.util.Map;
  */
 @Component
 public class AlgorithmFacade {
-    private final static List<Integer> types = Arrays.asList(0, 1, 2, 3);
+    private final static List<Integer> types = Arrays.asList(0, 1, 2, 3,4);
 
     @Autowired
     private SysHospitalSetFacade sysHospitalSetFacade;

+ 191 - 0
src/main/java/com/diagbot/facade/MedCheckWorkFacade.java

@@ -0,0 +1,191 @@
+package com.diagbot.facade;
+
+import com.alibaba.fastjson.JSONObject;
+import com.diagbot.dto.MedicalRecordDTO;
+import com.diagbot.entity.MedBehospitalType;
+import com.diagbot.entity.MedCheckWork;
+import com.diagbot.exception.CommonErrorCode;
+import com.diagbot.exception.CommonException;
+import com.diagbot.service.impl.MedBehospitalTypeServiceImpl;
+import com.diagbot.service.impl.MedCheckWorkServiceImpl;
+import com.diagbot.service.impl.MedicalRecordServiceImpl;
+import com.diagbot.util.DateUtil;
+import com.diagbot.util.StringUtil;
+import com.diagbot.util.SysUserUtils;
+import com.diagbot.vo.MedCheckWorkAddVO;
+import com.diagbot.vo.RecordContentVO;
+import com.diagbot.vo.RecordTypeVO;
+import com.diagbot.vo.TaskVO;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.stereotype.Component;
+
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.HashMap;
+import java.util.List;
+
+
+/**
+ * @author songxl
+ * @since 2021-05-11
+ */
+@Component
+public class MedCheckWorkFacade extends MedCheckWorkServiceImpl {
+    @Autowired
+    private  MedCheckWorkServiceImpl medCheckWorkServiceImpl;
+    @Autowired
+    private MedBehospitalTypeServiceImpl medBehospitalTypeServiceImpl;
+    @Autowired
+    private MedicalRecordServiceImpl medicalRecordServiceImpl;
+    /**
+     * @Author songxl
+     * @Description 批量插入任务
+     * @Date  2021/5/11
+     * @Param [medCheckWorkVOList]
+     * @Return java.lang.Boolean
+     * @MethodName addCheck
+     */
+    public Boolean addCheck(ArrayList<MedCheckWorkAddVO> medCheckWorkVOList) {
+
+        Long hospitalId = Long.parseLong(SysUserUtils.getCurrentHospitalID());
+        String create = SysUserUtils.getCurrentPrincipleID();
+        List<MedCheckWork> checkWorkList = new ArrayList<>();
+        for(MedCheckWorkAddVO medCheckWorkAddVO:medCheckWorkVOList)
+        {
+            //入参验证
+            if (StringUtil.isBlank(medCheckWorkAddVO.getBehospitalCode())
+                    ||StringUtil.isBlank(medCheckWorkAddVO.getWorkType())) {
+                throw new CommonException(CommonErrorCode.PARAM_IS_NULL, "病历id或任务类型不能为空!");
+            }
+            MedCheckWork medCheckWork = new MedCheckWork();
+            medCheckWork.setHospitalId(hospitalId);
+            medCheckWork.setCreator(create);
+            medCheckWork.setGmtCreate(DateUtil.now());
+            medCheckWork.setBehospitalCode(medCheckWorkAddVO.getBehospitalCode());
+            medCheckWork.setWorkType(medCheckWorkAddVO.getWorkType());
+
+            medCheckWork.setId(Long.valueOf(medCheckWorkAddVO.getBehospitalCode()));
+            checkWorkList.add(medCheckWork);
+        }
+        return medCheckWorkServiceImpl.saveBatch(checkWorkList,10);
+    }
+    /**
+     * @Author songxl
+     * @Description 获取每日住院患者的类型(出院、病危、抢救。。。)
+     * @Date  2021/5/11
+     * @Param [param]
+     * @Return void
+     * @MethodName execute
+     */
+    public void execute(String param) {
+        JSONObject paramJson = JSONObject.parseObject(param);
+        Long hospiatlId = paramJson.getLong("hospital");
+        JSONObject typeValue = paramJson.getJSONObject("typeVal");
+        JSONObject typeName = paramJson.getJSONObject("typeName");
+        int searchSize = paramJson.getInteger("searchSize");
+        int batchSize = paramJson.getInteger("batchSize");
+
+
+        //定义批量插入的集合
+        HashMap<String,MedBehospitalType> medBehospitalTypeMap = null;
+        //1.判断患者类型表是否有记录
+        int count = medBehospitalTypeServiceImpl.count();
+        if(count>0)
+        {
+            medBehospitalTypeMap = new HashMap<>();
+            //2.1获取最近指定归档时间间隔的患者
+            RecordTypeVO recordContentVO = new RecordTypeVO();
+            recordContentVO.setHospitalId(hospiatlId);
+            recordContentVO.setModeList(new ArrayList<String>(typeValue.keySet()));
+            recordContentVO.setIsPlacefile(1l);//获取已归档的患者
+            recordContentVO.setStartTime(DateUtil.formatDateTime(DateUtil.addMinutes(DateUtil.now(),-30)));
+            recordContentVO.setEndTime(DateUtil.formatDateTime(DateUtil.now()));
+            getPatientRecordType(medBehospitalTypeMap,
+                    medicalRecordServiceImpl.getMedicalRecord(recordContentVO),typeValue,typeName,hospiatlId);
+        }
+        else
+        {
+           //2.2添加今天之前所有患者的类型
+           //2.2.1获取所有数据数量
+           medBehospitalTypeMap = new HashMap<>();
+           RecordTypeVO recordContentVO = new RecordTypeVO();
+           recordContentVO.setHospitalId(hospiatlId);
+           recordContentVO.setModeList(new ArrayList<String>(typeValue.keySet()));
+           recordContentVO.setIsPlacefile(1l);//获取已归档的患者
+           int num =  medicalRecordServiceImpl.getRecordCount(recordContentVO);
+           if(num>0)
+           {
+
+               if(num<searchSize)
+               {
+                    //执行一次
+                   recordContentVO.setStart(0L);
+                   recordContentVO.setEnd(num+0L);
+                   getPatientRecordType(medBehospitalTypeMap,
+                           medicalRecordServiceImpl.getMedicalRecord(recordContentVO),typeValue,typeName,hospiatlId);
+               }
+               int i = num/searchSize+1;
+               for(int j=0;j<i;j++)
+               {
+                   //5000个一次循环添加
+                   recordContentVO.setStart(j*searchSize*1L);
+                   recordContentVO.setEnd(searchSize*1L);
+                   getPatientRecordType(medBehospitalTypeMap,
+                           medicalRecordServiceImpl.getMedicalRecord(recordContentVO),typeValue,typeName,hospiatlId);
+               }
+
+           }
+
+           //3.批量执行插入操作
+            if(medBehospitalTypeMap.size()>0)
+            {
+                List<MedBehospitalType> medBehospitalTypeList = new ArrayList<>(medBehospitalTypeMap.values());
+                medBehospitalTypeServiceImpl.saveBatch(medBehospitalTypeList,batchSize);
+            }
+
+        }
+
+    }
+    /**
+     * @Author songxl
+     * @Description 获取患者类型存入批量插入map
+     * @Date  2021/5/11
+     * @Param [medBehospitalTypeMap, medicalRecordList, typeValue, typeName, hospiatlId]
+     * @Return void
+     * @MethodName getPatientRecordType
+     */
+    private void getPatientRecordType(HashMap<String,MedBehospitalType> medBehospitalTypeMap,
+                                      List<MedicalRecordDTO> medicalRecordList,
+                                      JSONObject typeValue,
+                                      JSONObject typeName,Long hospiatlId) {
+
+        if(medicalRecordList==null || medicalRecordList.isEmpty()){return;}
+        //1.遍历查询出来的结果
+        for(MedicalRecordDTO medicalRecordDTO:medicalRecordList)
+        {
+            //2.判断批量插入map中有没有这个患者
+            if(medBehospitalTypeMap.containsKey(medicalRecordDTO.getBehospitalCode()))
+            {
+                //3.比较这两次的分值大小
+                int lval = medBehospitalTypeMap.get(medicalRecordDTO.getBehospitalCode()).getValue();
+                int nval = typeValue.getInteger(medicalRecordDTO.getModeId()+"");
+                if(nval>lval)
+                {
+                    medBehospitalTypeMap.get(medicalRecordDTO.getBehospitalCode()).setValue(nval);
+                    medBehospitalTypeMap.get(medicalRecordDTO.getBehospitalCode())
+                            .setBehospitalType(typeName.getString(medicalRecordDTO.getModeId()+""));
+                }
+            }
+            else {
+                //4.获取分值记录这个患者
+                MedBehospitalType medBehospitalType = new MedBehospitalType();
+                medBehospitalType.setBehospitalCode(medicalRecordDTO.getBehospitalCode());
+                medBehospitalType.setBehospitalType(typeName.getString(medicalRecordDTO.getModeId()+""));
+                medBehospitalType.setValue(typeValue.getInteger(medicalRecordDTO.getModeId()+""));
+                medBehospitalType.setCreateTime(DateUtil.now());
+                medBehospitalType.setHospitalId(hospiatlId);
+                medBehospitalTypeMap.put(medicalRecordDTO.getBehospitalCode(),medBehospitalType);
+            }
+        }
+    }
+}

+ 13 - 0
src/main/java/com/diagbot/facade/QcresultInfoFacade.java

@@ -252,6 +252,19 @@ public class QcresultInfoFacade extends QcresultInfoServiceImpl {
                         .set("gmt_modified", now)
                 );
                 break;
+            case 4:
+                //逻辑删除质控明细
+                qcresultDetailServiceImpl.update(new UpdateWrapper<QcresultDetail>()
+                        .eq("id", algorithmVO.getOptResultAlgVO().getId())
+                        .eq("is_deleted", IsDeleteEnum.N.getKey())
+                        .eq("hospital_id", analyzeVO.getHospitalId())
+                        .eq("behospital_code", analyzeVO.getBehospitalCode())
+                        .set("is_deleted", IsDeleteEnum.Y.getKey())
+                        .set("opt_type", 2)
+                        .set("modifier", useId)
+                        .set("gmt_modified", now)
+                );
+                break;
             default:
                 /* DO NOTHING */
                 break;

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedBehospitalType;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+public interface MedBehospitalTypeMapper extends BaseMapper<MedBehospitalType> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.mapper;
+
+import com.diagbot.entity.MedCheckWork;
+import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+
+/**
+ * <p>
+ *  Mapper 接口
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+public interface MedCheckWorkMapper extends BaseMapper<MedCheckWork> {
+
+}

+ 5 - 0
src/main/java/com/diagbot/mapper/MedicalRecordMapper.java

@@ -1,10 +1,12 @@
 package com.diagbot.mapper;
 
 import com.baomidou.mybatisplus.core.mapper.BaseMapper;
+import com.diagbot.dto.MedicalRecordDTO;
 import com.diagbot.dto.RecordContentDTO;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.vo.RecordContentVO;
 import com.diagbot.vo.RecordDataVO;
+import com.diagbot.vo.RecordTypeVO;
 
 import java.util.List;
 
@@ -22,4 +24,7 @@ public interface MedicalRecordMapper extends BaseMapper<MedicalRecord> {
     public List<RecordContentDTO> getRecordData(RecordDataVO recordContentVO);
 
     public void updateBatchByKey(List<MedicalRecord> list);
+    public int getRecordCount(RecordTypeVO recordContentVO);
+
+    List<MedicalRecordDTO> getMedicalRecord(RecordTypeVO recordContentVO);
 }

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedBehospitalType;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+public interface MedBehospitalTypeService extends IService<MedBehospitalType> {
+
+}

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

@@ -0,0 +1,16 @@
+package com.diagbot.service;
+
+import com.diagbot.entity.MedCheckWork;
+import com.baomidou.mybatisplus.extension.service.IService;
+
+/**
+ * <p>
+ *  服务类
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+public interface MedCheckWorkService extends IService<MedCheckWork> {
+
+}

+ 5 - 0
src/main/java/com/diagbot/service/MedicalRecordService.java

@@ -1,10 +1,12 @@
 package com.diagbot.service;
 
 import com.baomidou.mybatisplus.extension.service.IService;
+import com.diagbot.dto.MedicalRecordDTO;
 import com.diagbot.dto.RecordContentDTO;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.vo.RecordContentVO;
 import com.diagbot.vo.RecordDataVO;
+import com.diagbot.vo.RecordTypeVO;
 
 import java.util.List;
 
@@ -20,4 +22,7 @@ public interface MedicalRecordService extends IService<MedicalRecord> {
 
     public List<RecordContentDTO> getRecordContent(RecordContentVO recordContentVO);
     public List<RecordContentDTO> getRecordData(RecordDataVO recordContentVO);
+    public int getRecordCount(RecordTypeVO recordContentVO);
+
+    public List<MedicalRecordDTO> getMedicalRecord(RecordTypeVO recordContentVO);
 }

+ 20 - 0
src/main/java/com/diagbot/service/impl/MedBehospitalTypeServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.diagbot.entity.MedBehospitalType;
+import com.diagbot.mapper.MedBehospitalTypeMapper;
+import com.diagbot.service.MedBehospitalTypeService;
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+@Service
+public class MedBehospitalTypeServiceImpl extends ServiceImpl<MedBehospitalTypeMapper, MedBehospitalType> implements MedBehospitalTypeService {
+
+}

+ 20 - 0
src/main/java/com/diagbot/service/impl/MedCheckWorkServiceImpl.java

@@ -0,0 +1,20 @@
+package com.diagbot.service.impl;
+
+import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
+import com.diagbot.entity.MedCheckWork;
+import com.diagbot.mapper.MedCheckWorkMapper;
+import com.diagbot.service.MedCheckWorkService;
+import org.springframework.stereotype.Service;
+
+/**
+ * <p>
+ *  服务实现类
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+@Service
+public class MedCheckWorkServiceImpl extends ServiceImpl<MedCheckWorkMapper, MedCheckWork> implements MedCheckWorkService {
+
+}

+ 12 - 0
src/main/java/com/diagbot/service/impl/MedicalRecordServiceImpl.java

@@ -1,5 +1,6 @@
 package com.diagbot.service.impl;
 
+import com.diagbot.dto.MedicalRecordDTO;
 import com.diagbot.dto.RecordContentDTO;
 import com.diagbot.entity.MedicalRecord;
 import com.diagbot.mapper.MedicalRecordMapper;
@@ -7,6 +8,7 @@ import com.diagbot.service.MedicalRecordService;
 import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
 import com.diagbot.vo.RecordContentVO;
 import com.diagbot.vo.RecordDataVO;
+import com.diagbot.vo.RecordTypeVO;
 import org.springframework.stereotype.Service;
 
 import java.util.List;
@@ -31,6 +33,16 @@ public class MedicalRecordServiceImpl extends ServiceImpl<MedicalRecordMapper, M
         return baseMapper.getRecordData(recordContentVO);
     }
 
+    @Override
+    public int getRecordCount(RecordTypeVO recordContentVO) {
+        return baseMapper.getRecordCount(recordContentVO);
+    }
+
+    @Override
+    public List<MedicalRecordDTO> getMedicalRecord(RecordTypeVO recordContentVO) {
+        return baseMapper.getMedicalRecord(recordContentVO);
+    }
+
     /**
      * 根据文书编码、医院编码、病人住院编码
      * @param list

+ 71 - 0
src/main/java/com/diagbot/task/BehospitalInfoTypeTask.java

@@ -0,0 +1,71 @@
+package com.diagbot.task;
+
+import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
+import com.diagbot.entity.SysTaskCron;
+import com.diagbot.enums.IsDeleteEnum;
+import com.diagbot.facade.BehospitalInfoFacade;
+import com.diagbot.facade.MedCheckWorkFacade;
+import com.diagbot.facade.SysTaskCronFacade;
+import com.diagbot.util.StringUtil;
+import com.diagbot.vo.TaskVO;
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.context.annotation.Configuration;
+import org.springframework.scheduling.Trigger;
+import org.springframework.scheduling.TriggerContext;
+import org.springframework.scheduling.annotation.EnableScheduling;
+import org.springframework.scheduling.annotation.SchedulingConfigurer;
+import org.springframework.scheduling.config.ScheduledTaskRegistrar;
+import org.springframework.scheduling.support.CronTrigger;
+
+import java.time.LocalDateTime;
+import java.util.Date;
+
+@Configuration      //1.主要用于标记配置类,兼备Component的效果。
+@EnableScheduling   // 2.开启定时任务(每隔半小时检查今天患者,然后修改今天的患者的类型)
+@Slf4j
+public class BehospitalInfoTypeTask implements SchedulingConfigurer{
+    @Autowired
+    private SysTaskCronFacade sysTaskCronFacade;
+
+    private SysTaskCron task001 = new SysTaskCron();
+
+    private String param = "";
+
+    //添加核查任务
+    @Autowired
+    private MedCheckWorkFacade medCheckWorkFacade;
+    /**
+     * 执行定时任务.
+     */
+    @Override
+    public void configureTasks(ScheduledTaskRegistrar taskRegistrar) {
+        taskRegistrar.addTriggerTask(new Runnable() {
+            @Override
+            public void run() {
+                //1.添加任务内容(Runnable)
+                if (null != task001
+                        && task001.getIsDeleted().equals(IsDeleteEnum.N.getKey())
+                        && task001.getIsUsed().equals(1)) {
+                    log.info("执行动态定时任务: " + LocalDateTime.now().toLocalTime());
+                    medCheckWorkFacade.execute(param);
+                }
+            }
+        }, new Trigger() {
+            @Override
+            public Date nextExecutionTime(TriggerContext triggerContext) {
+                //2.1 从数据库获取执行周期
+                task001 = sysTaskCronFacade.getOne(new QueryWrapper<SysTaskCron>()
+                        .eq("cron_code", "TASK019"), false);
+                String cron = "0 0/30 * * * ?";
+                //2.2 合法性校验.
+                if (null != task001 && StringUtil.isNotBlank(task001.getCron())) {
+                    cron = task001.getCron();
+                    param = task001.getParam();
+                }
+                CronTrigger trigger = new CronTrigger(cron);
+                return trigger.nextExecutionTime(triggerContext);
+            }
+        });
+    }
+}

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

@@ -22,6 +22,6 @@ public class AnalyzeRunVO {
     private Long modeId;
     // 归档字段
     private String isPlacefile = "0";
-    //默认分组
-    private Integer NeedGroup = 1;
+
+    private Integer NeedGroup = 0;
 }

+ 24 - 0
src/main/java/com/diagbot/vo/MedCheckWorkAddVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Getter;
+import lombok.Setter;
+import java.util.Date;
+
+/**
+ * @author songxl
+ * @Description:核查任务添加对象
+ * @author songxl
+ * @since 2021-05-11
+ */
+@Getter
+@Setter
+public class MedCheckWorkAddVO {
+    @ApiModelProperty(hidden = true)
+    private Long hospitalId;//医院id
+    private String behospitalCode; // 病历id
+    @ApiModelProperty(hidden = true)
+    private String creator; // 创建用户
+    private String workType; // 任务类型 0-科室任务 1-院级 1-质控科
+
+}

+ 2 - 0
src/main/java/com/diagbot/vo/QcResultAlgVO.java

@@ -29,6 +29,8 @@ public class QcResultAlgVO {
     private String code;
     //质控返回info
     private String info;
+    //质控条目说明
+    private String explainInfo;
     //单项否决(1-单项否决 0-非)
     private Integer isReject;
 }

+ 24 - 0
src/main/java/com/diagbot/vo/RecordTypeVO.java

@@ -0,0 +1,24 @@
+package com.diagbot.vo;
+
+import lombok.Data;
+
+import java.util.List;
+
+/**
+ * @description:
+ * @author: zhoutg
+ * @time: 2020/4/13 18:31
+ */
+@Data
+public class RecordTypeVO {
+
+    private String behospitalCode; // 病历id
+    private Long hospitalId; //医院ID
+    private Long start; //开始
+    private Long end; //结束
+    private List<String> modeList;//所属模块
+    private Long isPlacefile;//是否归档
+    private String startTime;//筛选开始时间
+    private String endTime;//结束时间
+
+}

+ 0 - 0
src/main/java/com/diagbot/web/ADataStrController.java


+ 11 - 0
src/main/java/com/diagbot/web/BehospitalInfoController.java

@@ -148,6 +148,17 @@ public class BehospitalInfoController {
         return RespDTO.onSuc(qcresultInfoFacade.changeQcResult(qcresultVO));
     }
 
+    @ApiOperation(value = "逻辑删除质控条目[by:songxl]",
+            notes = "behospitalCode:病历号,必填<br>" +
+                    "id:明细id,必填<br>")
+    @PostMapping("/logicDelCase")
+    @SysLogger("logicDelCase")
+    @Transactional
+    public RespDTO<AnalyzeDTO> logicDelCase(@RequestBody QcresultVO qcresultVO) {
+        qcresultVO.setType(4);
+        return RespDTO.onSuc(qcresultInfoFacade.changeQcResult(qcresultVO));
+    }
+
     @ApiOperation(value = "修改质控条目[by:zhoutg]",
             notes = "")
     @PostMapping("/updCase")

+ 12 - 0
src/main/java/com/diagbot/web/MedCheckInfoController.java

@@ -13,6 +13,8 @@ import org.springframework.web.bind.annotation.RequestBody;
 import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RestController;
 
+import java.util.Map;
+
 /**
  * <p>
  * 核查表 前端控制器
@@ -39,4 +41,14 @@ public class MedCheckInfoController {
         return RespDTO.onSuc(res);
     }
 
+
+
+    @ApiOperation(value = "获取核查人员列表[by:songxl]",
+            notes = "获取核查人员列表")
+    @PostMapping("/getCheckUserList")
+    @SysLogger("getCheckUserList")
+    public RespDTO<Map<String, Object>> getCheckUserList() {
+
+        return RespDTO.onSuc(null);
+    }
 }

+ 42 - 0
src/main/java/com/diagbot/web/MedCheckWorkController.java

@@ -0,0 +1,42 @@
+package com.diagbot.web;
+
+
+import com.diagbot.annotation.SysLogger;
+import com.diagbot.dto.RespDTO;
+import com.diagbot.facade.MedCheckWorkFacade;
+import com.diagbot.vo.MedCheckWorkAddVO;
+import io.swagger.annotations.Api;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.beans.factory.annotation.Autowired;
+import org.springframework.web.bind.annotation.PostMapping;
+import org.springframework.web.bind.annotation.RequestBody;
+import org.springframework.web.bind.annotation.RequestMapping;
+
+import org.springframework.web.bind.annotation.RestController;
+
+import java.util.ArrayList;
+
+/**
+ * <p>
+ *  核查前端控制器
+ * </p>
+ *
+ * @author songxl
+ * @since 2021-05-11
+ */
+@RestController
+@RequestMapping("/check")
+@Api(value = "核查任务数据模块相关接口API", tags = { "核查任务数据模块相关接口API" })
+public class MedCheckWorkController {
+    @Autowired
+    MedCheckWorkFacade medCheckworkFacade;
+
+    @ApiOperation(value = "生成核查任务[by:songxl]",
+            notes = "生成核查任务")
+    @PostMapping("/addCheck")
+    @SysLogger("addCheck")
+    public RespDTO<Boolean> addMedCheckInfo(@RequestBody ArrayList<MedCheckWorkAddVO> medCheckWorkVOList) {
+        Boolean res = medCheckworkFacade.addCheck(medCheckWorkVOList);
+        return RespDTO.onSuc(res);
+    }
+}

+ 9 - 2
src/main/resources/mapper/BehospitalInfoMapper.xml

@@ -37,6 +37,8 @@
         <result column="gmt_modified" property="gmtModified"/>
         <result column="creator" property="creator"/>
         <result column="modifier" property="modifier"/>
+        <result column="linkman" property="linkman"/>
+        <result column="explainInfo" property="explain_info"/>
     </resultMap>
 
     <select id="getPage" resultType="com.diagbot.dto.BehospitalInfoDTO">
@@ -682,9 +684,11 @@
         SELECT b.`name` model_name,c.score,c.msg,c.cases_entry_id,c.is_reject,c.id id,c.info,
         a.cases_id cases_id, d.score cases_score,b.id model_id, a.name standard_msg,
         c.opt_type, c.grade_type, c.gmt_create, c.gmt_modified,
+        c.modifier,u.linkman,c.is_deleted,c.explain_info,
         a.type, a.drgs
-        FROM `qc_cases_entry` a, qc_mode b, med_qcresult_detail c, qc_cases_hospital d
-        where a.is_deleted = 'N' and b.is_deleted = 'N' and c.is_deleted = 'N' and d.is_deleted = 'N'
+        FROM `qc_cases_entry` a, qc_mode b, med_qcresult_detail c, qc_cases_hospital d ,sys_user u
+        where a.is_deleted = 'N' and b.is_deleted = 'N' and  d.is_deleted = 'N'
+        and u.is_deleted = 'N' and u.id = c.modifier
         and a.id = c.cases_entry_id
         and a.mode_id = b.id
         AND c.cases_id = d.cases_id
@@ -694,6 +698,9 @@
         order by b.order_no, c.grade_type desc, a.order_no
     </select>
 
+
+
+
     <select id="getMsgByEntryCode" resultType="com.diagbot.dto.MsgDTO">
         SELECT b.id model_id,b.`name` model_name,
         d.score,d.msg,d.cases_entry_id,d.is_reject,

+ 16 - 0
src/main/resources/mapper/MedBehospitalTypeMapper.xml

@@ -0,0 +1,16 @@
+<?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.MedBehospitalTypeMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedBehospitalType">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="behospital_code" property="behospitalCode" />
+        <result column="behospital_type" property="behospitalType" />
+        <result column="value" property="value" />
+        <result column="create_time" property="createTime" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+</mapper>

+ 8 - 0
src/main/resources/mapper/MedCheckInfoMapper.xml

@@ -17,6 +17,14 @@
         <result column="check_time" property="checkTime" />
         <result column="status" property="status" />
         <result column="check_type" property="checkType" />
+        <result column="create_status" property="createStatus" />
+        <result column="job_creator" property="jobCreator" />
+        <result column="job_creator_name" property="jobCreatorName" />
+        <result column="job_create_time" property="jobCreateTime" />
+        <result column="job_type" property="jobType" />
+        <result column="job_distributor" property="jobDistributor" />
+        <result column="job_distribution_name" property="jobDistributionName" />
+        <result column="job_distribution_time" property="jobDistributionTime" />
     </resultMap>
 
 </mapper>

+ 22 - 0
src/main/resources/mapper/MedCheckWorkMapper.xml

@@ -0,0 +1,22 @@
+<?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.MedCheckWorkMapper">
+
+    <!-- 通用查询映射结果 -->
+    <resultMap id="BaseResultMap" type="com.diagbot.entity.MedCheckWork">
+        <id column="id" property="id" />
+        <result column="hospital_id" property="hospitalId" />
+        <result column="behospital_code" property="behospitalCode" />
+        <result column="creator" property="creator" />
+        <result column="modifier" property="modifier" />
+        <result column="check_user" property="checkUser" />
+        <result column="gmt_create" property="gmtCreate" />
+        <result column="gmt_modified" property="gmtModified" />
+        <result column="check_time" property="checkTime" />
+        <result column="work_type" property="workType" />
+        <result column="distribution" property="distribution" />
+        <result column="check_status" property="checkStatus" />
+        <result column="is_deleted" property="isDeleted" />
+    </resultMap>
+
+</mapper>

+ 44 - 0
src/main/resources/mapper/MedicalRecordMapper.xml

@@ -49,6 +49,50 @@
         and t3.xml_text != ''
     </select>
 
+    <select id="getRecordCount"  resultType="java.lang.Integer">
+        select count(*) as num from
+          (select DISTINCT b.behospital_code ,b.mode_id from med_behospital_info a LEFT OUTER JOIN med_medical_record b on a.behospital_code = b.behospital_code and a.hospital_id = b.hospital_id  where
+              a.hospital_id = #{hospitalId}
+
+        <if test="modeList != null and modeList.size() > 0">
+            and b.mode_id in
+            <foreach collection="modeList" open="(" separator="," close=")" item="item">
+                '${item}'
+            </foreach>
+        </if>
+        <if test="isPlacefile !=null">
+            and a.is_placefile  =#{isPlacefile}
+        </if>
+        <if test="startTime !=null and endTime !=null">
+            and a.placefile_date BETWEEN #{startTime} AND #{endTime}
+        </if>
+        ) a
+    </select>
+
+
+    <select id="getMedicalRecord"  resultType="com.diagbot.dto.MedicalRecordDTO">
+        select DISTINCT b.behospital_code ,b.mode_id from med_behospital_info a LEFT OUTER JOIN med_medical_record b on a.behospital_code = b.behospital_code and a.hospital_id = b.hospital_id  where
+        a.hospital_id = #{hospitalId}
+
+        <if test="modeList != null and modeList.size() > 0">
+            and b.mode_id in
+            <foreach collection="modeList" open="(" separator="," close=")" item="item">
+                '${item}'
+            </foreach>
+        </if>
+
+        <if test="isPlacefile !=null">
+            and a.is_placefile  =#{isPlacefile}
+        </if>
+        <if test="startTime !=null and endTime !=null">
+            and a.placefile_date BETWEEN #{startTime} AND #{endTime}
+        </if>
+
+        <if test="start != null and end !=null">
+           limit #{start},#{end}
+        </if>
+    </select>
+
     <update id="updateBatchByKey">
         <foreach collection="list" item="item"  separator=";">
             update med_medical_record

+ 1 - 0
src/main/resources/mapper/QcresultDetailMapper.xml

@@ -22,6 +22,7 @@
         <result column="creator" property="creator" />
         <result column="modifier" property="modifier" />
         <result column="remark" property="remark" />
+        <result column="explain_info" property="explainInfo" />
     </resultMap>
 
 </mapper>