/*
 * Copyright ©2023 CJB-CNIT Team. All rights reserved
 */
package com.openhis.web.inhospitalnursestation.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.toolkit.Constants;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPageParam;
import com.openhis.web.inhospitalnursestation.dto.AdmissionPatientPageDto;
import com.openhis.web.inhospitalnursestation.dto.InpatientAdviceDto;
import com.openhis.web.inhospitalnursestation.dto.InpatientAdviceParam;

/**
 * 护士站医嘱处理 mapper
 *
 * @author zwh
 * @date 2025-08-07
 */
@Repository
public interface AdviceProcessAppMapper {

    /**
     * 入院患者分页列表
     *
     * @param page 分页信息
     * @param queryWrapper 查询条件
     * @param imp 就诊类型：住院
     * @param toBeRegistered 就诊状态：待登记
     * @param registered 就诊状态：待入院
     * @param active 住院位置状态：使用中
     * @param ward 位置类型：病区
     * @param house 位置类型：病房
     * @param bed 位置类型：病床
     * @return 入院患者分页列表
     */
    Page<AdmissionPatientPageDto> selectInpatientPage(@Param("page") Page<AdmissionPatientPageDto> page,
        @Param(Constants.WRAPPER) QueryWrapper<AdmissionPageParam> queryWrapper, @Param("imp") Integer imp,
        @Param("toBeRegistered") Integer toBeRegistered, @Param("registered") Integer registered,
        @Param("active") Integer active, @Param("ward") Integer ward, @Param("house") Integer house,
        @Param("bed") Integer bed);

    /**
     * 查询医嘱分页列表
     * 
     * @param page 分页信息
     * @param queryWrapper 查询条件
     * @param worServiceRequest 请求所在表:服务请求
     * @param medMedicationRequest 请求所在表:药品请求
     * @param draft 医嘱状态：待发送
     * @param active 住院位置状态：使用中
     * @param bed 位置类型：病床
     * @param admittingDoctor 住院医生
     * @param personalCashAccount 个人现金账户
     * @param billable 收费状态：待结算
     * @param billed 收费状态：已结算
     * @param refunded 收费状态：已退费
     * @param imp 患者状态：住院
     * @return 医嘱分页列表
     */
    Page<InpatientAdviceDto> selectInpatientAdvicePage(@Param("page") Page<InpatientAdviceDto> page,
        @Param(Constants.WRAPPER) QueryWrapper<InpatientAdviceParam> queryWrapper,
        @Param("medMedicationRequest") String medMedicationRequest,
        @Param("worServiceRequest") String worServiceRequest, @Param("draft") Integer draft,
        @Param("active") Integer active, @Param("bed") Integer bed, @Param("admittingDoctor") String admittingDoctor,
        @Param("personalCashAccount") String personalCashAccount, @Param("billable") Integer billable,
        @Param("billed") Integer billed, @Param("refunded") Integer refunded, @Param("imp") Integer imp);
}
