package com.xinelu.manage.service.signpatientrecord;

import com.xinelu.manage.dto.signpatientrecord.IntentionalSignDto;
import com.xinelu.manage.dto.signpatientrecord.PortaitCheckDto;
import com.xinelu.manage.dto.signpatientrecord.RouteCheckDto;
import com.xinelu.manage.dto.signpatientrecord.SignPatientAddDto;
import com.xinelu.manage.dto.signpatientrecord.SignPatientListDto;
import com.xinelu.manage.dto.signpatientrecord.SignPatientStatusDto;
import com.xinelu.manage.vo.patientinfo.PatientPortaitVo;
import com.xinelu.manage.vo.signpatientrecord.IntentionalSignVo;
import com.xinelu.manage.vo.signpatientrecord.SignPatientInfoVo;
import com.xinelu.manage.vo.signpatientrecord.SignPatientListVo;
import com.xinelu.manage.vo.signpatientrecord.SignPatientRecordVo;
import java.util.List;

/**
* @author haown
* @description 针对表【sign_patient_record(签约记录表)】的数据库操作Service
* @createDate 2024-02-28 15:05:02
*/
public interface ISignPatientRecordService {

	List<SignPatientListVo> selectList(SignPatientListDto signPatientRecord);

	/**
	 * 根据签约编号查询居民签约信息
	 * @param id 签约主键
	 * @return SignPatientInfoVo：签约信息视图类
	 */
	SignPatientInfoVo getByRecordId(Long id);

	/**
	 * 根据患者主键查询患者签约记录列表
	 * @param patientId 患者主键
	 * @return 签约信息列表
	 */
	List<SignPatientRecordVo> getByPatient(Long patientId);

	/**
	 * 签约/续约
	 * @param body:签约传输对象
	 */
	int add(SignPatientAddDto body);

	/**
	 * 修改签约信息
	 * @param body 修改签约信息传输对象
	 * @return 结果
	 */
	int edit(SignPatientAddDto body);

	int updateSignStatus(SignPatientStatusDto patientCancelSignDto);

	/**
	 * 意向签约
	 * @param intentionalSignDto 意向签约传输对象
	 * @return
	 */
	int intentionalSign(IntentionalSignDto intentionalSignDto);

	/**
	 * @description 查询意向签约
	 * @param id 签约记录表主键
	 * @return 意向签约详情
	 * @Author haown
	 * @Date 2024-08-08 11:00
	 */
	IntentionalSignVo getIntentionalSign(Long id);

	/**
	 * @description 修改意向签约
	 * @param intentionalSignDto 意向签约传输对象
	 * @return 结果
	 * @Author haown
	 * @Date 2024-08-07 14:35
	 */
	int updateIntentionalSign(IntentionalSignDto intentionalSignDto);

	/**
	 * @description 撤销意向签约
	 * @param patientId 患者主键
	 * @return 结果
	 * @Author haown
	 * @Date 2024-08-07 11:16
	*/
	int cancelIntentionalSign(Long patientId);

	PatientPortaitVo getPortaitInfo(Long patientId);
	/**
	 * 画像审核
	 * @param portaitCheckDto 画像审核传输对象
	 * @return
	 */
	int updatePortaitCheckStatus(PortaitCheckDto portaitCheckDto);

	/**
	 * 路径审核
	 * @param routeCheckDto 路径审核传输对象
	 * @return
	 */
	int updateRouteCheckStatus(RouteCheckDto routeCheckDto);
}
