using System; using IRaCIS.Core.Infrastructure.Extention; using IRaCIS.Core.Domain.Share; using System.ComponentModel.DataAnnotations; using Org.BouncyCastle.Bcpg.OpenPgp; namespace IRaCIS.Application.Contracts { public class SubjectCommand { public Guid? Id { get; set; } public string Code { get; set; } = String.Empty; public int? Age { get; set; } public string Sex { get; set; } = string.Empty; public Guid SiteId { get; set; } public Guid TrialId { get; set; } public string MedicalNo { get; set; } = string.Empty; public string ShortName { get; set; } = string.Empty; public string Height { get; set; } = string.Empty; public string Weight { get; set; } = string.Empty; public DateTime? BirthDate { get; set; } public DateTime? SignDate { get; set; } public bool IsUrgent { get; set; } public DateTime? FirstGiveMedicineTime { get; set; } //public DateTime? OutEnrollmentTime { get; set; } //public DateTime? VisitOverTime { get; set; } //public SubjectStatus Status { get; set; } //public string Reason { get; set; } = string.Empty; } public class SubjectStatusChangeCommand { [NotDefault] public Guid SubjectId { get; set; } [NotDefault] public Guid TrialId { get; set; } [NotDefault] public Guid SiteId { get; set; } public SubjectStatus Status { get; set; } public DateTime? OutEnrollmentTime { get; set; } public DateTime? VisitOverTime { get; set; } public string Reason { get; set; } = string.Empty; public Guid? FinalSubjectVisitId { get; set; } } public class TrialSubjectConfig { public string SubjectCodeRule { get; set; } = string.Empty; public bool IsNoticeSubjectCodeRule { get; set; } public bool IsHaveFirstGiveMedicineDate { get; set; } public bool IsEnrollementQualificationConfirm { get; set; } public bool IsHaveSubjectAge { get; set; } public string OutEnrollmentVisitName { get; set; } = string.Empty; public bool VisitPlanConfirmed { get; set; } public bool IsSubjectSexView { get; set; } = false; public bool IsSubjectExpeditedView { get; set; } = false; public bool IsPDProgressView { get; set; } public string VisitBaseDataDes { get; set; } public bool IsSubjectSecondCodeView { get; set; } = false; } public class SubjectQueryView: SubjectCommand { public DateTime? OutEnrollmentTime { get; set; } public DateTime? VisitOverTime { get; set; } public SubjectStatus Status { get; set; } public string Reason { get; set; } = string.Empty; //public int? StudyCount { get; set; } //public int? VisitCount { get; set; } //public int? PlanVisitCount { get; set; } //public int? InPlanDicomStudyUploadCount { get; set; } //public int? OutPlanDicomStudyUploadCount { get; set; } //public int? InPlanNoneDicomStudyUploadCount { get; set; } //public int? OutPlanNoneDicomStudyUploadCount { get; set; } public Guid? FinalSubjectVisitId { get; set; } public int? TotalVisitCount => OutPlanVisitCount + InPlanVisitCount; public int? TotalVisitSubmmitCount => OutPlanVisitSubmmitCount + InPlanVisitSubmmitCount; public int? OutPlanVisitCount { get; set; } public int? OutPlanVisitSubmmitCount { get; set; } public int? InPlanVisitCount { get; set; } public int? InPlanVisitSubmmitCount { get; set; } public string? FinalSubjectVisitName { get; set; } public int? MissingSubmmitCount { get; set; } public int? LostVisitCount { get; set; } public DateTime? CreateTime { get; set; } public DateTime? UpdateTime { get; set; } public string SiteName { get; set; } = string.Empty; public string TrialSiteCode { get; set; } = string.Empty; public string LatestVisitName { get; set; } = string.Empty; public string LatestBlindName { get; set; } = string.Empty; public bool IsMissingImages => MissingSubmmitCount > 0; public Guid LatestSubmitSubjectVisitId { get; set; } } public class SubjectQueryParam : PageInput { [NotDefault] public Guid TrialId { get; set; } public string Code { get; set; } = string.Empty; public string Name { get; set; } = string.Empty; public string Sex { get; set; } = string.Empty; public Guid? SiteId { get; set; } public SubjectStatus? Status { get; set; } } public class SubjectSelect { public Guid SubjectId { get; set; } public string Name => LastName + " / " + FirstName; public string FirstName { get; set; } = string.Empty; public string LastName { get; set; } = string.Empty; public string Code { get; set; } = string.Empty; public string Sex { get; set; } = string.Empty; public int? Age { get; set; } public SubjectStatus Status { get; set; } public DateTime? FirstGiveMedicineTime { get; set; } public string MRN { get; set; } = string.Empty; } }