package com.openhis.web.doctorstation.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.doctorstation.dto.PatientInfoDto;
import com.openhis.web.doctorstation.dto.PrescriptionInfoBaseDto;
import com.openhis.web.doctorstation.dto.PrescriptionInfoDetailDto;

/**
 * 医生站-主页面 应用Mapper
 */
@Repository
public interface DoctorStationMainAppMapper {

    /**
     * 查询就诊患者信息
     * 
     * @param page 分页参数
     * @param participantType 参与者类型 - 挂号医生
     * @param participantType2 参与者类型 - 接诊医生
     * @param ClinicalStatus 过敏史状态
     * @param userId 当前登录账号ID
     * @param currentUserOrganizationId 当前登录账号所属的科室ID
     * @param pricingFlag 划价标记
     * @param encounterStatus 就诊状态
     * @param activityStatus 活跃状态
     * @param queryWrapper 查询条件
     * @return 就诊患者信息
     */
    IPage<PatientInfoDto> getPatientInfo(@Param("page") Page<PatientInfoDto> page,
        @Param("participantType") String participantType, @Param("participantType2") String participantType2,
        @Param("ClinicalStatus") Integer ClinicalStatus, @Param("userId") Long userId,
        @Param("currentUserOrganizationId") Long currentUserOrganizationId, @Param("pricingFlag") Integer pricingFlag,
        @Param("encounterStatus") Integer encounterStatus,
        @Param("activityStatus") Integer activityStatus,
        @Param(Constants.WRAPPER) QueryWrapper<PatientInfoDto> queryWrapper);

    /**
     * 查询处方号列表信息
     * 
     * @param page 分页参数
     * @param queryWrapper 查询条件
     * @return 处方号列表信息
     */
    IPage<PrescriptionInfoBaseDto> getPrescriptionPageInfo(@Param("page") Page<PrescriptionInfoBaseDto> page,
        @Param(Constants.WRAPPER) QueryWrapper<PrescriptionInfoBaseDto> queryWrapper);

    /**
     * 查询处方详情
     *
     * @param prescriptionNo 处方号
     * @param encounterId 就诊id
     * @return 处方详情
     */
    List<PrescriptionInfoDetailDto> getPrescriptionDetailInfo(@Param("prescriptionNo") String prescriptionNo,
        @Param("encounterId") Long encounterId);

}
