package com.openhis.web.outpatientmanage.appservice;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.core.common.core.domain.R;
import com.openhis.web.outpatientmanage.dto.OutpatientTreatmentEncounterDto;
import com.openhis.web.outpatientmanage.dto.OutpatientTreatmentInfoDto;
import com.openhis.web.common.dto.PerformInfoDto;

/**
 * 门诊处置
 *
 * @author yuxj
 * @date 2025/4/10
 */
public interface IOutpatientTreatmentAppService {

    /**
     * 获取门诊处置初期数据列表
     *
     * @return 获取门诊处置初期数据列表
     */
    R<?> init();

    /**
     * 分页查询就诊病人列表
     *
     * @param outpatientTreatmentEncounterDto 查询条件
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @param searchKey 模糊查询关键字
     * @param request 请求数据
     * @return 就诊病人分页列表
     */
    R<?> getEncounterInfoListPage(OutpatientTreatmentEncounterDto outpatientTreatmentEncounterDto, Integer pageNo,
        Integer pageSize, String searchKey, HttpServletRequest request);

    /**
     * 处置单查询
     *
     * @param outpatientTreatmentInfoDto 处置信息
     * @param pageNo 当前页码
     * @param pageSize 查询条数
     * @return 处置单
     */
    R<?> getOutpatientTreatmentInfo(OutpatientTreatmentInfoDto outpatientTreatmentInfoDto, Integer pageNo,
        Integer pageSize);

    /**
     * 诊疗执行记录查询
     *
     * @param reqId 请求项目id
     * @return 执行记录列表
     */
    R<?> getPerformRecord(Long reqId);

    /**
     * 诊疗执行
     *
     * @param performInfoList 执行信息列表
     * @return 执行结果
     */
    R<?> perform(List<PerformInfoDto> performInfoList);

    /**
     * 取消执行
     *
     * @param performInfoList 执行信息列表
     * @return 取消结果
     */
    R<?> cancelPerform(List<PerformInfoDto> performInfoList);


    /**
     * 输血贴查询
     *
     * @param requestId 请求id
     * @return 输血贴
     */
    R<?> getBloodTransfusionPatch(Long requestId);
}
