using IRaCIS.Core.Domain.Share;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.Service.Reading.Dto
{
    public class ClinicalDataTrialSetAddOrEdit
    {
        public Guid? Id { get; set; }
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; }
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel ClinicalDataLevel { get; set; }
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType ClinicalUploadType { get; set; }
        /// 
        /// 上传角色
        /// 
        public UploadRole UploadRole { get; set; }
        /// 
        /// 是否启用
        /// 
        public bool IsEnable { get; set; }
        /// 
        /// 项目ID
        /// 
        public Guid? TrialId { get; set; }
        /// 
        /// 是否勾选
        /// 
        public bool IsConfirm { get; set; }
        /// 
		/// 模板文件名称
		/// 
		public string FileName { get; set; }
        /// 
        /// 文件路径
        /// 
        public string Path { get; set; }
        //public List TrialCriterionIdList { get; set; }
        public string CriterionEnumListStr { get; set; } = String.Empty;
        public List CriterionEnumList { get; set; }
    }
    public class ClinicalDataSystemSetAddOrEdit
    {
        public Guid? Id { get; set; }
        /// 
        /// 枚举
        /// 
        public int ClinicalDataSetEnum { get; set; }
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; }
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel ClinicalDataLevel { get; set; }
        /// 
        /// 上传角色
        /// 
        public UploadRole UploadRole { get; set; }
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType ClinicalUploadType { get; set; }
        /// 
        /// 是否启用
        /// 
        public bool IsEnable { get; set; }
        /// 
		/// 模板文件名称
		/// 
		public string FileName { get; set; }
        /// 
        /// 文件路径
        /// 
        public string Path { get; set; }
        //public List SystemCriterionIdList { get; set; }
        public string CriterionEnumListStr { get; set; } = String.Empty;
        public List CriterionEnumList { get; set; }
    }
    public class ClinicalDataTrialSetView: ClinicalDataTrialSetAddOrEdit
    {
        //public List TrialCriterionNameList { get; set; }
    
        /// 
        /// 创建时间
        /// 
        public DateTime CreateTime { get; set; }
        /// 
        /// 创建人
        /// 
        public Guid CreateUserId { get; set; }
        /// 
        /// 系统的ClinicalDataSetId
        /// 
        public Guid? SystemClinicalDataSetId { get; set; }
      
        /// 
        /// 是否来自于系统数据
        /// 
        public bool IsFromSystemData
        {
            get
            {
                return this.SystemClinicalDataSetId == null ? false : true;
            }
        }
        /// 
        /// 是否使用
        /// 
        public bool IsUsed { get; set; } = false;
    }
    public class ClinicalDataSystemSetView : ClinicalDataSystemSetAddOrEdit
    {
        //public List SystemCriterionNameList { get; set; }
        /// 
        /// 创建时间
        /// 
        public DateTime CreateTime { get; set; }
        /// 
        /// 创建人
        /// 
        public Guid CreateUserId { get; set; }
    }
    public class ClinicalDataInDto
    {
        /// 
        /// 项目Id
        /// 
        public Guid TrialId { get; set; }
        /// 
        /// 受试者ID
        /// 
        public Guid SubjectId { get; set; }
        /// 
        /// 访视或者阅片ID
        /// 
        public Guid VisitOrReadId { get; set; }
    }
    public class ClinicalDataQuery : PageInput
    {
        /// 
		/// 项目ID
		/// 
		public Guid? TrialId { get; set; }
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; } = string.Empty;
    }
    public class GetTrialClinicalDataSystemIndto
    {
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; } = String.Empty;
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel? ClinicalDataLevel { get; set; }
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType? ClinicalUploadType { get; set; }
    }
    public class SetClinicalDataCheckdIndto
    {
        /// 
        /// 项目ID
        /// 
        public Guid TrialId { get; set; }
        public List ClinicalDataTrialIds { get; set; }
    }
    public class GetTrialClinicalDataTrialIndto
    {
        public Guid TrialId { get; set; }
        /// 
        /// 名称
        /// 
        public string ClinicalDataSetName { get; set; } = String.Empty;
        /// 
        /// 临床级别
        /// 
        public ClinicalLevel? ClinicalDataLevel { get; set; }
        /// 
        /// 上传方式
        /// 
        public ClinicalUploadType? ClinicalUploadType { get; set; }
    }
    public class CriterionSelectDto
    {
        public Guid Id { get; set; }
        public string CriterionName { get; set; }
    }
    public class SystemCriterionSelectDto
    {
        public Guid Id { get; set; }
        public string CriterionName { get; set; }
        /// 
        /// 是否启用
        /// 
        public bool IsEnable { get; set; }
        public bool IsCompleteConfig { get; set; }
    }
    public class TrialCriterionSelectDto
    {
        public Guid Id { get; set; }
        public string CriterionName { get; set; }
        public bool IsEnable { get; set; }
        public bool IsCompleteConfig { get; set; }
        public bool IsConfirm { get; set; }
    }
    public class SystemCriterionSelectQuery
    {
        public string? CriterionName { get; set; }
        public bool? IsEnable { get; set; }
        public bool? IsCompleteConfig { get; set; }
    }
    public class TrialCriterionSelectQuery
    {
        public Guid TrialId { get; set; }
        public string? CriterionName { get; set; }
        public bool? IsEnable { get; set; }
        public bool? IsCompleteConfig { get; set; }
        public bool? IsConfirm { get; set; }
    }
}