using IRaCIS.Core.Domain.Share;
using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.Service.Reading.Dto
{
    public class IRConfirmMedicalReviewInDto
    {
        public Guid TaskMedicalReviewId { get; set; }
        /// 
        /// 阅片人是否认同
        /// 
        public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; }
        /// 
		/// 不同意重阅原因
		/// 
		public string DisagreeReason { get; set; } = string.Empty;
        /// 
        /// 是否申请重阅
        /// 
        public bool IsApplyHeavyReading { get; set; } = false;
    }
    public class GetNextIRMedicalFeedbackInDto
    {
        /// 
        /// 项目Id
        /// 
        [NotDefault]
        public Guid TrialId { get; set; }
        public Guid TrialReadingCriterionId { get; set; }
        public Guid TaskMedicalReviewId { get; set; }
    }
    public class GetIRMedicalFeedbackListInDto : PageInput
    {
        /// 
        /// 项目Id
        /// 
        [NotDefault]
        public Guid TrialId { get; set; }
        public bool? IsUrgent { get; set; }
        public Guid? SubjectId { get; set; }
        public MedicalReviewAuditState? AuditState { get; set; }
        public string SubjectCode { get; set; } = string.Empty;
        public string TaskBlindName { get; set; } = string.Empty;
        public ReadingCategory? ReadingCategory { get; set; }
        /// 
        /// 审核建议
        /// 
        public AuditAdvice? AuditAdviceEnum { get; set; }
        /// 
        /// 阅片人是否认同
        /// 
        public MedicalReviewDoctorUserIdea? DoctorUserIdeaEnum { get; set; }
        /// 
        /// 是否关闭对话
        /// 
        public bool? IsClosedDialog { get; set; }
        /// 
        /// 是否有问题
        /// 
        public bool? IsHaveQuestion { get; set; }
        /// 
        /// 医学审核对话关闭原因
        /// 
        public MedicalDialogClose? MedicalDialogCloseEnum { get; set; }
        /// 
        /// 无效的 为True无效
        /// 
        public bool? IsInvalid { get; set; }
        public Guid? TrialReadingCriterionId { get; set; }
        /// 
        /// 获取不加急的
        /// 
        public bool IsNotHaveSigned { get; set; } = false;
    }
    public class GetIRMedicalFeedbackListOutDto
    {
        public Guid Id { get; set; }
        public bool IsUrgent { get; set; }
        /// 
        /// 医学审核对话关闭原因
        /// 
        public MedicalDialogClose MedicalDialogCloseEnum { get; set; }
        /// 
        /// 审核 质询状态
        /// 
        public MedicalReviewAuditState AuditState { get; set; }
        public string SubjectCode { get; set; }
        public string TaskBlindName { get; set; }
        /// 
        /// 阅片类别
        /// 
        public ReadingCategory ReadingCategory { get; set; }
        public DateTime? FirstReplyTime { get; set; }
        public DateTime? LastReplyTime { get; set; }
        /// 
        /// 审核建议
        /// 
        public AuditAdvice AuditAdviceEnum { get; set; }
        /// 
        /// 阅片人是否认同
        /// 
		public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; }
        /// 
		/// 保存结论时间
		/// 
		public DateTime? SaveConclusionTime { get; set; }
        /// 
        /// 是否关闭对话
        /// 
        public bool IsClosedDialog { get; set; }
        /// 
        /// 是否有问题
        /// 
        public bool IsHaveQuestion { get; set; } = false;
        public Guid VisitTaskId { get; set; }
        /// 
        /// 无效的 为True无效
        /// 
        public bool IsInvalid { get; set; }
        public TaskState TaskState { get; set; }
        public Guid SubjectId { get; set; }
        public Guid TrialReadingCriterionId { get; set; }
        public string TrialReadingCriterionName { get; set; }
        /// 
        /// 阅片工具
        /// 
        public ReadingTool? ReadingTool { get; set; }
        /// 
        /// 任务展示访视 读片任务显示是否顺序
        /// 
        public ReadingOrder IsReadingTaskViewInOrder { get; set; }
        /// 
        /// 阅片是否显示受试者信息
        /// 
        public bool IsReadingShowSubjectInfo { get; set; } = false;
        /// 
        /// IR阅片页面是否可以查看既往任务结果
        /// 
        public bool IsReadingShowPreviousResults { get; set; } = false;
        public int? DigitPlaces { get; set; } = 2;
        public bool IseCRFShowInDicomReading { get; set; } = false;
        public CriterionType CriterionType { get; set; }
    }
    public class FinishMedicalReviewInDto
    {
        public Guid TaskMedicalReviewId { get; set; }
    }
    public class GetMedicalReviewDialogOutDto
    {
        /// 
        /// 对话内容
        /// 
        public string Content { get; set; }
        /// 
        /// 用户角色
        /// 
        public string UserTypeShortName { get; set; }
        /// 
        /// 医学审核对话关闭原因
        /// 
        public MedicalDialogClose? MedicalDialogCloseEnum { get; set; }
        /// 
        /// 用户角色枚举
        /// 
        public int UserTypeEnumInt { get; set; }
        /// 
        /// 创建人
        /// 
        public Guid CreateUserId { get; set; }
        /// 
        /// 创建时间
        /// 
        public DateTime CreateTime { get; set; }
        /// 
        /// 阅片人是否认同
        /// 
        public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } = MedicalReviewDoctorUserIdea.defalut;
        /// 
        /// 是否有问题
        /// 
        public bool IsHaveQuestion { get; set; } = false;
        /// 
        /// 质询问题
        /// 
        public string Questioning { get; set; } = string.Empty;
        /// 
        /// 审核建议
        /// 
        public AuditAdvice AuditAdviceEnum { get; set; } = AuditAdvice.None;
        /// 
        /// 不同意重阅原因
        /// 
        public string DisagreeReason { get; set; } = string.Empty;
        /// 
        /// 是否申请重阅
        /// 
        public bool? IsApplyHeavyReading { get; set; }
        /// 
        /// 是否是当前用户
        /// 
        public bool IsCurrentUser { get; set; }
        public string CreateUserName { get; set; }
        /// 
		/// 图片路径
		/// 
		public string ImagePath { get; set; } = string.Empty;
        public List FileList { get; set; } = new List();
    }
    public class GetMedicalReviewDialogInDto
    {
        [NotDefault]
        public Guid TaskMedicalReviewId { get; set; }
    }
    public class IRSendMedicalReviewDialogInDto
    {
        public Guid TrialId { get; set; }
        public string RequestReReadingReason { get; set; } = string.Empty;
        public Guid TaskMedicalReviewId { get; set; }
        public string Content { get; set; } = string.Empty;
        /// 
		/// 阅片人是否认同
		/// 
		public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } = MedicalReviewDoctorUserIdea.defalut;
        /// 
        /// 不同意重阅原因
        /// 
        public string DisagreeReason { get; set; } = string.Empty;
        public bool? IsCopyOrigenalForms { get; set; } = false;
        public bool? IsCopyFollowForms { get; set; } = false;
        /// 
        /// 是否申请重阅
        /// 
        public bool? IsApplyHeavyReading { get; set; }
        public List FileList { get; set; } = new List();
        public string FileName { get; set; } = string.Empty;
    }
    public class SendMedicalReviewDialogInDto
    {
        public Guid TaskMedicalReviewId { get; set; }
        public string Content { get; set; } = string.Empty;
        /// 
        /// 是否有问题
        /// 
        public bool IsHaveQuestion { get; set; } = false;
        /// 
        /// 质询问题
        /// 
        public string Questioning { get; set; } = string.Empty;
        /// 
        /// 审核建议
        /// 
        public AuditAdvice AuditAdviceEnum { get; set; } = AuditAdvice.None;
    }
    public class SaveMedicineQuestionInDto
    {
        public Guid TaskMedicalReviewId { get; set; }
        public Guid VisitTaskId { get; set; }
        public List QuestionAnswerList { get; set; }
    }
    public class MedicineQuestionAnswer
    {
        public Guid Id { get; set; }
        public string Answer { get; set; }
    }
    public class GetMedicalReviewReadingTaskInDto
    {
        public Guid TrialId { get; set; }
        public Guid TrialReadingCriterionId { get; set; }
        public Guid TaskMedicalReviewId { get; set; }
    }
    public class GetMedicalReviewReadingTaskOutDto
    {
        //阅片类型 
        public ReadingMethod ReadingType { get; set; }
        public string SubjectCode { get; set; }
        public string TaskBlindName { get; set; }
        public string ReadingUser { get; set; }
        public Guid SubjectId { get; set; }
        public ReadingOrder IsReadingTaskViewInOrder { get; set; }
        public Guid VisitTaskId { get; set; }
        public Arm ArmEnum { get; set; }
        public bool IsExistsClinicalData { get; set; }
        public MedicalReviewAuditState AuditState { get; set; }
        public bool IsSendMessage { get; set; }
        public GetOncologyReadingInfoOutDto OncologyInfo { get; set; }
        public GetGlobalReadingInfoOutDto GlobalInfo { get; set; }
        public GetJudgeReadingInfoOutDto JudgeInfo { get; set; }
        /// 
        /// 是否关闭
        /// 
        public bool IsClosedDialog { get; set; }
        public List TaskList { get; set; } = new List();
        public List QuestionAnswerList { get; set; } = new List();
        public MedicalReviewInfo MedicalReviewInfo { get; set; }
    }
    public class ClosedMedicalReviewDialogInDto
    {
        public Guid TaskMedicalReviewId { get; set; }
        /// 
        /// 是否关闭
        /// 
        public bool IsClosedDialog { get; set; }
        /// 
        /// 医学审核对话关闭原因
        /// 
        public MedicalDialogClose MedicalDialogCloseEnum { get; set; }
        /// 
        /// 对话关闭原因
        /// 
        public string DialogCloseReason { get; set; } = string.Empty;
    }
    public class SaveMedicalReviewInfoInDto
    {
        public bool IsSendDialog { get; set; }
        public Guid TaskMedicalReviewId { get; set; }
        public List FileList { get; set; } = new List();
        /// 
        /// 是否有问题
        /// 
        public bool IsHaveQuestion { get; set; } = false;
        /// 
        /// 质询问题
        /// 
        public string Questioning { get; set; } = string.Empty;
        ///// 
        ///// 图片路径
        ///// 
        //public string ImagePath { get; set; } = string.Empty;
        ///// 
        ///// 文件名称
        ///// 
        //public string FileName { get; set; } = string.Empty;
        /// 
        /// 审核建议
        /// 
        public AuditAdvice AuditAdviceEnum { get; set; }
    }
    public class MedicalReviewInfo
    {
        public Guid TaskMedicalReviewId { get; set; }
        public Guid VisitTaskId { get; set; }
        /// 
        /// 是否有问题
        /// 
        public bool IsHaveQuestion { get; set; } = false;
        /// 
        /// 质询问题
        /// 
        public string Questioning { get; set; } = string.Empty;
        public List FileList { get; set; } = new List();
        /// 
        /// 审核建议
        /// 
        public AuditAdvice AuditAdviceEnum { get; set; }
        public MedicalReviewAuditState AuditState { get; set; }
        /// 
        /// 是否关闭
        /// 
        public bool IsClosedDialog { get; set; }
        public bool IsSendMessage { get; set; }
    }
    public class ReadingMedicineQuestion
    {
        /// 
        /// 答案
        /// 
        public string Answer { get; set; }
        public Guid Id { get; set; }
        /// 
        /// 类型
        /// 	
		public string Type { get; set; }
        /// 
        /// 父问题触发值
        /// 
        public string ParentTriggerValue { get; set; } = string.Empty;
        /// 
        /// 问题名称
        /// 
        public string QuestionName { get; set; }
        /// 
        /// 问题英文名称
        /// 
        public string QuestionEnName { get; set; } = string.Empty;
        /// 
        /// 类型值
        /// 
        public string TypeValue { get; set; }
        /// 
        /// 是否启用
        /// 
        public bool IsEnable { get; set; }
        /// 
        /// 是否必须
        /// 
        public bool IsRequired { get; set; }
        /// 
        /// 排序
        /// 
        public int ShowOrder { get; set; }
        /// 
        /// 父问题
        /// 
        public Guid? ParentId { get; set; }
        /// 
        /// 是否确认
        /// 
        public bool? IsConfirm { get; set; }
        /// 
        /// 语言类型
        /// 
        public LanguageType LanguageType { get; set; } = LanguageType.Chinese;
        public List Childrens { get; set; }
    }
    public class TaskInfo
    {
        public Guid? TaskId { get; set; }
        public decimal VisitTaskNum { get; set; }
        /// 
        /// 是否是当前任务
        /// 
        public bool IsCurrentTask { get; set; } = false;
        /// 
        /// 任务名称
        /// 
        public string TaskName { get; set; }
        /// 
        /// 是否有全局更新
        /// 
        public bool IsGlobalChange { get; set; } = false;
        /// 
        /// 盲态名称
        /// 
        public string TaskBlindName { get; set; }
        public Arm ArmEnum { get; set; }
        /// 
        /// 评估结果
        /// 
        public string EvaluationResult { get; set; }
        public ReadingCategory ReadingCategory { get; set; }
        public Guid? SourceSubjectVisitId { get; set; }
        public Guid? SouceReadModuleId { get; set; }
        public Guid? OtherTaskId { get; set; }
        public Guid? GlobalTaskId { get; set; }
        public string? GlobalTaskName { get; set; }
        public Guid? JudgeTaskId { get; set; }
        public string? JudgeTaskName { get; set; }
        public Arm OtherArmEnum { get; set; }
        //public Guid? JudgeVisitTaskId { get; set; }
        //public Guid? JudgeResultTaskId { get; set; }
        public Arm? JudgeResultArm { get; set; }
        public Guid SubjectId { get; set; }
        /// 
        /// 肿瘤学结果
        /// 
        public string OncologyEvaluationResult { get; set; } = string.Empty;
        /// 
        /// 肿瘤学原因
        /// 
        public string OncologyEvaluationReason { get; set; } = string.Empty;
        public List JudgeQuestionAnswerInfoList { get; set; }
    }
    public class JudgeQuestionAnswerInfo
    {
        public Guid VisitTaskId { get; set; }
        public string QuestionName { get; set; }
        /// 
        /// 问题英文名称
        /// 
        public string QuestionEnName { get; set; } = string.Empty;
        public string Answer { get; set; }
        /// 
        /// 排序
        /// 
        public int ShowOrder { get; set; }
        /// 
        /// 字典code
        /// 
        public string DictionaryCode { get; set; } = string.Empty;
        /// 
        /// 问题类型
        /// 
        public TableQuestionType? QuestionGenre { get; set; }
    }
}