package com.yihu.jw.patient.dao;

import com.yihu.jw.entity.base.patient.PatientMedicareCardDO;
import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
import org.springframework.data.jpa.repository.Query;
import org.springframework.data.repository.PagingAndSortingRepository;

import java.util.List;
import java.util.Set;

/**
 * Created by Trick on 2018/8/31.
 */
public interface BasePatientMedicareCardDao extends PagingAndSortingRepository<PatientMedicareCardDO, Integer>, JpaSpecificationExecutor<PatientMedicareCardDO> {

    List<PatientMedicareCardDO> findByPatientCode(String patientCode);

    @Query("select id from PatientMedicareCardDO where patientCode = ?1")
    Set<Object> findIdListByPatientCode(String patientCode);

    PatientMedicareCardDO findByCode(String code);

    @Query("from  PatientMedicareCardDO where  code= ?1 and patientCode = ?2")
    PatientMedicareCardDO findByCodeAndPatientCode(String code ,String patientCode);

    PatientMedicareCardDO findByTypeAndPatientCodeAndDel(String Type,String patientCode,String del);

    boolean existsByCodeAndDel(String code,String del);

    /**
     * 校验就诊卡号是否存在，就诊卡号有机构code，每个机构的就诊卡相互独立
     * @param code
     * @param orgCode
     * @param del
     * @return
     */
    boolean existsByCodeAndOrgCodeAndDel(String code,String orgCode,String del);

    /**
     * 一个居民在一家医院（机构）只能有一张就诊卡
     * @param patientCode
     * @param orgCode
     * @param del
     * @return
     */
    boolean existsByPatientCodeAndOrgCodeAndDel(String patientCode,String orgCode,String del);
}
