namespace IRaCIS.Core.Domain.Models;

[Table("DicomStudy")]
public class DicomStudy : BaseFullDeleteAuditEntity, IEntitySeqId
{
    #region 导航属性

    [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!;

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

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

    public int Code { get; set; }

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

    public int InstanceCount { get; set; }

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

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

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

    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!;
}