From b90f5f2d85d63142e35519d9fb4578933d6eccfc Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Fri, 20 Sep 2024 11:47:02 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B8=85=E7=90=86=E5=90=8E=E7=AB=AF=E4=B8=8B?= =?UTF-8?q?=E8=BD=BD?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../IRaCIS.Core.Application.xml | 10 - .../ImageAndDoc/DTO/DownloadAndUploadDTO.cs | 1 - .../ImageAndDoc/DownloadAndUploadService.cs | 59 +-- IRaCIS.Core.Domain/Financial/ExchangeRate.cs | 2 +- IRaCIS.Core.Domain/Financial/Payment.cs | 10 +- .../Financial/PaymentAdjustment.cs | 6 +- IRaCIS.Core.Domain/Financial/PaymentDetail.cs | 12 +- IRaCIS.Core.Domain/Financial/RankPrice.cs | 20 +- .../Financial/TrialPaymentPrice.cs | 4 +- .../Financial/TrialRevenuesPrice.cs | 20 +- IRaCIS.Core.Domain/Financial/VolumeReward.cs | 2 +- IRaCIS.Core.Domain/Management/User.cs | 112 +++--- IRaCIS.Core.Domain/Visit/Subject.cs | 20 +- IRaCIS.Core.Domain/Visit/SubjectVisit.cs | 335 ++++++++---------- IRaCIS.Core.Domain/Visit/VisitStage.cs | 2 +- 15 files changed, 255 insertions(+), 360 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 217a59fc9..9cfa3fc81 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1492,16 +1492,6 @@ - - - 打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包 - - - - - - - 受试者级别所有的影像 diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs index 36d9fa60c..977f0c618 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs @@ -18,7 +18,6 @@ public string CriterionModalitys { get; set; } public Guid? SourceSubjectVisitId { get; set; } - public PackState PackState { get; set; } public List OrginalStudyList { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 171c01ae8..29fedaebe 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -131,7 +131,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc TaskName = u.TaskName, SourceSubjectVisitId = u.SourceSubjectVisitId, - PackState = u.SourceSubjectVisit.PackState, OrginalStudyList = u.SourceSubjectVisit.StudyList .Where(t => u.TrialReadingCriterion.IsImageFilter ? ("|" + u.TrialReadingCriterion.CriterionModalitys + "|").Contains("|" + t.ModalityForEdit + "|") : true) @@ -1011,59 +1010,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc #region 之前后端下载废弃 - /// - /// 打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包 - /// - /// - /// - /// - /// - /// - [Obsolete] - public async Task RequestPackageAndAnonymizImage(Guid trialId, Guid subjectVisitId, bool isDicom, bool isAnonymize = true) - { - - - var extralConfig = _trialRepository.Where(t => t.Id == trialId).Select(t => t.TrialExtraConfigJsonStr).FirstOrDefault() ?? string.Empty; - - var config = JsonConvert.DeserializeObject(extralConfig) ?? new TrialExtraConfig(); - - if (config.IsSupportQCDownloadImage == false) - { - throw new BusinessValidationFailedException("该项目不支持QC下载影像"); - } - - var subjectVisit = await _subjectVisitRepository.FirstOrDefaultAsync(t => t.Id == subjectVisitId); - - var sujectCode = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => t.Subject.Code).FirstOrDefaultAsync(); - - var packState = isDicom ? subjectVisit.PackState : subjectVisit.NoDicomPackState; - - if (packState == PackState.WaitPack) - { - - if (isDicom) - { - subjectVisit.PackState = PackState.Packing; - HangfireJobHelper.NotImmediatelyOnceOnlyJob(t => t.PackageAndAnonymizImage(trialId, subjectVisitId, true, isAnonymize), TimeSpan.FromSeconds(1)); - - } - else - { - subjectVisit.NoDicomPackState = PackState.Packing; - - HangfireJobHelper.NotImmediatelyOnceOnlyJob(t => t.PackageAndAnonymizImage(trialId, subjectVisitId, false, isAnonymize), TimeSpan.FromSeconds(1)); - } - - - await _subjectVisitRepository.SaveChangesAsync(); - } - - return ResponseOutput.Ok(isDicom ? subjectVisit.VisitImageZipPath : subjectVisit.VisitNoDicomImageZipPath, - new { FileName = $"{sujectCode}_{subjectVisit.VisitName}_ImageStudy_{(isDicom ? "Dicom" : "NoneDicom")}.zip" }); - - } @@ -1371,7 +1318,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc //上传到Oss var relativeDicomPath = await _oSSService.UploadToOSSAsync(zipDicomPath, $"download_zip", false); - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitImageZipPath = relativeDicomPath }); + //await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitImageZipPath = relativeDicomPath }); File.Delete(zipDicomPath); @@ -1410,7 +1357,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc File.Delete(zipNoneDicomPath); } - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitNoDicomImageZipPath = relativeNoneDicomPath }); + //await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.Packed, VisitNoDicomImageZipPath = relativeNoneDicomPath }); } @@ -1422,7 +1369,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } catch (Exception ex) { - await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.WaitPack }); + //await _subjectVisitRepository.BatchUpdateNoTrackingAsync(t => t.Id == subjectVisitId, u => new SubjectVisit() { PackState = PackState.WaitPack }); } diff --git a/IRaCIS.Core.Domain/Financial/ExchangeRate.cs b/IRaCIS.Core.Domain/Financial/ExchangeRate.cs index 82d7c370b..c38f35124 100644 --- a/IRaCIS.Core.Domain/Financial/ExchangeRate.cs +++ b/IRaCIS.Core.Domain/Financial/ExchangeRate.cs @@ -5,7 +5,7 @@ { public string YearMonth { get; set; } = string.Empty; - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Rate { get; set; } } diff --git a/IRaCIS.Core.Domain/Financial/Payment.cs b/IRaCIS.Core.Domain/Financial/Payment.cs index 2d5a08aa3..dc7a6410f 100644 --- a/IRaCIS.Core.Domain/Financial/Payment.cs +++ b/IRaCIS.Core.Domain/Financial/Payment.cs @@ -9,20 +9,20 @@ namespace IRaCIS.Core.Domain.Models public bool IsLock { get; set; } public DateTime YearMonthDate { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal PaymentUSD { get; set; } - [Column(TypeName = "decimal(18,4)")] + [DecimalPrecision(18, 4)] public decimal PaymentCNY { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal ExchangeRate { get; set; } - [Column(TypeName = "decimal(18,4)")] + [DecimalPrecision(18, 4)] public decimal AdjustmentCNY { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjustmentUSD { get; set; } public DateTime CalculateTime { get; set; } = DateTime.Now; diff --git a/IRaCIS.Core.Domain/Financial/PaymentAdjustment.cs b/IRaCIS.Core.Domain/Financial/PaymentAdjustment.cs index e1efc17ba..542201fc2 100644 --- a/IRaCIS.Core.Domain/Financial/PaymentAdjustment.cs +++ b/IRaCIS.Core.Domain/Financial/PaymentAdjustment.cs @@ -8,16 +8,16 @@ namespace IRaCIS.Core.Domain.Models public DateTime YearMonthDate { get; set; } public string YearMonth { get; set; } = string.Empty; - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjustmentUSD { get; set; } - [Column(TypeName = "decimal(18,4)")] + [DecimalPrecision(18, 4)] public decimal AdjustmentCNY { get; set; } public Guid TrialId { get; set; } = Guid.Empty; - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal ExchangeRate { get; set; } public bool IsLock { get; set; } = false; public string Note { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Domain/Financial/PaymentDetail.cs b/IRaCIS.Core.Domain/Financial/PaymentDetail.cs index 91f002eed..39090d816 100644 --- a/IRaCIS.Core.Domain/Financial/PaymentDetail.cs +++ b/IRaCIS.Core.Domain/Financial/PaymentDetail.cs @@ -15,22 +15,22 @@ namespace IRaCIS.Core.Domain.Models public string PaymentType { get; set; } = string.Empty; public int Count { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal BasePrice { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal PersonalAdditional { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal TrialAdditional { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal ExchangeRate { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal PaymentUSD { get; set; } - [Column(TypeName = "decimal(18,4)")] + [DecimalPrecision(18, 4)] public decimal PaymentCNY { get; set; } public int ShowTypeOrder { get; set; } diff --git a/IRaCIS.Core.Domain/Financial/RankPrice.cs b/IRaCIS.Core.Domain/Financial/RankPrice.cs index 18e54d999..5d026d935 100644 --- a/IRaCIS.Core.Domain/Financial/RankPrice.cs +++ b/IRaCIS.Core.Domain/Financial/RankPrice.cs @@ -6,34 +6,34 @@ namespace IRaCIS.Core.Domain.Models [StringLength(200)] public string RankName { get; set; } = string.Empty; - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Timepoint { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal TimepointIn24H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal TimepointIn48H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Adjudication { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjudicationIn24H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjudicationIn48H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Global { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Training { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Downtime { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal RefresherTraining { get; set; } public int ShowOrder { get; set; } } diff --git a/IRaCIS.Core.Domain/Financial/TrialPaymentPrice.cs b/IRaCIS.Core.Domain/Financial/TrialPaymentPrice.cs index 098cbb490..cda951ac4 100644 --- a/IRaCIS.Core.Domain/Financial/TrialPaymentPrice.cs +++ b/IRaCIS.Core.Domain/Financial/TrialPaymentPrice.cs @@ -7,13 +7,13 @@ namespace IRaCIS.Core.Domain.Models public Trial Trial { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal TrialAdditional { get; set; } = 0; public string SowName { get; set; } = string.Empty; public string SowPath { get; set; } = string.Empty; - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjustmentMultiple { get; set; } = 1; /// diff --git a/IRaCIS.Core.Domain/Financial/TrialRevenuesPrice.cs b/IRaCIS.Core.Domain/Financial/TrialRevenuesPrice.cs index bed8eb9bc..8a8cdb94e 100644 --- a/IRaCIS.Core.Domain/Financial/TrialRevenuesPrice.cs +++ b/IRaCIS.Core.Domain/Financial/TrialRevenuesPrice.cs @@ -5,34 +5,34 @@ { public Guid TrialId { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Timepoint { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal TimepointIn24H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal TimepointIn48H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Adjudication { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjudicationIn24H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal AdjudicationIn48H { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Global { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Training { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Downtime { get; set; } - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal RefresherTraining { get; set; } } diff --git a/IRaCIS.Core.Domain/Financial/VolumeReward.cs b/IRaCIS.Core.Domain/Financial/VolumeReward.cs index fc99d4bb9..e05088f70 100644 --- a/IRaCIS.Core.Domain/Financial/VolumeReward.cs +++ b/IRaCIS.Core.Domain/Financial/VolumeReward.cs @@ -3,7 +3,7 @@ namespace IRaCIS.Core.Domain.Models [Table("VolumeReward")] public partial class VolumeReward : BaseFullAuditEntity { - [Column(TypeName = "decimal(18,2)")] + [DecimalPrecision(18, 2)] public decimal Price { get; set; } public int Min { get; set; } public int Max { get; set; } diff --git a/IRaCIS.Core.Domain/Management/User.cs b/IRaCIS.Core.Domain/Management/User.cs index 53b27509a..35f999275 100644 --- a/IRaCIS.Core.Domain/Management/User.cs +++ b/IRaCIS.Core.Domain/Management/User.cs @@ -1,95 +1,91 @@ using EntityFrameworkCore.Projectables; using IRaCIS.Core.Domain.Share; -namespace IRaCIS.Core.Domain.Models +namespace IRaCIS.Core.Domain.Models; + +[Comment("̨ - ϵͳ˻")] +[Table("User")] +public class User : BaseFullAuditEntity { - [Table("User")] - public partial class User : BaseFullAuditEntity - { - #region - [ForeignKey("UserTypeId")] - public UserType UserTypeRole { get; set; } + #region - [JsonIgnore] - public List SystemDocConfirmedList { get; set; } + [ForeignKey("UserTypeId")] + public UserType UserTypeRole { get; set; } - [JsonIgnore] - public List UserTrials { get; set; } = new List(); + [JsonIgnore] + public List SystemDocConfirmedList { get; set; } - [JsonIgnore] - public List VisitTaskList { get; set; } + [JsonIgnore] + public List UserTrials { get; set; } = new List(); - #endregion + [JsonIgnore] + public List VisitTaskList { get; set; } + [Projectable] + public string FullName => LastName + " / " + FirstName; + #endregion - [StringLength(255)] - public string UserName { get; set; } = String.Empty; + [Comment(" Զлһ")] + public bool AutoCutNextTask { get; set; } - [StringLength(255)] - public string Password { get; set; } = String.Empty; - [StringLength(255)] + public int Code { get; set; } - public string LastName { get; set; } = String.Empty; - public string FirstName { get; set; } = String.Empty; + [StringLength(400)] + public string DepartmentName { get; set; } = null!; - public string Phone { get; set; } = string.Empty; - public string EMail { get; set; } = string.Empty; - public int? Sex { get; set; } - public UserStateEnum Status { get; set; } = UserStateEnum.Enable; + [Comment(" ҽ˺ź󣬻ֵ")] + public Guid? DoctorId { get; set; } - public DateTime? LastLoginTime { get; set; } + public string EMail { get; set; } = null!; - public Guid UserTypeId { get; set; } = Guid.Empty; + [StringLength(1020)] + public string EmailToken { get; set; } = null!; + public string FirstName { get; set; } = null!; - // ڲû ⲿû - public bool IsZhiZhun { get; set; } + [Comment(" ״ε¼Ҫ޸")] + public bool IsFirstAdd { get; set; } - public UserTypeEnum UserTypeEnum { get; set; } + public bool IsTestUser { get; set; } - public string OrganizationName { get; set; } = String.Empty; + [Comment(" ڲû ⲿû")] + public bool IsZhiZhun { get; set; } - public bool PasswordChanged { get; set; } + [Comment(" һ޸ʱ")] + public DateTime? LastChangePassWordTime { get; set; } + public string LastLoginIP { get; set; } = null!; - public string UserCode { get; set; } = string.Empty; + public DateTime? LastLoginTime { get; set; } - public int Code { get; set; } + [StringLength(510)] + public string LastName { get; set; } = null!; + public string OrganizationName { get; set; } = null!; - public string DepartmentName { get; set; } = String.Empty; + public string Password { get; set; } = null!; - public string PositionName { get; set; } = String.Empty; + public bool PasswordChanged { get; set; } + [StringLength(400)] + public string Phone { get; set; } = null!; - public bool IsFirstAdd { get; set; } = true; + [StringLength(400)] + public string PositionName { get; set; } = null!; - public string EmailToken { get; set; } = string.Empty; + public int? Sex { get; set; } - /// - /// һ޸ʱ - /// - public DateTime? LastChangePassWordTime { get; set; } + public UserStateEnum Status { get; set; } = UserStateEnum.Enable; - /// - /// LastLoginIP - /// - public string LastLoginIP { get; set; } = string.Empty; + public bool SuperAdmin { get; set; } - //ҽ˺ź󣬻ֵ - public Guid? DoctorId { get; set; } + [StringLength(400)] + public string UserCode { get; set; } = null!; - public bool IsTestUser { get; set; } + public string UserName { get; set; } = null!; - /// - /// Զлһ - /// - public bool AutoCutNextTask { get; set; } = false; + public UserTypeEnum UserTypeEnum { get; set; } - [Projectable] - public string FullName => LastName + " / " + FirstName; - - //[Projectable] public string FullName => $"{LastName} / {FirstName}"; - } + public Guid UserTypeId { get; set; } } diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs index 3dc2582c7..78eb287de 100644 --- a/IRaCIS.Core.Domain/Visit/Subject.cs +++ b/IRaCIS.Core.Domain/Visit/Subject.cs @@ -2,9 +2,7 @@ namespace IRaCIS.Core.Domain.Models; -/// -/// 受试者 -/// +[Comment("项目 - 受试者")] [Table("Subject")] public class Subject : BaseFullDeleteAuditEntity { @@ -60,9 +58,8 @@ public class Subject : BaseFullDeleteAuditEntity public List ClinicalFormList { get; set; } #endregion - public Guid? FinalSubjectVisitId { get; set; } - + public Guid TrialId { get; set; } public Guid TrialSiteId { get; set; } public string Code { get; set; } = string.Empty; @@ -71,25 +68,20 @@ public class Subject : BaseFullDeleteAuditEntity public int? Age { get; set; } public string Sex { get; set; } = string.Empty; - - public Guid? LatestSubjectVisitId { get; set; } + public Guid? FinalSubjectVisitId { get; set; } - - public Guid TrialId { get; set; } = Guid.Empty; public string MedicalNo { get; set; } = string.Empty; public SubjectStatus Status { get; set; } = SubjectStatus.OnVisit;//1 访视中,2 出组 3 访视结束 public string Reason { get; set; } = string.Empty; public bool IsEnrollment { get; set; } - public DateTime? OutEnrollmentTime { get; set; } public DateTime? VisitOverTime { get; set; } - public string ShortName { get; set; } = String.Empty; public string Height { get; set; } = String.Empty; @@ -97,15 +89,15 @@ public class Subject : BaseFullDeleteAuditEntity public string Weight { get; set; } = String.Empty; public DateTime? BirthDate { get; set; } + + [Comment("知情同意书签署日期")] public DateTime? SignDate { get; set; } public DateTime? FirstGiveMedicineTime { get; set; } public bool IsUrgent { get; set; } - - - + [Comment("重阅或者退回影响一致性分析")] public bool IsReReadingOrBackInfluenceAnalysis { get; set; } diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs index 7e7480505..dc455e434 100644 --- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs +++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs @@ -1,250 +1,221 @@ using IRaCIS.Core.Domain.Share; -namespace IRaCIS.Core.Domain.Models +namespace IRaCIS.Core.Domain.Models; + +[Comment("受试者访视")] +[Table("SubjectVisit")] +public class SubjectVisit : BaseFullDeleteAuditEntity { - [Table("SubjectVisit")] - public class SubjectVisit : BaseFullDeleteAuditEntity - { + #region 导航属性 + [JsonIgnore] + public TrialSite TrialSite { get; set; } - #region 导航属性 + [JsonIgnore] + [ForeignKey("OutPlanPreviousVisitId")] + public SubjectVisit OutPlanPreviousVisit { get; set; } - [JsonIgnore] - public TrialSite TrialSite { get; set; } - [JsonIgnore] - [ForeignKey("OutPlanPreviousVisitId")] - public SubjectVisit OutPlanPreviousVisit { get; set; } + [ForeignKey("ForwardUserId")] + public User ForwardUser { get; set; } - [ForeignKey("ForwardUserId")] - public User ForwardUser { get; set; } + [JsonIgnore] + [ForeignKey("PreliminaryAuditUserId")] + public User PreliminaryAuditUser { get; set; } + [JsonIgnore] + [ForeignKey("ReviewAuditUserId")] + public User ReviewAuditUser { get; set; } - [JsonIgnore] - [ForeignKey("PreliminaryAuditUserId")] - public User PreliminaryAuditUser { get; set; } + [JsonIgnore] + [ForeignKey("CurrentActionUserId")] + public User CurrentActionUser { get; set; } + [JsonIgnore] + [ForeignKey("SubmitUserId")] + public User SubmitUser { get; set; } - [JsonIgnore] - [ForeignKey("ReviewAuditUserId")] - public User ReviewAuditUser { get; set; } + //导航属性 + [JsonIgnore] + [ForeignKey("TrialId")] + public Trial Trial { get; set; } - [JsonIgnore] - [ForeignKey("CurrentActionUserId")] - public User CurrentActionUser { get; set; } - [JsonIgnore] - [ForeignKey("SubmitUserId")] - public User SubmitUser { get; set; } - //导航属性 - [JsonIgnore] - [ForeignKey("TrialId")] - public Trial Trial { get; set; } + [JsonIgnore] + public List ReadModuleList { get; set; } - [JsonIgnore] - public List ReadModuleList { get; set; } + [JsonIgnore] + [ForeignKey("SubjectId")] + public Subject Subject { 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 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 SubjectCriteriaEvaluationVisitFilterList { get; set; } + #endregion - [JsonIgnore] - public List QCChallengeList { get; set; } = new List(); - [JsonIgnore] - public List QCChallengeDialogList { get; set; } = new List(); - [JsonIgnore] - public List VisitTaskList { get; set; } = new List(); + public Guid TrialSiteId { get; set; } + public Guid TrialId { get; set; } + public Guid SubjectId { get; set; } - [JsonIgnore] - public List SubjectCriteriaEvaluationVisitFilterList { get; set; } - #endregion + [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; - public Guid TrialSiteId { get; set; } + [Comment("0 未执行 1 执行了 2 不可用")] + public VisitExecutedEnum VisitExecuted { get; set; } = VisitExecutedEnum.UnExecuted; - //一个访视 对应有对应Site的 TrialSiteCode + public DateTime? EarliestScanDate { get; set; } - public Guid TrialId { get; set; } - public Guid SubjectId { get; set; } + [Comment("最晚拍片日期")] + public DateTime? LatestScanDate { get; set; } - 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; } + public Guid? Auditor { get; set; } - [Column(TypeName = "decimal(18,1)")] - public decimal VisitNum { get; set; } - public string BlindName { get; set; } = string.Empty; + [Comment("核查状态")] + public CheckStateEnum CheckState { get; set; } - 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("提交状态")] + public SubmitStateEnum SubmitState { get; set; } + [Comment("审核状态")] + public AuditStateEnum AuditState { get; set; } + public ForwardStateEnum ForwardState { get; set; } - //0 未执行 1 执行了 2 不可用 - public VisitExecutedEnum VisitExecuted { get; set; } = VisitExecutedEnum.UnExecuted; - public DateTime? EarliestScanDate { get; set; } + [Comment("单审通过人")] + public Guid? PreliminaryAuditUserId { get; set; } - /// - /// 最晚拍片日期 - /// - public DateTime? LatestScanDate { get; set; } + [Comment("双审通过人")] + public Guid? ReviewAuditUserId { get; set; } - public Guid? Auditor { 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; } - //核查状态 - public CheckStateEnum CheckState { get; set; } + [Comment("当前质控领取人")] + public Guid? CurrentActionUserId { get; set; } + public DateTime? CurrentActionUserExpireTime { get; set; } - //提交状态 - public SubmitStateEnum SubmitState { get; set; } - //审核状态 - public AuditStateEnum AuditState { get; set; } - public ForwardStateEnum ForwardState { get; set; } + public DateTime? SubmitTime { get; set; } + public DateTime? CheckTime { get; set; } - /// - /// 单审通过人 - /// - public Guid? PreliminaryAuditUserId { get; set; } + [Comment("通过原因")] + public string ManualPassReason { get; set; } = string.Empty; - /// - /// 双审通过人 - /// - public Guid? ReviewAuditUserId { get; set; } + public bool IsUrgent { get; set; } - /// - /// 一致性核查人Id - /// - public Guid? CheckUserId { get; set; } + public bool IsTake { get; set; } - public DateTime? ReviewAuditTime { get; set; } - public DateTime? PreliminaryAuditTime { get; set; } - public Guid? ForwardUserId { get; set; } - public DateTime? ForwardTime { get; set; } + public bool IsFinalVisit { get; set; } - /// - /// 当前质控领取人 - /// - public Guid? CurrentActionUserId { get; set; } - public DateTime? CurrentActionUserExpireTime { get; set; } + public ChallengeStateEnum ChallengeState { get; set; } - public DateTime? SubmitTime { get; set; } - public DateTime? CheckTime { get; set; } + public string CheckResult { get; set; } = String.Empty; - /// - /// 通过原因 - /// - public string ManualPassReason { get; set; } = string.Empty; + [Comment("是否一致性核查回退")] + public bool? IsCheckBack { get; set; } - public bool IsUrgent { get; set; } + public DateTime? CheckBackTime { get; set; } - public bool IsTake { get; set; } + public CheckChanllengeTypeEnum CheckChallengeState { get; set; } + public PDStateEnum PDState { get; set; } = PDStateEnum.None; - public bool IsFinalVisit { get; set; } - public ChallengeStateEnum ChallengeState { get; set; } + public DateTime? CheckPassedTime { get; set; } - public string CheckResult { get; set; } = String.Empty; - //是否一致性核查回退 - public bool? IsCheckBack { get; set; } + [Comment("计划外上一访视")] + public Guid? OutPlanPreviousVisitId { get; set; } - public DateTime? CheckBackTime { get; set; } - public CheckChanllengeTypeEnum CheckChallengeState { get; set; } - public PDStateEnum PDState { get; set; } = PDStateEnum.None; + public RequestBackStateEnum RequestBackState { get; set; } - public DateTime? CheckPassedTime { get; set; } + public bool IsQCConfirmedReupload { get; set; } - /// - /// 上一访视 - /// - public Guid? OutPlanPreviousVisitId { get; set; } + public bool IsLostVisit { get; set; } + [Comment("是否确认了、签名了 临床数据完整性")] + public bool? IsConfirmedClinicalData { get; set; } - public RequestBackStateEnum RequestBackState { get; set; } + public bool IsEnrollmentConfirm { get; set; } + public bool IsVisitTaskGenerated { get; set; } - public bool IsQCConfirmedReupload { get; set; } + public bool IsPMBackOrReReading { get; set; } - public bool IsLostVisit { get; set; } + [Comment("关闭一致性质疑原因")] + public string CloseTheReason { get; set; } = string.Empty; + public Guid? SubmitUserId { get; set; } - //是否确认了、签名了 临床数据完整性 - public bool? IsConfirmedClinicalData { get; set; } + public ReadingStatusEnum ReadingStatus { get; set; } - public bool IsEnrollmentConfirm { get; set; } - - public bool IsVisitTaskGenerated { get; set; } - - public bool IsPMBackOrReReading { get; set; } - - /// - /// 关闭一致性质疑原因 - /// - public string CloseTheReason { get; set; } = string.Empty; - - public Guid? SubmitUserId { get; set; } - - - public ReadingStatusEnum ReadingStatus { get; set; } - - public string VisitImageZipPath { get; set; } = string.Empty; - - public PackState PackState { get; set; } - - public PackState NoDicomPackState { get; set; } - - public string VisitNoDicomImageZipPath { get; set; } = string.Empty; - } - /// - /// 影像下载打包状态 - /// - public enum PackState - { - - /// - /// 待打包 - /// - WaitPack = 0, - - /// - /// 打包中 - /// - Packing = 1, - - /// - /// 打包完成 - /// - Packed = 2 - } + +} +/// +/// 影像下载打包状态 +/// +public enum PackState +{ + + /// + /// 待打包 + /// + WaitPack = 0, + + /// + /// 打包中 + /// + Packing = 1, + + /// + /// 打包完成 + /// + Packed = 2 } diff --git a/IRaCIS.Core.Domain/Visit/VisitStage.cs b/IRaCIS.Core.Domain/Visit/VisitStage.cs index 9cc0b18c0..c462fd8f4 100644 --- a/IRaCIS.Core.Domain/Visit/VisitStage.cs +++ b/IRaCIS.Core.Domain/Visit/VisitStage.cs @@ -12,7 +12,7 @@ public string BlindName { get; set; } = string.Empty; - [Column(TypeName = "decimal(18,1)")] + [DecimalPrecision(18, 1)] public decimal VisitNum { get; set; } public string VisitName { get; set; } = string.Empty; public int VisitDay { get; set; }