package com.xinelu.manage.service.signpatientmanageroute;

import com.xinelu.common.core.domain.AjaxResult;
import com.xinelu.manage.domain.signpatientmanageroute.SignPatientManageRoute;
import com.xinelu.manage.dto.manualfollowup.ManualFollowUpDTO;
import com.xinelu.manage.dto.patientquestionsubmitresult.PatientQuestionSubmitResultDTO;
import com.xinelu.manage.vo.manualfollowup.ManualFollowUpVO;
import com.xinelu.manage.vo.signpatientmanageroute.SignPatientManageRouteVO;

import java.util.List;


/**
 * 签约患者管理任务路径Service接口
 *
 * @author haown
 * @date 2024-03-18
 */
public interface ISignPatientManageRouteService {
    /**
     * 查询签约患者管理任务路径
     *
     * @param id 签约患者管理任务路径主键
     * @return 签约患者管理任务路径
     */
    SignPatientManageRouteVO selectSignPatientManageRouteById(Long id);

    /**
     * 查询签约患者管理任务路径列表
     *
     * @param signPatientManageRoute 签约患者管理任务路径
     * @return 签约患者管理任务路径集合
     */
    List<SignPatientManageRoute> selectSignPatientManageRouteList(SignPatientManageRoute signPatientManageRoute);

    /**
     * 新增签约患者管理任务路径
     *
     * @param signPatientManageRoute 签约患者管理任务路径
     * @return 结果
     */
    AjaxResult insertSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute);

    /**
     * 修改签约患者管理任务路径
     *
     * @param signPatientManageRoute 签约患者管理任务路径
     * @return 结果
     */
    AjaxResult updateSignPatientManageRoute(SignPatientManageRouteVO signPatientManageRoute);

    /**
     * 批量删除签约患者管理任务路径
     *
     * @param ids 需要删除的签约患者管理任务路径主键集合
     * @return 结果
     */
    int deleteSignPatientManageRouteByIds(Long[] ids);

    /**
     * 删除签约患者管理任务路径信息
     *
     * @param id 签约患者管理任务路径主键
     * @return 结果
     */
    public int deleteSignPatientManageRouteById(Long id);

    /**
     * 查询人工随访代办列表
     * @param manualFollowUpDTO 人工随访查询DTO
     * @return ManualFollowUpVO 人工随访代办VO
     */
    List<ManualFollowUpVO> selectManualFollowUpList(ManualFollowUpDTO manualFollowUpDTO);

    /**
     * 查询人工随访患者基本信息
     * @param id 签约患者管理任务表id
     * @return 人工随访患者基本信息
     */
    AjaxResult selectFollowPatientInfo(Long id);

    /**
     * 人工随访代办处理
     * @param dto 患者问卷提交结果信息表DTO
     * @return 结果
     */
    AjaxResult addPatientQuestionResult(PatientQuestionSubmitResultDTO dto);
}
