/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.reportmanage.appservice;

import javax.servlet.http.HttpServletRequest;

import com.core.common.core.domain.R;

/**
 * 报表 appService
 *
 * @author liuhr
 * @date 2025-11-06
 */
public interface IReportAppService {

    /**例子
     * 药剂科报表_常规报表:出库明细表
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 出库明细表
     */
    R<?> getStockOutDetailPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:患者明细主表
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 患者明细主表
     */
    R<?> getPatientMasterDetailPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:线下采购占比
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 线下采购占比报表
     */
    R<?> getOfflinePurchaseRatioPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:药品使用情况
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 药品使用情况报表
     */
    R<?> getMedicationUsagePage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:患者明细
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 患者明细报表
     */
    R<?> getPatientDetailsPage(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表_常规报表:药品费用增长率
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 药品费用增长率
     */
    R<?> getDrugExpensesGrowthRate(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表_结余留用:30天回款率
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 30天回款率
     */
    R<?> getThirtyDayCollectionRate(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:基本情况
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 基本情况报表
     */
    R<?> getBasicInformationDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:药品出库情况
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 药品出库情况报表
     */
    R<?> getMedicationStockOutDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:产品使用情况
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 产品使用情况报表
     */
    R<?> getProductUsageDetails(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 药剂科报表:非中选产品采购量占比
     *
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 非中选产品采购量占比报表
     */
    R<?> getNonWinQtyRatio(Integer pageNo, Integer pageSize, String searchKey, HttpServletRequest request);


}
