using PoJun.Dapper.IRepository;
using ASHermed.SinoInterface.Entity.Test;
using System;
using System.Collections.Generic;
using System.Text;
using System.Threading.Tasks;
using ASHermed.SinoInterface.Repository.MySql;
using ASHermed.SinoInterface.Api.ContractModel.App;
using ASHermed.SinoInterface.Api.ContractModel;
using ASHermed.SinoInterface.Api.ContractModel.App.Entity;
using ASHermed.SinoInterface.Api.ContractModel.App.Model;

namespace ASHermed.SinoInterface.Api.IRepository
{

    public interface IOutAptInfoRepository : IBaseRepositoryToASHermed_SinoInterface<Out_Apt_Info>
    {
        int InsertOutAptInfo(Out_Apt_Info outAptInfo);
        int UpdateOutAptInfo(Out_Apt_Info outAptInfo);
        List<SchedulingParam> SelectDeptServDoctor(int hosId, int deptId, int doctorId, int servId, int language, int useOccasion);
        List<SchedulingParamByLanguage> SelectDeptServDoctorLanguage(int hosId, int deptId, int doctorId, int servId, int language, int useOccasion);
        List<SchedulingParamByLanguage> SelectOnlineDeptServDoctorLanguage(int hosId, int deptId, int doctorId, int servId, int language, int useOccasion);
        List<AptData> SelectAptWithVaccineApt(int language, int userId, int aptStatus, int year, int aptType);
        List<DeptServModel> GetHisDeptServ(List<int> deptIds);
        List<AptInfos> SelectAptsByPat(string patId);
        List<int> GetAllOutAptData();
        List<DicVaccine> Vaccine();
        List<Out_Apt_Info> GetOutAptForQuest(int patId);
        int UpdateOutAptForQuestId(List<int> id, int questId);
        int UpdateOutAptStatus(int id, int innerstatus);
        int ChangeInnerStatus(int id, int innerstatus);
        int UpdateOutAptInnerStatus(int id, int innerstatus, bool cancel = false);
        Out_Apt_Info GetOutAptInfo(int aptId);
        Out_Apt_Info FindByMrnUsrn(string patId, string aptUsrn);
        Out_Apt_Info FindByCondition(string patId, string aptUsrn, int deptId, int docId, int hosId, string ProjId);
        Out_Apt_Info SelectByMatchCode(string matchCode);
        Out_Apt_Info FindByMrnDate(string patId, string aptDate);
        List<Dic_Vaccine_Serv> SelectVaccineServ(int hosId);
        VaccineAptInfo GetVaccineAptInfo(int id, int language);
        Out_Apt_Info GetAptInfoByUsrn(string aptUsrn);
        int UpdateVaccAptStatus(int Id, int status, bool isTcInterfaceError);
        int BindAptId(int Id, int apptid);
        List<Out_Apt_Info> SelectTomorrow();
        List<ConfirmAptInfo> FindCheckedList();
        int InsertOutVaccineApptFlow(Out_Vaccine_Appt_Flow flow);
        int InsertOutVaccineAppt(Out_Vaccine_Appt model);
        List<Out_Apt_Info> SelectToday();

        List<Out_Apt_Info> GetPhysicalAptInfo(int patId);
        List<Out_Apt_Info> GetPhysicalAptInfos(List<int> patIds);
        List<Out_Apt_Info> GetYearPhysicalNoticeApt();
        List<AptPatData> GetOutAptPatByUser(List<int> patIds);
        List<SchedulingParam> SelectDeptServDoctor(int hosId, int deptId, int language);
        List<AptDoc> GetHasConsultation(List<int> patIds, int language);
        Out_Apt_Info GetAptByCondition(AptCommitModel model);
        Task<AptDetail> GetOutAptInfoDetail(int aptId, int language);
        VaccAptModel GetVaccAptInfo(int aptId, int language);
    }
}
