package org.example.mapper;

import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.example.entity.Patient;

import java.util.List;

@Mapper
public interface PatientMapper {
    
    /**
     * 查询所有患者
     * @return 患者列表
     */
    List<Patient> findAll();
    
    /**
     * 根据条件查询患者
     * @return 患者列表
     */
    List<Patient> findWithConditions(@Param("name") String name, @Param("department") String department, 
                                  @Param("ward") String ward, @Param("roomNo") String roomNo, 
                                  @Param("bedNo") String bedNo, @Param("inpatientNo") String inpatientNo,
                                  @Param("nurseLevel") String nurseLevel, @Param("status") String status,
                                  @Param("admissionDateTime") String admissionDateTime);
    
    /**
     * 查询所有不同的护理级别
     * @return 护理级别列表
     */
    List<String> findDistinctNurseLevels();
    
    /**
     * 查询所有不同的在院状态
     * @return 在院状态列表
     */
    List<String> findDistinctInpatientStatuses();
    
    /**
     * 根据住院号查询患者
     * @param inpatientNo 住院号
     * @return 患者信息
     */
    Patient findByInpatientNo(String inpatientNo);
    
    /**
     * 插入新患者
     * @param patient 患者信息
     */
    void insert(Patient patient);
    
    /**
     * 更新患者信息
     * @param patient 患者信息
     */
    void update(Patient patient);
    
    /**
     * 根据住院号删除患者
     * @param inpatientNo 住院号
     */
    void deleteByInpatientNo(String inpatientNo);
}
