package com.docus.server.synclis.mapper;

import com.baomidou.dynamic.datasource.annotation.DS;
import com.docus.server.synclis.entity.LisView;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * v_LISReport_YDZYView 视图的定义是，其中 限制了查询的数据范围 a.crt_time >= CONVERT(DATETIME,DATEADD(MONTH,-3,GETDATE()))   ，
 * 如果要查询详细的数据，还是要从原始数据入手，getFullZyData()和 getFullMzData() 就是限制了这样的情况
 * <p>
 * SELECT a.patient_id,a.lab_num,b.name,a.hst_num,ISNULL(a.req_num,'') AS req_num,
 * a.req_date,CONVERT(VARCHAR(19),a.audit_time,120) AS audit_time,
 * dbo.fnGetChkTypeNameByLabNum(a.lab_num) AS CheckName,ISNULL(c.name,'') AS PatSource,
 * ISNULL(b.id_card,'') as IDCARD
 * FROM hylisdb..patient_register a WITH(NOLOCK)
 * JOIN hylisdb..patient_baseinfo b WITH(NOLOCK) ON a.patient_id=b.patient_id
 * JOIN hylisdb..ill_type c ON a.send_type=c.type_id
 * WHERE a.crt_time >= CONVERT(DATETIME,DATEADD(MONTH,-3,GETDATE()))
 * AND a.proc_flag = '8';
 *
 * @author YongBin Wen
 * @date 2025/1/16 11:21
 */
@DS("ydzyy-lis-sqlserver")
public interface LisViewMapper {
    /**
     * 查询lis视图患者住院报告，根据住院号和出入院时间（报告申请时间在其范围内）
     *
     * @param inpatientNo 住院阿红
     * @param admissDate  入院日期
     * @param disDate     出院日期
     * @return 报告数据
     */
    List<LisView> getZyDataFromView(@Param("inpatientNo") String inpatientNo, @Param("admissDate") String admissDate, @Param("disDate") String disDate);

    /**
     * 查询lis视图患者门（急）诊报告，根据身份证号码和报告申请时间
     *
     * @param idCard    身份证件号码
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return 报告数据
     */
    List<LisView> getMzDataFromView(@Param("idCard") String idCard, @Param("startDate") String startDate, @Param("endDate") String endDate);


    /**
     * 查询lis患者住院报告，根据住院号和出入院时间（报告申请时间在其范围内）
     *
     * @param inpatientNo 住院阿红
     * @param admissDate  入院日期
     * @param disDate     出院日期
     * @return 报告数据
     */
    List<LisView> getFullZyData(@Param("inpatientNo") String inpatientNo, @Param("admissDate") String admissDate, @Param("disDate") String disDate);

    /**
     * 查询lis患者门（急）诊报告，根据身份证号码和报告申请时间
     *
     * @param idCard    身份证件号码
     * @param startDate 开始时间
     * @param endDate   结束时间
     * @return 报告数据
     */
    List<LisView> getFullMzData(@Param("idCard") String idCard, @Param("startDate") String startDate, @Param("endDate") String endDate);
}
