package com.eitc.patient.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.eitc.patient.domain.PatientAppointment;
import com.eitc.patient.dto.PatientAppointmentDto;
import com.eitc.patient.vo.PatientAppointmentParamVO;
import com.eitc.patient.vo.PatientAppointmentVO;
import com.eitc.patient.vo.PatientFollowUpVO;
import org.springframework.stereotype.Service;

import java.util.Date;
import java.util.List;
import java.util.Map;

/**
 * PatientAppointmentService
 *
 * @author mtx
 * @date: 2024/05/17 15:37
 */
@Service
public interface IPatientAppointmentService extends IService<PatientAppointment> {

    /**
     * 添加预约记录
     *
     * @param entry 参数
     * @author mtx
     * @date: 2024/5/21 8:56
     */
    void addOrEdit(PatientAppointmentVO entry);

    /**
     * 获取列表数据
     *
     * @param patientAppointmentParamVO 参数
     * @return 列表数据
     * @author mtx
     * @date: 2024/5/27 9:26
     */
    List<PatientAppointmentDto> findList(PatientAppointmentParamVO patientAppointmentParamVO);

    /**
     * 封装预约信息，将数据库中的预约实体转换为用于前端展示的DTO（数据传输对象）。
     *
     * @param appointment 预约信息实体，来源于数据库。
     * @return 返回封装好的预约信息DTO，供前端使用。
     * @author mtx
     * @date: 2024/5/24 11:13
     */
    PatientAppointmentDto getPatientAppointmentDto(PatientAppointment appointment);

    /**
     * 同一个医生同一时段不能预约
     *
     * @param attendingDoctor 医生
     * @param startTime       开始时间
     * @param endTime         结束时间
     * @author mtx
     * @date: 2024/6/14 17:13
     */
    void checkAppointmentTime(String attendingDoctor, Date startTime, Date endTime);

}
