namespace IRaCIS.Core.Domain.Models;

[Table("DicomStudy")]
public class DicomStudy : BaseFullDeleteAuditEntity, IEntitySeqId
{
    #region 导航属性
    //一个检查 由多个人管理
    //public List<TrialSiteUser> TrialSiteUserList { get; set; } = new List<TrialSiteUser>();
    [JsonIgnore]
    public List<StudyMonitor> DicomStudyMonitorList { get; set; } = new List<StudyMonitor>();
    [JsonIgnore]
    public List<DicomSeries> SeriesList { get; set; }

    [JsonIgnore]
    [ForeignKey("SubjectId")]
    public Subject Subject { get; set; }

    [JsonIgnore]
    [ForeignKey("SubjectVisitId")]
    public SubjectVisit SubjectVisit { get; set; }

    [JsonIgnore]
    public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }

    [JsonIgnore]
    public List<ReadingConsistentClinicalData> ReadingConsistentClinicalDataList { get; set; }


    [JsonIgnore]
    public List<SubjectCriteriaEvaluationVisitStudyFilter> SubjectCriteriaEvaluationVisitStudyFilterList { get; set; }

    #endregion

    public string AccessionNumber { get; set; } = null!;

    public string AcquisitionNumber { get; set; } = null!;

    public string AcquisitionTime { get; set; } = null!;

    [StringLength(512)]
    public string BodyPartExamined { get; set; } = null!;

    public string BodyPartForEdit { get; set; } = null!;

    public int Code { get; set; }

    [StringLength(1000)]
    public string Description { get; set; } = null!;

    public int InstanceCount { get; set; }

    [StringLength(400)]
    public string InstitutionName { get; set; } = null!;

    public bool IsDoubleReview { get; set; }

    public bool IsFromPACS { get; set; }

    public string Modalities { get; set; } = null!;

    public string ModalityForEdit { get; set; } = null!;

    public string PatientAge { get; set; } = null!;

    public string PatientBirthDate { get; set; } = null!;

    public string PatientId { get; set; } = null!;

    public string PatientName { get; set; } = null!;

    public string PatientSex { get; set; } = null!;

    [Comment(" 序列Id 避免内存移动")]
    public Guid SeqId { get; set; }

    public int SeriesCount { get; set; }

    [StringLength(400)]
    public string StudyCode { get; set; } = null!;

    [Comment(" DicomTag.StudyID")]
    public string StudyId { get; set; } = null!;

    [StringLength(500)]
    public string StudyInstanceUid { get; set; } = null!;

    public DateTime? StudyTime { get; set; }

    public Guid SubjectId { get; set; }

    public Guid SubjectVisitId { get; set; }

    public Guid TrialId { get; set; }

    public string TriggerTime { get; set; } = null!;

    [Comment(" 上传时间")]
    public DateTime? UploadedTime { get; set; }

    public string Uploader { get; set; } = null!;




}