package com.fs.hospital.service;

import java.util.List;
import com.fs.hospital.domain.HospitalPatient;
import com.fs.hospital.vo.HospitalOrderItemListHVO;
import com.fs.hospital.vo.HospitalPatientHVO;
import com.fs.hospital.vo.HospitalPharmacyOrderHVO;
import com.fs.hospital.vo.HospitalPharmacyOrderVO;

/**
 * 患者Service接口
 *
 * @author fs
 * @date 2024-03-04
 */
public interface IHospitalPatientService
{
    /**
     * 查询患者
     *
     * @param patientId 患者主键
     * @return 患者
     */
    public HospitalPatient selectHospitalPatientByPatientId(Long patientId);

    /**
     * 查询患者列表
     *
     * @param hospitalPatient 患者
     * @return 患者集合
     */
    public List<HospitalPatient> selectHospitalPatientList(HospitalPatient hospitalPatient);

    /**
     * 查询患者就诊记录大概
     *
     * @param patientId 患者id
     * @return 患者诊断记录集合
     */
    public List<HospitalPharmacyOrderVO>  getCaseRecords(Long patientId);

    /**
     * 查询患者详细就诊记录
     *
     * @param orderId 门诊订单id
     * @return 患者诊断记录（诊疗记录）
     */
    public List<HospitalOrderItemListHVO>  getDetailedCaseRecords(Long orderId,int type);

    /**
     * 查询患者列表（模糊）
     *
     * @param hospitalPatient 患者
     * @return 患者集合
     */
    public List<HospitalPatient> selectHospitalPatientScreenList(HospitalPatient hospitalPatient);

    /**
     * 新增患者
     *
     * @param hospitalPatient 患者
     * @return 结果
     */
    public int insertHospitalPatient(HospitalPatient hospitalPatient);

    /**
     * 修改患者
     *
     * @param hospitalPatient 患者
     * @return 结果
     */
    public int updateHospitalPatient(HospitalPatient hospitalPatient);

    /**
     * 批量删除患者
     *
     * @param patientIds 需要删除的患者主键集合
     * @return 结果
     */
    public int deleteHospitalPatientByPatientIds(Long[] patientIds);

    /**
     * 删除患者信息
     *
     * @param patientId 患者主键
     * @return 结果
     */
    public int deleteHospitalPatientByPatientId(Long patientId);

    List<HospitalPatient> selectHospitalPatientListPVO(HospitalPatient hospitalPatient);

    HospitalPatientHVO selectHospitalPatientPVOByPatientId(Long patientId);
}
