package com.fs.hospital.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.hospital.domain.HospitalOutpatientOrder;
import com.fs.hospital.param.HospitalOutpatientOrderFinishParam;
import com.fs.hospital.param.HospitalOutpatientOrderParam;
import com.fs.hospital.vo.HospitalOutpatientOrderCountHVO;
import com.fs.hospital.vo.HospitalOutpatientOrderHVO;

/**
 * 门诊单Service接口
 *
 * @author fs
 * @date 2024-03-22
 */
public interface IHospitalOutpatientOrderService
{
    /**
     * 查询门诊单
     *
     * @param orderId 门诊单主键
     * @return 门诊单
     */
    public HospitalOutpatientOrder selectHospitalOutpatientOrderByOrderId(Long orderId);

    /**
     * 查询门诊单列表
     *
     * @param hospitalOutpatientOrder 门诊单
     * @return 门诊单集合
     */
    public List<HospitalOutpatientOrder> selectHospitalOutpatientOrderList(HospitalOutpatientOrder hospitalOutpatientOrder);

    /**
     * 新增挂号预约单
     *
     * @param hospitalOutpatientOrder 门诊单
     * @return 结果
     */
    public R insertHospitalOutpatientOrder(HospitalOutpatientOrder hospitalOutpatientOrder);

    /**
     * 修改门诊单
     *
     * @param hospitalOutpatientOrder 门诊单
     * @return 结果
     */
    public int updateHospitalOutpatientOrder(HospitalOutpatientOrder hospitalOutpatientOrder);

    /**
     * 批量删除门诊单
     *
     * @param orderIds 需要删除的门诊单主键集合
     * @return 结果
     */
    public int deleteHospitalOutpatientOrderByOrderIds(Long[] orderIds);

    /**
     * 删除门诊单信息
     *
     * @param orderId 门诊单主键
     * @return 结果
     */
    public int deleteHospitalOutpatientOrderByOrderId(Long orderId);


    List<HospitalOutpatientOrderHVO> selectHospitalOutpatientOrderListHVO(HospitalOutpatientOrderParam param);

    List<HospitalOutpatientOrderHVO> selectAllOutpatientOrderListHVO(HospitalOutpatientOrderParam param);

    List<HospitalOutpatientOrderCountHVO> selectHospitalOutpatientOrderCountListHVO(HospitalOutpatientOrderParam param);

    HospitalOutpatientOrderCountHVO selectHospitalOutpatientOrderAllCountByTime(HospitalOutpatientOrderParam param);
    //新增门诊单
    R createOutpatientOrder(HospitalOutpatientOrder hospitalOutpatientOrder);

    R finishOutpatientOrder(HospitalOutpatientOrderFinishParam param);

    R getOutpatientOrder(Long orderId);
    R getOutpatientOrderHistory(Long orderId);
}
