package com.openhis.web.personalization.appservice;

import com.core.common.core.domain.R;
import com.openhis.web.personalization.dto.OrdersGroupPackageDetailQueryDto;
import com.openhis.web.personalization.dto.OrdersGroupPackageQueryDto;
import com.openhis.web.personalization.dto.OrdersGroupPackageSaveDto;
import com.openhis.web.personalization.dto.OrdersGroupPackageUseDto;

import java.util.List;

/**
 * 组合套餐 service
 *
 * @author yangmo
 * @date 2025-04-10
 */
public interface IOrdersGroupPackageAppService {

    /**
     * 保存组合套餐
     * 
     * @param ordersGroupPackageSaveDto 保存组合套餐dto
     * @param packageTypeEnum 类型枚举
     * @return 结果
     */
    R<?> saveGroupPackage(OrdersGroupPackageSaveDto ordersGroupPackageSaveDto, Integer packageTypeEnum);

    /**
     * 查询组合套餐
     * 
     * @param packageTypeEnum 类型枚举
     * @param searchKey 模糊查询关键字
     * @return 组合套餐
     */
    List<OrdersGroupPackageQueryDto> getGroupPackage(Integer packageTypeEnum, String searchKey);

    /**
     * 查询组合套餐明细
     *
     * @param groupPackageId 组合套餐id
     * @return 组合套餐明细
     */
    List<OrdersGroupPackageDetailQueryDto> getGroupPackageDetail(Long groupPackageId);

    /**
     * 删除组合套餐
     * 
     * @param groupPackageId 组合套餐id
     * @return 结果
     */
    R<?> delGroupPackage(Long groupPackageId);

    /**
     * 查询组合套餐,供开立医嘱使用
     * 
     * @param organizationId 患者挂号对应的科室id
     * @return 组合套餐
     */
    OrdersGroupPackageUseDto getGroupPackageForOrder(Long organizationId);

}
