using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
using System.ComponentModel.DataAnnotations.Schema;

namespace IRaCIS.Core.Domain.Models
{
    [Table("DicomStudy")]
    public class DicomStudy : Entity, IAuditUpdate, IAuditAdd, ISoftDelete
    {
        //一个检查 由多个人管理
        //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]
        public TrialSite TrialSite { get; set; }
        [JsonIgnore]
        public Site Site { get; set; }

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

        [DatabaseGenerated(DatabaseGeneratedOption.Identity)]
        public Guid SeqId { get; set; }

        public Guid TrialId { get; set; }

        public Guid SiteId { get; set; }

        public Guid SubjectId { get; set; }

        public Guid SubjectVisitId { get; set; }

        public int Code { get; set; } = 0;

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

        public string StudyInstanceUid { get; set; } = string.Empty;
        public DateTime? StudyTime { get; set; }
        public string Modalities { get; set; } = string.Empty;

        public string Description { get; set; } = string.Empty;
        public int SeriesCount { get; set; } = 0;
        public int InstanceCount { get; set; } = 0;


        public string InstitutionName { get; set; } = string.Empty;
        public string PatientId { get; set; } = string.Empty;
        public string PatientName { get; set; } = string.Empty;
        public string PatientAge { get; set; } = string.Empty;
        public string PatientSex { get; set; } = string.Empty;

        public string StudyId { get; set; } = string.Empty;
        public string AccessionNumber { get; set; } = string.Empty;
        public string PatientBirthDate { get; set; } = string.Empty;
        public string AcquisitionTime { get; set; } = string.Empty;
        public string AcquisitionNumber { get; set; } = string.Empty;
        public string TriggerTime { get; set; } = string.Empty;

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

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

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



        //0 未知  1 单重  2 双重
        public bool IsDoubleReview { get; set; }

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

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

        public Guid UpdateUserId { get; set; }
        public DateTime UpdateTime { get; set; } = DateTime.Now;
        public Guid CreateUserId { get; set; }
        public DateTime CreateTime { get; set; } = DateTime.Now;

        [JsonIgnore]
        [ForeignKey("CreateUserId")]
        public User Uploader { get; set; }



        //软删除
        public bool IsDeleted { get; set; }

        public DateTime? DeletedTime { get; set; }

        public Guid? DeleteUserId { get; set; }


    }
}