package com.fs.his.service;

import java.util.List;
import java.util.Map;

import com.fs.common.core.domain.R;
import com.fs.his.domain.FsPackageOrder;
import com.fs.his.domain.FsPrescribe;
import com.fs.his.domain.FsPrescribeDrug;
import com.fs.his.param.*;
import com.fs.his.vo.*;

/**
 * 处方Service接口
 *
 * @author fs
 * @date 2023-06-13
 */
public interface IFsPrescribeService
{
    /**
     * 查询处方
     *
     * @param prescribeId 处方主键
     * @return 处方
     */
    public FsPrescribe selectFsPrescribeByPrescribeId(Long prescribeId);

    /**
     * 查询处方列表
     *
     * @param fsPrescribe 处方
     * @return 处方集合
     */
    public List<FsPrescribe> selectFsPrescribeList(FsPrescribe fsPrescribe);

    /**
     * 新增处方
     *
     * @param fsPrescribe 处方
     * @return 结果
     */
    public int insertFsPrescribe(FsPrescribe fsPrescribe);

    /**
     * 修改处方
     *
     * @param fsPrescribe 处方
     * @return 结果
     */
    public int updateFsPrescribe(FsPrescribe fsPrescribe);

    /**
     * 批量删除处方
     *
     * @param prescribeIds 需要删除的处方主键集合
     * @return 结果
     */
    public int deleteFsPrescribeByPrescribeIds(Long[] prescribeIds);

    /**
     * 删除处方信息
     *
     * @param prescribeId 处方主键
     * @return 结果
     */
    public int deleteFsPrescribeByPrescribeId(Long prescribeId);

    List<FsPrescribeListVO> selectFsPrescribeListVO(FsPrescribeParam fsPrescribe);

    List<FsPrescribeListDVO> selectFsPrescribeListDVO(FsPrescribeListDParam param);

    String getFsPrescribeZyImg(PrescribeZyImgParam prescribeZyImgParam);

    String getFsPrescribeXyImg(PrescribeXyImgParam prescribeXyImgParam);

    List<FsPrescribeListUVO> selectFsPrescribeListUVO(FsPrescribeListUParam param);

    FsPrescribeVO selectFsPrescribeByPrescribeIdVO(Long prescribeId);

    List<FsPrescribeDrug> selectFsPrescribeDrugByPrescribeIdVO(Long prescribeId);

    void auditPrescribe();

    R audit(FsPrescribeAuditParam param);

     String PrescribeImg(Long prescribeId);

    Long insertFsPrescribeByPackageOrder(FsPackageOrder packageOrder);

    List<FsPrescribeExcelListVO> selectFsPrescribeExcelListVO(FsPrescribeParam fsPrescribe);

    List<FsMessageFeedbackExportListVO> selectFsMessageFeedbackExportListVO(FsPrescribeParam fsPrescribe);

    String getPrescribeCodeUrl(Long prescribeId);

    Boolean isEntityNull(FsPrescribeParam fsPrescribe);

    Long selectFsPrescribeExcelListVOCount(FsPrescribeParam fsPrescribe);

    void exportData(FsPrescribeParam fsPrescribe);

    void exportMessageFeedback(FsPrescribeParam fsPrescribe);

    List<Long> selectFsPrescribeByPrescribeIdByOrderType();

    void PrescribeStoreImg(Long id);

    List<FsPrescribeListDVO> selectFsPrescribeListDVOByCompanyUser(FsPrescribeListDCompanyParam param);

    List<Map<String,Object>> selectUploadDate(String date);

    int selectPrescribeByinquiryOrderId(Long orderId);
}
