package com.xinelu.manage.service.screeningrecord;

import com.alibaba.fastjson2.JSONObject;
import com.xinelu.common.core.domain.SelectVo;
import com.xinelu.manage.domain.screeningrecord.ScreeningRecord;
import com.xinelu.manage.dto.screeningrecord.ScreeningApplyDTO;
import com.xinelu.manage.dto.screeningrecord.ScreeningRecordDTO;
import com.xinelu.manage.dto.screeningrecord.ScreeningRecordSaveDTO;
import com.xinelu.manage.vo.screeningrecord.ScreeningRecordVo;
import java.util.List;

/**
* @author mengkuiliang
* @description 针对表【sd_screening_record(居民预约记录表)】的数据库操作Service
* @createDate 2023-01-29 13:53:13
*/
public interface IScreeningRecordService {

	List<ScreeningRecordVo> screeningList(ScreeningRecordDTO query) throws Exception;

    /**
     * @Author mengkuiliang
     * @Description 获取预约记录
     * @Date 2023-01-29 15:46
     * @Param
     * @return
     **/
    List<ScreeningRecordVo> list(ScreeningRecordDTO query);

    /**
     * @Author mengkuiliang
     * @Description 获取筛查结果记录
     * @Date 2023-01-30 13:30
     * @Param [query]
     * @return java.util.List<?>
     **/
    List<ScreeningRecordVo> record(ScreeningRecordDTO query);

    /**
     * @Author mengkuiliang
     * @Description 预约保存
     * @Date 2023-01-29 14:09
     * @Param [body]
     * @return void
     **/
	JSONObject save(ScreeningApplyDTO body) throws Exception;

	/**
	 * 修改
	 * @param body
	 * @return
	 * @throws Exception
	 */
	JSONObject update(ScreeningRecord body);

    /**
     * @Author mengkuiliang
     * @Description 取消预约
     * @Date 2023-01-29 14:09
     * @Param [screeningId]
     * @return void
     **/
    void cancel(String screeningId);

    /**
     * @Author mengkuiliang
     * @Description 获取预约详情
     * @Date 2023-01-29 14:09
     * @Param [screeningId]
     * @return java.lang.Object
     **/
    ScreeningRecordVo detail(String screeningId);

	void getRecordDetail(ScreeningRecordVo vo);

    /**
     * @Author mengkuiliang
     * @Description 登记
     * @Date 2023-01-29 14:31
     * @Param [body]
     * @return String 条码号
     **/
    String receive(String screeningId) throws Exception;

    /**
     * @Author mengkuiliang
     * @Description 取消登记
     * @Date 2023-01-29 14:31
     * @Param [screeningId]
     * @return void
     **/
    void cancelReceive(String screeningId);

    /**
     * @Author mengkuiliang
     * @Description 获取当前居民预约信息
     * @Date 2023-01-29 14:54
     * @Param
     * @return
     **/
    ScreeningRecordVo getScreeningByPatientId(String patientId);

    /**
     * @Author mengkuiliang
     * @Description 获取最新一次筛查结果
     * @Date 2023-01-30 11:45
     * @Param [patientId]
     * @return void
     **/
    ScreeningRecordVo last(String patientId,String projectId);

	/**
	 * @Author haown
	 * @Description 获取居民筛查记录时间轴
	 * @Date 2023-02-06 20:49
	 * @Param [patientId]
	 * @return void
	 **/
	List<SelectVo> getTimelineList(String patientId);

	Integer pushScreening(ScreeningRecordSaveDTO body) throws Exception;

	JSONObject getInfo(String assessRecordId);

}
