增加搜索条件

Test_IRC_Net8^2
hang 2025-12-12 13:31:49 +08:00
parent deb7e77263
commit 6ee51a7f43
3 changed files with 40 additions and 18 deletions

View File

@ -54,9 +54,9 @@ namespace IRaCIS.Core.Application.Services
var trialDocumentAttachmentQueryable = _trialDocumentAttachmentRepository
.WhereIf(inQuery.TrialDocumentId != null, x => x.TrialDocumentId == inQuery.TrialDocumentId)
.WhereIf(inQuery.Name != null, x => x.Name.Contains(inQuery.Name))
.WhereIf(inQuery.FileFormat != null, x => x.FileFormat == inQuery.FileFormat)
.ProjectTo<TrialDocumentAttachmentView>(_mapper.ConfigurationProvider);
.WhereIf(inQuery.Name != null, x => x.Name.Contains(inQuery.Name))
.WhereIf(inQuery.FileFormat != null, x => x.FileFormat == inQuery.FileFormat)
.ProjectTo<TrialDocumentAttachmentView>(_mapper.ConfigurationProvider);
var pageList = await trialDocumentAttachmentQueryable.ToPagedListAsync(inQuery);
@ -171,7 +171,7 @@ namespace IRaCIS.Core.Application.Services
.WhereIf(inQuery.UserTypeId != null, t => t.NeedConfirmedUserTypeList.Any(t => t.NeedConfirmUserTypeId == inQuery.UserTypeId))
.WhereIf(inQuery.IsDeleted != null, t => t.IsDeleted == inQuery.IsDeleted)
.WhereIf(inQuery.IsPublish != null, t => t.IsPublish == inQuery.IsPublish)
.WhereIf(!string.IsNullOrEmpty(inQuery.FileTypeCode), t => t.FileType.Code== inQuery.FileTypeCode)
.WhereIf(!string.IsNullOrEmpty(inQuery.FileTypeCode), t => t.FileType.Code== inQuery.FileTypeCode)
.ProjectTo<TrialDocumentView>(_mapper.ConfigurationProvider, new { token = _userInfo.UserToken, isEn_Us = _userInfo.IsEn_Us });
return await trialDocumentQueryable.ToPagedListAsync(inQuery);
@ -1113,6 +1113,7 @@ namespace IRaCIS.Core.Application.Services
_mapper.Map(addOrEditTrialDocument, document);
document.UpdateTime = DateTime.Now;
#region 不区分路径了
//if (document.FileTypeId != addOrEditTrialDocument.FileTypeId)

View File

@ -13,6 +13,8 @@ namespace IRaCIS.Core.Application.ViewModel
{
public Guid TrialId { get; set; }
public Guid? TrialSiteId { get; set; }
public Guid? TrialReadingCriterionId { get; set; }
}
@ -42,6 +44,8 @@ namespace IRaCIS.Core.Application.ViewModel
{
public Guid TrialId { get; set; }
public Guid? TrialSiteId { get; set; }
}
public class VisitQuestionViewModel
@ -83,10 +87,13 @@ namespace IRaCIS.Core.Application.ViewModel
public Guid TrialId { get; set; }
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
public Guid? TrialSiteId { get; set; }
}
public class EfficacyEvaluationStatViewModel
{
public string? DictionaryCode { get; set; }
public string OverallTumorEvaluation { get; set; }
public int SubjectCount { get; set; }
@ -139,7 +146,7 @@ namespace IRaCIS.Core.Application.ViewModel
public List<decimal> SubjectCriterionReadingPeriodVisitNumList { get; set; }
public string? DictionaryCode { get; set; }
public string OverallTumorEvaluation { get; set; }

View File

@ -1,4 +1,5 @@
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Domain.Share;
using IRaCIS.Core.Infra.EFCore.Common;
@ -35,16 +36,21 @@ public class TrialStatService(
var list = await _trialRepository.Where(t => t.Id == inQuery.TrialId).Select(t => new VisitFinishedStatViewModel()
{
UploadedCount = t.SubjectVisitList.Where(t => t.SubmitState == SubmitStateEnum.Submitted).Count(),
QCFinishedCount = t.SubjectVisitList.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
CheckFinishedCount = t.SubjectVisitList.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
UploadedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.SubmitState == SubmitStateEnum.Submitted).Count(),
QCFinishedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
CheckFinishedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
CriterionList = t.TrialReadingCriterionList.Where(t => inQuery.TrialReadingCriterionId != null ? t.Id == inQuery.TrialReadingCriterionId : true)
.Select(t => new VisitReadingCriterionInfo()
{
TrialReadingCriterionId = t.Id,
TrialReadingCriterionName = t.CriterionName,
ReadingFinishedCount = t.VisitTaskList.Where(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false
ReadingFinishedCount = t.VisitTaskList
.Where(t => inQuery.TrialSiteId != null ? t.Subject.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false
&& t.ReadingTaskState == ReadingTaskState.HaveSigned && t.ReadingCategory == ReadingCategory.Visit)
.GroupBy(t => t.SourceSubjectVisitId)
.Where(g => t.ReadingType == ReadingMethod.Double ? g.Count() == 2 : true)
@ -73,17 +79,23 @@ public class TrialStatService(
{
QCQuestion_ClosedCount = t.SubjectVisitList.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed).Count(),
QCQuestion_ClosedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed).Count(),
QCQuestion_IngCount = t.SubjectVisitList.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed == false).Count(),
QCQuestion_IngCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.SelectMany(t => t.QCChallengeList).Where(c => c.IsClosed == false).Count(),
CheckQuestion_ClosedCount = t.SubjectVisitList.Where(t => t.CheckChallengeState == CheckChanllengeTypeEnum.Closed).Count(),
CheckQuestion_IngCount = t.SubjectVisitList.Where(t => t.CheckChallengeState != CheckChanllengeTypeEnum.Closed).Count(),
CheckQuestion_ClosedCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.CheckChallengeState == CheckChanllengeTypeEnum.Closed).Count(),
CheckQuestion_IngCount = t.SubjectVisitList.Where(t => inQuery.TrialSiteId != null ? t.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.CheckChallengeState != CheckChanllengeTypeEnum.Closed).Count(),
MedicalReviewQuestion_ClosedCount = t.TaskMedicalReviewList.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog).Count(),
MedicalReviewQuestion_ClosedCount = t.TaskMedicalReviewList.Where(t => inQuery.TrialSiteId != null ? t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog).Count(),
MedicalReviewQuestion_IngCount = t.TaskMedicalReviewList.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog == false).Count(),
MedicalReviewQuestion_IngCount = t.TaskMedicalReviewList.Where(t => inQuery.TrialSiteId != null ? t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId : true)
.Where(t => t.VisitTask.IsAnalysisCreate == false && t.IsClosedDialog == false).Count(),
}).ToListAsync();
@ -132,7 +144,7 @@ public class TrialStatService(
}
var query = _visitTaskRepository
var query = _visitTaskRepository.WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId)
.Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
//访视和全局查询已签名完成的,裁判可以是未签名,未完成的
@ -159,8 +171,9 @@ public class TrialStatService(
JudgeNote = t.ReadingCategory == ReadingCategory.Judge ? t.JudgeResultRemark : "",
SubjectCriterionReadingPeriodVisitNumList = t.Subject.ReadModuleList.Where(t => t.TrialReadingCriterionId == trialReadingCriterionId && t.ReadingSetType == ReadingSetType.ImageReading).Select(c => c.SubjectVisit.VisitNum).ToList(),
DictionaryCode = t.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == questionType).Select(t=>t.ReadingQuestionTrial.DictionaryCode).FirstOrDefault(),
//整体肿瘤评估答案
OverallTumorEvaluation = t.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == questionType).FirstOrDefault()!.Answer
OverallTumorEvaluation = t.ReadingTaskQuestionAnswerList.Where(c => c.ReadingQuestionTrial.QuestionType == questionType).FirstOrDefault()!.Answer
});
@ -187,6 +200,7 @@ public class TrialStatService(
//判断subject的逻辑需要确认这么多次访视任务有的符合有的不符合准则是什么
return list.GroupBy(t => t.OverallTumorEvaluation).Select(g => new EfficacyEvaluationStatViewModel()
{
DictionaryCode=g.FirstOrDefault()?.DictionaryCode,
OverallTumorEvaluation = g.Key,
SubjectCount = g.Select(t => t.SubjectId).Distinct().Count()
}).ToList();