namespace IRaCIS.Core.Domain.Models;

[Comment("项目中心 - 推送Instance")]
[Table("SCPInstance")]
public class SCPInstance : BaseFullAuditEntity, IEntitySeqId
{
    #region 导航属性
    [JsonIgnore]
    [ForeignKey("SeriesId")]
    public SCPSeries SCPSeries { get; set; }

    [JsonIgnore]
    [ForeignKey("StudyId")]
    public SCPStudy SCPStudy { get; set; }
    #endregion
    public Guid SeqId { get; set; }
    public Guid StudyId { get; set; }
    public Guid SeriesId { get; set; }
    public string StudyInstanceUid { get; set; } = string.Empty;
    public string SeriesInstanceUid { get; set; } = string.Empty;
    public string SopInstanceUid { get; set; } = string.Empty;
    public int InstanceNumber { get; set; }
    public DateTime? InstanceTime { get; set; }
    public bool CPIStatus { get; set; }
    public int ImageRows { get; set; }
    public int ImageColumns { get; set; }
    public int SliceLocation { get; set; }
    public string SliceThickness { get; set; } = string.Empty;
    public int NumberOfFrames { get; set; }
    public string PixelSpacing { get; set; } = string.Empty;

    public string ImagerPixelSpacing { get; set; } = string.Empty;
    public string FrameOfReferenceUID { get; set; } = string.Empty;
    public string WindowCenter { get; set; } = string.Empty;
    public string WindowWidth { get; set; } = string.Empty;

    public bool Anonymize { get; set; }

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

    public long? FileSize { get; set; }



    #region DIR 增加

    public string SOPClassUID { get; set; }

    public string MediaStorageSOPClassUID { get; set; }

    public string TransferSytaxUID { get; set; }

    public string MediaStorageSOPInstanceUID { get; set; }

    public bool IsEncapsulated { get; set; }

    #endregion

    #region 模态支持增加字段

    public string PhotometricInterpretation { get; set; }

    public int BitsAllocated { get; set; }

    public string PixelRepresentation { get; set; }

    public string RescaleIntercept { get; set; }

    public string RescaleSlope { get; set; }

    public string ImagePositionPatient { get; set; }
    public string ImageOrientationPatient { get; set; }

    //可能大
    public string SequenceOfUltrasoundRegions { get; set; }

    public string FrameTime { get; set; }

    public string CorrectedImage { get; set; }

    public string Units { get; set; }
    public string DecayCorrection { get; set; }

    public string EncapsulatedDocument { get; set; }



    #endregion
}
