using IRaCIS.Core.Domain.Share;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
namespace IRaCIS.Core.Application.Service.Reading.Dto
{
    public class ReadingPeriodSetAddOrEdit 
    {
        public new Guid? Id { get; set; }
        /// 
        /// 项目ID
        /// 
        [NotDefault]
        public Guid TrialId { get; set; }
        [NotDefault]
        public Guid TrialReadingCriterionId { get; set; }
        /// 
        /// 阅片期名称
        /// 
        public string ReadingPeriodName { get; set; }
        /// 
        /// 阅片范围
        /// 
        public ReadingScopeEnum? ReadingScope { get; set; }
        /// 
        /// 截止日期
        /// 
        public DateTime? ExpirationDate { get; set; }
        /// 
        /// 截止访视
        /// 
        public decimal? ExpirationVisitNum { get; set; }
        /// 
        /// 访视计划ID
        /// 
        public Guid? VisitStageId { get; set; }
        /// 
        /// 是否生效
        /// 
        public ReadingPeriodStatus IsTakeEffect { get; set; } = ReadingPeriodStatus.NotTakeEffect;
        public ReadingSetType ReadingSetType { get; set; } = ReadingSetType.ImageReading;
        public  List SiteIds { get; set; }  = new List();
        public  List SubjectVisitIds { get; set; } = new List();
    }
    public class ReadingToGenerateInDto
    {
        /// 
        /// 阅片期ID
        /// 
        public Guid ReadingPeriodSetId { get; set; }
        /// 
        /// 访视ID
        /// 
        public List SubjectVisitIds { get; set; }
    }
    public class PreviewTheReadingListDto : PageInput
    {
        /// 
        /// 阅片期ID
        /// 
        public Guid ReadingPeriodSetId { get; set; }
    }
    public class PreviewTheReadingListInDto : PageInput
    {
        /// 
		/// 阅片范围
		/// 
		public ReadingScopeEnum ReadingScope { get; set; }
        /// 
        /// 中心ID
        /// 
        public List SiteIds { get; set; } = new List();
        /// 
        /// 项目ID
        /// 
        public Guid TrialId { get; set; }
        /// 
		/// 截止日期
		/// 
		public DateTime? ExpirationDate { get; set; }
        /// 
        /// 截止访视
        /// 
        public decimal? ExpirationVisitNum { get; set; }
        /// 
        /// 访视计划ID
        /// 
        public Guid? VisitStageId { get; set; }
        /// 
        /// 阅片期名称
        /// 
        public string ReadingPeriodName { get; set; }
        /// 
        /// 类型
        /// 
        public ReadingSetType ReadingSetType { get; set; }
        public Guid? TrialReadingCriterionId { get; set; }
    }
    /// 
    /// 获取影像阅片预览的Dto
    /// 
    public class PreviewTheReadingListOutDto
    {
        public Guid Id { get; set; }
        /// 
        /// 项目中心Code
        /// 
        public string TrialSiteCode { get; set; }
        /// 
        /// 访视Id
        /// 
        public Guid SubjectVisitId { get; set; }
        /// 
        /// 受试者Id
        /// 
        public Guid SubjectId { get; set; }
        /// 
        /// 受试者名称
        /// 
        public string SubjectCode { get; set; }
        /// 
        /// 备注
        /// 
        public string Remark { get; set; }
        /// 
        /// 最晚拍片日期
        /// 
        public DateTime? LatestScanDate { get; set; }
        /// 
        /// 截止日期
        /// 
        public DateTime? ExpirationDate { get; set; }
        /// 
        /// 阅片期ID
        /// 
        public Guid? ReadingPeriodSetId { get; set; }
        /// 
        /// 阅片期名称
        /// 
        public string ReadingPeriodName { get; set; }
        public string SubjectVisitName { get; set; }
        public DateTime? EffectOfTime { get; set; }
    }
    public class ReadingPeriodSetView
    {
        /// 
        /// id
        /// 
        public Guid Id { get; set; }
        /// 
        /// 项目ID
        /// 
        public Guid? TrialId { get; set; }
        /// 
        /// 阅片期名称
        /// 
        public string ReadingPeriodName { get; set; }
        /// 
        /// 阅片范围
        /// 
        public ReadingScopeEnum? ReadingScope { get; set; }
        /// 
        /// 截止日期
        /// 
        public DateTime? ExpirationDate { get; set; }
        /// 
        /// 截止访视
        /// 
        public decimal? ExpirationVisitNum { get; set; }
        /// 
        /// 访视计划ID
        /// 
        public Guid? VisitStageId { get; set; }
        /// 
        /// 是否生效
        /// 
        public int? IsTakeEffect { get; set; }
        /// 
        /// 创建时间
        /// 
        public DateTime CreateTime { get; set; }
        /// 
        /// 生效时间
        /// 
        public DateTime? EffectOfTime { get; set; }
        /// 
        /// 创建人
        /// 
        public Guid CreateUserId { get; set; }
        public string? SubjectVisitName { get; set; }
        /// 
        /// 阅片配置的类型
        /// 
        public ReadingSetType ReadingSetType { get; set; }
        /// 
        /// 中心Id
        /// 
        public List SiteIds { get; set; }
        /// 
        /// 中心name
        /// 
        public List SiteCodes { get; set; }
        /// 
        /// 计划条数
        /// 
        public int PlanCount { get; set; }
        public bool IsGlobal { get; set; }
    }
    public class GetReadingVisitListOutDto
    {
        public Guid VisitStageId { get; set; }
        public decimal VisitNum { get; set; }
        public string VisitName { get; set; } = string.Empty;
    }
    public class GetReadingVisitListInDto
    {
        /// 
        /// 项目ID
        /// 
        public Guid TrialId { get; set; }
        /// 
        /// 配置ID
        /// 
        public Guid? ReadingPeriodSetId { get; set; }
        /// 
        /// 阅片配置的类型
        /// 
        public ReadingSetType ReadingSetType { get; set; }
        public Guid? TrialReadingCriterionId { get; set; }
    }
    public class SetReadingPeriodSetEffect
    {
        /// 
        /// 项目ID
        /// 
        public Guid Id { get; set; }
        /// 
        /// 设置阅片是否生效
        /// 
        public ReadingPeriodStatus IsTakeEffect { get; set; }
    }
    public class ReadingPeriodSetQuery:PageInput
    {
        /// 
		/// 截止访视
		/// 
		public decimal? ExpirationVisitNum { get; set; }
        /// 
		/// 项目ID
		/// 
		[NotDefault]
        public Guid TrialId { get; set; }
        /// 
        /// 阅片期名称
        /// 
        public string? ReadingPeriodName { get; set; }
        public Guid? TrialReadingCriterionId { get; set; }
    }
}