package com.fs.hospital.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.hospital.domain.HospitalOrder;
import com.fs.hospital.param.HospitalOrderCashierParam;
import com.fs.hospital.param.HospitalOrderParam;
import com.fs.hospital.vo.HospitalOrderListHVO;
import com.fs.hospital.vo.HospitalOrderVO;

/**
 * 诊疗订单Service接口
 *
 * @author fs
 * @date 2024-03-22
 */
public interface IHospitalOrderService
{
    /**
     * 查询诊疗订单
     *
     * @param orderId 诊疗订单主键
     * @return 诊疗订单
     */
    public R selectHospitalOrderByOrderId(Long orderId);

    /**
     * 查询诊疗订单列表
     *
     * @param hospitalOrder 诊疗订单
     * @return 诊疗订单集合
     */
    public List<HospitalOrder> selectHospitalOrderList(HospitalOrder hospitalOrder);

    /**
     * 新增诊疗订单
     *
     * @param hospitalOrder 诊疗订单
     * @return 结果
     */
    public int insertHospitalOrder(HospitalOrder hospitalOrder);

    /**
     * 修改诊疗订单
     *
     * @param hospitalOrder 诊疗订单
     * @return 结果
     */
    public int updateHospitalOrder(HospitalOrder hospitalOrder);

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

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


    List<HospitalOrderListHVO> selectHospitalOrderListHVO(HospitalOrderParam param);

    //收费方法
    R cashier(HospitalOrderCashierParam param);

    int handleOrderChangeExecute(Long orderId,int type);

    List<HospitalOrderVO> selectHospitalOrderByPatientIdList(Long patientId,int type);
    HospitalOrderVO getFeeRecordsByOrderId(Long orderId);

    R finishOrder(HospitalOrderParam param);
}
