using IRaCIS.Core.Domain.Share; namespace IRaCIS.Core.Domain.Models; [Comment("受试者访视")] [Table("SubjectVisit")] public class SubjectVisit : BaseFullDeleteAuditEntity { #region 导航属性 [JsonIgnore] public TrialSite TrialSite { get; set; } [JsonIgnore] [ForeignKey("OutPlanPreviousVisitId")] public SubjectVisit OutPlanPreviousVisit { get; set; } [ForeignKey("ForwardUserId")] public UserRole ForwardUser { get; set; } /// /// 初审 /// [JsonIgnore] [ForeignKey("PreliminaryAuditUserId")] public UserRole PreliminaryAuditUser { get; set; } /// /// 复审 /// [JsonIgnore] [ForeignKey("ReviewAuditUserId")] public UserRole ReviewAuditUser { get; set; } [JsonIgnore] [ForeignKey("CurrentActionUserId")] public UserRole CurrentActionUser { get; set; } [JsonIgnore] [ForeignKey("SubmitUserId")] public UserRole SubmitUser { get; set; } [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } [JsonIgnore] public List ReadModuleList { get; set; } [JsonIgnore] [ForeignKey("SubjectId")] public Subject Subject { get; set; } [JsonIgnore] public List PreviousHistoryList { get; set; } [JsonIgnore] public List PreviousOtherList { get; set; } [JsonIgnore] public List PreviousSurgeryList { get; set; } [JsonIgnore] public List PreviousPDFList { get; set; } [JsonIgnore] public List ReadingClinicalDataList { get; set; } [JsonIgnore] public List CheckChallengeDialogList { get; set; } = new List(); [JsonIgnore] public List StudyList { get; set; } = new List(); [JsonIgnore] public List NoneDicomStudyList { get; set; } = new List(); [JsonIgnore] public List QCChallengeList { get; set; } = new List(); [JsonIgnore] public List QCChallengeDialogList { get; set; } = new List(); [JsonIgnore] public List VisitTaskList { get; set; } = new List(); [JsonIgnore] public List SubjectCriteriaEvaluationVisitFilterList { get; set; } #endregion public Guid TrialSiteId { get; set; } public Guid TrialId { get; set; } public Guid SubjectId { get; set; } [Comment("访视计划Id,计划外没有")] public Guid? VisitStageId { get; set; } public int VisitDay { get; set; } public string VisitName { get; set; } = string.Empty; public int VisitWindowLeft { get; set; } public int VisitWindowRight { get; set; } [DecimalPrecision(18, 1)] public decimal VisitNum { get; set; } public string BlindName { get; set; } = string.Empty; public string SVUPDES { get; set; } = string.Empty; public DateTime? SVSTDTC { get; set; } public DateTime? SVENDTC { get; set; } public bool InPlan { get; set; } = true; public bool IsBaseLine { get; set; } = false; [Comment("0 未执行 1 执行了 2 不可用")] public VisitExecutedEnum VisitExecuted { get; set; } = VisitExecutedEnum.UnExecuted; public DateTime? EarliestScanDate { get; set; } [Comment("最晚拍片日期")] public DateTime? LatestScanDate { get; set; } public Guid? Auditor { get; set; } [Comment("核查状态")] public CheckStateEnum CheckState { get; set; } [Comment("提交状态")] public SubmitStateEnum SubmitState { get; set; } [Comment("审核状态")] public AuditStateEnum AuditState { get; set; } public ForwardStateEnum ForwardState { get; set; } [Comment("单审通过人")] public Guid? PreliminaryAuditUserId { get; set; } [Comment("双审通过人")] public Guid? ReviewAuditUserId { get; set; } [Comment("一致性核查人Id")] public Guid? CheckUserId { get; set; } public DateTime? ReviewAuditTime { get; set; } public DateTime? PreliminaryAuditTime { get; set; } public Guid? ForwardUserId { get; set; } public DateTime? ForwardTime { get; set; } /// /// 当前领取 /// [Comment("当前质控领取人")] public Guid? CurrentActionUserId { get; set; } public DateTime? CurrentActionUserExpireTime { get; set; } public DateTime? SubmitTime { get; set; } public DateTime? CheckTime { get; set; } [Comment("通过原因")] public string ManualPassReason { get; set; } = string.Empty; public bool IsUrgent { get; set; } public bool IsTake { get; set; } public bool IsFinalVisit { get; set; } public ChallengeStateEnum ChallengeState { get; set; } [MaxLength] public string CheckResult { get; set; } = String.Empty; [Comment("是否一致性核查回退")] public bool? IsCheckBack { get; set; } public DateTime? CheckBackTime { get; set; } public CheckChanllengeTypeEnum CheckChallengeState { get; set; } public PDStateEnum PDState { get; set; } = PDStateEnum.None; public DateTime? CheckPassedTime { get; set; } [Comment("计划外上一访视")] public Guid? OutPlanPreviousVisitId { get; set; } public RequestBackStateEnum RequestBackState { get; set; } public bool IsQCConfirmedReupload { get; set; } public bool IsLostVisit { get; set; } [Comment("是否确认了、签名了 临床数据完整性")] public bool? IsConfirmedClinicalData { get; set; } public bool IsEnrollmentConfirm { get; set; } public bool IsVisitTaskGenerated { get; set; } public bool IsPMBackOrReReading { get; set; } [Comment("关闭一致性质疑原因")] public string CloseTheReason { get; set; } = string.Empty; public Guid? SubmitUserId { get; set; } public ReadingStatusEnum ReadingStatus { get; set; } }