using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.Service.Reading.Dto
{
    public class SetTaskValidInDto
    {
        public Guid VisitTaskId { get; set; }
    }
    public class SignConsistencyAnalysisReadingClinicalDataInDto
    {
        public Guid ConsistentClinicalDataId { get; set; }
        /// 
        /// 是否盲化
        /// 
        public bool? IsBlind { get; set; }
        /// 
        /// 是否完整
        /// 
        public bool? IsComplete { get; set; }
    }
    public class AddOrUpdateReadingClinicalDataDto
    {
        public Guid? Id { get; set; }
        public Guid? StudyId { get; set; }
        /// 
        /// 项目ID
        /// 
        public Guid TrialId { get; set; }
        /// 
        ///  受试者ID
        /// 
        public Guid SubjectId { get; set; }
        /// 
        /// 阅片ID
        /// 
        public Guid ReadingId { get; set; }
        /// 
        /// 临床数据类型Id
        /// 
        public Guid ClinicalDataTrialSetId { get; set; }
        /// 
        /// 是否是访视
        /// 
        public bool IsVisit { get; set; }
        ///// 
        ///// 是否盲化
        ///// 
        //public bool IsBlind { get; set; }
        ///// 
        ///// 是否完整
        ///// 
        //public bool IsComplete { get; set; }
        /// 
        /// 要删除的对象
        /// 
        public List DeleteFileIds { get; set; } = new List();
        public List AddFileList { get; set; } = new List();
    }
    public class GetCRCClinicalDataOutDto
    {
        public Guid Id { get; set; }
        /// 
        /// 名称
        /// 
        public Guid ClinicalDataTrialSetId { get; set; }
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; }
        /// 
        /// 英文名称
        /// 
        public string ClinicalDataSetEnName { get; set; } = string.Empty;
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType ClinicalUploadType { get; set; }
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel ClinicalDataLevel { get; set; }
        /// 
        /// 上传角色
        /// 
        public UploadRole UploadRole { get; set; }
        /// 
        /// 模板文件名称
        /// 
        public string FileName { get; set; }
        /// 
        /// 文件路径
        /// 
        public string Path { get; set; }
        /// 
        /// 是否盲化
        /// 
        public bool? IsBlind { get; set; }
        /// 
        /// 是否完整
        /// 
        public bool? IsComplete { get; set; }
        public List ClinicalFromList { get; set; }
        //public List ReadingClinicalDataList { get; set; }
        public List PDFFileList { get; set; } = new List();
        public ClinicalDataTable ClinicalTableData { get; set; }
    }
    public class ClinicalDataTable
    {
        public List PreviousHistoryList { get; set; }
        public List PreviousOtherList { get; set; }
        public List PreviousSurgeryList { get; set; }
    }
    public class GetStudyClinicalDataInDto
    {
        public Guid SubjectVisitId { get; set; }
    }
    public class GetCRCClinicalDataInDto
    {
        public Guid SubjectVisitId { get; set; }
        public Guid TrialId { get; set; }
        //public Guid TrialId { get; set; }
        public Guid SubjectId { get; set; }
        public bool IsBaseline { get; set; }
        public Guid? StudyId { get; set; }
        public bool FilterNoneForm { get; set; } = false;
    }
    /// 
    /// 是否盲化
    /// 
    public class SetReadingClinicalDataIsBlind
    {
        public Guid Id { get; set; }
        public bool IsBlind { get; set; }
    }
    public class FileDto
    {
        /// 
        /// 文件名称
        /// 
        public string FileName { get; set; }
        /// 
        /// 路径
        /// 
        public string Path { get; set; }
        /// 
        /// 大小
        /// 
        public int Size { get; set; } = 0;
        /// 
        /// 文件类型
        /// 
        public string Type { get; set; } = string.Empty;
    }
    public class GetReadingOrTaskClinicalDataListInDto
    {
        public Guid? TrialReadingCriterionId { get; set; }
        [NotDefault]
        public Guid SubjectId { get; set; }
        [NotDefault]
        public Guid TrialId { get; set; }
        public Guid? ReadingId { get; set; }
        /// 
        /// 临床数据类型Id
        /// 
        public Guid? ClinicalDataTrialSetId { get; set; }
        public Guid? VisitTaskId { get; set; }
        /// 
        /// 1 PM上传的所有的  2CRC上传的所有已确认的    3 所有已经签名的
        /// 
        public GetClinicalType? GetClinicalType { get; set; }
        public Guid? ReadingClinicalDataId { get; set; }
        /// 
        /// 只获取CRC上传的阅片模块结构化录入
        /// 
        public bool IsOnlyGetCRCReadModule { get; set; } = false;
        /// 
        /// 只查询已经签名的临床数据
        /// 
        public bool SelectIsSign { get; set; } = true;
        /// 
        /// 是否查询所有的一致性分析临床数据 (为否只查询PDF)
        /// 
        public bool IsGetAllConsistencyAnalysis { get; set; } = true;
    }
    public class GetConsistencyAnalysisReadingClinicalDataListInDto
    {
        [NotDefault]
        public Guid SubjectId { get; set; }
        [NotDefault]
        public Guid VisitTaskId { get; set; }
        [NotDefault]
        public Guid TrialId { get; set; }
    }
    /// 
    /// 获取访视列表
    /// 
    public class GetReadingClinicalDataListIndto
    {
        [NotDefault]
        public Guid SubjectId { get; set; }
        [NotDefault]
        public Guid ReadingId { get; set; }
        /// 
        /// 临床数据类型Id
        /// 
        public Guid? ClinicalDataTrialSetId { get; set; }
        /// 
        /// 1 PM上传的所有的  2CRC上传的所有已确认的    3 所有已经签名的
        /// 
        public GetClinicalType? GetClinicalType { get; set; }
        [NotDefault]
        public Guid TrialReadingCriterionId { get; set; }
        public Guid TrialId { get; set; }
        /// 
        /// 是否是访视
        /// 
        public bool IsVisit { get; set; }
        /// 
        /// 是否是基线
        /// 
        public bool IsBaseLine { get; set; }
    }
    public class GetReadingClinicalDataPDFListIndto : PageInput
    {
        public Guid ReadingClinicalDataId { get; set; }
    }
    public class GetReadingClinicalDataPDFListOutDto
    {
        public Guid? Id { get; set; }
        /// 
        /// 阅片临床数据ID
        /// 
        public Guid ReadingClinicalDataId { get; set; }
        /// 
        /// Path
        /// 
        public string Path { get; set; }
        /// 
        /// FileName
        /// 
        public string FileName { get; set; }
        /// 
        /// 是否为访视
        /// 
        public bool IsVisit { get; set; }
    }
    public class AddOrUpdateReadingClinicalDataPDFDto
    {
        public Guid? Id { get; set; }
        /// 
        /// 阅片临床数据ID
        /// 
        public Guid ReadingClinicalDataId { get; set; }
        /// 
        /// Path
        /// 
        public string Path { get; set; }
        /// 
        /// FileName
        /// 
        public string FileName { get; set; }
        /// 
        /// 是否为访视
        /// 
        public bool IsVisit { get; set; }
    }
    public class PMClinicalDataConfirmCommand
    {
        public Guid Id { get; set; }
        /// 
        /// 是否盲化
        /// 
        public bool? IsBlind { get; set; }
        /// 
        /// 是否完整
        /// 
        public bool? IsComplete { get; set; }
    }
    public class GetReadingClinicalDataListOutDto
    {
        public Guid Id { get; set; }
        /// 
        /// 访视Id  或者模块Id
        /// 
        public Guid ReadingId { get; set; }
        /// 
        /// CRC是否正在申请撤回
        /// 
        public bool IsCRCApplicationRevoke { get; set; } = false;
        public bool IsCRCConfirm { get; set; } = false;
        public bool IsPMConfirm { get; set; } = false;
        /// 
        /// 项目配置临床类型Name
        /// 
        public string ClinicalDataSetName { get; set; }
        /// 
        /// 英文名称
        /// 
        public string ClinicalDataSetEnName { get; set; } = string.Empty;
        /// 
        /// 下拉ID
        /// 
        public Guid ClinicalDataTrialSetId { get; set; }
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel ClinicalDataLevel { get; set; }
        /// 
        /// 上传角色
        /// 
        public UploadRole UploadRole { get; set; }
        public Guid SubjectId { get; set; }
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType ClinicalUploadType { get; set; }
        /// 
        /// 标准枚举
        /// 
        public List CriterionEnumList { get; set; }
        /// 
        /// 临床级别名称
        /// 
        public string ClinicalDataLevelName { get; set; }
        /// 
        /// 上传方式名称
        /// 
        public string ClinicalUploadTypeName { get; set; }
        /// 
        /// 是否为CRC上传
        /// 
        public bool IsCRCUpload { get; set; }
        public bool IsNeedMerge { get; set; } = false;
        public Guid ReadModuleId { get; set; }
        /// 
        /// 是否签名
        /// 
        public bool IsSign { get; set; }
        /// 
        /// 是否盲化
        /// 
        public bool? IsBlind { get; set; }
        /// 
        /// 是否完整
        /// 
        public bool? IsComplete { get; set; }
        //临床数据状态
        public ReadingClinicalDataStatus ReadingClinicalDataState { get; set; }
        /// 
        /// 文件数量
        /// 
        public int FileCount { get; set; }
        //{ 
        //	get 
        //	{
        //		return this.FileList.Count();
        //	} 
        //} 
        public List ClinicalFromList { get; set; }
        public List FileList { get; set; } = new List();
        public ClinicalDataTable ClinicalTableData { get; set; }
        public List TrialClinicalDataSetCriteriaList { get; set; }
    }
    public class ClinicalFromData
    {
        /// 
        /// 表单Id
        /// 
        public Guid ClinicalFormId { get; set; }
        /// 
        /// 检查日期
        /// 
        public DateTime? CheckDate { get; set; }
    }
    public class GetFileDto
    {
        /// 
        /// Id
        /// 
        public Guid Id { get; set; }
        /// 
        /// Path
        /// 
        public string Path { get; set; }
        /// 
        /// FileName
        /// 
        public string FileName { get; set; }
        /// 
        /// 大小
        /// 
        public int Size { get; set; } = 0;
        /// 
        /// 文件类型
        /// 
        public string Type { get; set; }
        /// 
        /// 上传时间
        /// 
        public DateTime CreateTime { get; set; }
    }
    /// 
    /// 获取临床数据名称
    /// 
    public class GetVisitClinicalDataNameInDto
    {
        public Guid Id { get; set; }
    }
    public class GetVisitClinicalDataNameOutDto
    {
        public string ClinicalDataName { get; set; }
    }
    public class GetTrialClinicalDataSelectIndto
    {
        /// 
        /// 项目ID
        /// 
        [NotDefault]
        public Guid TrialId { get; set; }
        /// 
        /// 阅片期临床数据ID
        /// 
        public Guid? ReadingClinicalDataId { get; set; }
        /// 
        /// 对象ID
        /// 
        public Guid? ReadingId { get; set; }
        public Guid? SubjectId { get; set; }
        /// 
        /// 是否是访视
        /// 
        public bool IsVisit { get; set; }
        /// 
        /// 是否是基线
        /// 
        public bool IsBaseLine { get; set; }
        /// 
        /// 上传角色
        /// 
        public UploadRole? UploadRole { get; set; }
        public Guid? TrialReadingCriterionId { get; set; }
    }
    public class GetTrialClinicalDataSelectOutDto
    {
        public Guid Id { get; set; }
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; }
        /// 
        /// 英文名称
        /// 
        public string ClinicalDataSetEnName { get; set; } = string.Empty;
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel ClinicalDataLevel { get; set; }
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType ClinicalUploadType { get; set; }
        /// 
        /// 临床级别名称
        /// 
        public string ClinicalDataLevelName { get; set; }
        /// 
        /// 上传方式名称
        /// 
        public string ClinicalUploadTypeName { get; set; }
        /// 
        /// 模板文件名称
        /// 
        public string FileName { get; set; }
        /// 
        /// 文件路径
        /// 
        public string Path { get; set; }
        public List CriterionEnumList { get; set; }
    }
}