using System; using System.Collections.Generic; using System.ComponentModel.DataAnnotations; using System.ComponentModel.DataAnnotations.Schema; using System.Linq; using IRaCIS.Core.Domain.Share; using Newtonsoft.Json; namespace IRaCIS.Core.Domain.Models { [Table("Trial")] public partial class Trial : Entity, IAuditUpdate, IAuditAdd, ISoftDelete { public Trial() { ClinicalTrialProjectDetails = new HashSet(); TrialDicList = new List(); } [JsonIgnore] public List TaskMedicalReviewList { get; set; } [JsonIgnore] public List TaskConsistentRuleList { get; set; } [JsonIgnore] public List SubjectDoctorUserList { get; set; } = new List(); [JsonIgnore] public List VisitTaskList { get; set; } = new List() { }; [JsonIgnore] public List VisitTaskReReadingList { get; set; } [JsonIgnore] public List TrialSiteSurveyList { get; set; } = new List(); [JsonIgnore] public List TrialDocumentList { get; set; } [JsonIgnore] public List EnrollList { get; set; } = new List(); [JsonIgnore] public List WorkloadList { get; set; } = new List(); [JsonIgnore] public List TrialUserList { get; set; } = new List(); [JsonIgnore] public List ReadingQuestionCriterionTrialList { get; set; } = new List(); [JsonIgnore] public List SubjectList { get; set; } = new List(); [JsonIgnore] public List SubjectVisitList { get; set; } = new List(); [JsonIgnore] public List StudyList { get; set; } = new List(); [JsonIgnore] public List TrialSiteList { get; set; } = new List(); [JsonIgnore] public List TrialSiteUserList { get; set; } = new List(); [JsonIgnore] public List ReadModuleList { get; set; } = new List(); public Guid IndicationTypeId { get; set; } = Guid.Empty; public Guid? PhaseId { get; set; } = Guid.Empty; [JsonIgnore] [ForeignKey("IndicationTypeId")] public Dictionary IndicationType { get; set; } [JsonIgnore] [ForeignKey("PhaseId")] public Dictionary Phase { get; set; } [JsonIgnore] [ForeignKey("SponsorId")] public Sponsor Sponsor { get; set; } [JsonIgnore] [ForeignKey("CROId")] public CRO CRO { get; set; } [JsonIgnore] [ForeignKey("ReviewModeId")] public Dictionary ReviewMode { get; set; } [JsonIgnore] public List clinicalDataTrialSets { get; set; } = new List { }; [JsonIgnore] public virtual ICollection ClinicalTrialProjectDetails { get; set; } [JsonIgnore] public virtual ICollection TrialDicList { get; set; } [JsonIgnore] public List ReadingClinicalDataList { get; set; } [StringLength(100)] public string TrialCode { get; set; } = string.Empty; public int Code { get; set; } [StringLength(512)] public string Indication { get; set; } = string.Empty; //入组那一块的状态 //[ConcurrencyCheck] public int TrialEnrollStatus { get; set; } //启动状态 [StringLength(500)] public string TrialStatusStr { get; set; } = StaticData.TrialState.TrialInitializing; [JsonIgnore] public List TrialStateChangeList { get; set; } = new List(); public Guid? CROId { get; set; } = Guid.Empty; public Guid? SponsorId { get; set; } = Guid.Empty; public Guid? ReviewModeId { get; set; } = Guid.Empty; [StringLength(500)] public string ProjectCycle { get; set; } = string.Empty; public int ExpectedPatients { get; set; } public decimal TimePointsPerPatient { get; set; } public int GRRReviewers { get; set; } public int TotalReviewers { get; set; } [StringLength(500)] public string ReviewProtocol { get; set; } = string.Empty; [StringLength(500)] public string MessageFromClient { get; set; } = string.Empty; public string Note { get; set; } = string.Empty; public string ReviewProtocolName { get; set; } = string.Empty; public string MessageFromClientName { get; set; } = string.Empty; public int Expedited { get; set; } public DateTime CreateTime { get; set; } public Guid CreateUserId { get; set; } public DateTime UpdateTime { get; set; } public Guid UpdateUserId { get; set; } //废弃 //public AttendedReviewerType AttendedReviewerType { get; set; } = AttendedReviewerType.CN;//0全部中国医生 1美国医生 2既有中国医生,也有美国医生 ////废弃 //[JsonIgnore] //[ForeignKey("DeclarationTypeId")] //public Dictionary DeclarationType { get; set; } //废弃 //public Guid DeclarationTypeId { get; set; } = Guid.Empty; public string DeclarationTypes { get; set; } = string.Empty; [NotMapped] public List DeclarationTypeEnumList => DeclarationTypes.Split('|', StringSplitOptions.RemoveEmptyEntries) .Select(s => Enum.Parse(typeof(DeclarationType), s)).Cast().ToList(); [NotMapped] public List AttendedReviewerTypeEnumList=> AttendedReviewerTypes.Split('|',StringSplitOptions.RemoveEmptyEntries) .Select(s => Enum.Parse(typeof(AttendedReviewerType), s)).Cast().ToList(); public string AttendedReviewerTypes { get; set; }=string.Empty; public bool VisitPlanConfirmed { get; set; } /// /// 受试者编号具体规则 /// public string SubjectCodeRule { get; set; } = StaticData.International("Trial_number"); /// /// 是否 提醒受试者编号规则 /// public bool IsNoticeSubjectCodeRule { get; set; } = true; /// /// 是否 有基准时间(首次给药时间) /// public bool IsHaveFirstGiveMedicineDate { get; set; } = true; /// /// 是否有 受试者年龄 /// public bool IsHaveSubjectAge { get; set; } = false; /// /// 是否有 入组性确认 /// public bool IsEnrollementQualificationConfirm { get; set; } = false; /// /// 出组后计划外访视名称 /// public string OutEnrollmentVisitName { get; set; } = "EOT"; /// /// 是否 验证拍片日期 /// public bool IsVerifyVisitImageDate { get; set; } = true; /// /// 临床信息传输 1:系统录入 2:系统录入+PDF 0:无 /// public int ClinicalInformationTransmissionEnum { get; set; } = 1; /// /// 是否审核 临床信息 /// public bool IsCRAAuditClinicalInformation { get; set; } = false; /// /// QC流程 0 不审,1 单审,2双审 /// public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit; /// /// 影像一致性核查 /// public bool IsImageConsistencyVerification { get; set; } = true; /// /// 影像导出 /// public bool IsImageExport { get; set; } = false; public bool IsSubjectSecondCodeView { get; set; } //阅片方式 public int ReadingMode { get; set; } = 1; public int ChangeDefalutDays { get; set; } = 5; /// /// 跨项目复制 /// public bool IsImageReplicationAcrossTrial { get; set; } = false; public string BodyPartTypes { get; set; } = "鼻咽部|脑部|颈部|胸部|上/下腹部|盆腔|全身|其他"; public string Modalitys { get; set; } = "CT|MRI|BoneScan|Photograph|PET|X-ray|US"; [NotMapped] public List ModalityList => Modalitys.Split('|', StringSplitOptions.RemoveEmptyEntries).Where(t => !string.IsNullOrEmpty(t)).ToList(); public string PreliminaryAuditReuploadText { get; set; } = string.Empty; public string ReviewAuditReuploadText { get; set; } = string.Empty; //PD 进展是否显示 配置访视 是否显示 PD进展 (从而可以设置状态) public bool IsPDProgressView { get; set; } //研究方案号 public string ResearchProgramNo { get; set; } //实验名称 public string ExperimentName { get; set; } //主研单位 public string MainResearchUnit { get; set; } // 负责人PI public string HeadPI { get; set; } public bool IsUrgent { get; set; } /// /// 项目类型 1 正式项目、0 非正式项目 2是培训项目 /// time public TrialType TrialType { get; set; } //public string TempCode { get; set; } public int PlanSiteCount { get; set; } public int PlanVisitCount { get; set; } public DateTime? TrialFinishedTime { get; set; } public bool IsSubjectSexView { get; set; } = false; //配置Suject Edit页面 是否显示 加急 public bool IsSubjectExpeditedView { get; set; } = false; public bool IsTrialStart { get; set; } = false; public bool IsDeleted { get; set; } //QC 问题流程 public User QCQuestionConfirmedUser { get; set; } public Guid? QCQuestionConfirmedUserId { get; set; } public DateTime? QCQuestionConfirmedTime { get; set; } /// /// 项目完成时间 /// public DateTime? TrialFinishTime { get; set; } public int? DigitPlaces { get; set; } = 1; public bool IsTrialProcessConfirmed { get; set; } public bool IsTrialBasicLogicConfirmed { get; set; } public bool IsTrialUrgentConfirmed { get; set; } public bool IsQCQuestionConfirmed { get; set; } public DateTime? DeletedTime { get; set; } public Guid? DeleteUserId { get; set; } /// /// 同步临床数据时间 /// public DateTime? SyncClinicalDataTime { get; set; } public string BlindBaseLineName { get; set; } = "Baseline"; public string BlindFollowUpPrefix { get; set; } = "Follow-up"; public int IndicationEnum { get; set; } = -1; #region 邮件配置 /// /// 发件箱账号 /// public string EmailFromEmail { get; set; } = string.Empty; /// /// 发件人 /// public string EmailFromName { get; set; } = string.Empty; /// /// 密码/授权码 /// public string EmailAuthorizationCode { get; set; } = string.Empty; /// /// SMTP服务器 /// public string EmailSMTPServerAddress { get; set; } = string.Empty; /// /// SMTP端口 /// public int EmailSMTPServerPort { get; set; } /// /// 是否配置过邮箱 /// public bool IsConfigureEmail { get; set; } = false; #endregion ///// ///// 图像是否有标注 ///// //public bool IsImageIabeled { get; set; } ////阅片类型 //public ReadingMethod ReadingType { get; set; } = ReadingMethod.Double; //public bool IsGlobalReading { get; set; } = true; ///// ///// 仲裁阅片 ///// //public bool? IsArbitrationReading { get; set; } = true; //public bool IsClinicalReading { get; set; } ///// ///// 1 Mint、2 PACS ///// //public int ImagePlatform { get; set; } = 1; ///// ///// 仲裁规则 ///// //public ArbitrationRule ArbitrationRule { get; set; } = ArbitrationRule.None; ////任务分配对象 //public TaskAllocateObj TaskAllocateObjEnum { get; set; } ////后续访视任务自动分配 //public bool IsFollowVisitAutoAssign { get; set; } = true; ////后续全局自动分配 //public bool IsFollowGlobalVisitAutoAssign { get; set; } = true; //public bool IsFollowJudgeTaskAutoAssign { get; set; } = true; //public TaskAllocateDefaultState FollowJudgeTaskAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; ////后续访视自动分配默认状态 //public TaskAllocateDefaultState FollowVisitAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; ////后续全局自动分配默认状态 //public TaskAllocateDefaultState FollowGlobalVisitAutoAssignDefaultState { get; set; } = TaskAllocateDefaultState.Allocated; ////读片任务显示规则 //public ReadingTaskViewMethod ReadingTaskViewEnum { get; set; } ////读片任务显示是否顺序 //public bool IsReadingTaskViewInOrder { get; set; } = true; ///// ///// 阅片是否显示受试者信息 ///// //public bool IsReadingShowSubjectInfo { get; set; } = false; ///// ///// 阅片是否显示既往结果 ///// //public bool IsReadingShowPreviousResults { get; set; } = false; ///// ///// 是确认医学审核问题 ///// //public bool IsConfirmMedicineQuestion { get; set; } = false; ///// ///// 阅片信息签名时间 ///// //public DateTime? ReadingInfoSignTime { get; set; } ///// ///// 阅片工具 ///// //public ReadingTool? ReadingTool { get; set; } //public Guid? ReviewTypeId { get; set; } = Guid.Empty; //[ForeignKey("ReviewTypeId")] //public Dictionary ReviewType { get; set; } //public Guid? QCSecondConfirmedUserId { get; set; } //public DateTime? QCSecondConfirmedTime { get; set; } //public int QCQuestionConfirmState { get; set; } } }