using IRaCIS.Core.Domain.Share;

namespace IRaCIS.Core.Domain.Models;

[Comment("表格问题答案行数据")]
[Table("ReadingTableAnswerRowInfo")]
public class ReadingTableAnswerRowInfo : BaseFullDeleteAuditEntity
{
    #region 导航属性
    [JsonIgnore]
    [ForeignKey("InstanceId")]
    public DicomInstance Instance { get; set; }


    [JsonIgnore]
    [ForeignKey("SeriesId")]
    public DicomSeries DicomSeries { get; set; }

    /// <summary>
    ///  studyId 关联 dicom 和非dicom  ，这里为了查询方便，默认查询非dicom dicom 通过序列查询
    /// </summary>
    [JsonIgnore]
    [ForeignKey("StudyId")]
    public NoneDicomStudy NoneDicomStudy { get; set; }

    [JsonIgnore]
    [ForeignKey("OrganInfoId")]
    public OrganInfo OrganInfo { get; set; }

    [JsonIgnore]
    [ForeignKey("VisitTaskId")]
    public VisitTask VisitTask { get; set; }

    [JsonIgnore]
    [ForeignKey("FristAddTaskId")]
    public VisitTask FristAddTask { get; set; }

    [JsonIgnore]
    [ForeignKey("SplitRowId")]
    public ReadingTableAnswerRowInfo SplitRow { get; set; }
    [JsonIgnore]
    [ForeignKey("MergeRowId")]
    public ReadingTableAnswerRowInfo MergeRow { get; set; }
    [JsonIgnore]
    [ForeignKey("QuestionId")]
    public ReadingQuestionTrial ReadingQuestionTrial { get; set; }
    [Comment("病灶答案表")]
    [JsonIgnore]
    public List<ReadingTableQuestionAnswer> LesionAnswerList { get; set; } = new List<ReadingTableQuestionAnswer>();
    #endregion
    public Guid QuestionId { get; set; }
    public Guid VisitTaskId { get; set; }

    public Guid TrialId { get; set; }
    public Guid? InstanceId { get; set; }

    public Guid? SeriesId { get; set; }
    public Guid? StudyId { get; set; }

    public Guid? OtherInstanceId { get; set; }

    public Guid? OtherSeriesId { get; set; }

    public Guid? OtherStudyId { get; set; }

    [MaxLength]
    public string OtherMarkTool { get; set; } = string.Empty;

    [StringLength(1000)]
    public string OtherPicturePath { get; set; } = string.Empty;

    public int? OtherNumberOfFrames { get; set; }

    public bool IsCanEditPosition { get; set; } = false;
    [Comment("是Dicom阅片")]
    public bool IsDicomReading { get; set; } = true;

    public decimal RowIndex { get; set; }

    [MaxLength]
    public string MeasureData { get; set; } = string.Empty;

    [Comment("是否是当前任务添加")]
    public bool IsCurrentTaskAdd { get; set; } = false;

    public Guid? SplitRowId { get; set; }

    public Guid? MergeRowId { get; set; }

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

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

    [Comment("截图地址")]
    [StringLength(1000)]
    public string PicturePath { get; set; } = string.Empty;

    [Comment("首次添加任务ID")]
    public Guid FristAddTaskId { get; set; }

    [Comment("融合的PTSeriesId")]
    public Guid? PTSeriesId { get; set; }

    [Comment("融合的CTSeriesId")]
    public Guid? CTSeriesId { get; set; }

    public SplitOrMergeType? SplitOrMergeType { get; set; }
    public int? NumberOfFrames { get; set; }
    [Comment("器官Id")]
    public Guid? OrganInfoId { get; set; }
    [Comment("窗宽WW")]
    public decimal? WW { get; set; }

    [Comment("窗位WL")]
    public decimal? WL { get; set; }

    [Comment("来自于哪个标记")]
    public string FromMark { get; set; } = string.Empty;

    [Comment("报告页面显示来自于哪个标记")]
    public string ReportMark { get; set; } = string.Empty;

    [MaxLength]
    public string OtherMeasureData { get; set; } = string.Empty;
    [Comment("病灶编号")]
    public string RowMark { get; set; } = string.Empty;

    [Comment("标记工具")]
    public string MarkTool { get; set; } = string.Empty;

    /// <summary>
    /// 病灶的身份Id 这个是病灶复制答案需要的
    /// </summary>
    public Guid? IdentityRowId { get; set; }
}
