From 45a84a65ecf87e615797e581c1124137c621c2db Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 11:30:41 +0800 Subject: [PATCH 01/19] S-72 --- .../TrialSiteUser/PersonalWorkstation.cs | 32 +++++++++---------- .../ClinicalData/ReadingClinicalData.cs | 9 +++++- IRaCIS.Core.Domain/Trial/Trial.cs | 4 +-- 3 files changed, 26 insertions(+), 19 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index e58ce76c2..e455be8ca 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application ToBeRepliedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; @@ -248,7 +248,7 @@ namespace IRaCIS.Core.Application UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(), ToBeApprovalCount = g.Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApplyToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -286,7 +286,7 @@ namespace IRaCIS.Core.Application IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView, ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count() - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -318,7 +318,7 @@ namespace IRaCIS.Core.Application ToBeApprovalCount = t.ReadModuleList.Where(u => u.IsCRCConfirm&&!u.IsPMConfirm).Count() - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -363,7 +363,7 @@ namespace IRaCIS.Core.Application IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView, ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count() - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -400,7 +400,7 @@ namespace IRaCIS.Core.Application UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(), ToBeApprovalCount = g.Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApprovalToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -441,9 +441,9 @@ namespace IRaCIS.Core.Application ExperimentName = t.ExperimentName, TrialCode = t.TrialCode, UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), - ToBeDealedCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted).Count(), + ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit).Count(), - }); + }).Where(x=>x.ToBeDealedCount>0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -490,7 +490,7 @@ namespace IRaCIS.Core.Application .Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQuestionToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -531,7 +531,7 @@ namespace IRaCIS.Core.Application ToBeReplyedCount = t.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id)) .Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() - }); + }).Where(x => x.ToBeDealedCount > 0); ; @@ -577,7 +577,7 @@ namespace IRaCIS.Core.Application .Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id)) .Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageReUploadToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -621,7 +621,7 @@ namespace IRaCIS.Core.Application .Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id)) .Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageSubmittedToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -674,7 +674,7 @@ namespace IRaCIS.Core.Application //待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了) ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == _userInfo.Id).Count() - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQualityToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -719,7 +719,7 @@ namespace IRaCIS.Core.Application ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList) .Where(u => u.CreateUserId == _userInfo.Id && u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(), - }); + }).Where(x => x.ToBeDealedCount > 0); ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQuestionToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -791,9 +791,9 @@ namespace IRaCIS.Core.Application HaveSignedCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(), - }) + }).Where(x => x.ToBeDealedCount > 0); - ; + ; #region 废弃 //var query = _trialRepository diff --git a/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs b/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs index 2c6ba3b0f..bdcb87f34 100644 --- a/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs +++ b/IRaCIS.Core.Domain/Reading/ClinicalData/ReadingClinicalData.cs @@ -75,7 +75,14 @@ namespace IRaCIS.Core.Domain.Models public ClinicalDataTrialSet ClinicalDataTrialSet { get; set; } - [JsonIgnore] + + + [JsonIgnore] + [ForeignKey("TrialId")] + + public Trial Trial { get; set; } + + [JsonIgnore] [ForeignKey("ReadingId")] public SubjectVisit SubjectVisit { get; set; } diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs index bc38a6392..705ca584b 100644 --- a/IRaCIS.Core.Domain/Trial/Trial.cs +++ b/IRaCIS.Core.Domain/Trial/Trial.cs @@ -85,8 +85,8 @@ namespace IRaCIS.Core.Domain.Models 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; From e9ee41e1a11d05cf9b4a5a3ccc36231211d652e8 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 11:57:44 +0800 Subject: [PATCH 02/19] S-73 --- .../TrialSiteUser/PersonalWorkstation.cs | 20 +++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index e455be8ca..ce85e2183 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -205,7 +205,7 @@ namespace IRaCIS.Core.Application ToBeRepliedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeDialogList.OrderByDescending(t => t.CreateTime).First().UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count(), - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeRepliedCount > 0); @@ -248,7 +248,7 @@ namespace IRaCIS.Core.Application UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(), ToBeApprovalCount = g.Count(), - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeApprovalCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApplyToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -286,7 +286,7 @@ namespace IRaCIS.Core.Application IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView, ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count() - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeApprovalCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -318,7 +318,7 @@ namespace IRaCIS.Core.Application ToBeApprovalCount = t.ReadModuleList.Where(u => u.IsCRCConfirm&&!u.IsPMConfirm).Count() - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeApprovalCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -363,7 +363,7 @@ namespace IRaCIS.Core.Application IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView, ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).Count() - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeApprovalCount > 0) ; var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReviewerSelectToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -400,7 +400,7 @@ namespace IRaCIS.Core.Application UrgentCount = g.Where(u => u.OriginalReReadingTask.IsUrgent == true).Count(), ToBeApprovalCount = g.Count(), - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeApprovalCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ReReadingApprovalToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -531,7 +531,7 @@ namespace IRaCIS.Core.Application ToBeReplyedCount = t.SubjectVisitList.Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id)) .Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count() - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeReplyedCount > 0); @@ -577,7 +577,7 @@ namespace IRaCIS.Core.Application .Where(c => c.TrialSite.CRCUserList.Any(u => u.UserId == _userInfo.Id)) .Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count(), - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.ToBeReUploadCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageReUploadToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -674,7 +674,7 @@ namespace IRaCIS.Core.Application //待审核通过,统计从已领取到QC提交之间的 已领取 待审核 审核中 (审核完成 领取人就会清理 所以只用查询当前领取人是自己的就好了) ToBeReviewedCount = t.SubjectVisitList.Where(u => u.CurrentActionUserId == _userInfo.Id).Count() - }).Where(x => x.ToBeDealedCount > 0); ; + }).Where(x => x.UrgentCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageQualityToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); @@ -791,7 +791,7 @@ namespace IRaCIS.Core.Application HaveSignedCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze) && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(), - }).Where(x => x.ToBeDealedCount > 0); + }).Where(x => x.UnReadCount > 0); ; From fc5f68bd7caf2af59614c56da5d3e27ad85bcfef Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 13:46:46 +0800 Subject: [PATCH 03/19] S-74 --- .../Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs | 2 ++ .../Service/TrialSiteUser/PersonalWorkstation.cs | 4 ++-- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs index 33ccd99e4..2bdfd6ff9 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs @@ -256,6 +256,8 @@ namespace IRaCIS.Core.Application.Contracts public int? UrgentCount { get; set; } public int? ToBeDealedCount { get; set; } + + public int? ReadModuleCount { get; set; } } public class TrialToBeDoneQuery : PageInput diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index ce85e2183..49187a51a 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -442,8 +442,8 @@ namespace IRaCIS.Core.Application TrialCode = t.TrialCode, UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit).Count(), - - }).Where(x=>x.ToBeDealedCount>0); + ReadModuleCount=t.ReadModuleList.Count(), + }).Where(x=>x.ToBeDealedCount>0).Where(x => x.ReadModuleCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); From 690043349615891cc568c67a4ddcfca5be96b406 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 13:48:19 +0800 Subject: [PATCH 04/19] S-75 --- .../Service/TrialSiteUser/PersonalWorkstation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 49187a51a..bdc9e2c26 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -443,7 +443,7 @@ namespace IRaCIS.Core.Application UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit).Count(), ReadModuleCount=t.ReadModuleList.Count(), - }).Where(x=>x.ToBeDealedCount>0).Where(x => x.ReadModuleCount > 0); + }).Where(x=>x.ToBeDealedCount>0|| x.ReadModuleCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); From df508335a028532834ffd7f2a77fb333cde4fe8a Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 13:55:52 +0800 Subject: [PATCH 05/19] S-76 --- .../Service/TrialSiteUser/PersonalWorkstation.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index bdc9e2c26..5c803a66d 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -442,7 +442,7 @@ namespace IRaCIS.Core.Application TrialCode = t.TrialCode, UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit).Count(), - ReadModuleCount=t.ReadModuleList.Count(), + ReadModuleCount=t.ReadModuleList.Where(x=>!x.IsPMConfirm).Count(), }).Where(x=>x.ToBeDealedCount>0|| x.ReadModuleCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); From 9d4fea44077ae52072527364baa7b7ed6c303fa4 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 14:19:21 +0800 Subject: [PATCH 06/19] S-77 --- .../Reading/ClinicalData/ClinicalAnswerService.cs | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index dcb351d59..082b6201a 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -752,17 +752,20 @@ namespace IRaCIS.Core.Application.Service { var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync(); - + var confirmlist = (await this.GetCRCConfirmList(new GetCRCConfirmListInDto() { TrialId = inDto.TrialId, SubjectId= readModule.SubjectId, - ReadModuleId= inDto.ReadModuleId, + IsCRCConfirm=false, TrialReadingCriterionId = readModule.TrialReadingCriterionId, PageIndex=1, PageSize=9999, - })).CurrentPageData; + })).CurrentPageData.ToList(); + var presentData = confirmlist.Where(x => x.ReadModuleId == inDto.ReadModuleId).First(); + + confirmlist = confirmlist.Where(x => x.LatestScanDate <= presentData.LatestScanDate).ToList(); await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== inDto.ReadModuleId); List needAddList = new List() From 09e0187a7d94da67369d25c8697dc9ab5af8a612 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 14:50:42 +0800 Subject: [PATCH 07/19] S-78 --- .../Service/Reading/ClinicalData/ClinicalAnswerService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 082b6201a..d64cd33c4 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -266,7 +266,7 @@ namespace IRaCIS.Core.Application.Service result.AnswerList = new List>(); result.QuestionList=await _trialClinicalQuestionRepository.Where(x=>x.TrialClinicalId==inDto.ClinicalDataTrialSetId &&x.ClinicalQuestionType!= ReadingQestionType.Group - && x.ClinicalQuestionType != ReadingQestionType.Table).OrderBy(x=>x.ShowOrder) + && x.ClinicalQuestionType != ReadingQestionType.Table).OrderByDescending(x=>x.IsCheckDate).ThenBy(x=>x.ShowOrder) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); var answers = await _clinicalQuestionAnswerRepository.Where(x => x.SubjectId == inDto.SubjectId && x.ClinicalDataTrialSetId == inDto.ClinicalDataTrialSetId) From 47a4403cbec881c090342a71efb048bd129bba5b Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 16:01:55 +0800 Subject: [PATCH 08/19] S-79 --- .../ClinicalData/ClinicalAnswerService.cs | 4 ++- .../Service/Reading/Dto/ClinicalAnswerDto.cs | 10 ++++++ .../Reading/ReadingPeriod/ReadModule.cs | 32 ++++++++++++------- 3 files changed, 34 insertions(+), 12 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index d64cd33c4..b5531c3ad 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -871,7 +871,9 @@ namespace IRaCIS.Core.Application.Service { await _readModuleRepository.UpdatePartialFromQueryAsync(x => inDto.ReadModuleId == x.Id, x => new ReadModule() { - IsPMConfirm = true + IsPMConfirm = true, + IsClinicalDataBlind=inDto.IsClinicalDataBlind, + IsClinicalDataComplete=inDto.IsClinicalDataComplete, }); await _readModuleRepository.SaveChangesAsync(); await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModuleData.TrialReadingCriterionId); diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index 22c2b30fe..1cb030cc3 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -222,6 +222,16 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid ReadModuleId { get; set; } + /// + /// 临床数据是否完整 + /// + public bool? IsClinicalDataComplete { get; set; } + + /// + /// 临床数据是否盲化 + /// + public bool? IsClinicalDataBlind { get; set; } + public bool IsConfirm { get; set; } } diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs index 647451fc7..bd4d29278 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs @@ -90,19 +90,29 @@ namespace IRaCIS.Core.Domain.Models public Guid? DeleteUserId { get; set; } - ///// - ///// - ///// - //public decimal VisitNum { get; set; } + /// + /// 临床数据是否完整 + /// + public bool? IsClinicalDataComplete { get; set; } - // [JsonIgnore] - ///// - ///// 对应 - ///// - //[ForeignKey("ReadModuleId")] - //public ReadModule ReadModuleModel { get; set; } + /// + /// 临床数据是否盲化 + /// + public bool? IsClinicalDataBlind { get; set; } - [JsonIgnore] + ///// + ///// + ///// + //public decimal VisitNum { get; set; } + + // [JsonIgnore] + ///// + ///// 对应 + ///// + //[ForeignKey("ReadModuleId")] + //public ReadModule ReadModuleModel { get; set; } + + [JsonIgnore] /// /// 受试者 /// From ef8220c236b596eaff53bf414177494309c0a688 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 16:35:31 +0800 Subject: [PATCH 09/19] S-80 --- IRaCIS.Core.Application/IRaCIS.Core.Application.xml | 10 ++++++++++ .../Reading/ClinicalData/ClinicalAnswerService.cs | 7 ++++++- .../TrialSiteUser/DTO/PersonalWorkstationViewModel.cs | 4 ++++ .../Service/TrialSiteUser/PersonalWorkstation.cs | 6 ++++-- 4 files changed, 24 insertions(+), 3 deletions(-) diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 35bb60e8e..0ce2bb837 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -2786,6 +2786,16 @@ 模块名称 + + + 临床数据是否完整 + + + + + 临床数据是否盲化 + + 受试者Id diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index b5531c3ad..9588f5ace 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -515,6 +515,11 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task> GetCRCConfirmList(GetCRCConfirmListInDto inDto) { + if (inDto.ReadModuleId != null) + { + var readModule = await _readModuleRepository.Where(x => x.Id == inDto.ReadModuleId).FirstNotNullAsync(); + inDto.TrialReadingCriterionId = readModule.TrialReadingCriterionId; + } var query = _readModuleRepository.Where(x => x.TrialId == inDto.TrialId) .WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId) .WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm) @@ -819,7 +824,7 @@ namespace IRaCIS.Core.Application.Service var presentData = dataList.Where(x => x.ReadModuleId == inDto.ReadModuleId).First(); - if (dataList.Any(x => x.IsPMConfirm && x.LatestScanDate > presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType)) + if (dataList.Any(x => x.IsCRCConfirm && x.LatestScanDate > presentData.LatestScanDate && x.ReadingSetType == presentData.ReadingSetType)) { throw new BusinessValidationFailedException("当前数据并非最后一条确认信息,无法取消!"); } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs index 2bdfd6ff9..f8d22c930 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/PersonalWorkstationViewModel.cs @@ -257,6 +257,10 @@ namespace IRaCIS.Core.Application.Contracts public int? ToBeDealedCount { get; set; } + public int? ToAllCount { get; set; } + + public int? ToBeVisitCount { get; set; } + public int? ReadModuleCount { get; set; } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 5c803a66d..5f34f0865 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -442,8 +442,10 @@ namespace IRaCIS.Core.Application TrialCode = t.TrialCode, UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit).Count(), - ReadModuleCount=t.ReadModuleList.Where(x=>!x.IsPMConfirm).Count(), - }).Where(x=>x.ToBeDealedCount>0|| x.ReadModuleCount > 0); + ToBeVisitCount= t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(), + ToAllCount= t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC ).Count(), + ReadModuleCount =t.ReadModuleList.Where(x=>!x.IsPMConfirm).Count(), + }).Where(x=>x.ToAllCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); From 768d936ba975a73e0ae19d5e1098f81980ea4b86 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 17:44:40 +0800 Subject: [PATCH 10/19] S-81 --- .../Service/Reading/Dto/ClinicalDataServiceViewModel.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index 8e0dd533f..fd279e1a1 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -16,7 +16,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// /// 是否应用 /// - public bool IsApply { get; set; } = false; + public bool? IsApply { get; set; } /// /// 名称 From 6d1c72718b61f64e7400c3be07164a57f7439743 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 18:01:01 +0800 Subject: [PATCH 11/19] S-82 --- .../Service/Reading/ClinicalData/ClinicalAnswerService.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 9588f5ace..af6f0b055 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -764,7 +764,8 @@ namespace IRaCIS.Core.Application.Service SubjectId= readModule.SubjectId, IsCRCConfirm=false, TrialReadingCriterionId = readModule.TrialReadingCriterionId, - PageIndex=1, + ReadModuleId = inDto.ReadModuleId, + PageIndex =1, PageSize=9999, })).CurrentPageData.ToList(); From 01c91a6398a9cd07669092c662feb2ca298ee2d7 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Tue, 18 Jul 2023 18:11:22 +0800 Subject: [PATCH 12/19] S-83 --- .../Service/Reading/ClinicalData/ClinicalAnswerService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index af6f0b055..6ec0c5aa2 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -891,7 +891,7 @@ namespace IRaCIS.Core.Application.Service IsCRCConfirm = false, IsCRCApplicationRevoke=false, }); - await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== x.Id); + await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== inDto.ReadModuleId); await _readModuleRepository.SaveChangesAsync(); From ec53815bb05cdcb407da16a1c209f53bded9d013 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 19 Jul 2023 13:40:53 +0800 Subject: [PATCH 13/19] S-84 --- .../Controllers/InspectionController.cs | 18 ++++++++++ .../ClinicalData/ClinicalAnswerService.cs | 36 ++++++++++++++----- .../Service/Reading/Dto/ClinicalAnswerDto.cs | 4 ++- .../Interface/IClinicalAnswerService.cs | 2 ++ .../Reading/ReadingPeriod/ReadModule.cs | 10 +++--- 5 files changed, 56 insertions(+), 14 deletions(-) diff --git a/IRaCIS.Core.API/Controllers/InspectionController.cs b/IRaCIS.Core.API/Controllers/InspectionController.cs index 8ef86050d..b9a7877bc 100644 --- a/IRaCIS.Core.API/Controllers/InspectionController.cs +++ b/IRaCIS.Core.API/Controllers/InspectionController.cs @@ -254,6 +254,24 @@ namespace IRaCIS.Core.API.Controllers return result; } + + /// + /// CRC确认临床数据 + /// + /// + /// + [HttpPost, Route("Inspection/ClinicalAnswer/CRCConfirmClinical")] + [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] + + [UnitOfWork] + public async Task CRCConfirmClinical(DataInspectionDto opt) + { + var singid = await _inspectionService.RecordSing(opt.SignInfo); + var result = await _clinicalAnswerService.CRCConfirmClinical(opt.Data); + await _inspectionService.CompletedSign(singid, result); + return result; + } + /// /// CRC撤销临床数据 /// diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 6ec0c5aa2..d16354bd0 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -530,6 +530,7 @@ namespace IRaCIS.Core.Application.Service { SubjectId = x.SubjectId, + IsNotNeedPMConfirm=x.IsNotNeedPMConfirm, IsCRCConfirm = x.IsCRCConfirm, IsCRCApplicationRevoke=x.IsCRCApplicationRevoke, VisitBlindName=x.SubjectVisit.BlindName, @@ -792,11 +793,16 @@ namespace IRaCIS.Core.Application.Service }); }); - var readModuleIds = confirmlist.Select(x => x.ReadModuleId).ToList(); + foreach (var item in confirmlist) + { + await _readModuleRepository.UpdatePartialFromQueryAsync(x =>x.Id==item.ReadModuleId , x => new ReadModule() + { + IsCRCConfirm = true, + IsPMConfirm=item.ClinicalFormList.Count()==0?true:false, + IsNotNeedPMConfirm= item.ClinicalFormList.Count() == 0 ? true : false, + }); + } - await _readModuleRepository.UpdatePartialFromQueryAsync(x => readModuleIds.Contains(x.Id),x=>new ReadModule() { - IsCRCConfirm=true - }); await _readModuleCriterionFromRepository.AddRangeAsync(needAddList); await _readModuleCriterionFromRepository.SaveChangesAsync(); @@ -835,11 +841,23 @@ namespace IRaCIS.Core.Application.Service throw new BusinessValidationFailedException("PM已确认,无法取消!"); } - - await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId==x.Id, x => new ReadModule() - { - IsCRCApplicationRevoke = true - }); + if (presentData.IsNotNeedPMConfirm) + { + await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId == x.Id, x => new ReadModule() + { + IsPMConfirm = false, + IsCRCConfirm = false, + IsNotNeedPMConfirm = false, + }); + } + else + { + await _readModuleRepository.UpdatePartialFromQueryAsync(x => presentData.ReadModuleId == x.Id, x => new ReadModule() + { + IsCRCApplicationRevoke = true, + }); + } + //await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== presentData.ReadModuleId); diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index 1cb030cc3..eb05dd111 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -270,7 +270,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// 受试者ID /// public Guid SubjectId { get; set; } - public Guid ReadModuleId { get; set; } + + public bool IsNotNeedPMConfirm { get; set; } = false; + public Guid ReadModuleId { get; set; } /// /// 模块名称 diff --git a/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs index 802c97fa7..a7b15aee6 100644 --- a/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/Interface/IClinicalAnswerService.cs @@ -17,6 +17,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Interface Task SubmitClinicalForm(SubmitClinicalFormInDto inDto); + Task CRCConfirmClinical(CRCConfirmClinicalInDto inDto); + Task CRCCancelConfirmClinical(CRCCancelConfirmClinicalInDto inDto); } diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs index bd4d29278..e45d82b4b 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs @@ -80,10 +80,12 @@ namespace IRaCIS.Core.Domain.Models public bool IsPMConfirm { get; set; } = false; - /// - /// CRC是否正在申请撤回 - /// - public bool IsCRCApplicationRevoke { get; set; } = false; + public bool IsNotNeedPMConfirm { get; set; } = false; + + /// + /// CRC是否正在申请撤回 + /// + public bool IsCRCApplicationRevoke { get; set; } = false; public bool IsDeleted { get; set; } public DateTime? DeletedTime { get; set; } From b1cf4dc592d975495c8dc01d0ec0126a795395e7 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Wed, 19 Jul 2023 17:30:20 +0800 Subject: [PATCH 14/19] S-85 --- IRaCIS.Core.API/IRaCIS.Core.API.xml | 7 +++ .../Service/QC/QCOperationService.cs | 6 +-- .../ClinicalData/ClinicalAnswerService.cs | 13 +++--- .../ClinicalData/ClinicalQuestionService.cs | 34 +++++++++++---- .../ReadingClinicalDataService.cs | 7 +++ .../Service/Reading/Dto/ClinicalAnswerDto.cs | 7 ++- .../Reading/Dto/ClinicalQuestionDto.cs | 5 +++ .../TrialSiteUser/PersonalWorkstation.cs | 43 ++++++++++++++++++- 8 files changed, 103 insertions(+), 19 deletions(-) diff --git a/IRaCIS.Core.API/IRaCIS.Core.API.xml b/IRaCIS.Core.API/IRaCIS.Core.API.xml index eec56cc64..ed6960728 100644 --- a/IRaCIS.Core.API/IRaCIS.Core.API.xml +++ b/IRaCIS.Core.API/IRaCIS.Core.API.xml @@ -146,6 +146,13 @@ + + + CRC确认临床数据 + + + + CRC撤销临床数据 diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 1a9e7f4e5..d25b4a08c 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1167,8 +1167,8 @@ namespace IRaCIS.Core.Application.Image.QA } //基线 且配置了临床数据 - if (trialConfig.ClinicalInformationTransmissionEnum != 0 /*&& dbSubjectVisit.IsBaseLine*//*&&dbSubjectVisit.ClinicalDataSignUserId==null*/) - { + //if (trialConfig.ClinicalInformationTransmissionEnum != 0 /*&& dbSubjectVisit.IsBaseLine*//*&&dbSubjectVisit.ClinicalDataSignUserId==null*/) + //{ ////找到需要确认的PDF 临床数据 如果没有CRC 没有上传 那么就添加一条没有文件的记录 @@ -1231,7 +1231,7 @@ namespace IRaCIS.Core.Application.Image.QA //} //return ResponseOutput.NotOk("没有签名临床数据,不允许提交"); - } + //} diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index d16354bd0..8bf97a91b 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -225,6 +225,8 @@ namespace IRaCIS.Core.Application.Service var clinicalData= _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit) .Where(x=>!x.IsSign) + .WhereIf(inDto.SubjectId!=null,x=>x.SubjectId==inDto.SubjectId) + .Where(x=> x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject) .Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() { SubjectId=x.SubjectId, SubjectCode=x.Subject.Code, @@ -526,7 +528,9 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm) .WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId) - .Select(x => new GetCRCConfirmListOutDto() + .WhereIf(inDto.StartTime != null, x => x.SubjectVisit.LatestScanDate >= inDto.StartTime) + .WhereIf(inDto.EndTime != null, x => x.SubjectVisit.LatestScanDate <= inDto.EndTime) + .Select(x => new GetCRCConfirmListOutDto() { SubjectId = x.SubjectId, @@ -806,8 +810,8 @@ namespace IRaCIS.Core.Application.Service await _readModuleCriterionFromRepository.AddRangeAsync(needAddList); await _readModuleCriterionFromRepository.SaveChangesAsync(); - - return ResponseOutput.Ok(true); + await _iReadingClinicalDataService.DealVisiTaskClinicalDataSignedAsync(inDto.TrialId, inDto.SubjectId, inDto.ReadModuleId, false, readModule.TrialReadingCriterionId); + return ResponseOutput.Ok(true); } /// @@ -862,8 +866,7 @@ namespace IRaCIS.Core.Application.Service //await _readModuleCriterionFromRepository.BatchDeleteNoTrackingAsync(x=>x.ReadModuleId== presentData.ReadModuleId); await _readModuleCriterionFromRepository.SaveChangesAsync(); - - return ResponseOutput.Ok(true); + return ResponseOutput.Ok(true); } /// diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index cfab3edde..b7a6831bf 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -228,10 +228,15 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateTrialClinicalQuestion(TrialClinicalQuestionDto inDto) { - if (await _trialClinicalQuestionRepository.AnyAsync(x =>x.TrialClinicalId==inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + if (inDto.IsVerify) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } + return ResponseOutput.Ok(true); } + if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder)) { @@ -322,10 +327,15 @@ namespace IRaCIS.Core.Application.Service public async Task AddOrUpdateSystemClinicalQuestion(SystemClinicalQuestionDto inDto) { - if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + if (inDto.IsVerify) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } + return ResponseOutput.Ok(true); } + if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder)) { @@ -416,9 +426,13 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateSystemClinicalTableQuestion(SystemClinicalTableQuestionDto inDto) { - if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + if (inDto.IsVerify) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } + return ResponseOutput.Ok(true); } if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder)) @@ -476,9 +490,13 @@ namespace IRaCIS.Core.Application.Service [HttpPost] public async Task AddOrUpdateTrialClinicalTableQuestion(TrialClinicalTableQuestionDto inDto) { - if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + if (inDto.IsVerify) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) + { + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + } + return ResponseOutput.Ok(true); } if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder)) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index d02567eb6..cee7930b8 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -400,6 +400,13 @@ namespace IRaCIS.Application.Services } + else + { + await _visitTaskRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SubjectId == subjectId && t.TrialReadingCriterionId == trialReadingCritrialId && t.SouceReadModuleId == readingId, u => new VisitTask() + { + IsClinicalDataSign = false + }); + } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index eb05dd111..1b5cf3b6c 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -25,6 +25,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public class GetCRCSubjectClinicalInDto:PageInput { public Guid TrialId { get; set; } + + public Guid? SubjectId { get; set; } } @@ -145,7 +147,10 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid? SubjectId { get; set; } - public Guid TrialId { get; set; } + public DateTime? StartTime { get; set; } + public DateTime? EndTime { get; set; } + + public Guid TrialId { get; set; } public Guid? ReadModuleId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs index d4e381ad3..d5c21ac55 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalQuestionDto.cs @@ -156,6 +156,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto /// public Guid? Id { get; set; } + + public bool IsVerify { get; set; } = false; + /// /// 问题名称 /// @@ -365,6 +368,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid? Id { get; set; } + public bool IsVerify { get; set; } = false; + /// /// 问题名称 /// diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs index 5f34f0865..67f574346 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/PersonalWorkstation.cs @@ -441,11 +441,50 @@ namespace IRaCIS.Core.Application ExperimentName = t.ExperimentName, TrialCode = t.TrialCode, UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), - ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit).Count(), + ToBeDealedCount = t.ReadingClinicalDataList.Where(x=>!x.IsSign&& x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit&& x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject).Count(), ToBeVisitCount= t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(), ToAllCount= t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC ).Count(), ReadModuleCount =t.ReadModuleList.Where(x=>!x.IsPMConfirm).Count(), - }).Where(x=>x.ToAllCount > 0); + }).Where(x=>x.ToBeDealedCount > 0); + + var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); + + var toBeDealedCount = _subjectVisitRepository + //.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id) && t.Trial.clinicalDataTrialSets.Any(t => t.ClinicalDataLevel == ClinicalLevel.Subject && t.IsConfirm)) + .Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted).Count(); + + return ResponseOutput.Ok(result, new { TotalToBeDealedCount = toBeDealedCount }); + + } + + + /// + /// 临床数据 --CRC 待确认 + /// + /// + /// + /// + [HttpPost] + public async Task>> GetImageClinicalDataToBeConfirmList(ImageClinicalDataToBeDoneQuery inQuery, + [FromServices] IRepository _subjectVisitRepository, + [FromServices] IRepository _trialRepository) + { + + var query = _trialRepository + .Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id)) + //.Where(t => t.clinicalDataTrialSets.Any(t => t.ClinicalDataLevel == ClinicalLevel.Subject && t.IsConfirm)) + .Select(t => new ImageClinicalDataToBeDoneDto() + { + TrialId = t.Id, + ResearchProgramNo = t.ResearchProgramNo, + ExperimentName = t.ExperimentName, + TrialCode = t.TrialCode, + UrgentCount = t.SubjectVisitList.Where(u => u.IsBaseLine && u.SubmitState != SubmitStateEnum.Submitted && u.IsUrgent).Count(), + ToBeDealedCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.SubjectVisit && x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject).Count(), + ToBeVisitCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC && x.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count(), + ToAllCount = t.ReadingClinicalDataList.Where(x => !x.IsSign && x.ClinicalDataTrialSet.UploadRole == UploadRole.CRC).Count(), + ReadModuleCount = t.ReadModuleList.Where(x => !x.IsPMConfirm).Count(), + }).Where(x => x.ReadModuleCount > 0); var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(ImageClinicalDataToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc); From 5e5913255c2896ad1a00ccd294edfb34c5bc3087 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 20 Jul 2023 10:07:14 +0800 Subject: [PATCH 15/19] S-86 --- .../Service/Reading/ClinicalData/ClinicalAnswerService.cs | 2 ++ .../Service/Reading/Dto/ClinicalAnswerDto.cs | 6 +++++- 2 files changed, 7 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 8bf97a91b..746b34b3c 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -226,6 +226,7 @@ namespace IRaCIS.Core.Application.Service var clinicalData= _readingClinicalDataRepository.Where(x=>x.TrialId == inDto.TrialId&&x.ClinicalDataTrialSet.UploadRole==UploadRole.CRC&&x.ClinicalDataTrialSet.ClinicalDataLevel!= ClinicalLevel.SubjectVisit) .Where(x=>!x.IsSign) .WhereIf(inDto.SubjectId!=null,x=>x.SubjectId==inDto.SubjectId) + .WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode??string.Empty)) .Where(x=> x.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Subject) .Include(x=>x.ClinicalDataTrialSet).Select(x=>new GetCRCSubjectClinicalOutDto() { SubjectId=x.SubjectId, @@ -526,6 +527,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId) .WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm) .WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm) + .WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode)) .WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId) .WhereIf(inDto.StartTime != null, x => x.SubjectVisit.LatestScanDate >= inDto.StartTime) diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs index 1b5cf3b6c..00d9647e9 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalAnswerDto.cs @@ -27,6 +27,8 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } public Guid? SubjectId { get; set; } + + public string? SubjectCode { get; set; } } @@ -153,7 +155,9 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public Guid TrialId { get; set; } public Guid? ReadModuleId { get; set; } - } + + public string? SubjectCode { get; set; } + } public class CRCCancelConfirmClinicalInDto { From 01501b36b50140e13522640391a372f9b3d8bb89 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 20 Jul 2023 10:07:58 +0800 Subject: [PATCH 16/19] S-87 --- .../Service/Reading/ClinicalData/ClinicalAnswerService.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs index 746b34b3c..ace7cc7da 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalAnswerService.cs @@ -527,7 +527,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inDto.ReadModuleId != null, x => x.Id == inDto.ReadModuleId) .WhereIf(inDto.IsCRCConfirm != null, x => x.IsCRCConfirm == inDto.IsCRCConfirm) .WhereIf(inDto.IsPMConfirm != null, x => x.IsPMConfirm == inDto.IsPMConfirm) - .WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode)) + .WhereIf(inDto.SubjectCode != null, x => x.Subject.Code.Contains(inDto.SubjectCode??string.Empty)) .WhereIf(inDto.TrialReadingCriterionId != null, x => x.TrialReadingCriterionId == inDto.TrialReadingCriterionId) .WhereIf(inDto.SubjectId != null, x => x.SubjectId == inDto.SubjectId) .WhereIf(inDto.StartTime != null, x => x.SubjectVisit.LatestScanDate >= inDto.StartTime) From c5d94eff032ef8fde22b86e880c86b78bfe727db Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 20 Jul 2023 14:10:27 +0800 Subject: [PATCH 17/19] S-88 --- .../ClinicalData/ClinicalQuestionService.cs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index b7a6831bf..1320f93ad 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -118,10 +118,10 @@ namespace IRaCIS.Core.Application.Service public async Task<(List, bool)> GetSystemClinicalQuestionPreview(GetSystemClinicalQuestionPreviewDto inDto) { var questions = await _systemClinicalQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId) - .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); var tableQuestions= await _systemClinicalTableQuestionRepository.Where(x => x.SystemClinicalId == inDto.SystemClinicalId) - .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList(); @@ -144,13 +144,13 @@ namespace IRaCIS.Core.Application.Service public async Task<(List, bool)> GetTrialClinicalQuestionPreview(GetTrialClinicalQuestionPreviewDto inDto) { var questions = await _trialClinicalQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId) - .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x=>x.ShowOrder).ToListAsync(); var tableQuestions = await _trialClinicalTableQuestionRepository.Where(x => x.TrialClinicalId == inDto.TrialClinicalId) - .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + .ProjectTo(_mapper.ConfigurationProvider).OrderBy(x => x.ShowOrder).ToListAsync(); - var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).ToList(); + var result = questions.Where(x => x.ClinicalQuestionType == ReadingQestionType.Group).OrderBy(x => x.ShowOrder).ToList(); result.ForEach(x => { @@ -170,7 +170,7 @@ namespace IRaCIS.Core.Application.Service /// public void FindChildQuestion(ClinicalQuestionPreviewDto item, List questions, List tableQuestions,List answers, List tableAnswers) { - item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).ToList(); + item.Childrens = questions.Where(x => (x.ParentId == item.Id)||(x.GroupId== item.Id&&x.ParentId==null)).OrderBy(x => x.ShowOrder).ToList(); item.RelationQuestions = questions.Where(x => x.RelevanceId == item.Id).ToList(); @@ -188,7 +188,7 @@ namespace IRaCIS.Core.Application.Service }); - item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x=>x.ShowOrder).ToList(); + item.TableQuestions = tableQuestions.Where(x => x.QuestionId == item.Id).OrderBy(x=>x.ShowOrder).OrderBy(x => x.ShowOrder).ToList(); item.RelationQuestions.ForEach(x => { this.FindChildQuestion(x, questions, tableQuestions, answers, tableAnswers); From 74502510dbf8ecd22d06bf32159311520150cc64 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 20 Jul 2023 16:49:19 +0800 Subject: [PATCH 18/19] S-89 --- .../Reading/ClinicalData/ClinicalQuestionService.cs | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs index 1320f93ad..f833223d8 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalQuestionService.cs @@ -232,9 +232,9 @@ namespace IRaCIS.Core.Application.Service { if (await _trialClinicalQuestionRepository.AnyAsync(x => x.TrialClinicalId == inDto.TrialClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"],string.Empty,ApiResponseCodeEnum.NeedTips); } - return ResponseOutput.Ok(true); + } @@ -331,9 +331,8 @@ namespace IRaCIS.Core.Application.Service { if (await _systemClinicalQuestionRepository.AnyAsync(x => x.SystemClinicalId == inDto.SystemClinicalId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips); } - return ResponseOutput.Ok(true); } @@ -430,9 +429,8 @@ namespace IRaCIS.Core.Application.Service { if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips); } - return ResponseOutput.Ok(true); } if (await _systemClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder)) @@ -494,9 +492,8 @@ namespace IRaCIS.Core.Application.Service { if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.QuestionName == inDto.QuestionName)) { - return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"]); + return ResponseOutput.NotOk(_localizer["ClinicalQuestion_Repeat"], string.Empty, ApiResponseCodeEnum.NeedTips); } - return ResponseOutput.Ok(true); } if (await _trialClinicalTableQuestionRepository.AnyAsync(x => x.QuestionId == inDto.QuestionId && x.Id != inDto.Id && x.ShowOrder == inDto.ShowOrder)) From b4448df047da08f29fd387b254a490496d051b88 Mon Sep 17 00:00:00 2001 From: he <10978375@qq.com> Date: Thu, 20 Jul 2023 17:25:36 +0800 Subject: [PATCH 19/19] S-90 --- .../Service/Reading/ClinicalData/ClinicalDataSetService.cs | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs index 82ca5b6c0..297083244 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ClinicalDataSetService.cs @@ -229,6 +229,10 @@ namespace IRaCIS.Application.Services //---存在同类型的临床数据,操作失败 return ResponseOutput.NotOk(_localizer["ClinicalDataSet_DupTypeFail"]); } + if (indto.Id != null && indto.IsApply == null) + { + indto.IsApply = await _clinicalDataTrialSetRepository.Where(x => x.Id == indto.Id).Select(x => x.IsApply).FirstOrDefaultAsync(); + } //indto.CriterionEnumListStr = $"|{String.Join('|', indto.CriterionEnumList)}|";