package com.docus.server.collection.mapper;


import com.docus.server.collection.entity.TBasic;
import com.docus.server.collection.entity.TBasicExtend;
import com.docus.server.report.entity.MaternalInfantRelationship;
import org.apache.ibatis.annotations.Param;

import java.util.List;

/**
 * <p>
 * 病案基本信息 Mapper 接口
 * </p>
 *
 * @author jiashi
 * @since 2021-04-14
 */
public interface TBasicMapper{
    /**
     * 根据住院号和住院次数查询业务系统中病案主键
     * @param inpatientNo 住院号
     * @param admissTimes 住院次数
     * @return 病案主键
     */
    String getPatientIdByInpatientNoAndAdminssTimes(@Param("inpatientNo") String inpatientNo,@Param("adminssTimes") Integer admissTimes);

    Integer selectOne(@Param("jzh") String jzh);

    String getPatientId(@Param("jzh") String jzh);

    Integer insert(@Param("tBasic") TBasic tBasic);

    Integer insertExtend(@Param("tBasicExtend") TBasicExtend tBasicExtend);

    Integer update(@Param("tBasic") TBasic tBasic);

    Integer updateExtend(@Param("tBasicExtend") TBasicExtend tBasicExtend);

    List<TBasic> selectBasicListByAdmissDate(@Param("admissStartDate")String admissStartDate,@Param("admissEndDate") String admissEndDate,@Param("offset") int offset,@Param("size") int size);

    /**
     * 查询归档关联顺德人医报告的交叉索引
     * @param patientId  归档系统病案主键
     * @return 归档关联顺德人医报告的交叉索引
     */
    String getSdRyIndexByPatientId(@Param("patientId")String patientId);

    List<TBasic> selectBasicListByCreateOrUpdateTime(@Param("startDate")String queryBasicStartDate, @Param("endDate")String queryBasicEndDate, @Param("offset") int offset,@Param("size") int size);

    List<TBasic> selectBasicListByPatientIds(@Param("patientIds") List<String> patientIds);

    Integer getNurseFileCount(@Param("patientId")String patientId);

    /**
     * 护理采集过滤的文件数量
     * @param patientId 病案主键
     * @return 过滤的文件数量
     */
    Integer getNurseRemoveFileCount(@Param("patientId") String patientId);

    /**
     * 保存护理采集删除文件数量
     * @param patientId 病案主键
     * @param removeCount 删除数量
     * @return db操作影响行
     */
    Integer saveNisRemoveFilesCount(@Param("patientId") String patientId,@Param("count") int removeCount);

    /**
     * 查询顺德人医索引
     * @param patientId 病案主键
     * @return 顺德人医索引
     */
    String getSdRyIndex(@Param("patientId") String patientId);

    /**
     * 根据宝宝的患者索引 关联数据
     * @param babyIndex 宝宝患者索引
     * @return 关联数据
     */
    MaternalInfantRelationship getMaternalInfantRelationship(@Param("babyIndex")String babyIndex);

    /**
     * 根据患者索引，查询病案主键
     * @param sdRyIndex 患者索引
     * @param admissTimes 住院次数
     * @return 病案主键
     */
    String getPatientIdBySdRyIndexAndAdmissTimes(@Param("sdRyIndex")String sdRyIndex, @Param("admissTimes") String admissTimes );

    /**
     * 根据病案主键查询基础信息
     * @param patientId
     * @return 基础数据
     */
    TBasic getByPatientId(@Param("patientId") String patientId);

    int deleteByPatientId(@Param("patientId") String patientId);

    /**
     * 更新患者的护理采集状态
     * @param patientId 病案
     * @param state 状态 0未采集 1 已采集
     * @return 数据库操作
     */
    int updateNursCollectState(@Param("patientId") String patientId, @Param("state") int state);

    /**
     * 根据病案主键获取额外信息
     * @param patientId 病案主键
     * @return 额外信息
     */
    TBasicExtend getTBasicExt(@Param("patientId") String patientId);

    /**
     * 根据工号，获取用户姓名
     * @param userName 工号
     * @return 用户姓名
     */
    String getNameByUserName(@Param("userName")String userName);
}
