package com.xinelu.manage.mapper.patientvisitrecord;

import com.xinelu.manage.domain.patientvisitrecord.PatientVisitRecord;
import com.xinelu.manage.dto.patientvisitrecord.PatientVisitRecordDto;
import java.util.Collection;
import java.util.List;
import org.apache.ibatis.annotations.Param;

/**
 * 患者就诊记录基本信息Mapper接口
 *
 * @author haown
 * @date 2024-02-26
 */
public interface PatientVisitRecordMapper {
    /**
     * 查询患者就诊记录基本信息
     *
     * @param id 患者就诊记录基本信息主键
     * @return 患者就诊记录基本信息
     */
    public PatientVisitRecord selectPatientVisitRecordById(Long id);

    /**
     * 查询患者就诊记录基本信息列表
     *
     * @param patientVisitRecord 患者就诊记录基本信息
     * @return 患者就诊记录基本信息集合
     */
    public List<PatientVisitRecord> selectPatientVisitRecordList(PatientVisitRecordDto patientVisitRecord);

    /**
     * 新增患者就诊记录基本信息
     *
     * @param patientVisitRecord 患者就诊记录基本信息
     * @return 结果
     */
    public int insertPatientVisitRecord(PatientVisitRecord patientVisitRecord);

	int insertBatch(@Param("patientVisitRecordList") Collection<PatientVisitRecord> patientVisitRecordList);
    /**
     * 修改患者就诊记录基本信息
     *
     * @param patientVisitRecord 患者就诊记录基本信息
     * @return 结果
     */
    public int updatePatientVisitRecord(PatientVisitRecord patientVisitRecord);

    /**
     * 删除患者就诊记录基本信息
     *
     * @param id 患者就诊记录基本信息主键
     * @return 结果
     */
    public int deletePatientVisitRecordById(Long id);

    /**
     * 批量删除患者就诊记录基本信息
     *
     * @param ids 需要删除的数据主键集合
     * @return 结果
     */
    public int deletePatientVisitRecordByIds(Long[] ids);

	PatientVisitRecord judgeRepeat(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("cardNo") String cardNo,
		@Param("inHospitalNumber") String inHospitalNumber);

	/**
	 * 获取居民在当前机构最新一条就诊记录
	 * @param hospitalAgencyId 机构id
	 * @param patientId 患者id
	 * @return 结果
	 */
	PatientVisitRecord getLastRecord(@Param("hospitalAgencyId") Long hospitalAgencyId, @Param("patientId") Long patientId);
}
