using IRaCIS.Core.Domain.Share;
using MassTransit;
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
{
    #region 阅片问题


    public class ReadingReportDto
    {
        public Guid Id
        {
            get
            {
                return Guid.NewGuid();
            }
        }

        public Guid QuestionId { get; set; }

        public Guid TableQuestionId { get; set; }

        public int ShowOrder { get; set; }


        /// <summary>
        /// 是否显示在Dicom阅片中
        /// </summary>
        public bool IsShowInDicom { get; set; } = false;

        public decimal RowIndex { get; set; }

        /// <summary>
		/// 问题类型
		/// </summary>
		public TableQuestionType? QuestionGenre { get; set; }

        /// <summary>
        /// 问题类型
        /// </summary>
        public TableQuestionType? TableQuestionType { get; set; }

        /// <summary>
        /// 字典code
        /// </summary>
        public string DictionaryCode { get; set; }

        /// <summary>
		/// 问题类型
		/// </summary>
		public QuestionType? QuestionType { get; set; }

        public string GroupName { get; set; }

        public string QuestionName { get; set; }

        public bool IsCanEditPosition { get; set; } = false;


        public string SplitOrMergeLesionName { get; set; }

        public SplitOrMergeType? SplitOrMergeType { get; set; }

        /// <summary>
        /// 类型
        /// </summary>
        public string Type { get; set; }


        public QuestionMark? QuestionMark { get; set; }


        /// <summary>
        /// 类型值
        /// </summary>
        public string TypeValue { get; set; }

        /// <summary>
        /// 序号标记
        /// </summary>
        public string OrderMark { get; set; } = string.Empty;

        /// <summary>
		/// 数值类型
		/// </summary>
		public ValueOfType? ValueType { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        public ValueUnit? Unit { get; set; }

        public List<TaskQuestionAnswer> Answer { get; set; } = new List<TaskQuestionAnswer>();

        public List<ReadingReportDto> Childrens { get; set; } = new List<ReadingReportDto>();
    }


    public class TaskQuestionAnswer
    {
        public string TaskName { get; set; }

        public Guid VisitTaskId { get; set; }

        public string Answer { get; set; }

       
    }


    public class GetReadingReportEvaluationOutDto
    {

        public  object ReportCalculateResult{ get; set; }
        
        public object CalculateResult { get; set; }
        public ReadingTaskState ReadingTaskState { get; set; }

        public List<VisitTaskInfo> VisitTaskList { get; set; }

        public List<ReadingReportDto> TaskQuestions { get; set; }
    }

    public class VisitTaskGroupAnswerDto
    {
        public Guid VisitTaskId { get; set; }

        public List<VisitTaskGroupInfo> Questions { get; set; }

    }

    public class VisitTaskGroupInfo
    {
        public Guid QuestionId { get; set; }

        public string QuestionName { get; set; }

        public string GroupName { get; set; }

        public int ShowOrder { get; set; }

     

        public List<VisitTaskQuestionInfo> QuestionList = new List<VisitTaskQuestionInfo>();
    }


    public class VisitTaskQuestionInfo
    {
        public Guid QuestionId { get; set; }


        public string QuestionName { get; set; }

        public string GroupName { get; set; }

        public int ShowOrder { get; set; }

        public string Answer { get; set; } = string.Empty;

        public List<VistTaskTableQuestionRowInfo> TableRowQuestionList = new List<VistTaskTableQuestionRowInfo>();
    }


    public class VistTaskTableQuestionRowInfo
    {
        public decimal RowIndex { get; set; }

        /// <summary>
        /// 序号标记
        /// </summary>
        public string OrderMark { get; set; } = string.Empty;


        public List<VistTaskTableQuestionInfo> TableQuestionList = new List<VistTaskTableQuestionInfo>();
    }


    public class VistTaskTableQuestionInfo
    {
        public Guid QuestionId { get; set; }

        public Guid TableQuestionId { get; set; }

        public string QuestionName { get; set; }

   

        public int ShowOrder { get; set; }

        public string Answer { get; set; } = string.Empty;
    }



    public class VisitTaskInfo
    {
        public Guid VisitTaskId { get; set; }

        public string BlindName { get; set; }

        public bool IsBaseLine { get; set; }

        public string TaskName { get; set; }

        public decimal VisitTaskNum { get; set; }

        public bool IsCurrentTask { get; set; }
    }

    public class MergeLesionInDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid QuestionId { get; set; }

        public Guid MainRowId { get; set; }

        public Guid MergeRowId { get; set; }


    }

    public class SplitLesionInDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid QuestionId { get; set; }

        public Guid RowId { get; set; }
    }


    public class GetReadingToolInDto
    {
        public Guid VisitTaskId { get; set; }

    }

    public class GetReadingToolOutDto
    {
        public ReadingTool? ReadingTool { get; set; }
    }
    public class ChangeDicomReadingQuestionAnswerInDto
    {
        public Guid VisitTaskId { get; set; }

        public List<ChangeDicomReadingQuestionAnswerDto> Answers { get; set; }
    }


    public class ChangeDicomReadingQuestionAnswerDto
    {
        public Guid Id { get; set; }

        public string Answer { get; set; }
    }
    public class DicomReadingQuestionAnswer : ReadingQuestionTrial
    {
        public string Answer { get; set; }

        public List<DicomReadingQuestionAnswer> Childrens = new List<DicomReadingQuestionAnswer>();
    }

    public class DeleteReadingRowAnswerInDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid QuestionId { get; set; }

        public decimal RowIndex { get; set; }
    }

    public class GetDicomReadingQuestionAnswerInDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid TrialId { get; set; }
    }

    public class CopyTableAnswerRowInfo : ReadingTableAnswerRowInfo
    {
        public Guid OriginalId { get; set; }
    }
    public class CopyTableAnswerDto
    {
        public decimal RowIndex { get; set; }

        /// <summary>
        /// 问题标识
        /// </summary>
        public QuestionMark? QuestionMark { get; set; }


        /// <summary>
        /// 问题Id
        /// </summary>

        public Guid QuestionId { get; set; }


        public Guid RowId { get; set; }

        /// <summary>
        /// 表格问题Id
        /// </summary>
        public Guid TableQuestionId { get; set; }

        /// <summary>
        /// 项目Id
        /// </summary>
        public Guid TrialId { get; set; }

        public string Answer { get; set; }
    }
    public class GetReadingReportEvaluationInDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid TrialId { get; set; }
    }

    public class GetReadingQuestionAndAnswerOutDto
    {

        public bool IsBaseLineTask { get; set; }

        public ReadingTaskState ReadingTaskState { get; set; }

        public List<TrialReadQuestionData> SinglePage { get; set; }

        public List<TrialReadQuestionData> MultiPage { get; set; }

        public List<TrialReadQuestionData> PublicPage { get; set; }
    }

    public class TrialReadQuestionData : ReadingQuestionTrial
    {

        public bool IsPage { get; set; } = false;

        public string Answer { get; set; }

        /// <summary>
        /// 分页名称
        /// </summary>
        public string PageName { get; set; }

        /// <summary>
        /// 是否公共分页
        /// </summary>
        public bool? IsPublicPage { get; set; } = false;

        public int? PageShowOrder { get; set; }

      

        public List<TrialReadQuestionData> Childrens { get; set; }

        public TrialReadTableQuestion TableQuestions { get; set; }


    }

    public class TableAnsweRowInfo : ReadingTableAnswerRowInfo
    {
        public string SplitName { get; set; }

        public string MergeName { get; set; }


    }
    public class ReadingTableQuestionAnswerInfo : ReadingTableQuestionAnswer
    {
        public int ShowOrder { get; set; }
    }

    public class TrialReadTableQuestion
    {
        public List<TableQuestionTrial> Questions { get; set; }

        public List<Dictionary<string,string>> Answers { get; set; }
    }


    public class TableQuestionTrial:ReadingTableQuestionTrial
    {
        public List<GetTrialReadingQuestionOutDto> RelationQuestions { get; set; } = new List<GetTrialReadingQuestionOutDto>();
    }


    public class GetTableAnswerRowInfoOutDto
    {
        public Guid Id { get; set; }

        public Guid RowId { get; set; }

        /// <summary>
        /// QuestionId
        /// </summary>
		public Guid QuestionId { get; set; }

        /// <summary>
        /// VisitTaskId
        /// </summary>
        public Guid VisitTaskId { get; set; }

        /// <summary>
        /// TrialId
        /// </summary>
        public Guid TrialId { get; set; }


        /// <summary>
        /// InstanceId
        /// </summary>
        public Guid? InstanceId { get; set; }

        /// <summary>
        /// SeriesId
        /// </summary>
        public Guid? SeriesId { get; set; }


        /// <summary>
        /// StudyId
        /// </summary>
        public Guid? StudyId { get; set; }

        public bool  IsCanEditPosition { get; set; }

        /// <summary>
        /// RowIndex
        /// </summary>
        public string RowIndex { get; set; }

        /// <summary>
        /// MeasureData
        /// </summary>
        public string MeasureData { get; set; }

        public int ShowOrder { get; set; }

    }

    public class GetTableAnswerRowInfoInDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid? QuestionId { get; set; }
    }
    public class GetReadingQuestionAndAnswerInDto
    {

        public Guid TrialId { get; set; }

        public Guid VisitTaskId { get; set; }
    }

    #endregion
    public class GetHistoryGlobalInfoOutDto
    {
        public Guid VisitTaskId { get; set; }

        public string TaskName { get; set; }

        public ReadingTaskState ReadingTaskState { get; set; }

        public decimal VisitTaskNum { get; set; }
    }

    public class GetHistoryGlobalInfoInDto
    {
        public Guid VisitTaskId { get; set; }
    }


    public class SubmitOncologyReadingInfoInDto
    {
        public Guid OncologyTaskId { get; set; }
    }

    public class SubmitGlobalReadingInfoInDto
    {
        public Guid GlobalTaskId { get; set; }
    }

    public class SetOncologyQuestion
    {
        public Guid VisitTaskId { get; set; }

        /// <summary>
        /// 评估结果
        /// </summary>
        public string EvaluationResult { get; set; } = string.Empty;

        /// <summary>
        /// 评估原因
        /// </summary>
        public string EvaluationReason { get; set; } = string.Empty;
    }

    public class SetOncologyReadingInfoInDto
    {
        public Guid OncologyTaskId { get; set; }

        public List<SetOncologyQuestion> OncologyQuestionList { get; set; }
    }

    public class SaveGlobalReadingInfoInDto
    {
        public Guid GlobalTaskId { get; set; }

        public Guid SubjectId { get; set; }

        public Guid TrialId { get; set; }

        public List<SaveGlobalReadingQuestion> QuestionList { get; set; }

    }


    public class SaveGlobalReadingQuestion
    {
        public Guid? QuestionId { get; set; }

        public Guid VisitTaskId { get; set; }

        public GlobalAnswerType GlobalAnswerType { get; set; }

        public string Answer { get; set; }
    }


    public class OncologyQuestion
    {
        public Guid QuestionId { get; set; }

        public string QuestionName { get; set; }

        public string Answer { get; set; }


    }

    public class OncologyVisitTaskInfo
    {
        public Guid VisitTaskId { get; set; }

        public string VisitName { get; set; }

        public bool IsHaveChange { get; set; }

        public string VisitRemark { get; set; } = string.Empty;

        /// <summary>
        /// 评估结果
        /// </summary>
        public string EvaluationResult { get; set; } = string.Empty;

        /// <summary>
        /// 评估原因
        /// </summary>
        public string EvaluationReason { get; set; } = string.Empty;


        public List<OncologyQuestion> QuestionList { get; set; } = new List<OncologyQuestion>();

    }

    public class GetOncologyReadingInfoOutDto
    {
        public Guid OncologyTaskId { get; set; }

        /// <summary>
        /// 评估结果
        /// </summary>
        public string TrialEvaluationResult { get; set; } = string.Empty;

        /// <summary>
        /// 评估原因
        /// </summary>
        public string TrialEvaluationReason { get; set; } = string.Empty;


        /// <summary>
        /// 是否显示详情
        /// </summary>
        public bool IsShowDetail { get; set; }

        //任务阅片状态
        public ReadingTaskState ReadingTaskState { get; set; }

        public Guid GlobalTaskId { get; set; }


        public Guid SubjectId { get; set; }

        public List<OncologyVisitTaskInfo> OncologyVisits { get; set; } = new List<OncologyVisitTaskInfo>();
    }

    public class GetRelatedVisitTaskOutDto
    {
        public Guid VisitTaskId { get; set; }
        public string TaskName { get; set; }

        public bool IsBaseLineTask { get; set; }

        public string TaskBlindName { get; set; }

        public ReadingTaskState ReadingTaskState { get; set; }

        public decimal VisitTaskNum { get; set; }

        public Guid? VisitId { get; set; }

        public bool IsCurrentTask { get; set; }
    }

    public class GetVisitReadingQuestionOutDto
    {
        public Guid QuestionId { get; set; }

        public Guid QuestionName { get; set; }

        //public 
    }

    public class GetVisitReadingQuestionInDto
    {
        public Guid TrialId { get; set; }

        public Guid VisitTaskId { get; set; }
    }

    public class GetRelatedVisitTaskInDto
    {
        [NotDefault]
        public Guid VisitTaskId { get; set; }
    }

    public class GetOncologyReadingInfoInDto
    {
        public Guid VisitTaskId { get; set; }
    }

    public class GetGlobalReadingInfoInDto
    {
        public Guid VisitTaskId { get; set; }

        /// <summary>
        /// 当新答案为空的时候 是否是有原数据
        /// </summary>
        public bool UsingOriginalData { get; set; } = false;
    }

    public class GetGlobalReadingInfoOutDto
    {
        public Guid GlobalTaskId { get; set; }

        public ReadingTaskState ReadingTaskState { get; set; }

        public string GlobalUpdateType { get; set; }

        public List<GlobalVisitInfo> TaskList { get; set; }
    }

    public class GlobalVisitInfo
    {
        public string VisitName { get; set; }

        public string BlindName { get; set; }

        public Guid VisitId { get; set; }

        public Guid VisitTaskId { get; set; }

        public decimal VisitNum { get; set; }

        public Arm ArmEnum { get; set; }

        public string AgreeOrNotAnswer
        {
            get 
            {

                return this.AgreeOrNot.Select(x => x.Answer).FirstOrDefault()??string.Empty;
            }
        }

        public List<GlobalQuestionInfo> BeforeQuestionList { get; set; }

        public List<GlobalQuestionInfo> AgreeOrNot { get; set; }

        public List<GlobalQuestionInfo> AfterQuestionList { get; set; }
    }

    public class GetGlobalQuestionType
    {
        public GlobalAnswerType GlobalAnswerType { get; set; }

        public string QuestionName { get; set; }
    }
    public class GlobalQuestionInfo
    {
        public Guid? QuestionId { get; set; }

        public bool IsHaveChange { get; set; } = false;

        public string QuestionName { get; set; }

        public string Answer { get; set; }

        /// <summary>
		/// 问题类型
		/// </summary>
		public QuestionType? QuestionType { get; set; }

        /// <summary>
		/// 字典code
		/// </summary>
		public string DictionaryCode { get; set; } = string.Empty;

        /// <summary>
        /// 问题类型
        /// </summary>
        public TableQuestionType? QuestionGenre { get; set; }




        /// <summary>
        /// 答案分组
        /// </summary>
        public string AnswerGroup { get; set; } = string.Empty;

        /// <summary>
        /// 答案组合
        /// </summary>
        public string AnswerCombination { get; set; } = string.Empty;

        /// <summary>
        /// 裁判类型
        /// </summary>
        public JudgeTypeEnum JudgeType { get; set; }

        /// <summary>
        /// 类型值
        /// </summary>
        public string TypeValue { get; set; }

        /// <summary>
        /// 类型
        /// </summary>
        public string Type { get; set; }


        public GlobalAnswerType GlobalAnswerType { get; set; }
    }

    public class GetReadingImgOutDto
    {
        public string Path { get; set; }

        public string FileName { get; set; }
    }

    public class SubjectTask
    {
        public Guid SubjectId { get; set; }

        public int UnReadTaskCount { get; set; }

        public int Index { get; set; }
    }


    public class GetNextTaskInDto
    {
        public Guid? SubjectId { get; set; }

        public string SubjectCode { get; set; }=string.Empty;

        public Guid TrialId { get; set; }


        public Guid? TrialReadingCriterionId { get; set; }

        public Guid? VisistTaskId { get; set; }
    }

    public class GetReadingTaskDto
    {
        public Guid VisitTaskId { get; set; }
        public Guid VisistId { get; set; }

        public string TaskBlindName { get; set; }

        public Guid SubjectId { get; set; }

        public string SubjectCode { get; set; }=String.Empty;

        public ReadingCategory ReadingCategory { get; set; }

        public decimal VisitNum { get; set; }

        public bool IsReadingShowSubjectInfo { get; set; } = false;

        public bool IsReadingShowPreviousResults { get; set; } = false;

        public Guid TrialReadingCriterionId { get; set; }

    }

    public class GetReadingImgInDto
    {

        public Guid? SubjectId { get; set; }

        [NotDefault]
        public Guid TrialId { get; set; }

        public Guid? VisistTaskId { get; set; }
    }

    public class GetConfirmCriterionInDto
    {
        [NotDefault]
        public Guid TrialId { get; set; }


        public Guid? VisitTaskId { get; set; }
    }



    /// <summary>
    /// 返回对象
    /// </summary>
    public class GetTrialConfirmCriterionListOutDto
    {
        public Guid ReadingQuestionCriterionTrialId { get; set; }

        /// <summary>
        /// 标准
        /// </summary>
        public string ReadingQuestionCriterionTrialName { get; set; }
    }


    public class SetTrialCriterionJudgeQuestionAnswerGroupInDto
    {
        [NotDefault]
        public Guid ReadingQuestionTrialId { get; set; }


        
        public List<string> AnswerGroup { get; set; }

      
        public List<AnswerCombinationDto> AnswerCombination { get; set; }


        
        public JudgeTypeEnum JudgeType { get; set; }
    }

    public class GetTrialCriterionJudgeQuestionListOutDto
    {
        public Guid ReadingQuestionTrialId { get; set; }
        
        public string QuestionName { get; set; }


        public string PageName { get; set; }


        public string TypeValue { get; set; }

        /// <summary>
        /// 裁判类别
        /// </summary>
        public JudgeTypeEnum JudgeType { get; set; }

        /// <summary>
        /// 答案分组
        /// </summary>
        public List<string> AnswerGroup { get; set; }

        /// <summary>
        /// 答案组合
        /// </summary>
        public List<AnswerCombinationDto> AnswerCombination { get; set; }


    }

    public class GetTrialCriterionJudgeQuestionListInDto
    {
        [NotDefault]
        public Guid TrialId { get; set; }

        [NotDefault]
        public Guid TrialReadingCriterionId { get; set; }
    }

    public class VisitTaskArm
    {
        public Arm ArmEnum { get; set; }


        public Guid VisitTaskId { get; set; }
    }

    public class GetJudgeReadingInfoOutDto
    {
       public Guid? JudgeResultTaskId { get; set; }

       public List<JudgeReadingInfoDto> VisitInfoList { get; set; }
       
       public List<VisitTaskArm> VisitTaskArmList { get; set; }


        public ReadingTaskState ReadingTaskState { get; set; }

        /// <summary>
        /// 裁判结果的备注
        /// </summary>
        public string JudgeResultRemark { get; set; }


        public string JudgeResultImagePath { get; set; } = string.Empty;
    }

    public class GetReadingPastResultListOutDto
    {
        public Guid VisitTaskId { get; set; }
        public string TaskName { get; set; }

        public string TaskBlindName { get; set; }

        public decimal VisitTaskNum { get; set; }
    }

    public class GetJudgeReadingPastResultListInDto
    {
        [NotDefault]
        public Guid VisitTaskId { get; set; }
    }

    public class GetReadingPastResultListInDto
    {
        [NotDefault]
        public Guid VisitTaskId { get; set; }
    }

    public class SaveJudgeVisitTaskResult
    {
        public Guid VisitTaskId { get; set; }

        public Guid JudgeResultTaskId { get; set; }

        public string JudgeResultRemark { get; set; } = string.Empty;

        public string JudgeResultImagePath { get; set; } = string.Empty;
    }

    public class GetReadingSubjectInfoOutDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid SubjectId { get; set; }

        public string SubjectCode { get; set; } = string.Empty;

        public ReadingCategory ReadingCategory { get; set; }

        public string TaskBlindName { get; set; } = string.Empty;

        public bool IsReadingShowPreviousResults { get; set; } = false;

        public bool IsReadingShowSubjectInfo { get; set; } = false;
    }

    public class GetReadingSubjectInfoInDto
    {
        public Guid VisitTaskId { get; set; }
    }
    public class GetJudgeReadingInfo
    {
        public Guid VisitTaskId { get; set; }
    }

    public class JudgeReadingInfoDto
    {
        public string VisitName { get; set; }

        public Guid VisitId { get; set; }

     
      
        public List<JudgeReadingQuestion> VisitTaskInfoList { get; set; }


    }


    public class JudgeReadingQuestion
    {
        public Arm ArmEnum { get; set; }


        public Guid GlobalVisitTaskId { get; set; }

        public Guid VisitTaskId { get; set; }

        public List<JudgeQuestion> JudgeQuestionList { get; set; }
    }

    public class JudgeQuestion
    {
        public Guid QuestionId { get; set; }


        public string QuestionName { get; set; }

        public dynamic Answer { get; set; }

        public JudgeReadingQuestionType QuestionType { get; set; } = JudgeReadingQuestionType.Question;

    }

    public class GetSystemReadingQuestionInDto
    {
        [NotDefault]
        public Guid Id { get; set; }

      
    }

    public class VerifyVisitTaskDto
    {
        public QuestionType QuestionType { get; set; }

        public Func<ReadingCalculateDto, Task<string>> Fun { get; set; }
    }

    public class GetReportVerifyInDto
    {
       public Guid  VisitTaskId { get; set; }
    }



    public class VerifyVisitTaskQuestionsInDto
    {
        /// <summary>
        /// 任务Id
        /// </summary>
        public Guid VisitTaskId { get; set; }
    }

    public class TableQuestionData
    {
        public Guid TableQuestionId { get; set; }

        public int Count { get; set; }

    }

    public class SubmitTableQuestionOutDto
    {
        public Guid RowId { get; set; }
    }
    public class SubmitTableQuestionInDto
    {
        public Guid QuestionId { get; set; }

        public decimal RowIndex { get; set; }

        /// <summary>
		/// 任务Id
		/// </summary>
		public Guid VisitTaskId { get; set; }

        /// <summary>
        /// 项目Id
        /// </summary>
        public Guid TrialId { get; set; }

        public string MeasureData { get; set; }

        public Guid? SeriesId { get; set; }

        public Guid? InstanceId { get; set; }

        public Guid? StudyId { get; set; }

        public bool IsCanEditPosition { get; set; }

        public List<SubmitTableQuestionInfo> AnswerList { get; set; }

    }

    public class SubmitTableQuestionInfo
    {
        public Guid TableQuestionId { get; set; }

        public string Answer { get; set; }=string.Empty;
    }

    public class GetTrialReadingQuestionInDto
    {
        [NotDefault]
        public Guid ReadingQuestionCriterionTrialId { get; set; }

        public Guid? VisitTaskId { get; set; }


        public FormType? FormType { get; set; }
    }

    public class SubmitDicomVisitTaskInDto
    {
        public Guid VisitTaskId { get; set; }
    }

    /// <summary>
    /// 
    /// </summary>
    public class SubmitVisitTaskQuestionsInDto
    {
        [NotDefault]
        public Guid TrialId { get; set; }
        [NotDefault]
        public Guid VisitTaskId { get; set; }
        [NotDefault]
        public Guid ReadingQuestionCriterionTrialId { get; set; }

        public List<QuestionAnswer> AnswerList { get; set; } = new List<QuestionAnswer>();

        
    }

    public class SaveJudgeTaskDto
    {
        public List<Guid> VisitTaskIds { get; set; }
    }

    public class QuestionAnswer
    {
        public Guid ReadingQuestionTrialId { get; set; }

        public string Answer { get; set; }
    }


    //public class GetTrialReadingQuestionDto
    //{
    //    public Guid Id { get; set; }

    //    public string GroupName { get; set; }

    //    List<GetTrialReadingQuestionOutDto> Questions { get; set; }
    //}

    public class GroupTaskAnswerDto
    {
        public Guid QuestionId { get; set; }

        public string AnswerGroup { get; set; }


        public string AnswerCombination { get; set; }

        public JudgeTypeEnum JudgeType { get; set; }

        public List<string> TaskAnswerList { get; set; }
    }

    public class TaskGroupAnswer
    {
        public string Answer { get; set; }
    }

    public class AnswerGroup
    {
        public Guid GroupId { get; set; }

        public string GroupValue { get; set; }
    }


    public class AnswerCombinationDto
    {
        public List<string> AnswerGroupA { get; set; }

        public List<string> AnswerGroupB { get; set; }
    }

    public class TaskAnswerDto
    {
        public Guid VisitTaskId { get; set; }

        public Guid QuestionId { get; set; }

        public string Answer { get; set; }

        public string AnswerGroup { get; set; }

        public string AnswerCombination { get; set; }

        public JudgeTypeEnum JudgeType { get; set; }
    }


    public class GetSystemReadingQuestionPageDto
    {
        public List<GetSystemReadingQuestionOutDto> SinglePage { get; set; }

        public List<GetSystemReadingQuestionOutDto> MultiPage { get; set; }

        public List<GetSystemReadingQuestionOutDto> PublicPage { get; set; }
    }

    public class GetTrialReadingQuestionPageDto
    {
        public List<GetTrialReadingQuestionOutDto> SinglePage { get; set; }

        public List<GetTrialReadingQuestionOutDto> MultiPage { get; set; }

        public List<GetTrialReadingQuestionOutDto> PublicPage{ get; set; }
    }

    public class TableQuestionDataInfo
    {
        /// <summary>
        /// 
        /// </summary>
        public Guid Id { get; set; }

        /// <summary>
        /// 问题ID
        /// </summary>
		public Guid ReadingQuestionId { get; set; }

        /// <summary>
        /// 字典code
        /// </summary>
        public string DictionaryCode { get; set; } = string.Empty;


        /// <summary>
		/// 问题类型
		/// </summary>
		public TableQuestionType? QuestionGenre { get; set; }

        /// <summary>
        /// Type
        /// </summary>
        public string Type { get; set; }

        /// <summary>
        /// ParentId
        /// </summary>
        public Guid? ParentId { get; set; }

        /// <summary>
        ///父问题触发值
        /// </summary>
        public string ParentTriggerValue { get; set; }

        /// <summary>
        /// 问题名称
        /// </summary>
        public string QuestionName { get; set; }

        /// <summary>
        /// IsRequired
        /// </summary>
        public IsRequired IsRequired { get; set; }

        /// <summary>
        /// 排序号
        /// </summary>
        public int ShowOrder { get; set; }

        /// <summary>
        /// 值
        /// </summary>
        public string TypeValue { get; set; }

        /// <summary>
        /// 是否启用
        /// </summary>
        public bool IsEnable { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 创建用户
        /// </summary>
        public Guid CreateUserId { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }

        /// <summary>
        /// 显示父问题
        /// </summary>
        public Guid? RelevanceId { get; set; }

        /// <summary>
        /// 显示父问题的值
        /// </summary>
        public string RelevanceValue { get; set; }

        /// <summary>
        /// 是否显示
        /// </summary>
        public int ShowQuestion { get; set; }

        /// <summary>
        /// 最大问题数
        /// </summary>
        public int? MaxRowCount { get; set; }

        /// <summary>
        /// 数据表名称
        /// </summary>
        public string DataTableName { get; set; }

        /// <summary>
        /// 数据列
        /// </summary>
        public string DataTableColumn { get; set; }


        /// <summary>
        /// 关联父问题
        /// </summary>
        public Guid? DependParentId { get; set; }

        /// <summary>
        /// 是否关联
        /// </summary>
        public IsDepend IsDepend { get; set; }

        /// <summary>
        /// 表格问题类型
        /// </summary>
        public TableQuestionType? TableQuestionType { get; set; }


        /// <summary>
        /// 问题标识
        /// </summary>
        public QuestionMark? QuestionMark { get; set; }
    }


    public class GetSystemReadingQuestionOutDto
    {



        public Guid Id { get; set; }

        /// <summary>
		/// 系统标准Id
		/// </summary>
		public Guid ReadingQuestionCriterionSystemId { get; set; }


        /// <summary>
		/// 问题类型
		/// </summary>
		public TableQuestionType? QuestionGenre { get; set; }

        /// <summary>
        /// 字典code
        /// </summary>
        public string DictionaryCode { get; set; }


        /// <summary>
        /// 类型
        /// </summary>
        public string Type { get; set; }

        /// <summary>
        /// 父问题触发
        /// </summary>
        public string ParentTriggerValue { get; set; }

        /// <summary>
        /// 问题名称
        /// </summary>
        public string QuestionName { get; set; }

        /// <summary>
        /// 是否是必须
        /// </summary>
        public IsRequired IsRequired { get; set; }

        /// <summary>
        /// 排序
        /// </summary>
        public int ShowOrder { get; set; }

        /// <summary>
        /// 父问题ID
        /// </summary>
        public Guid? ParentId { get; set; }

        /// <summary>
        /// 数据列
        /// </summary>
        public string DataTableColumn { get; set; } = string.Empty;

        /// <summary>
        /// 类型值
        /// </summary>
        public string TypeValue { get; set; }

        /// <summary>
        /// 是否启用
        /// </summary>
        public bool IsEnable { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 是否是裁判问题
        /// </summary>
        public bool IsJudgeQuestion { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }

        /// <summary>
        /// 关联ID
        /// </summary>
        public Guid? RelevanceId { get; set; }

        /// <summary>
        /// 关联Value
        /// </summary>
        public string RelevanceValue { get; set; } = string.Empty;

        /// <summary>
        /// 分组
        /// </summary>
        public string GroupName { get; set; }

        /// <summary>
        /// 图片数量
        /// </summary>
        public int ImageCount { get; set; } = 1;

        /// <summary>
        /// 是否显示
        /// </summary>
        public ShowQuestion ShowQuestion { get; set; } = ShowQuestion.Show;

        /// <summary>
        /// 最大问题数
        /// </summary>
        public int? MaxQuestionCount { get; set; }

        /// <summary>
        /// 病灶类型
        /// </summary>
        public LesionType? LesionType { get; set; }

        /// <summary>
        /// 问题类型
        /// </summary>
        public QuestionType? QuestionType { get; set; }

        /// <summary>
        /// 是否显示在Dicom阅片中
        /// </summary>
        public bool IsShowInDicom { get; set; }


     

        /// <summary>
        /// 序号标记
        /// </summary>
        public string OrderMark { get; set; } = string.Empty;


        /// <summary>
        /// 关联父问题
        /// </summary>
        public Guid? DependParentId { get; set; }

        /// <summary>
        /// 是否关联
        /// </summary>
        public IsDepend? IsDepend { get; set; }

        /// <summary>
        /// 表格问题类型
        /// </summary>
        public TableQuestionType? TableQuestionType { get; set; }


        /// <summary>
        /// 问题标识
        /// </summary>
        public QuestionMark? QuestionMark { get; set; }

        public List<GetSystemReadingQuestionOutDto> RelationQuestions { get; set; }



        //public List<TableQuestionDataInfo> TableQuestions { get; set; }

        public List<GetSystemReadingQuestionOutDto> Childrens { get; set; }
    }

    public class GetTrialReadingQuestionOutDto
    {



        /// <summary>
        /// 字典code
        /// </summary>
        public string DictionaryCode { get; set; }


        /// <summary>
		/// 问题类型
		/// </summary>
		public TableQuestionType? QuestionGenre { get; set; }

        /// <summary>
        /// 项目标准Id
        /// </summary>
        public Guid ReadingQuestionCriterionTrialId { get; set; }

        /// <summary>
        /// 项目Id
        /// </summary>
        public Guid TrialId { get; set; }

        /// <summary>
        /// 类型
        /// </summary>
        public string Type { get; set; }

        /// <summary>
        /// 父问题触发
        /// </summary>
        public string ParentTriggerValue { get; set; }

        public string GroupName { get; set; }

        /// <summary>
        /// 问题名称
        /// </summary>
        public string QuestionName { get; set; }

        /// <summary>
        /// 是否是必须
        /// </summary>
        public IsRequired IsRequired { get; set; }

        /// <summary>
        /// 排序
        /// </summary>
        public int ShowOrder { get; set; }


        public int? PageShowOrder { get; set; }

        /// <summary>
        /// 父问题ID
        /// </summary>
        public Guid? ParentId { get; set; }


        /// <summary>
        /// 类型值
        /// </summary>
        public string TypeValue { get; set; }

        /// <summary>
        /// 答案
        /// </summary>
        public string Answer { get; set; }

        /// <summary>
        /// 分页名称
        /// </summary>
		public string? PageName { get; set; }


        public bool? IsPublicPage { get; set; }

        public bool IsPage { get; set; } = false;

        /// <summary>
		/// 标准分页Id
		/// </summary>
		public Guid? ReadingCriterionPageId { get; set; }

        /// <summary>
        /// 关联ID
        /// </summary>
        public Guid? RelevanceId { get; set; }

        /// <summary>
        /// 关联Value
        /// </summary>
        public string RelevanceValue { get; set; } = string.Empty;

        /// <summary>
		/// 图片数量
		/// </summary>
		public int ImageCount { get; set; }


        /// <summary>
        /// 是否显示
        /// </summary>
        public ShowQuestion ShowQuestion { get; set; }

        /// <summary>
        /// 最大问题数
        /// </summary>
        public int? MaxQuestionCount { get; set; }

        /// <summary>
        /// 病灶类型
        /// </summary>
        public LesionType? LesionType { get; set; }

        /// <summary>
        /// 问题类型
        /// </summary>
        public QuestionType? QuestionType { get; set; }

        /// <summary>
        /// 是否显示在Dicom阅片中
        /// </summary>
        public bool IsShowInDicom { get; set; } = false;

        //public List<TableQuestionDataInfo> TableQuestions { get; set; }


        public List<GetTrialReadingQuestionOutDto> RelationQuestions { get; set; }
  

        public List<GetTrialReadingQuestionOutDto> Childrens { get; set; }


        public Guid Id { get; set; }



      

        /// <summary>
        /// 数据列
        /// </summary>
        public string DataTableColumn { get; set; } = string.Empty;

       

        /// <summary>
        /// 是否启用
        /// </summary>
        public bool IsEnable { get; set; }

        /// <summary>
        /// 创建时间
        /// </summary>
        public DateTime CreateTime { get; set; }

        /// <summary>
        /// 是否是裁判问题
        /// </summary>
        public bool IsJudgeQuestion { get; set; }

        /// <summary>
        /// 备注
        /// </summary>
        public string Remark { get; set; }

    
        /// <summary>
        /// 序号标记
        /// </summary>
        public string OrderMark { get; set; } = string.Empty;


        /// <summary>
        /// 关联父问题
        /// </summary>
        public Guid? DependParentId { get; set; }

        /// <summary>
        /// 是否关联
        /// </summary>
        public IsDepend? IsDepend { get; set; }

        /// <summary>
        /// 表格问题类型
        /// </summary>
        public TableQuestionType? TableQuestionType { get; set; }


        /// <summary>
        /// 问题标识
        /// </summary>
        public QuestionMark? QuestionMark { get; set; }




        /// <summary>
        /// 数值类型
        /// </summary>
        public ValueOfType? ValueType { get; set; }

        /// <summary>
        /// 单位
        /// </summary>
        public ValueUnit? Unit { get; set; }






    }

    ///// <summary>
    ///// 表格问题
    ///// </summary>
    //public class GetTrialReadingTableQuestion
    //{
    //    public List<> class TrialReadingTableQuestion
    //}


    //public class TrialReadingTableQuestion
    //{
        
    //}
}