问卷任务统计
This commit is contained in:
parent
96cc8ffb27
commit
84e2f878b5
@ -1,9 +1,14 @@
|
||||
package com.xinelu.manage.controller.statistics;
|
||||
|
||||
import com.xinelu.common.core.controller.BaseController;
|
||||
import com.xinelu.common.core.domain.AjaxResult;
|
||||
import com.xinelu.common.core.domain.R;
|
||||
import com.xinelu.common.core.page.TableDataInfo;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.UploadRobotPublishRecordDto;
|
||||
import com.xinelu.manage.dto.statistics.FollowUpRateDto;
|
||||
import com.xinelu.manage.dto.statistics.QuestionnaireTaskStatisticsDto;
|
||||
import com.xinelu.manage.service.statistics.IStatisticsService;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.UploadRobotPublishRecordVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpDetailVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpRateVo;
|
||||
import io.swagger.annotations.Api;
|
||||
@ -44,4 +49,21 @@ public class StatisticsController extends BaseController {
|
||||
public R<List<FollowUpDetailVo>> getFollowUpDetail(FollowUpRateDto queryDto) {
|
||||
return R.ok(statisticsService.getFollowUpDetail(queryDto));
|
||||
}
|
||||
|
||||
/**
|
||||
* 问卷任务统计
|
||||
*/
|
||||
@ApiOperation("问卷任务统计")
|
||||
@GetMapping("/questionnaireTaskStatistics")
|
||||
public AjaxResult questionnaireTaskStatistics(QuestionnaireTaskStatisticsDto questionnaireTaskStatisticsDto){
|
||||
return AjaxResult.success(statisticsService.questionnaireTaskStatistics(questionnaireTaskStatisticsDto));
|
||||
}
|
||||
|
||||
@ApiOperation("问卷任务选项统计")
|
||||
@GetMapping("/questionnaireTaskOptionList")
|
||||
public TableDataInfo questionnaireTaskOptionList(UploadRobotPublishRecordDto uploadRobotPublishRecordDto) {
|
||||
startPage();
|
||||
List<UploadRobotPublishRecordVo> list = statisticsService.questionnaireTaskOptionList(uploadRobotPublishRecordDto);
|
||||
return getDataTable(list);
|
||||
}
|
||||
}
|
||||
|
||||
@ -97,4 +97,14 @@ public class UploadRobotPublishRecordDto extends BaseEntity {
|
||||
* 电话拨通情况;SUCCESS:成功;FAILURE:失败;EXPIRED:超期自动作废(如超期一周);NULL或空字符串:缺省值,表示未执行;
|
||||
*/
|
||||
private String phoneNodeExecuteResultStatus;
|
||||
|
||||
/**
|
||||
* 问卷题目选项表的ID
|
||||
*/
|
||||
private Long questionSubjectOptionId;
|
||||
|
||||
/**
|
||||
* 题目选项选择标识,0:已选择,1:未选择
|
||||
*/
|
||||
private Integer optionChooseSign;
|
||||
}
|
||||
@ -0,0 +1,44 @@
|
||||
package com.xinelu.manage.dto.statistics;
|
||||
|
||||
import lombok.Data;
|
||||
import org.springframework.format.annotation.DateTimeFormat;
|
||||
|
||||
import java.time.LocalDate;
|
||||
|
||||
/**
|
||||
* @description: 问卷任务统计传入值
|
||||
* @author: zh
|
||||
* @create: 2024-12-22
|
||||
**/
|
||||
@Data
|
||||
public class QuestionnaireTaskStatisticsDto {
|
||||
|
||||
/**
|
||||
* 任务开始时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate taskStartTime;
|
||||
|
||||
/**
|
||||
* 任务结束时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate taskEndTime;
|
||||
|
||||
/**
|
||||
* 就诊/出院开始时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate visitStartTime;
|
||||
|
||||
/**
|
||||
* 就诊/出院结束时间
|
||||
*/
|
||||
@DateTimeFormat(pattern = "yyyy-MM-dd")
|
||||
private LocalDate visitEndTime;
|
||||
|
||||
/**
|
||||
* 问卷id
|
||||
*/
|
||||
private Long questionInfoId;
|
||||
}
|
||||
@ -5,9 +5,11 @@ import com.xinelu.manage.dto.signpatientmanageroutenode.PatientTaskDto;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.SignPatientManageRouteNodeDto;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.UploadRobotPublishRecordDto;
|
||||
import com.xinelu.manage.dto.statistics.FollowUpRateDto;
|
||||
import com.xinelu.manage.dto.statistics.QuestionnaireTaskStatisticsDto;
|
||||
import com.xinelu.manage.vo.homepage.PatientAndNode;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.*;
|
||||
import com.xinelu.manage.vo.specialdiseasenode.SpecialDiseaseNodeAuditVo;
|
||||
import com.xinelu.manage.vo.statistics.QuestionnaireTaskStatisticsVo;
|
||||
import org.apache.ibatis.annotations.Param;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
@ -204,4 +206,20 @@ public interface SignPatientManageRouteNodeMapper {
|
||||
* @return UploadRobotPublishRecordVo
|
||||
*/
|
||||
List<UploadRobotPublishRecordVo> selectTaskContented(UploadRobotPublishRecordDto uploadRobotPublishRecordDto);
|
||||
|
||||
/**
|
||||
* 问卷任务统计
|
||||
*
|
||||
* @param questionnaireTaskStatisticsDto 时间问卷信息
|
||||
* @return QuestionnaireTaskStatisticsDto
|
||||
*/
|
||||
List<QuestionnaireTaskStatisticsVo> questionnaireTaskStatistics(QuestionnaireTaskStatisticsDto questionnaireTaskStatisticsDto);
|
||||
|
||||
/**
|
||||
* 问卷任务选项统计
|
||||
*
|
||||
* @param uploadRobotPublishRecordDto 时间信息
|
||||
* @return UploadRobotPublishRecordVo
|
||||
*/
|
||||
List<UploadRobotPublishRecordVo> selectTaskOptionContented(UploadRobotPublishRecordDto uploadRobotPublishRecordDto);
|
||||
}
|
||||
|
||||
@ -1,8 +1,13 @@
|
||||
package com.xinelu.manage.service.statistics;
|
||||
|
||||
import com.xinelu.common.core.domain.AjaxResult;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.UploadRobotPublishRecordDto;
|
||||
import com.xinelu.manage.dto.statistics.FollowUpRateDto;
|
||||
import com.xinelu.manage.dto.statistics.QuestionnaireTaskStatisticsDto;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.UploadRobotPublishRecordVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpDetailVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpRateVo;
|
||||
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
@ -30,4 +35,20 @@ public interface IStatisticsService {
|
||||
* @Date 2024-11-1 10:47
|
||||
*/
|
||||
List<FollowUpDetailVo> getFollowUpDetail(FollowUpRateDto queryDto);
|
||||
|
||||
/**
|
||||
* 问卷任务统计
|
||||
*
|
||||
* @param questionnaireTaskStatisticsDto 时间问卷信息
|
||||
* @return AjaxResult
|
||||
*/
|
||||
AjaxResult questionnaireTaskStatistics(QuestionnaireTaskStatisticsDto questionnaireTaskStatisticsDto);
|
||||
|
||||
/**
|
||||
* 问卷任务选项统计
|
||||
*
|
||||
* @param uploadRobotPublishRecordDto 时间信息
|
||||
* @return UploadRobotPublishRecordVo
|
||||
*/
|
||||
List<UploadRobotPublishRecordVo> questionnaireTaskOptionList(UploadRobotPublishRecordDto uploadRobotPublishRecordDto);
|
||||
}
|
||||
|
||||
@ -1,12 +1,16 @@
|
||||
package com.xinelu.manage.service.statistics.impl;
|
||||
|
||||
import com.xinelu.common.core.domain.AjaxResult;
|
||||
import com.xinelu.common.core.domain.entity.SysUser;
|
||||
import com.xinelu.common.enums.NodeTypeEnum;
|
||||
import com.xinelu.common.enums.PhoneDialMethodEnum;
|
||||
import com.xinelu.common.enums.QuestionTypeEnum;
|
||||
import com.xinelu.common.utils.StringUtils;
|
||||
import com.xinelu.manage.domain.agency.Agency;
|
||||
import com.xinelu.manage.domain.department.Department;
|
||||
import com.xinelu.manage.dto.signpatientmanageroutenode.UploadRobotPublishRecordDto;
|
||||
import com.xinelu.manage.dto.statistics.FollowUpRateDto;
|
||||
import com.xinelu.manage.dto.statistics.QuestionnaireTaskStatisticsDto;
|
||||
import com.xinelu.manage.mapper.patientvisitrecord.PatientVisitRecordMapper;
|
||||
import com.xinelu.manage.mapper.phonedialrecord.PhoneDialRecordMapper;
|
||||
import com.xinelu.manage.mapper.shortmessagesendrecord.ShortMessageSendRecordMapper;
|
||||
@ -18,11 +22,8 @@ import com.xinelu.manage.service.statistics.IStatisticsService;
|
||||
import com.xinelu.manage.vo.patientvisitrecord.PatientVisitRecordStatisticVo;
|
||||
import com.xinelu.manage.vo.phonedialrecord.PhoneDialRecordVo;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.PatientFollowUpPlanVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpDetailVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpNumTrendVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpRateTrendVo;
|
||||
import com.xinelu.manage.vo.statistics.FollowUpRateVo;
|
||||
import com.xinelu.manage.vo.statistics.MessageSendVo;
|
||||
import com.xinelu.manage.vo.signpatientmanageroutenode.UploadRobotPublishRecordVo;
|
||||
import com.xinelu.manage.vo.statistics.*;
|
||||
import com.xinelu.system.service.ISysUserService;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.RoundingMode;
|
||||
@ -294,6 +295,46 @@ public class StatisticsServiceImpl implements IStatisticsService {
|
||||
return retList;
|
||||
}
|
||||
|
||||
/**
|
||||
* 问卷任务统计
|
||||
*
|
||||
* @param questionnaireTaskStatisticsDto 时间问卷信息
|
||||
* @return AjaxResult
|
||||
*/
|
||||
@Override
|
||||
public AjaxResult questionnaireTaskStatistics(QuestionnaireTaskStatisticsDto questionnaireTaskStatisticsDto) {
|
||||
//查询问卷任务
|
||||
List<QuestionnaireTaskStatisticsVo> questionnaireTaskStatisticsVos = signPatientManageRouteNodeMapper.questionnaireTaskStatistics(questionnaireTaskStatisticsDto);
|
||||
//遍历计算比例
|
||||
if (CollectionUtils.isNotEmpty(questionnaireTaskStatisticsVos)){
|
||||
for (QuestionnaireTaskStatisticsVo questionnaireTaskStatisticsVo : questionnaireTaskStatisticsVos) {
|
||||
//除数不能为空或0
|
||||
if (CollectionUtils.isNotEmpty(questionnaireTaskStatisticsVo.getQuestionnaireTaskOptionStatisticsVos()) && Objects.nonNull(questionnaireTaskStatisticsVo.getTotal()) && questionnaireTaskStatisticsVo.getTotal() != 0){
|
||||
questionnaireTaskStatisticsVo.getQuestionnaireTaskOptionStatisticsVos()
|
||||
.forEach(item -> item.setChoiceProportion(
|
||||
new BigDecimal(item.getChoiceNumber())
|
||||
.divide(new BigDecimal(questionnaireTaskStatisticsVo.getTotal()),2, RoundingMode.HALF_UP).multiply(new BigDecimal("100"))));
|
||||
}
|
||||
}
|
||||
}
|
||||
return AjaxResult.success(questionnaireTaskStatisticsVos);
|
||||
}
|
||||
|
||||
/**
|
||||
* 问卷任务统计选项统计
|
||||
*
|
||||
* @param uploadRobotPublishRecordDto 时间信息
|
||||
* @return UploadRobotPublishRecordVo
|
||||
*/
|
||||
@Override
|
||||
public List<UploadRobotPublishRecordVo> questionnaireTaskOptionList(UploadRobotPublishRecordDto uploadRobotPublishRecordDto) {
|
||||
// sql查询反馈意见使用
|
||||
if (Objects.nonNull(uploadRobotPublishRecordDto)){
|
||||
uploadRobotPublishRecordDto.setQuestionType(QuestionTypeEnum.FEEDBACK_BLANKS_SUBJECT.getInfo());
|
||||
}
|
||||
return signPatientManageRouteNodeMapper.selectTaskOptionContented(uploadRobotPublishRecordDto);
|
||||
}
|
||||
|
||||
/**
|
||||
* @description 统计AI电话拨打次数、AI电话拨打次数成功率、AI拨打人数、AI拨打人数成功率、人工电话拨打次数、人工电话拨打次数成功率、人工拨打人数、人工拨打人数成功率
|
||||
* @Param 拨打电话记录列表
|
||||
|
||||
@ -0,0 +1,78 @@
|
||||
package com.xinelu.manage.vo.statistics;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
|
||||
/**
|
||||
* @description: 问卷任务统计选项返回值
|
||||
* @author: zh
|
||||
* @create: 2024-12-22
|
||||
**/
|
||||
@Data
|
||||
public class QuestionnaireTaskOptionStatisticsVo {
|
||||
|
||||
/**
|
||||
* 问卷表id
|
||||
*/
|
||||
@ApiModelProperty(value = "问卷表id")
|
||||
private Long questionInfoId;
|
||||
|
||||
/**
|
||||
* 患者问卷题目选项提交结果信息表id
|
||||
*/
|
||||
@ApiModelProperty(value = "患者问卷题目选项提交结果信息表id")
|
||||
private Long patientQuestionOptionResultId;
|
||||
|
||||
/**
|
||||
* 问卷题目提交结果信息表id
|
||||
*/
|
||||
@ApiModelProperty(value = "问卷题目提交结果信息表id")
|
||||
private Long questionSubjectResultId;
|
||||
|
||||
/**
|
||||
* 问卷题目表id
|
||||
*/
|
||||
@ApiModelProperty(value = "问卷题目表id")
|
||||
private Long questionnaireSubjectId;
|
||||
|
||||
/**
|
||||
* 题目名称
|
||||
*/
|
||||
@ApiModelProperty(value = "题目名称")
|
||||
private String questionName;
|
||||
|
||||
/**
|
||||
* 选项名称
|
||||
*/
|
||||
@ApiModelProperty(value = "选项名称")
|
||||
private String optionName;
|
||||
|
||||
/**
|
||||
* 题目选项选择标识,0:已选择,1:未选择
|
||||
*/
|
||||
@ApiModelProperty(value = "题目选项选择标识,0:已选择,1:未选择")
|
||||
private Integer optionChooseSign;
|
||||
|
||||
/**
|
||||
* 选项排序
|
||||
*/
|
||||
@ApiModelProperty(value = "选项排序")
|
||||
private Integer optionSort;
|
||||
|
||||
/**
|
||||
* 问卷题目选项表的ID
|
||||
*/
|
||||
private Long questionSubjectOptionId;
|
||||
|
||||
/**
|
||||
* 选择人数
|
||||
*/
|
||||
private Long choiceNumber;
|
||||
|
||||
/**
|
||||
* 选择比例
|
||||
*/
|
||||
private BigDecimal choiceProportion;
|
||||
}
|
||||
@ -0,0 +1,58 @@
|
||||
package com.xinelu.manage.vo.statistics;
|
||||
|
||||
import io.swagger.annotations.ApiModelProperty;
|
||||
import lombok.Data;
|
||||
|
||||
import java.math.BigDecimal;
|
||||
import java.util.List;
|
||||
|
||||
/**
|
||||
* @description: 问卷任务统计返回值
|
||||
* @author: zh
|
||||
* @create: 2024-12-22
|
||||
**/
|
||||
@Data
|
||||
public class QuestionnaireTaskStatisticsVo {
|
||||
|
||||
/**
|
||||
* 问卷提交结果信息表id
|
||||
*/
|
||||
@ApiModelProperty(value = "问卷提交结果信息表id")
|
||||
private Long questionSubmitResultId;
|
||||
|
||||
/**
|
||||
* 问卷表id
|
||||
*/
|
||||
@ApiModelProperty(value = "问卷表id")
|
||||
private Long questionInfoId;
|
||||
|
||||
/**
|
||||
* 题目序号
|
||||
*/
|
||||
@ApiModelProperty(value = "题目序号")
|
||||
private BigDecimal questionNumber;
|
||||
|
||||
/**
|
||||
* 题目类型,单选题:MULTIPLE_CHOICE,多选题:MULTIPLE_CHOICE_QUESTIONS,填空题:FILL_IN_THE_BLANKS,打分题:SCORING_QUESTIONS,
|
||||
* 组合单选题:COMBINATION_RADIO_SUBJECT,组合多选题:COMBINATION_MULTIPLE_SUBJECT,组合填空题:COMBINATION_BLANKS_SUBJECT,
|
||||
* 组合打分题:COMBINATION_SCORING_SUBJECT,日期填空题:DATE_BLANKS_SUBJECT,时间填空题:TIME_BLANKS_SUBJECT
|
||||
*/
|
||||
@ApiModelProperty(value = "题目类型,单选题:MULTIPLE_CHOICE,多选题:MULTIPLE_CHOICE_QUESTIONS,填空题:FILL_IN_THE_BLANKS,打分题:SCORING_QUESTIONS, 组合单选题:COMBINATION_RADIO_SUBJECT,组合多选题:COMBINATION_MULTIPLE_SUBJECT,组合填空题:COMBINATION_BLANKS_SUBJECT, 组合打分题:COMBINATION_SCORING_SUBJECT,日期填空题:DATE_BLANKS_SUBJECT,时间填空题:TIME_BLANKS_SUBJECT")
|
||||
private String questionType;
|
||||
|
||||
/**
|
||||
* 题目名称
|
||||
*/
|
||||
@ApiModelProperty(value = "题目名称")
|
||||
private String questionName;
|
||||
|
||||
/**
|
||||
* 填写问卷总数
|
||||
*/
|
||||
private Long total;
|
||||
|
||||
/**
|
||||
* 选项结合
|
||||
*/
|
||||
private List<QuestionnaireTaskOptionStatisticsVo> questionnaireTaskOptionStatisticsVos;
|
||||
}
|
||||
@ -174,7 +174,7 @@
|
||||
<!-- 数据范围过滤 -->
|
||||
${params.dataScope}
|
||||
</where>
|
||||
order by questionnaire_sort
|
||||
order by qi.create_time desc
|
||||
</select>
|
||||
|
||||
<select id="selectQuestionInfoById" parameterType="Long"
|
||||
|
||||
@ -88,6 +88,30 @@
|
||||
<result property="sn" column="sn"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.xinelu.manage.vo.statistics.QuestionnaireTaskStatisticsVo" id="QuestionnaireTaskStatisticsVoResult">
|
||||
<result property="questionSubmitResultId" column="questionSubmitResultId"/>
|
||||
<result property="questionInfoId" column="question_info_id"/>
|
||||
<result property="questionNumber" column="question_number"/>
|
||||
<result property="questionType" column="question_type"/>
|
||||
<result property="questionName" column="question_name"/>
|
||||
<result property="total" column="total"/>
|
||||
<collection property="questionnaireTaskOptionStatisticsVos" javaType="java.util.List"
|
||||
resultMap="QuestionnaireTaskOptionStatisticsVoResult"/>
|
||||
</resultMap>
|
||||
|
||||
<resultMap type="com.xinelu.manage.vo.statistics.QuestionnaireTaskOptionStatisticsVo" id="QuestionnaireTaskOptionStatisticsVoResult">
|
||||
<result property="questionInfoId" column="question_info_id"/>
|
||||
<result property="patientQuestionOptionResultId" column="patientQuestionOptionResultId"/>
|
||||
<result property="questionSubjectResultId" column="questionSubjectResultId"/>
|
||||
<result property="questionnaireSubjectId" column="questionnaireSubjectId"/>
|
||||
<result property="questionName" column="questionName"/>
|
||||
<result property="optionName" column="option_name"/>
|
||||
<result property="optionChooseSign" column="option_choose_sign"/>
|
||||
<result property="optionSort" column="option_sort"/>
|
||||
<result property="questionSubjectOptionId" column="questionSubjectOptionId"/>
|
||||
<result property="choiceNumber" column="choiceNumber"/>
|
||||
</resultMap>
|
||||
|
||||
<sql id="selectSignPatientManageRouteNodeVo">
|
||||
select id, manage_route_id, manage_route_name, route_node_id, route_node_name, route_node_day, task_excute_type,node_plan_time,task_type, task_status, task_subdivision, task_node_type, second_classify_describe, execute_time, phone_push_sign, script_info_id, robot_publish_id, phone_template_id, phone_template_name, phone_node_content,phone_result_json, phone_redial_times, phone_time_interval, phone_message_remind, phone_message_template_id, phone_message_template_name,phone_message_template_content,question_info_id, questionnaire_name, questionnaire_content, question_expiration_date, propaganda_info_id, propaganda_title, propaganda_content, message_push_sign, message_template_id, message_template_code, message_template_name, message_preview, message_node_content, official_push_sign, official_template_id, official_template_code, official_template_name, official_remind_content, official_node_content, follow_template_id, follow_template_name, applet_push_sign, applet_template_id, applet_template_code, applet_template_name, applet_remind_content, applet_prompt_description, applet_node_content, route_check_status, route_check_person, route_check_date, route_check_remark, route_node_remark, node_execute_status, route_handle_remark, route_handle_id, route_handle_person, route_link,text_remind_content, node_content,message_status, del_flag, create_by, create_time, update_by, update_time, phone_dial_method, phone_node_execute_result_status, message_node_execute_result_status, official_node_execute_result_status, applet_node_execute_result_status, node_finish_date,node_finish_status, task_id_ext,dial_status,sn from sign_patient_manage_route_node
|
||||
</sql>
|
||||
@ -1195,4 +1219,137 @@
|
||||
${params.dataScope}
|
||||
ORDER BY spmrn.create_time DESC
|
||||
</select>
|
||||
|
||||
<select id="questionnaireTaskStatistics"
|
||||
resultType="com.xinelu.manage.vo.statistics.QuestionnaireTaskStatisticsVo"
|
||||
resultMap="QuestionnaireTaskStatisticsVoResult">
|
||||
select
|
||||
spmrn.question_info_id,
|
||||
pqsbr.id questionSubmitResultId,
|
||||
pqsjr.question_subject_id,
|
||||
pqsjr.question_number,
|
||||
pqsjr.question_type,
|
||||
pqsjr.question_name,
|
||||
pqor.id patientQuestionOptionResult,
|
||||
pqor.question_subject_option_id questionSubjectOptionId,
|
||||
pqor.option_name,
|
||||
pqor.option_choose_sign,
|
||||
pqor.option_sort,
|
||||
(
|
||||
SELECT
|
||||
count( f.option_choose_sign = 0 OR NULL )
|
||||
FROM
|
||||
sign_patient_manage_route_node a
|
||||
LEFT JOIN sign_patient_manage_route b ON b.id = a.manage_route_id
|
||||
LEFT JOIN patient_info c ON b.patient_id = c.id
|
||||
LEFT JOIN patient_question_submit_result d ON a.id = d.manage_route_node_id
|
||||
LEFT JOIN patient_question_subject_result e ON d.id = e.question_submit_result_id
|
||||
LEFT JOIN patient_question_option_result f ON e.id = f.question_subject_result_id
|
||||
WHERE
|
||||
c.del_flag = 0
|
||||
AND a.question_info_id = spmrn.question_info_id
|
||||
AND e.question_subject_id = pqsjr.question_subject_id
|
||||
AND f.question_subject_option_id = pqor.question_subject_option_id
|
||||
) choiceNumber,
|
||||
(
|
||||
SELECT count( 1 ) FROM sign_patient_manage_route_node a
|
||||
LEFT JOIN patient_question_submit_result d ON a.id = d.manage_route_node_id
|
||||
WHERE a.question_info_id = spmrn.question_info_id
|
||||
) total
|
||||
from sign_patient_manage_route_node spmrn
|
||||
left join sign_patient_manage_route spmr on spmr.id = spmrn.manage_route_id
|
||||
left join patient_info p on spmr.patient_id = p.id
|
||||
left join patient_question_submit_result pqsbr on spmrn.id = pqsbr.manage_route_node_id
|
||||
left join patient_question_subject_result pqsjr on pqsbr.id = pqsjr.question_submit_result_id
|
||||
left join patient_question_option_result pqor on pqsjr.id = pqor.question_subject_result_id
|
||||
where p.del_flag = 0
|
||||
and spmrn.node_finish_status = 'SUCCESS'
|
||||
and pqsjr.question_type in
|
||||
('MULTIPLE_CHOICE','MULTIPLE_CHOICE_QUESTIONS','COMBINATION_RADIO_SUBJECT','COMBINATION_MULTIPLE_SUBJECT')
|
||||
<if test="questionInfoId != null">
|
||||
and spmrn.question_info_id=#{questionInfoId}
|
||||
</if>
|
||||
<if test="taskStartTime != null"><!-- 开始时间检索 -->
|
||||
AND date_format(spmrn.node_finish_date,'%y%m%d') >= date_format(#{taskStartTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="taskEndTime != null"><!-- 结束时间检索 -->
|
||||
AND date_format(spmrn.node_finish_date,'%y%m%d') <= date_format(#{taskEndTime},'%y%m%d')
|
||||
</if>
|
||||
<if test="visitStartTime != null and visitEndTime != null">
|
||||
and( (date_format(p.visit_date, '%y%m%d') >= date_format(#{visitStartTime}, '%y%m%d')
|
||||
and date_format(p.visit_date, '%y%m%d') <= date_format(#{visitEndTime}, '%y%m%d'))
|
||||
or (date_format(p.discharge_time,'%y%m%d') >= date_format(#{visitStartTime}, '%y%m%d') and
|
||||
date_format(p.discharge_time,'%y%m%d') <= date_format(#{visitEndTime}, '%y%m%d')))
|
||||
</if>
|
||||
</select>
|
||||
|
||||
<select id="selectTaskOptionContented"
|
||||
resultType="com.xinelu.manage.vo.signpatientmanageroutenode.UploadRobotPublishRecordVo">
|
||||
SELECT
|
||||
spmrn.id manageRouteNodeId,
|
||||
spmrn.manage_route_name,
|
||||
spmrn.task_node_type,
|
||||
spmrn.dial_status,
|
||||
spmrn.question_info_id,
|
||||
spmrn.questionnaire_name,
|
||||
spmrn.node_execute_status,
|
||||
spmrn.node_plan_time,
|
||||
spmrn.task_excute_type,
|
||||
spmrn.sn,
|
||||
spmrn.phone_node_execute_result_status,
|
||||
CASE
|
||||
WHEN spmrn.node_execute_status = 'EXECUTED' THEN '已随访'
|
||||
WHEN spmrn.node_execute_status = 'UNEXECUTED' THEN '未随访'
|
||||
END AS followUpStatus,
|
||||
CASE
|
||||
WHEN spmrn.phone_dial_method = 'AI' THEN 'AI'
|
||||
WHEN spmrn.phone_dial_method = 'COMMON' THEN spmrn.route_handle_person
|
||||
END AS phoneDialMethod,
|
||||
spmrn.create_by AS samplingPersonnel,
|
||||
spmrn.create_time AS SampleTime,
|
||||
CASE
|
||||
WHEN pqsr.contented_flag = 'DISCONTENTED' THEN '不满意'
|
||||
WHEN pqsr.contented_flag = 'CONTENTED' THEN '满意'
|
||||
END AS contentedFlag,
|
||||
pqsr.task_execute_record_id,
|
||||
pqsr.remarkable_flag,
|
||||
pqsr.id,
|
||||
pqsr.total_score,
|
||||
pi.patient_phone,
|
||||
pi.patient_name,
|
||||
pi.id AS patientId,
|
||||
pi.department_name,
|
||||
pi.department_id,
|
||||
pi.hospital_agency_id,
|
||||
pi.hospital_agency_name,
|
||||
pi.visit_date,
|
||||
pi.age,
|
||||
pi.patient_visit_record_id,
|
||||
pvr.main_diagnosis,
|
||||
CASE
|
||||
WHEN spmrn.task_node_type = 'PHONE_OUTBOUND' THEN spmrn.script_info_id
|
||||
WHEN spmrn.task_node_type = 'QUESTIONNAIRE_SCALE' THEN qi.script_info_id
|
||||
END AS scriptTemplateId,
|
||||
CASE
|
||||
WHEN spmrn.task_node_type = 'PHONE_OUTBOUND' THEN si.script_name
|
||||
WHEN spmrn.task_node_type = 'QUESTIONNAIRE_SCALE' THEN qi.script_name
|
||||
END AS scriptTemplateName,
|
||||
(select fill_blanks_answer from patient_question_subject_result
|
||||
where question_submit_result_id = pqsr.id and question_type = #{questionType}) fillBlanksAnswer
|
||||
FROM sign_patient_manage_route_node spmrn
|
||||
LEFT JOIN sign_patient_manage_route spmr ON spmr.id = spmrn.manage_route_id
|
||||
LEFT JOIN patient_question_submit_result pqsr ON pqsr.manage_route_node_id = spmrn.id
|
||||
LEFT JOIN patient_question_subject_result pqsjr ON pqsr.id = pqsjr.question_submit_result_id
|
||||
LEFT JOIN patient_question_option_result pqor ON pqsjr.id = pqor.question_subject_result_id
|
||||
LEFT JOIN patient_info pi ON spmr.patient_id = pi.id
|
||||
LEFT JOIN patient_visit_record pvr ON pi.id = pvr.patient_id
|
||||
LEFT JOIN question_info qi on spmrn.question_info_id = qi.id
|
||||
LEFT JOIN script_info si on si.id = spmrn.script_info_id
|
||||
WHERE
|
||||
spmrn.del_flag = 0
|
||||
AND spmrn.question_info_id = #{questionInfoId}
|
||||
AND pqor.question_subject_option_id = #{questionSubjectOptionId}
|
||||
AND pqor.option_choose_sign = #{optionChooseSign}
|
||||
ORDER BY spmrn.create_time DESC
|
||||
</select>
|
||||
</mapper>
|
||||
|
||||
Loading…
Reference in New Issue
Block a user