package com.openhis.web.regdoctorstation.appservice;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import com.baomidou.mybatisplus.core.metadata.IPage;
import com.core.common.core.domain.R;
import com.openhis.web.regdoctorstation.dto.AdviceBatchOpParam;
import com.openhis.web.regdoctorstation.dto.RegAdviceSaveParam;
import com.openhis.web.regdoctorstation.dto.RegPatientMainInfoDto;

/**
 * 医嘱管理 应用Service
 */
public interface IAdviceManageAppService {

    /**
     * 查询住院患者信息
     *
     * @param regPatientMainInfoDto 住院患者信息 dto
     * @param searchKey 模糊查询关键字
     * @param pageNo 当前页
     * @param pageSize 每页多少条
     * @param request 请求
     * @return 住院患者信息
     */
    IPage<RegPatientMainInfoDto> getRegPatientMainInfo(RegPatientMainInfoDto regPatientMainInfoDto, Integer status,
        String searchKey, Integer pageNo, Integer pageSize, HttpServletRequest request);

    /**
     * 住院保存医嘱
     * 
     * @param regAdviceSaveParam 住院医嘱表单信息
     * @param adviceOpType 医嘱操作类型
     * @return 结果
     */
    R<?> saveRegAdvice(RegAdviceSaveParam regAdviceSaveParam, String adviceOpType);

    /**
     * 查询住院医嘱请求数据
     *
     * @param encounterId 就诊id
     * @return 住院医嘱请求数据
     */
    R<?> getRegRequestBaseInfo(Long encounterId);

    /**
     * 查询历史住院医嘱请求数据
     *
     * @param encounterId 就诊id
     * @param patientId 病人id
     * @return 历史住院医嘱请求数据
     */
    R<?> getRegRequestHistoryInfo(Long patientId, Long encounterId);

    /**
     * 住院医嘱签退
     *
     * @param paramList 签退参数
     * @return 结果
     */
    R<?> signOffRegAdvice(List<AdviceBatchOpParam> paramList);

    /**
     * 住院医嘱停止
     *
     * @param paramList 停嘱
     * @return 结果
     */
    R<?> stopRegAdvice(List<AdviceBatchOpParam> paramList);

}
