package com.openhis.web.doctorstation.mapper;

import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
import com.baomidou.mybatisplus.core.toolkit.Constants;
import com.openhis.web.doctorstation.dto.*;
import com.openhis.web.reportmanage.dto.ChargeReportPageDto;
import com.openhis.web.reportmanage.dto.ChargeReportSearchParam;
import com.openhis.ybcatalog.domain.CatalogDrugInfo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;

import com.baomidou.mybatisplus.extension.plugins.pagination.Page;

import java.util.List;

/**
 * 医生站-电子处方 应用Mapper
 */
@Repository
public interface DoctorStationElepPrescriptionMapper {

    /**
     * 获取药品信息
     *
     * @param medicationNo 药品号
     * @param version 药品版本号
     * @return 药品信息
     */
    CatalogDrugInfo selectCatalogDrugInfoByNo(@Param("medicationNo") String medicationNo,@Param("version") String version);

    /**
     * 获取药品信息
     *
     * @param page         分页
     * @param queryWrapper 查询条件
     * @return 药品信息
     */
    Page<CatalogDrugInfo> selectCatalogDrugInfo(@Param("page") Page<ChargeReportPageDto> page,
                                                @Param(Constants.WRAPPER) QueryWrapper<String> queryWrapper);

    /**
     * 获取处方信息
     *
     * @param page      分页
     * @param patientId 患者id
     * @return 药品信息
     */
    Page<ElepPrescriptionInfoDto> selectElepPrescriptionInfo(@Param("page") Page<ElepPrescriptionInfoDto> page, @Param("patientId") Long patientId);

    /**
     * 获取处方信息
     *
     * @param prescriptionNo 处方号
     * @return 药品信息
     */
    Page<ElepMedicationInfoDto> selectMedicationInfo(@Param("page") Page<ElepPrescriptionInfoDto> page, @Param("prescriptionNo") String prescriptionNo);

    /**
     * 搜索更表需要信息
     *
     * @param encounterId 就诊id
     * @return 药品信息
     */
    ElepPrescriptionInfoParam selectSaveInfo(@Param("encounterId") Long encounterId);

//    /**
//     * 搜索诊断信息
//     *
//     * @param encounterId 就诊id
//     * @return 诊断信息
//     */
//    List<ElepPrescriptionInitConditionDto> selectConditionInfo(@Param("encounterId") Long encounterId);
}
