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

namespace IRaCIS.Core.Domain.Models
{
    [Table("SCPStudy")]
    public class SCPStudy : Entity, IAuditUpdate, IAuditAdd, ISoftDelete
    {





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

        [JsonIgnore]
        public List<SCPInstance> InstanceList { get; set; }

        [JsonIgnore]
        public List<SCPSeries> SeriesList { get; set; }


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

        [ForeignKey("PatientId")]
        [JsonIgnore]
        public SCPPatient Patient { get; set; }
        public Guid PatientId { get; set; }


        

        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 PatientIdStr { 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;



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


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

        public DateTime? DeletedTime { get; set; }

        public Guid? DeleteUserId { get; set; }

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

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

        public bool IsUploadFinished { get; set; }


        public Guid TrialId { get; set; }
        public Guid TrialSiteId { get; set; }

        public Guid? SubjectVisitId { get; set; }

        [JsonIgnore]
        public SubjectVisit SubjectVisit { get; set; }

        [JsonIgnore]

        public Trial Trial { get; set; }

        [JsonIgnore]
        public TrialSite TrialSite { get; set; }

    }
}