package com.openhis.web.regdoctorstation.mapper;

import java.util.List;

import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.metadata.IPage;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.regdoctorstation.dto.RegPatientMainInfoDto;
import com.openhis.web.regdoctorstation.dto.RegRequestBaseDto;

/**
 * 医嘱管理 应用Mapper
 */
@Repository
public interface AdviceManageAppMapper {

    /**
     * 查询住院患者信息
     * 
     * @param page 分页参数
     * @param practitionerId 当前参与者id
     * @param wardEnum 病区
     * @param houseEnum 病房
     * @param bedEnum 床位
     * @param encounterActivityStatus 使用状态
     * @param classEnum 就诊类型
     * @param status 住院就诊状态
     * @param maindiseFlag 主诊断标识
     * @param accountTypeCode 个人现金账号
     * @param queryWrapper 查询条件
     * @return 住院患者信息
     */
    IPage<RegPatientMainInfoDto> getRegPatientMainInfo(@Param("page") Page<RegPatientMainInfoDto> page,
        @Param("practitionerId") Long practitionerId, @Param("wardEnum") Integer wardEnum,
        @Param("houseEnum") Integer houseEnum, @Param("bedEnum") Integer bedEnum,
        @Param("encounterActivityStatus") Integer encounterActivityStatus, @Param("classEnum") Integer classEnum,
        @Param("status") Integer status, @Param("maindiseFlag") Integer maindiseFlag,
        @Param("accountTypeCode") String accountTypeCode,
        @Param(Constants.WRAPPER) QueryWrapper<RegPatientMainInfoDto> queryWrapper);

    /**
     * 查询住院医嘱请求数据
     *
     * @param encounterId 就诊id
     * @param patientId 患者id
     * @param MED_MEDICATION_REQUEST 药品请求表名
     * @param WOR_DEVICE_REQUEST 耗材请求表名
     * @param WOR_SERVICE_REQUEST 诊疗请求表名
     * @param practitionerId 当前账号的参与者id
     * @param historyFlag 历史医嘱标记
     * @param generateSourceEnum 生成来源
     * @return 住院医嘱请求数据
     */
    List<RegRequestBaseDto> getRegRequestBaseInfo(@Param("encounterId") Long encounterId,
        @Param("patientId") Long patientId, @Param("MED_MEDICATION_REQUEST") String MED_MEDICATION_REQUEST,
        @Param("WOR_DEVICE_REQUEST") String WOR_DEVICE_REQUEST,
        @Param("WOR_SERVICE_REQUEST") String WOR_SERVICE_REQUEST, @Param("practitionerId") Long practitionerId,
        @Param("historyFlag") String historyFlag, @Param("generateSourceEnum") Integer generateSourceEnum);

}
