Browse Source

高危筛查后台管理

bfyMa
zhangye 3 years ago
parent
commit
f3c9a377ca
  1. 31
      src/main/java/com/ccsens/carbasics/api/ScreeningController.java
  2. 65
      src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java
  3. 214
      src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java
  4. 8
      src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDao.java
  5. 24
      src/main/java/com/ccsens/carbasics/service/IScreeningService.java
  6. 141
      src/main/java/com/ccsens/carbasics/service/ScreeningService.java
  7. 5
      src/main/java/com/ccsens/carbasics/util/Constant.java
  8. 193
      src/main/resources/mapper_dao/QuestionnaireDao.xml

31
src/main/java/com/ccsens/carbasics/api/ScreeningController.java

@ -6,6 +6,8 @@ import com.ccsens.carbasics.service.IScreeningService;
import com.ccsens.cloudutil.annotation.MustLogin; import com.ccsens.cloudutil.annotation.MustLogin;
import com.ccsens.util.JsonResponse; import com.ccsens.util.JsonResponse;
import com.ccsens.util.bean.dto.QueryDto; import com.ccsens.util.bean.dto.QueryDto;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import io.swagger.annotations.Api; import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation; import io.swagger.annotations.ApiOperation;
import io.swagger.annotations.ApiParam; import io.swagger.annotations.ApiParam;
@ -71,4 +73,33 @@ public class ScreeningController {
return JsonResponse.newInstance().ok(centerWorkload); return JsonResponse.newInstance().ok(centerWorkload);
} }
// @MustLogin
@ApiOperation(value = "后台查看高危筛查列表", notes = "")
@RequestMapping(value = "/back/query", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<PageInfo<QuestionnaireVo.BackQueryScreening>> backQueryScreening(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.BackQueryScreening> params) throws Exception {
log.info("后台查看高危筛查列表:{}",params);
PageInfo<QuestionnaireVo.BackQueryScreening> backQueryScreening = screeningService.backQueryScreening(params.getParam(), params.getUserId());
log.info("后台查看高危筛查列表结束");
return JsonResponse.newInstance().ok(backQueryScreening);
}
@MustLogin
@ApiOperation(value = "修改高危筛查的待处理状态", notes = "")
@RequestMapping(value = "/back/update", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse backUpdateScreening(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.BackUpdateScreening> params) throws Exception {
log.info("修改高危筛查的待处理状态:{}",params);
screeningService.backUpdateScreening(params.getParam(), params.getUserId());
log.info("修改高危筛查的待处理状态成功");
return JsonResponse.newInstance().ok();
}
@MustLogin
@ApiOperation(value = "导出高危筛查统计表", notes = "")
@RequestMapping(value = "/back/export", method = RequestMethod.POST, produces = {"application/json;charset=UTF-8"})
public JsonResponse<String> backExport(@ApiParam @Validated @RequestBody QueryDto<QuestionnaireDto.BackQueryScreening> params) throws Exception {
log.info("导出高危筛查统计表:{}",params);
String path = screeningService.backExport(params.getParam(), params.getUserId());
log.info("导出高危筛查统计表成功:{}",path);
return JsonResponse.newInstance().ok(path);
}
} }

65
src/main/java/com/ccsens/carbasics/bean/dto/QuestionnaireDto.java

@ -4,8 +4,11 @@ import io.swagger.annotations.ApiModel;
import io.swagger.annotations.ApiModelProperty; import io.swagger.annotations.ApiModelProperty;
import lombok.Data; import lombok.Data;
import javax.validation.constraints.Max;
import javax.validation.constraints.Min;
import javax.validation.constraints.NotBlank; import javax.validation.constraints.NotBlank;
import javax.validation.constraints.NotNull; import javax.validation.constraints.NotNull;
import java.util.List;
@Data @Data
public class QuestionnaireDto { public class QuestionnaireDto {
@ -140,4 +143,66 @@ public class QuestionnaireDto {
private Long roleId; private Long roleId;
} }
@Data
@ApiModel("修改高危筛健康跟踪")
public static class BackUpdateScreening {
@ApiModelProperty("问卷详情id")
private List<Long> detailIds;
@ApiModelProperty("健康跟踪 0待处理 1已联系 2已就诊")
private Byte healthTracking;
}
@Data
@ApiModel("后台查看高危筛查信息")
public static class BackQueryScreening {
@ApiModelProperty("第几页")
@Min(value = 1)
private int pageNum = 1;
@ApiModelProperty("每页多少条")
@Min(value = 1)
@Max(value=100)
private int pageSize = 10;
@ApiModelProperty("身份证号")
private String idCard;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("性别 0女 1男")
private String sex;
@ApiModelProperty("出生日期筛选--开始")
private String startTime;
@ApiModelProperty("出生日期筛选--结束")
private String endTime;
@ApiModelProperty("年龄")
private String age;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("高血压 0没有 1有")
private Byte hypertension;
@ApiModelProperty("血脂 0没有 1有")
private Byte bloodFat;
@ApiModelProperty("糖尿病 0没有 1有")
private Byte diabetes;
@ApiModelProperty("心房颤动 0没有 1有")
private Byte fibrillation;
@ApiModelProperty("吸烟 0没有 1有")
private Byte smoke;
@ApiModelProperty("体重 0正常 1超重")
private Byte weight;
@ApiModelProperty("运动 0正常 1缺乏")
private Byte sports;
@ApiModelProperty("卒中家族史 0没有 1有")
private Byte apoplexyFamily;
@ApiModelProperty("脑卒中病史 0没有 1有")
private Byte cerebralStroke;
@ApiModelProperty("脑缺血病史 0没有 1有")
private Byte cerebralIschemia;
@ApiModelProperty("危险等级 0正常 1高危 2中危 3低危")
private Byte type;
@ApiModelProperty("健康跟踪 0待处理 1已联系 2已就诊")
private Byte healthTracking;
}
} }

214
src/main/java/com/ccsens/carbasics/bean/vo/QuestionnaireVo.java

@ -196,4 +196,218 @@ public class QuestionnaireVo {
@ApiModelProperty("高危数量") @ApiModelProperty("高危数量")
private int highNum; private int highNum;
} }
@Data
@ApiModel("后台分页查看高危筛查信息--返回")
public static class BackQueryScreening {
@ApiModelProperty("问卷详情id")
private Long id;
@ApiModelProperty("姓名")
private String name;
@ApiModelProperty("身份证号")
private String idCard;
@ApiModelProperty("性别 0女 1男")
private String sex;
@ApiModelProperty("出生日期")
private String birthday;
@ApiModelProperty("年龄")
private String age;
@ApiModelProperty("手机号")
private String phone;
@ApiModelProperty("备注")
private String remark;
@ApiModelProperty("病情")
private String illness;
@ApiModelProperty("高血压 0没有 1有")
private String hypertension;
@ApiModelProperty("血脂 0没有 1有")
private String bloodFat;
@ApiModelProperty("糖尿病 0没有 1有")
private String diabetes;
@ApiModelProperty("心房颤动 0没有 1有")
private String fibrillation;
@ApiModelProperty("吸烟 0没有 1有")
private String smoke;
@ApiModelProperty("体重 0正常 1超重")
private String weight;
@ApiModelProperty("运动 0正常 1缺乏")
private String sports;
@ApiModelProperty("卒中家族史 0没有 1有")
private String apoplexyFamily;
@ApiModelProperty("脑卒中病史 0没有 1有")
private String cerebralStroke;
@ApiModelProperty("脑缺血病史 0没有 1有")
private String cerebralIschemia;
@ApiModelProperty("危险等级 0正常 1高危 2中危 3低危")
private Byte type;
@ApiModelProperty("健康跟踪 0待处理 1已联系 2已就诊")
private Byte healthTracking;
public byte getType() {
byte b = 0;
if(StrUtil.isNotBlank(illness)){
if(illness.split(",").length >= 3){
b = 1;
}else if(illness.contains("09") || illness.contains("10")){
b = 1;
}else if(illness.contains("01") || illness.contains("03") || illness.contains("04")){
b = 2;
}else if(illness.contains("02") || illness.contains("05")
|| illness.contains("06") || illness.contains("07") || illness.contains("08")){
b = 3;
}
}
return b;
}
public String getTypeString() {
String s = "正常";
if(ObjectUtil.isNotNull(getType())){
switch (getType()){
case 1:
s = "高危";
break;
case 2:
s = "中危";
break;
case 3:
s = "低危";
break;
default:
}
}
return s;
}
public String getHealthTrackingString() {
String s = "待处理";
switch (healthTracking){
case 1:
s = "已联系";
break;
case 2:
s = "已就诊";
break;
default:
}
return s;
}
public String getIdCard() {
String s = idCard;
if(ObjectUtil.isNotNull(idCard)){
s = DesensitizedUtils.idCardNum(idCard);
}
return s;
}
public String getPhone() {
String p = phone;
if(ObjectUtil.isNotNull(phone)){
p = DesensitizedUtils.mobilePhone(phone);
}
return p;
}
public String getHypertension() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("01")){
s = "有";
}
}
return s;
}
public String getBloodFat() {
String s = "正常";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("02")){
s = "异常";
}
}
return s;
}
public String getDiabetes() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("03")){
s = "有";
}
}
return s;
}
public String getFibrillation() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("04")){
s = "有";
}
}
return s;
}
public String getSmoke() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("05")){
s = "有";
}
}
return s;
}
public String getWeight() {
String s = "正常";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("06")){
s = "超重";
}
}
return s;
}
public String getSports() {
String s = "正常";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("07")){
s = "缺乏";
}
}
return s;
}
public String getApoplexyFamily() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("08")){
s = "有";
}
}
return s;
}
public String getCerebralStroke() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("09")){
s = "有";
}
}
return s;
}
public String getCerebralIschemia() {
String s = "无";
if(StrUtil.isNotBlank(illness)){
if(illness.contains("10")){
s = "有";
}
}
return s;
}
}
} }

8
src/main/java/com/ccsens/carbasics/persist/dao/QuestionnaireDao.java

@ -79,4 +79,12 @@ public interface QuestionnaireDao extends QuestionnaireMapper {
* @return 返回医生工作量列表 * @return 返回医生工作量列表
*/ */
List<QuestionnaireVo.CenterWorkload> centerWorkload(@Param("now")long now,@Param("doctorIdList") List<Long> doctorIdList); List<QuestionnaireVo.CenterWorkload> centerWorkload(@Param("now")long now,@Param("doctorIdList") List<Long> doctorIdList);
/**
* 后台查找高危筛查问卷信息
* @param param 筛选条件
* @param now 当前时间
* @return 返回类表
*/
List<QuestionnaireVo.BackQueryScreening> backQueryScreening(@Param("param")QuestionnaireDto.BackQueryScreening param, @Param("now")long now);
} }

24
src/main/java/com/ccsens/carbasics/service/IScreeningService.java

@ -2,6 +2,7 @@ package com.ccsens.carbasics.service;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto; import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.vo.QuestionnaireVo; import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import com.github.pagehelper.PageInfo;
import java.util.List; import java.util.List;
@ -40,4 +41,27 @@ public interface IScreeningService {
* @return 返回医生列表 * @return 返回医生列表
*/ */
List<QuestionnaireVo.CenterWorkload> centerWorkload(QuestionnaireDto.CenterWorkload param, Long userId); List<QuestionnaireVo.CenterWorkload> centerWorkload(QuestionnaireDto.CenterWorkload param, Long userId);
/**
* 后台分页查找高危筛查信息
* @param param 筛选条件
* @param userId userId
* @return 返回列表
*/
PageInfo<QuestionnaireVo.BackQueryScreening> backQueryScreening(QuestionnaireDto.BackQueryScreening param, Long userId);
/**
* 后台修改高危筛查健康跟踪状态
* @param param 健康跟踪状态
* @param userId userId
*/
void backUpdateScreening(QuestionnaireDto.BackUpdateScreening param, Long userId);
/**
* 导出表格
* @param param 筛选条件
* @param userId userId
* @return 返回表格路径
*/
String backExport(QuestionnaireDto.BackQueryScreening param, Long userId) throws Exception;
} }

141
src/main/java/com/ccsens/carbasics/service/ScreeningService.java

@ -1,27 +1,36 @@
package com.ccsens.carbasics.service; package com.ccsens.carbasics.service;
import cn.hutool.core.collection.CollectionUtil; import cn.hutool.core.collection.CollectionUtil;
import cn.hutool.core.date.DateUtil;
import cn.hutool.core.lang.Snowflake;
import cn.hutool.core.util.ObjectUtil; import cn.hutool.core.util.ObjectUtil;
import com.ccsens.carbasics.bean.dto.QuestionnaireDto; import com.ccsens.carbasics.bean.dto.QuestionnaireDto;
import com.ccsens.carbasics.bean.po.QuestionnaireDetail; import com.ccsens.carbasics.bean.po.QuestionnaireDetail;
import com.ccsens.carbasics.bean.po.QuestionnaireRecord;
import com.ccsens.carbasics.bean.vo.QuestionnaireVo; import com.ccsens.carbasics.bean.vo.QuestionnaireVo;
import com.ccsens.carbasics.persist.dao.OrganizationPositionDao; import com.ccsens.carbasics.persist.dao.OrganizationPositionDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireDao; import com.ccsens.carbasics.persist.dao.QuestionnaireDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireDetailDao; import com.ccsens.carbasics.persist.dao.QuestionnaireDetailDao;
import com.ccsens.carbasics.persist.dao.QuestionnaireRecordDao;
import com.ccsens.carbasics.util.Constant; import com.ccsens.carbasics.util.Constant;
import com.ccsens.carbasics.util.DefaultCodeError; import com.ccsens.carbasics.util.DefaultCodeError;
import com.ccsens.carbasics.util.ScreeningQrCodeUtil; import com.ccsens.carbasics.util.ScreeningQrCodeUtil;
import com.ccsens.util.PoiUtil;
import com.ccsens.util.PropUtil; import com.ccsens.util.PropUtil;
import com.ccsens.util.QrCodeUtil;
import com.ccsens.util.exception.BaseException; import com.ccsens.util.exception.BaseException;
import com.github.pagehelper.PageHelper;
import com.github.pagehelper.PageInfo;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
import org.apache.poi.xssf.usermodel.XSSFWorkbook;
import org.springframework.beans.factory.annotation.Value; import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Service; import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation; import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional; import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource; import javax.annotation.Resource;
import java.nio.charset.StandardCharsets; import java.io.File;
import java.io.FileOutputStream;
import java.io.OutputStream;
import java.util.ArrayList; import java.util.ArrayList;
import java.util.List; import java.util.List;
@ -40,7 +49,11 @@ public class ScreeningService implements IScreeningService {
@Resource @Resource
private QuestionnaireDetailDao questionnaireDetailDao; private QuestionnaireDetailDao questionnaireDetailDao;
@Resource @Resource
private QuestionnaireRecordDao questionnaireRecordDao;
@Resource
private QuestionnaireDao questionnaireDao; private QuestionnaireDao questionnaireDao;
@Resource
private Snowflake snowflake;
@Override @Override
@ -50,6 +63,13 @@ public class ScreeningService implements IScreeningService {
if(ObjectUtil.isNull(detail)){ if(ObjectUtil.isNull(detail)){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR); throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
} }
//添加提交时间
QuestionnaireRecord questionnaireRecord = new QuestionnaireRecord();
questionnaireRecord.setId(snowflake.nextId());
questionnaireRecord.setQuestionnaireDetailId(param.getDetailId());
questionnaireRecord.setQuestionCode(Constant.SCWJ_SUBMIT_TIME);
questionnaireRecord.setAnswer(System.currentTimeMillis() + "");
questionnaireRecordDao.insertSelective(questionnaireRecord);
//修改提交状态 //修改提交状态
QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail(); QuestionnaireDetail questionnaireDetail = new QuestionnaireDetail();
questionnaireDetail.setId(param.getDetailId()); questionnaireDetail.setId(param.getDetailId());
@ -102,4 +122,121 @@ public class ScreeningService implements IScreeningService {
} }
return centerWorkloadList; return centerWorkloadList;
} }
@Override
public PageInfo<QuestionnaireVo.BackQueryScreening> backQueryScreening(QuestionnaireDto.BackQueryScreening param, Long userId) {
//TODO 验证当前用户的权限
//获取当前时间
long now = System.currentTimeMillis();
PageHelper.startPage(param.getPageNum(),param.getPageSize());
//查找问卷信息
List<QuestionnaireVo.BackQueryScreening> queryScreenings = questionnaireDao.backQueryScreening(param,now);
//分页返回
return new PageInfo<>(queryScreenings);
}
@Override
public void backUpdateScreening(QuestionnaireDto.BackUpdateScreening param, Long userId) {
//TODO 验证当前用户的权限
if(CollectionUtil.isNotEmpty(param.getDetailIds())){
param.getDetailIds().forEach(detailId -> {
//查找问卷详情
QuestionnaireDetail questionnaireDetail = questionnaireDetailDao.selectByPrimaryKey(detailId);
if(ObjectUtil.isNull(questionnaireDetail)){
throw new BaseException(DefaultCodeError.QUESTIONNAIRE_DETAIL_ERROR);
}
//修改信息
QuestionnaireDetail detail = new QuestionnaireDetail();
detail.setId(detailId);
detail.setPciStatus(param.getHealthTracking());
questionnaireDetailDao.updateByPrimaryKeySelective(detail);
});
}
}
@Override
public String backExport(QuestionnaireDto.BackQueryScreening param, Long userId) throws Exception{
//获取当前时间
long now = System.currentTimeMillis();
//查找问卷信息
List<QuestionnaireVo.BackQueryScreening> queryScreenings = questionnaireDao.backQueryScreening(param,now);
//生成导出的表格内容
List<List<PoiUtil.PoiUtilCell>> list = generateExcelCell(queryScreenings);
//生成表格
XSSFWorkbook wb = new XSSFWorkbook();
PoiUtil.exportWB("脑卒中高危人群筛查数据", list, wb);
//生成文件
String fileName = "exportExcel/" + DateUtil.today() + "/脑卒中高危人群筛查数据_" + System.currentTimeMillis() + ".xlsx";
String path = PropUtil.path + fileName;
File tmpFile = new File(path);
if (!tmpFile.getParentFile().exists()) {
tmpFile.getParentFile().mkdirs();
}
log.info("生成流");
OutputStream stream = new FileOutputStream(tmpFile);
log.info("写入wbs");
wb.write(stream);
stream.close();
wb.close();
return PropUtil.imgDomain + fileName;
}
private List<List<PoiUtil.PoiUtilCell>> generateExcelCell(List<QuestionnaireVo.BackQueryScreening> queryScreenings) {
List<List<PoiUtil.PoiUtilCell>> list = new ArrayList<>();
//表头
List<PoiUtil.PoiUtilCell> title = new ArrayList<>();
title.add(new PoiUtil.PoiUtilCell("序号"));
title.add(new PoiUtil.PoiUtilCell("姓名"));
title.add(new PoiUtil.PoiUtilCell("身份证号"));
title.add(new PoiUtil.PoiUtilCell("性别"));
title.add(new PoiUtil.PoiUtilCell("出生日期"));
title.add(new PoiUtil.PoiUtilCell("年龄"));
title.add(new PoiUtil.PoiUtilCell("手机号"));
title.add(new PoiUtil.PoiUtilCell("备注"));
title.add(new PoiUtil.PoiUtilCell("高血压"));
title.add(new PoiUtil.PoiUtilCell("血脂情况"));
title.add(new PoiUtil.PoiUtilCell("糖尿病"));
title.add(new PoiUtil.PoiUtilCell("心房颤动"));
title.add(new PoiUtil.PoiUtilCell("吸烟"));
title.add(new PoiUtil.PoiUtilCell("体重"));
title.add(new PoiUtil.PoiUtilCell("运动"));
title.add(new PoiUtil.PoiUtilCell("卒中家族史"));
title.add(new PoiUtil.PoiUtilCell("既往脑卒中病史"));
title.add(new PoiUtil.PoiUtilCell("既往短暂脑缺血病史"));
title.add(new PoiUtil.PoiUtilCell("危险等级"));
title.add(new PoiUtil.PoiUtilCell("健康跟踪"));
list.add(title);
//填写内容
if(CollectionUtil.isNotEmpty(queryScreenings)){
int sequence = 1;
for (QuestionnaireVo.BackQueryScreening screenings : queryScreenings) {
List<PoiUtil.PoiUtilCell> detail = new ArrayList<>();
detail.add(new PoiUtil.PoiUtilCell(sequence++ + ""));
detail.add(new PoiUtil.PoiUtilCell(screenings.getName()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getIdCard()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getSex()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getBirthday()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getAge()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getPhone()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getRemark()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getHypertension()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getBloodFat()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getDiabetes()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getFibrillation()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getSmoke()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getWeight()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getSports()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getApoplexyFamily()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getCerebralStroke()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getCerebralIschemia()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getTypeString()));
detail.add(new PoiUtil.PoiUtilCell(screenings.getHealthTrackingString()));
list.add(detail);
}
}
return list;
}
} }

5
src/main/java/com/ccsens/carbasics/util/Constant.java

@ -36,7 +36,6 @@ public class Constant {
public static final Byte CLOSED_STATUS = 0; public static final Byte CLOSED_STATUS = 0;
/**分诊台*/ /**分诊台*/
public static final Byte TYPE_TRIAGE_TABLE = 0; public static final Byte TYPE_TRIAGE_TABLE = 0;
} }
public static final class TimeCheck{ public static final class TimeCheck{
@ -761,4 +760,8 @@ public class Constant {
public static final String HOSPITAL_LIST_KEY = "hospital_list_key"; public static final String HOSPITAL_LIST_KEY = "hospital_list_key";
} }
/**
* 提交高危筛查问卷的时间
*/
public static final String SCWJ_SUBMIT_TIME = "SCWJ-SUBMIT";
} }

193
src/main/resources/mapper_dao/QuestionnaireDao.xml

@ -175,9 +175,9 @@
r.answer, r.answer,
CASE 1 CASE 1
WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1' WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r.answer) > -1) or (FIND_IN_SET('10',r.answer) > -1), 1, 0) THEN '1' WHEN IF((FIND_IN_SET('09',r.answer) > 0) or (FIND_IN_SET('10',r.answer) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) > -1) or (FIND_IN_SET('03',r.answer) > -1) or (FIND_IN_SET('04',r.answer) > -1), 1, 0) THEN '2' WHEN IF((FIND_IN_SET('01',r.answer) > 0) or (FIND_IN_SET('03',r.answer) > 0) or (FIND_IN_SET('04',r.answer) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) > -1) or (FIND_IN_SET('05',r.answer) > -1) or (FIND_IN_SET('06',r.answer) > -1) or (FIND_IN_SET('07',r.answer) > -1) or (FIND_IN_SET('08',r.answer) > -1) , 1, 0) THEN '3' WHEN IF((FIND_IN_SET('02',r.answer) > 0) or (FIND_IN_SET('05',r.answer) > 0) or (FIND_IN_SET('06',r.answer) > 0) or (FIND_IN_SET('07',r.answer) > 0) or (FIND_IN_SET('08',r.answer) > 0) , 1, 0) THEN '3'
ELSE '0' ELSE '0'
END as type END as type
FROM FROM
@ -205,27 +205,25 @@
<select id="villageGetWorkload" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$WorkloadList"> <select id="villageGetWorkload" resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$WorkloadList">
SELECT SELECT
a.id as detailId, a.id as detailId,
a.submitTime,
r1.answer as `name`, r1.answer as `name`,
r2.answer as phone, r2.answer as phone,
r3.answer as illnessType r3.answer as illnessType,
r4.answer as submitTime
FROM FROM
( (
SELECT SELECT
q.id, q.id,
q.submitTime,
CASE 1 CASE 1
WHEN IF(LENGTH(r1.answer) - LENGTH(REPLACE(r1.answer,",","")) >= 2, 1, 0 ) THEN '1' WHEN IF(LENGTH(r1.answer) - LENGTH(REPLACE(r1.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r1.answer) > -1) or (FIND_IN_SET('10',r1.answer) > -1), 1, 0) THEN '1' WHEN IF((FIND_IN_SET('09',r1.answer) > 0) or (FIND_IN_SET('10',r1.answer) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r1.answer) > -1) or (FIND_IN_SET('03',r1.answer) > -1) or (FIND_IN_SET('04',r1.answer) > -1), 1, 0) THEN '2' WHEN IF((FIND_IN_SET('01',r1.answer) > 0) or (FIND_IN_SET('03',r1.answer) > 0) or (FIND_IN_SET('04',r1.answer) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r1.answer) > -1) or (FIND_IN_SET('05',r1.answer) > -1) or (FIND_IN_SET('06',r1.answer) > -1) or (FIND_IN_SET('07',r1.answer) > -1) or (FIND_IN_SET('08',r1.answer) > -1) , 1, 0) THEN '3' WHEN IF((FIND_IN_SET('02',r1.answer) > 0) or (FIND_IN_SET('05',r1.answer) > 0) or (FIND_IN_SET('06',r1.answer) > 0) or (FIND_IN_SET('07',r1.answer) > 0) or (FIND_IN_SET('08',r1.answer) > 0) , 1, 0) THEN '3'
ELSE '0' ELSE '0'
END as type END as type
FROM FROM
( (
SELECT SELECT
qd.id, qd.id
UNIX_TIMESTAMP(qd.updated_at) * 1000 as submitTime
FROM FROM
t_qcp_questionnaire q, t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd t_qcp_questionnaire_detail qd
@ -254,6 +252,7 @@
LEFT JOIN t_qcp_questionnaire_record r1 on a.id = r1.questionnaire_detail_id and r1.question_code = 'SCWJ-NAME' and r1.rec_status = 0 LEFT JOIN t_qcp_questionnaire_record r1 on a.id = r1.questionnaire_detail_id and r1.question_code = 'SCWJ-NAME' and r1.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r2 on a.id = r2.questionnaire_detail_id and r2.question_code = 'SCWJ-PHONE'and r2.rec_status = 0 LEFT JOIN t_qcp_questionnaire_record r2 on a.id = r2.questionnaire_detail_id and r2.question_code = 'SCWJ-PHONE'and r2.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r3 on a.id = r3.questionnaire_detail_id and r3.question_code = 'SCWJ-ILLNESS'and r3.rec_status = 0 LEFT JOIN t_qcp_questionnaire_record r3 on a.id = r3.questionnaire_detail_id and r3.question_code = 'SCWJ-ILLNESS'and r3.rec_status = 0
LEFT JOIN t_qcp_questionnaire_record r4 on a.id = r4.questionnaire_detail_id and r4.question_code = 'SCWJ-SUBMIT'and r4.rec_status = 0
<if test="type != 0"> <if test="type != 0">
where where
a.type = #{type} a.type = #{type}
@ -293,9 +292,9 @@
r.answer, r.answer,
CASE 1 CASE 1
WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1' WHEN IF(LENGTH(r.answer) - LENGTH(REPLACE(r.answer,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',r.answer) > -1) or (FIND_IN_SET('10',r.answer) > -1), 1, 0) THEN '1' WHEN IF((FIND_IN_SET('09',r.answer) > 0) or (FIND_IN_SET('10',r.answer) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',r.answer) > -1) or (FIND_IN_SET('03',r.answer) > -1) or (FIND_IN_SET('04',r.answer) > -1), 1, 0) THEN '2' WHEN IF((FIND_IN_SET('01',r.answer) > 0) or (FIND_IN_SET('03',r.answer) > 0) or (FIND_IN_SET('04',r.answer) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',r.answer) > -1) or (FIND_IN_SET('05',r.answer) > -1) or (FIND_IN_SET('06',r.answer) > -1) or (FIND_IN_SET('07',r.answer) > -1) or (FIND_IN_SET('08',r.answer) > -1) , 1, 0) THEN '3' WHEN IF((FIND_IN_SET('02',r.answer) > 0) or (FIND_IN_SET('05',r.answer) > 0) or (FIND_IN_SET('06',r.answer) > 0) or (FIND_IN_SET('07',r.answer) > 0) or (FIND_IN_SET('08',r.answer) > 0) , 1, 0) THEN '3'
ELSE '0' ELSE '0'
END as type, END as type,
q.memberId, q.memberId,
@ -331,6 +330,172 @@
)a )a
GROUP BY a.memberId GROUP BY a.memberId
</select> </select>
<select id="backQueryScreening"
resultType="com.ccsens.carbasics.bean.vo.QuestionnaireVo$BackQueryScreening">
SELECT
*
FROM
(
SELECT
a.*,
CASE 1
WHEN IF(LENGTH(a.illness) - LENGTH(REPLACE(a.illness,",","")) >= 2, 1, 0 ) THEN '1'
WHEN IF((FIND_IN_SET('09',a.illness) > 0) or (FIND_IN_SET('10',a.illness) > 0), 1, 0) THEN '1'
WHEN IF((FIND_IN_SET('01',a.illness) > 0) or (FIND_IN_SET('03',a.illness) > 0) or (FIND_IN_SET('04',a.illness) > 0), 1, 0) THEN '2'
WHEN IF((FIND_IN_SET('02',a.illness) > 0) or (FIND_IN_SET('05',a.illness) > 0) or (FIND_IN_SET('06',a.illness) > 0) or (FIND_IN_SET('07',a.illness) > 0) or (FIND_IN_SET('08',a.illness) > 0) , 1, 0) THEN '3'
ELSE '0'
END as types
FROM
(
SELECT
q.id,
q.healthTracking,
MAX( CASE q.question_code WHEN 'SCWJ-idCard' THEN q.answer ELSE null END ) as `idCard`,
MAX( CASE q.question_code WHEN 'SCWJ-NAME' THEN q.answer ELSE null END ) as `name`,
MAX( CASE q.question_code WHEN 'SCWJ-SEX' THEN q.answer ELSE null END ) as `sex`,
MAX( CASE q.question_code WHEN 'SCWJ-BIRTH' THEN q.answer ELSE null END ) as `birthday`,
MAX( CASE q.question_code WHEN 'SCWJ-AGE' THEN q.answer ELSE null END ) as `age`,
MAX( CASE q.question_code WHEN 'SCWJ-PHONE' THEN q.answer ELSE null END ) as `phone`,
MAX( CASE q.question_code WHEN 'SCWJ-REMARK' THEN q.answer ELSE null END ) as `remark`,
MAX( CASE q.question_code WHEN 'SCWJ-ILLNESS' THEN q.answer ELSE null END ) as `illness`,
MAX( CASE q.question_code WHEN 'SCWJ-SUBMIT' THEN q.answer ELSE null END ) as `submitTime`
FROM
(
SELECT
qd.id,
r.question_code,
r.answer,
qd.pci_status as healthTracking
FROM
t_qcp_questionnaire q,
t_qcp_questionnaire_detail qd,
t_qcp_questionnaire_record r
WHERE
q.id = qd.questionnaire_id
and qd.id = r.questionnaire_detail_id
and q.type = 1
and q.start_time &lt; #{now}
and q.end_time > #{now}
and q.rec_status = 0
and qd.rec_status = 0
and r.rec_status = 0
and qd.submit_status = 1
)q
GROUP BY q.id
)a
)t
<where>
<if test="param.idCard != null and param.idCard != ''">
and t.idCard = #{param.idCard}
</if>
<if test="param.name != null and param.name != ''">
and t.`name` like count('%',#{param.name},'%')
</if>
<if test="param.sex != null and param.sex != ''">
and t.sex = #{param.sex}
</if>
<if test="param.startTime != null and param.startTime != '' and param.endTime != null and param.endTime != ''">
and t.birthday >= #{param.startTime}
and t.birthday &lt;= #{param.endTime}
</if>
<if test="param.age != null and param.age != ''">
and t.age = #{param.age}
</if>
<if test="param.phone != null and param.phone != ''">
and t.phone = #{param.phone}
</if>
<if test="param.phone != null and param.phone != ''">
and t.phone = #{param.phone}
</if>
<if test="param.hypertension != null">
<if test="param.hypertension = 1">
and (FIND_IN_SET('01',t.illness) > 0)
</if>
<if test="param.hypertension = 0">
and (FIND_IN_SET('01',t.illness) = 0 or FIND_IN_SET('01',t.illness) is null)
</if>
</if>
<if test="param.bloodFat != null">
<if test="param.bloodFat = 1">
and (FIND_IN_SET('02',t.illness) > 0)
</if>
<if test="param.bloodFat = 0">
and (FIND_IN_SET('02',t.illness) = 0 or FIND_IN_SET('02',t.illness) is null)
</if>
</if>
<if test="param.diabetes != null">
<if test="param.diabetes = 1">
and (FIND_IN_SET('03',t.illness) > 0)
</if>
<if test="param.diabetes = 0">
and (FIND_IN_SET('03',t.illness) = 0 or FIND_IN_SET('03',t.illness) is null)
</if>
</if>
<if test="param.fibrillation != null">
<if test="param.fibrillation = 1">
and (FIND_IN_SET('04',t.illness) > 0)
</if>
<if test="param.fibrillation = 0">
and (FIND_IN_SET('04',t.illness) = 0 or FIND_IN_SET('04',t.illness) is null)
</if>
</if>
<if test="param.smoke != null">
<if test="param.smoke = 1">
and (FIND_IN_SET('05',t.illness) > 0)
</if>
<if test="param.smoke = 0">
and (FIND_IN_SET('05',t.illness) = 0 or FIND_IN_SET('05',t.illness) is null)
</if>
</if>
<if test="param.weight != null">
<if test="param.weight = 1">
and (FIND_IN_SET('06',t.illness) > 0)
</if>
<if test="param.weight = 0">
and (FIND_IN_SET('06',t.illness) = 0 or FIND_IN_SET('06',t.illness) is null)
</if>
</if>
<if test="param.sports != null">
<if test="param.sports = 1">
and (FIND_IN_SET('07',t.illness) > 0)
</if>
<if test="param.sports = 0">
and (FIND_IN_SET('07',t.illness) = 0 or FIND_IN_SET('07',t.illness) is null)
</if>
</if>
<if test="param.apoplexyFamily != null">
<if test="param.apoplexyFamily = 1">
and (FIND_IN_SET('08',t.illness) > 0)
</if>
<if test="param.apoplexyFamily = 0">
and (FIND_IN_SET('08',t.illness) = 0 or FIND_IN_SET('08',t.illness) is null)
</if>
</if>
<if test="param.cerebralStroke != null">
<if test="param.cerebralStroke = 1">
and (FIND_IN_SET('09',t.illness) > 0)
</if>
<if test="param.cerebralStroke = 0">
and (FIND_IN_SET('09',t.illness) = 0 or FIND_IN_SET('09',t.illness) is null)
</if>
</if>
<if test="param.cerebralIschemia != null">
<if test="param.cerebralIschemia = 1">
and (FIND_IN_SET('10',t.illness) > 0)
</if>
<if test="param.cerebralIschemia = 0">
and (FIND_IN_SET('10',t.illness) = 0 or FIND_IN_SET('10',t.illness) is null)
</if>
</if>
<if test="param.healthTracking != null">
and t.healthTracking = #{param.healthTracking}
</if>
<if test="param.type != null">
and t.types = #{param.type}
</if>
</where>
ORDER BY t.submitTime DESC
</select>
</mapper> </mapper>
Loading…
Cancel
Save