Quellcode durchsuchen

义乌核查分支

songxinlu vor 4 Jahren
Ursprung
Commit
40aec169e6
26 geänderte Dateien mit 789 neuen und 2 gelöschten Zeilen
  1. 4 0
      src/main/java/com/diagbot/dto/MedicalRecordDTO.java
  2. 8 0
      src/main/java/com/diagbot/dto/MsgDTO.java
  3. 71 0
      src/main/java/com/diagbot/entity/MedBehospitalType.java
  4. 108 0
      src/main/java/com/diagbot/entity/MedCheckWork.java
  5. 4 0
      src/main/java/com/diagbot/entity/QcresultDetail.java
  6. 191 0
      src/main/java/com/diagbot/facade/MedCheckWorkFacade.java
  7. 13 0
      src/main/java/com/diagbot/facade/QcresultInfoFacade.java
  8. 16 0
      src/main/java/com/diagbot/mapper/MedBehospitalTypeMapper.java
  9. 16 0
      src/main/java/com/diagbot/mapper/MedCheckWorkMapper.java
  10. 5 0
      src/main/java/com/diagbot/mapper/MedicalRecordMapper.java
  11. 16 0
      src/main/java/com/diagbot/service/MedBehospitalTypeService.java
  12. 16 0
      src/main/java/com/diagbot/service/MedCheckWorkService.java
  13. 5 0
      src/main/java/com/diagbot/service/MedicalRecordService.java
  14. 20 0
      src/main/java/com/diagbot/service/impl/MedBehospitalTypeServiceImpl.java
  15. 20 0
      src/main/java/com/diagbot/service/impl/MedCheckWorkServiceImpl.java
  16. 12 0
      src/main/java/com/diagbot/service/impl/MedicalRecordServiceImpl.java
  17. 71 0
      src/main/java/com/diagbot/task/BehospitalInfoTypeTask.java
  18. 24 0
      src/main/java/com/diagbot/vo/MedCheckWorkAddVO.java
  19. 2 0
      src/main/java/com/diagbot/vo/QcResultAlgVO.java
  20. 24 0
      src/main/java/com/diagbot/vo/RecordTypeVO.java
  21. 10 0
      src/main/java/com/diagbot/web/BehospitalInfoController.java
  22. 42 0
      src/main/java/com/diagbot/web/MedCheckWorkController.java
  23. 9 2
      src/main/resources/mapper/BehospitalInfoMapper.xml
  24. 16 0
      src/main/resources/mapper/MedBehospitalTypeMapper.xml
  25. 22 0
      src/main/resources/mapper/MedCheckWorkMapper.xml
  26. 44 0
      src/main/resources/mapper/MedicalRecordMapper.xml

+ 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 explain;
     // 条目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 +
+        "}";
+    }
+}

+ 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 explain;
 }

+ 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);
+            }
+        });
+    }
+}

+ 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 explain;
     //单项否决(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;//结束时间
+
+}

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

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

+ 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="explain" property="explain"/>
     </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`,
         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>

+ 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