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;
using static IRaCIS.Core.Domain.Models.ReadingQuestionTrial;

namespace IRaCIS.Core.Application.Service.Reading.Dto
{


	public class TumorAssessmentView: AddOrUpdateTumorAssessmentInDto
	{

    }

	public class AddOrUpdateTumorAssessmentInDto
	{

		public Guid? Id { get; set; }

		/// <summary>
		/// 标准ID
		/// </summary>
		public Guid CriterionId { get; set; }

		/// <summary>
		/// 靶病灶
		/// </summary>
		public TargetAssessment TargetLesion { get; set; }

		/// <summary>
		/// 非靶病灶
		/// </summary>
		public NoTargetAssessment NonTargetLesions { get; set; }

		/// <summary>
		/// 新病灶
		/// </summary>
		public NewLesionAssessment NewLesion { get; set; }

		/// <summary>
		/// 整体疗效
		/// </summary>
		public OverallAssessment OverallEfficacy { get; set; }

	}


	public class ColumnInfo
	{
		public string ColumnName { get; set; }

		public string ColumnKey { get; set; }

		public string DictionaryKey { get; set; }
	}

	public class GetTumorAssessmentListInDto:PageInput
	{
		//public Guid CriterionId { get; set; }

		public CriterionType CriterionType { get; set; }

		///// <summary>
		///// 靶病灶
		///// </summary>
		//public TargetAssessment? TargetLesion { get; set; }

		///// <summary>
		///// 非靶病灶
		///// </summary>
		//public NoTargetAssessment? NonTargetLesions { get; set; }

		///// <summary>
		///// 新病灶
		///// </summary>
		//public NewLesionAssessment? NewLesion { get; set; }

		///// <summary>
		///// 整体疗效
		///// </summary>
		//public OverallAssessment? OverallEfficacy { get; set; }
	}
	public class CopySystemCriterionDataInDto
	{
		public Guid SourceSystemCriterionId { get; set; }

		public Guid NewSystemCriterionId { get; set; }

		public bool IsCopyQuestion { get; set; }
	}

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

		/// <summary>
		/// 标准字典分组
		/// </summary>
		public CrterionDictionaryGroup CrterionDictionaryGroup { get; set; } = CrterionDictionaryGroup.General;
	}

	public class SetCriterionDictionaryInDto
	{
		[NotDefault]
		public Guid CriterionId { get; set; }

		public string ParentCode { get; set; }

		public List<Guid> DictionaryIds { get; set; }
	}
	public class SetAssessTypeInDto
	{

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

		public string ParentCode { get; set; }

		public List<SetCriterionDictionaryDto> DictionaryList { get; set; }

	}

	public class SetCriterionDictionaryDto
	{
		public Guid DictionaryId { get; set; }

		/// <summary>
		/// IsBaseLineUse
		/// </summary>
		public bool IsBaseLineUse { get; set; } = false;

		/// <summary>
		/// IsBaseUse
		/// </summary>
		public bool IsFollowVisitUse { get; set; } = false;
	}

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

		public bool IsFollowVisitUse { get; set; }

	}

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

		public bool IsBaseLineUse { get; set; }

	}

	public class GetAssessTypeInDto
    {
		
		public Guid? SystemCriterionId { get; set; }

		public Guid? TrialCriterionId { get; set; }

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


	public class CriterionDictionaryInfo
	{


		public CrterionDictionaryGroup CrterionDictionaryGroup { get; set; }

	    public Guid Id { get; set; }

		public Guid DictionaryId { get; set; }

		public int ShowOrder { get; set; }

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

		public string Code { get; set; }

		public string ParentCode { get; set; }

		public string ChildGroup { get; set; }

		/// <summary>
		/// IsBaseUse
		/// </summary>
		public bool IsBaseLineUse { get; set; } = false;


		/// <summary>
		/// IsBaseUse
		/// </summary>
		public bool IsFollowVisitUse { get; set; } = false;

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

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


	public class GetSystemGlobalInfoOutDto
	{
		/// <summary>
		/// 是否必须全局阅片
		/// </summary>
		public bool IsMustGlobalReading { get; set; } = false;

		public List<CriterionDictionaryInfo> DictionaryList { get; set; }
	}
	public class GetSystemOncologyInfoOutDto
	{
		public bool IsOncologyReading { get; set; }

		public List<CriterionDictionaryInfo> DictionaryList { get; set; }
	}

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

	}

	public class AddSystemCriterionDictionaryCodeInDto
	{
		public Guid SystemCriterionId { get; set; }

		[NotDefault]
		public List<string> CodeList { get; set; }
	}


	public class SetSystemGlobalInfoInDto
	{
		[NotDefault]
		public Guid SystemCriterionId { get; set; }

		public bool IsMustGlobalReading { get; set; }

		public List<SystemGlobalInfo> DictionaryList { get; set; }
	}

	public class SystemGlobalInfo
	{
		/// <summary>
		/// DictionaryId
		/// </summary>
		public Guid DictionaryId { get; set; }


		/// <summary>
		/// IsBaseLineUse
		/// </summary>
		public bool IsBaseLineUse { get; set; } = false;

		/// <summary>
		/// IsBaseUse
		/// </summary>
		public bool IsFollowVisitUse { get; set; } = false;

	}

	public class SetSystemOncologyInfoInDto
	{
		[NotDefault]
		public Guid SystemCriterionId { get; set; }

		public bool IsOncologyReading { get; set; }

		public List<Guid> DictionaryIds { get; set; }
	}

	public class GetSystemOncologyInfoInDto
	{
		[NotDefault]
		public Guid SystemCriterionId { get; set; }
	}

	public class GetSystemCriterionListOutDto
	{
		public Guid CriterionId { get; set; }

		public string CriterionName { get; set; }
	}

	public class ReadingTableQuestionTrialView:ReadingTableQuestionTrial
	{
		public int? DependShowOrder { get; set; }
	}

	public class ReadingTableQuestionSystemView : ReadingTableQuestionSystem
	{
		public int? DependShowOrder { get; set; }

	}

	
	public class ReadingTableQuestionSystemQuery
	{


		public Guid ReadingQuestionId { get; set; }

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

	}


	public class ReadingTableQuestionTrialAddOrEdit
    {

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public CustomCalculateMark? CustomCalculateMark { get; set; }


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

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public string CalculateQuestions { get; set; } = "[]";

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

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

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 限制显示
		/// </summary>
		public LimitShow LimitShow { get; set; } = LimitShow.AllShow;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }

		/// <summary>
		/// 自定义单位
		/// </summary>
		public string CustomUnit { get; set; } = string.Empty;

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources? DataSource { get; set; } = DataSources.ManualEntry;
		public Guid? Id { get; set; }


		/// <summary>
		/// 字典code
		/// </summary>
		public string DictionaryCode { get; set; } = string.Empty;
		public Guid ReadingQuestionId { get; set; }
		public string Type { get; set; } = string.Empty;
		public Guid? ParentId { get; set; }
		public string ParentTriggerValue { get; set; } = string.Empty;
		public string QuestionName { get; set; } = string.Empty;
		public IsRequired IsRequired { get; set; }

		/// <summary>
		/// 复制病灶的时候 是否复制这个问题
		/// </summary>
		public bool IsCopy { get; set; } = false;

		public int ShowOrder { get; set; }
		public string TypeValue { get; set; } = string.Empty;
		public bool IsEnable { get; set; }
		public DateTime CreateTime { get; set; }
		public Guid CreateUserId { get; set; }
		public string Remark { get; set; }
		public Guid? RelevanceId { get; set; }
		public string RelevanceValue { get; set; } = string.Empty;
		public int ShowQuestion { get; set; }
		public int? MaxRowCount { get; set; }
		public string DataTableName { get; set; } = string.Empty;
		public string DataTableColumn { get; set; } = string.Empty;

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

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



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

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

		/// <summary>
		/// 问题英文名称
		/// </summary>
		public string QuestionEnName { get; set; } = string.Empty;

	

		public List<string> ParentTriggerValueList { get; set; }
		public List<string> RelevanceValueList { get; set; }
		
	}

	///<summary> ReadingTableQuestionSystemAddOrEdit  列表查询参数模型</summary>
	public class ReadingTableQuestionSystemAddOrEdit
	{
		/// <summary>
		/// 数值类型
		/// </summary>
		public ValueOfType? ValueType { get; set; }

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources? DataSource { get; set; } = DataSources.ManualEntry;

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

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 限制显示
		/// </summary>
		public LimitShow LimitShow { get; set; } = LimitShow.AllShow;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }
		public Guid? Id { get; set; }
		public Guid ReadingQuestionId { get; set; }
		public string Type { get; set; } = string.Empty;

		/// <summary>
		/// 字典code
		/// </summary>
		public string DictionaryCode { get; set; } = string.Empty;
		public Guid? ParentId { get; set; }
		public string ParentTriggerValue { get; set; } = string.Empty;
		public string QuestionName { get; set; } = string.Empty;
		public IsRequired IsRequired { get; set; }
		public int ShowOrder { get; set; }
		public string TypeValue { get; set; } = string.Empty;
		public bool IsEnable { get; set; }
		public DateTime CreateTime { get; set; }
		public Guid CreateUserId { get; set; }
		public string Remark { get; set; }
		public Guid? RelevanceId { get; set; }
		public string RelevanceValue { get; set; } = string.Empty;
		public int ShowQuestion { get; set; }
		public int? MaxRowCount { get; set; }
		public string DataTableName { get; set; } = string.Empty;
		public string DataTableColumn { get; set; } = string.Empty;

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

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


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

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

		/// <summary>
		/// 问题英文名称
		/// </summary>
		public string QuestionEnName { get; set; } = string.Empty;

		



	}

	public class ReadingCriterionPageView
	{
		public Guid Id { get; set; }
		public Guid TrialId { get; set; }
		public string PageName { get; set; }
		public bool IsEnable { get; set; }
		
	}

	
	public class ReadingCriterionPageQuery
	{
		///<summary> PageName</summary>
		public string PageName { get; set; }

	}

	public class SetTrialJudgyInfoInDto : GetTrialJudgyInfoOutDto
	{
		public Guid TrialReadingCriterionId { get; set; }
	}

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

		public bool IsReadingTaskViewInOrder { get; set; }

		/// <summary>
		/// 仲裁阅片
		/// </summary>
		public bool? IsArbitrationReading { get; set; }

		/// <summary>
		/// 仲裁规则
		/// </summary>
		public ArbitrationRule ArbitrationRule { get; set; }
	}

	public enum NeedSynchronize
	{
		/// <summary>
		/// 需要
		/// </summary>
		Need=0,

		/// <summary>
		/// 不需要
		/// </summary>
		NotNeed = 1,

		/// <summary>
		/// 裁判不相等
		/// </summary>
		JudgeNotEqual=2,

	}

	public class ReadingQuestionSystemData : ReadingQuestionSystem
	{
		public Guid OriginalId { get; set; }
	}

	public class ReadingTableQuestionSystemData : ReadingTableQuestionSystem
	{
		public Guid OriginalId { get; set; }
	}

	public class ReadingTrialTableQuestionData : ReadingTableQuestionTrial
	{
		public Guid OriginalId { get; set; }
	}


	public class SynchronizeSystemCriterionInDto
	{
		public Guid FromSystemCriterionId { get; set; }
		public Guid ToSystemCriterionId { get; set; }
	}

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

	public class VerifyeCriterionNeedSynchronizeInDto
	{
		[NotDefault]
		public Guid TrialReadingCriterionId { get; set; }
	}
	public class GetTrialJudgyInfoInDto
	{
		[NotDefault]
		public Guid TrialId { get; set; }

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


	public class ReadingCriterionPageAddOrEdit
	{
		public Guid? Id { get; set; }
		public Guid TrialId { get; set; }
		public string PageName { get; set; }
		public bool IsEnable { get; set; }

		public int ShowOrder { get; set; } = 0;
		public Guid ReadingQuestionCriterionTrialId{ get; set; }

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

	}


	public class AddOrUpdateReadingQuestionCriterionTrialInDto
	{
		public Guid? Id { get; set; }

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

		/// <summary>
		/// 描述
		/// </summary>
		public string Description { get; set; } = string.Empty;

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

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

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

		/// <summary>
		/// 表单类型
		/// </summary>

		public FormType FormType { get; set; } = FormType.SinglePage;


		/// <summary>
		/// 修约小数点
		/// </summary>
		public int? DigitPlaces { get; set; } = 2;

	}


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

	public class AddOrUpdateReadingQuestionCriterionSystemInDto
    {
		public Guid? Id { get; set; }

		/// <summary>
		///  eCRF报告是否显示在图像页面
		/// </summary>
		public bool IseCRFShowInDicomReading { get; set; } = false;

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

		/// <summary>
		/// 描述
		/// </summary>
		public string Description { get; set; }

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

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

		/// <summary>
		/// 标准类型
		/// </summary>
		public CriterionType CriterionType { get; set; }

		/// <summary>
		/// 是否完成配置
		/// </summary>
		public bool IsCompleteConfig { get; set; } = false;


		/// <summary>
		/// 表单类型
		/// </summary>

		public FormType FormType { get; set; } = FormType.SinglePage;
	}

	/// <summary>
	/// 
	/// </summary>
	public class ReadingQuestionCriterionSystemViewInDto:PageInput
	{
		public string CriterionName { get; set; }=String.Empty;
	}

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

		public string Value { get; set; }

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

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

	
		public bool IsEnable { get; set; }
	}

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


		public bool IsCompleteConfig { get; set; }
	}

	/// <summary>
	/// 
	/// </summary>
	public class ReadingQuestionCriterionTrialViewInDto : PageInput
	{
		[NotDefault]
		public Guid TrialId { get; set; }

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

	}


	public class ReadingQuestionTrialView
	{

		public Guid Id { get; set; }

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


	
		public Guid? GroupId { get; set; }

		/// <summary>
		/// 全局阅片显示类型
		/// </summary>
		public GlobalReadingShowType GlobalReadingShowType { get; set; } = GlobalReadingShowType.NotShow;

		/// <summary>
		/// 转化显示类型
		/// </summary>
		public ConvertShowType ConvertShowType { get; set; } = ConvertShowType.All;

		/// <summary>
		/// 默认值
		/// </summary>
		public string DefaultValue { get; set; } = string.Empty;

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

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


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

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


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

		/// <summary>
		/// 是否复制病灶
		/// </summary>
		public bool IsCopyLesions { get; set; } = false;

		public Guid TrialId { 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 int ShowOrder { get; set; }

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

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

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

		public bool IsEnable { get; set; }

		public string ParentQuestionName { get; set; }

		public int? ParentQuestionShowOrder { get; set; }

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

		/// <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;

		public int? RelevanceShowOrder { get; set; }

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

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

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


		/// <summary>
		/// 是否是必须
		/// </summary>
		public IsRequired IsRequired { 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; }

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

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

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


		/// <summary>
		/// 自定义单位
		/// </summary>
		public string CustomUnit { get; set; } = string.Empty;

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public CustomCalculateMark? CustomCalculateMark { get; set; }

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public string CalculateQuestions { get; set; }

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 限制显示
		/// </summary>
		public LimitShow LimitShow { get; set; } = LimitShow.AllShow;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources? DataSource { get; set; } = DataSources.ManualEntry;

		/// <summary>
		/// 问题英文名称
		/// </summary>
		public string QuestionEnName { get; set; } = string.Empty;

		/// <summary>
		/// 问题英文分组
		/// </summary>
		public string GroupEnName { get; set; } = string.Empty;

		public List<string> ParentTriggerValueList { get; set; }
		public List<string> RelevanceValueList { get; set; }
		public List<CalculateInfo> CalculateQuestionList { get; set; }

        public AssessmentResultType AssessmentResultEnum { get; set; }
    }

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

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

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources? DataSource { get; set; } = DataSources.ManualEntry;

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

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 限制显示
		/// </summary>
		public LimitShow LimitShow { get; set; } = LimitShow.AllShow;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }

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

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

		public Guid? GroupId { get; set; }


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

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


		/// <summary>
		/// 全局阅片显示类型
		/// </summary>
		public GlobalReadingShowType GlobalReadingShowType { get; set; } = GlobalReadingShowType.NotShow;

		/// <summary>
		/// 转化显示类型
		/// </summary>
		public ConvertShowType ConvertShowType { get; set; } = ConvertShowType.All;


		/// <summary>
		/// 默认值
		/// </summary>
		public string DefaultValue { get; set; } = string.Empty;

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


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


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


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


		/// <summary>
		/// 系统标准Id
		/// </summary>
		public Guid ReadingQuestionCriterionSystemId { 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 int ShowOrder { get; set; }

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

		public string ParentQuestionName { get; set; }

		public int? ParentQuestionShowOrder { get; set; }

		public int? RelevanceShowOrder { get; set; }


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

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



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

		//public bool IsEnable { get; set; }

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

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


		/// <summary>
		/// 是否是必须
		/// </summary>
		public IsRequired IsRequired { 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; }

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

		/// <summary>
		/// 问题英文名称
		/// </summary>
		public string QuestionEnName { get; set; } = string.Empty;

		/// <summary>
		/// 问题英文分组
		/// </summary>
		public string GroupEnName { get; set; } = string.Empty;
	}

	public class GetQuestionCalculateRelationInDto
	{
		public Guid? TrialReadingCriterionId { get; set; }

		public Guid? ReadingQuestionId { get; set; }

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

	}


	//public class GetQuestionCalculateRelationOutDto
	//{
	//	public List<CalculateRelationDto> CalculateRelationList { get; set; }
	//}


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

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

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public CustomCalculateMark? CustomCalculateMark { get; set; }

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

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

		/// <summary>
		/// 自定义单位
		/// </summary>
		public string CustomUnit { get; set; } = string.Empty;

		public List<CalculateInfo> CalculateQuestionList { get; set; }
	}

	public class ReadingQuestionTrialViewInDto
	{
		/// <summary>
		/// 系统标准Id
		/// </summary>
		[NotDefault]
		public Guid ReadingQuestionCriterionTrialId { get; set; }

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


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



		public Guid? ReadingCriterionPageId { get; set; }
	}

	/// <summary>
	/// 获取其他问题返回的Dto
	/// </summary>
	public class CriterionOtherQuestionOutDto
	{
		public Guid QuestionId { get; set; }

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

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

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

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

		public string GroupName { get; set; }

		public Guid? GroupId { get; set; }
	}

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

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

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

		public string QuestionName{ get; set; }

		public List<CalculateQuestion> TableQuestions { get; set; }
	}


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

		public string QuestionName { get; set; }
	}


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

		public string QuestionName { get; set; }
	}



	public class GetCalculateTableQuestionsInDto
	{
		[NotDefault]
		public Guid QuestionId { get; set; }

		public string Type { get; set; }

	}

	public class GetCustomQuestionPreviewInDto
	{
		[NotDefault]
		public Guid TrialReadingCriterionId { get; set; }
	}
	public class GetCalculateQuestionsInDto
	{
		[NotDefault]
		public Guid TrialCriterionId { get; set; }


		public string Type { get; set; }

	}

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

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


	}
	public class GetTrialGroupNameListInDto
	{
		/// <summary>
		/// 标准ID
		/// </summary>
		public Guid CriterionId { get; set; }


		public Guid? ReadingCriterionPageId { get; set; }
	}


	public class GetReadingTableOtherQuestionSystemInDto
	{
		/// <summary>
		/// 表格父问题的ID
		/// </summary>
		[NotDefault]
		public Guid ReadingQuestionId { get; set; }

		/// <summary>
		/// 当前ID
		/// </summary>
		public Guid? Id { get; set; }
	}

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

		/// <summary>
		/// 当前ID
		/// </summary>
		public Guid? Id { get; set; }

		public Guid? ReadingCriterionPageId { get; set; }
	}

	public class GetSystemCriterionOtherQuestionInDto
	{
		[NotDefault]
		public Guid ReadingQuestionCriterionSystemId { get; set; }

		/// <summary>
		/// 当前ID
		/// </summary>
		public Guid? Id { get; set; }
	}

	public class ReadingQuestionSystemViewInDto : PageInput
	{
		/// <summary>
		/// 系统标准Id
		/// </summary>
		[NotDefault]
		public Guid ReadingQuestionCriterionSystemId { get; set; }

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

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

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

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

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

		/// <summary>
		/// 系统问题ID
		/// </summary>
		public Guid? ReadingQuestionSystemId { get; set; }

		public Guid? ReadingCriterionPageId { get; set; }

		/// <summary>
		/// 系统标准的ParentId
		/// </summary>
		public Guid? SystemParentId { 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>
		/// 关联ID
		/// </summary>
		public Guid? RelevanceId { get; set; }

		/// <summary>
		/// 关联Value
		/// </summary>
		public string RelevanceValue { get; set; } = string.Empty;
		/// <summary>
		/// 图片数量
		/// </summary>
		public int ImageCount { get; set; } 
	}
	public class AddOrUpdateReadingQuestionSystemInDto
	{
		/// <summary>
		/// 数值类型
		/// </summary>
		public ValueOfType? ValueType { get; set; }

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 限制显示
		/// </summary>
		public LimitShow LimitShow { get; set; } = LimitShow.AllShow;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources? DataSource { get; set; } = DataSources.ManualEntry;

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


		/// <summary>
		/// 全局阅片显示类型
		/// </summary>
		public GlobalReadingShowType GlobalReadingShowType { get; set; } = GlobalReadingShowType.NotShow;

		/// <summary>
		/// 转化显示类型
		/// </summary>
		public ConvertShowType ConvertShowType { get; set; } = ConvertShowType.All;

		/// <summary>
		/// 默认值
		/// </summary>
		public string DefaultValue { get; set; } = string.Empty;

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

		public Guid? GroupId { get; set; }

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

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

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

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

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

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

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


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

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

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

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

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


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

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

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

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

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


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

		/// <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;

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

		/// <summary>
		/// 问题英文名称
		/// </summary>
		public string QuestionEnName { get; set; } = string.Empty;

		/// <summary>
		/// 问题英文分组
		/// </summary>
		public string GroupEnName { get; set; } = string.Empty;
	}



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

        public bool IsAdditional { get; set; }
        public Guid TrialId { get; set; }

		/// <summary>
		/// 是否复制病灶
		/// </summary>
		public bool IsCopyLesions { get; set; } = false;

		/// <summary>
		/// 全局阅片显示类型
		/// </summary>
		public GlobalReadingShowType GlobalReadingShowType { get; set; } = GlobalReadingShowType.NotShow;

		/// <summary>
		/// 转化显示类型
		/// </summary>
		public ConvertShowType ConvertShowType { get; set; } = ConvertShowType.All;

		/// <summary>
		/// 默认值
		/// </summary>
		public string DefaultValue { get; set; } =string.Empty;

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

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


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


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

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


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

		public Guid? GroupId { get; set; }


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

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

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

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

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

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


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

		public bool IsEnable { 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; } = 0;

		/// <summary>
		/// 是否是必须
		/// </summary>
		public IsRequired IsRequired { 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;

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


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

		/// <summary>
		/// 数据来源
		/// </summary>
		public DataSources? DataSource { get; set; } = DataSources.ManualEntry;

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

		/// <summary>
		/// 限制编辑
		/// </summary>
		public LimitEdit LimitEdit { get; set; } = LimitEdit.None;

		/// <summary>
		/// 限制显示
		/// </summary>
		public LimitShow LimitShow { get; set; } = LimitShow.AllShow;

		/// <summary>
		/// 最大答案长度
		/// </summary>
		public int? MaxAnswerLength { get; set; }

		/// <summary>
		/// 文件类型
		/// </summary>
		public string? FileType { get; set; }

		/// <summary>
		/// 自定义单位
		/// </summary>
		public string CustomUnit { get; set; } = string.Empty;

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public CustomCalculateMark? CustomCalculateMark { get; set; }

		/// <summary>
		/// 自定义计算标记
		/// </summary>
		public string CalculateQuestions { get; set; } = "[]";

		/// <summary>
		/// 问题英文名称
		/// </summary>
		public string QuestionEnName { get; set; } = string.Empty;

		/// <summary>
		/// 问题英文分组
		/// </summary>
		public string GroupEnName { get; set; } = string.Empty;

		public List<string> ParentTriggerValueList { get; set; }
		public List<string> RelevanceValueList { get; set; }

        public AssessmentResultType AssessmentResultEnum { get; set; }

    }

	public class GetSystemCriterionSelectDto
	{
		/// <summary>
		/// 返回的对象
		/// </summary>
		public Guid Id { get; set; }

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

	}

	public class ReadingQuestionCriterionSystemView
	{
		/// <summary>
		/// 返回的对象
		/// </summary>
		public Guid Id { get; set; }

		/// <summary>
		/// 标准ID
		/// </summary>
		public Guid CriterionId { get; set; }

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

		public int ShowOrder { get; set; }

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

		/// <summary>
		///  eCRF报告是否显示在图像页面
		/// </summary>
		public bool IseCRFShowInDicomReading { get; set; } = false;


		/// <summary>
		/// 标准类型
		/// </summary>
		public CriterionType CriterionType { get; set; }

		/// <summary>
		/// 是否完成配置
		/// </summary>
		public bool IsCompleteConfig { get; set; }

		public int QuestionCount { get; set; }


		/// <summary>
		/// 描述
		/// </summary>
		public string Description { get; set; }
		public bool IsBeUsed { get; set; } = false;
	}


	public class ReadingQuestionCriterionTrialView
	{
		/// <summary>
		/// 返回的对象
		/// </summary>
		public Guid Id { get; set; }

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

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

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

		/// <summary>
		/// 是否完成配置
		/// </summary>
		public bool IsCompleteConfig { get; set; }

		public int QuestionCount { get; set; }

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

		/// <summary>
		/// 表单类型
		/// </summary>

		public FormType FormType { get; set; }


		/// <summary>
		/// 描述
		/// </summary>
		public string Description { get; set; }


		/// <summary>
		/// 修约小数点
		/// </summary>
		public int? DigitPlaces { get; set; } = 2;


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





		/// <summary>
		/// 是否是系统数据
		/// </summary>
		public bool IsSystemData 
		{
			get 
			{
				return this.ReadingQuestionCriterionSystemId != null;
			}
		}
	}
}