package com.openhis.web.inpatientmanage.mapper;

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.inpatientmanage.dto.NursingDetailDto;
import com.openhis.web.inpatientmanage.dto.NursingEmrTemplateDto;
import com.openhis.web.inpatientmanage.dto.NursingPageDto;
import com.openhis.web.inpatientmanage.dto.NursingSearchParam;

/**
 * 护理记录单
 *
 * @author gaoyy
 * @since 2025/05/30
 */
@Repository
public interface NursingRecordAppMapper {

    /**
     * 住院患者信息分页查询
     *
     * @param page 分页
     * @param classEnum 类别编码(住院)
     * @param bed 类别编码(床)
     * @param ward 类别编码(病区)
     * @param active 状态(正在用)
     * @param queryWrapper 查询条件
     * @return 患者信息
     */
    IPage<NursingPageDto> getPatientPage(@Param("page") Page<NursingPageDto> page,
        @Param("classEnum") Integer classEnum, @Param("bed") Integer bed, @Param("ward") Integer ward,
        @Param("active") Integer active, @Param(Constants.WRAPPER) QueryWrapper<NursingSearchParam> queryWrapper);

    /**
     * 患者护理记录单信息分页查询
     *
     * @param page 分页
     * @param classEnum 类别编码(住院)
     * @param bed 类别编码(床)
     * @param ward 类别编码(病区)
     * @param active 状态(正在用)
     * @param queryWrapper 查询条件
     * @return 患者护理记录单信息
     */
    IPage<NursingDetailDto> getNursingPatientPage(@Param("page") Page<NursingDetailDto> page,
        @Param("classEnum") Integer classEnum, @Param("bed") Integer bed, @Param("ward") Integer ward,
        @Param("active") Integer active, @Param(Constants.WRAPPER) QueryWrapper<NursingSearchParam> queryWrapper);

    /**
     * 电子病历模板列表信息分页查询
     *
     * @param page 分页
     * @param nursing 护理单
     * @param queryWrapper 查询条件
     * @return 电子病历模板列表信息
     */
    IPage<NursingEmrTemplateDto> getEmrTemplate(@Param("page") Page<NursingDetailDto> page,
        @Param("nursing") String nursing, @Param(Constants.WRAPPER) QueryWrapper<NursingSearchParam> queryWrapper);
}
