package com.fs.hospital.service;

import java.util.List;

import com.fs.common.core.domain.R;
import com.fs.hospital.domain.HospitalOrderItem;
import com.fs.hospital.domain.HospitalTreatOrder;
import com.fs.hospital.param.HospitalOutpatientOrderFinishParam;
import com.fs.hospital.param.HospitalTreatOrderAddParam;
import com.fs.hospital.param.HospitalTreatOrderExecuteParam;
import com.fs.hospital.param.HospitalTreatOrderHParam;
import com.fs.hospital.vo.HospitalOrderItemListHVO;
import com.fs.hospital.vo.HospitalTreatOrderHVO;
import com.fs.hospital.vo.HospitalTreatOrderListHVO;

/**
 * 治疗单Service接口
 *
 * @author fs
 * @date 2024-03-22
 */
public interface IHospitalTreatOrderService
{
    /**
     * 查询治疗单
     *
     * @param orderId 治疗单主键
     * @return 治疗单
     */
    public HospitalTreatOrder selectHospitalTreatOrderByOrderId(Long orderId);

    /**
     * 查询治疗单列表
     *
     * @param hospitalTreatOrder 治疗单
     * @return 治疗单集合
     */
    public List<HospitalTreatOrder> selectHospitalTreatOrderList(HospitalTreatOrder hospitalTreatOrder);

    /**
     * 新增治疗单
     *
     * @param hospitalTreatOrder 治疗单
     * @return 结果
     */
    public R insertHospitalTreatOrder(HospitalTreatOrder hospitalTreatOrder);

    /**
     * 修改治疗单
     *
     * @param hospitalTreatOrder 治疗单
     * @return 结果
     */
    public int updateHospitalTreatOrder(HospitalTreatOrder hospitalTreatOrder);

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

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

    List<HospitalTreatOrderListHVO> selectHospitalTreatOrderListHVO(HospitalTreatOrderHParam hospitalTreatOrder);

    R finishTreatOrder(HospitalTreatOrderAddParam param);

    List<HospitalOrderItemListHVO> selectOrderItemByTreatId(Long orderId);

    R itemExecute(HospitalTreatOrderExecuteParam param);

    List<HospitalOrderItemListHVO> selectOrderItemByExecute(Long orderId);

    HospitalTreatOrderHVO selectHospitalTreatOrderHVOByOrderId(Long orderId);
}
