diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index e17955dd1..4aa809bc9 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -5751,6 +5751,11 @@ 流程是否确认 + + + QC流程 0 不审,1 单审,2双审 + + 阅片是否显示受试者信息 @@ -6161,11 +6166,6 @@ 影像一致性核查 - - - 1 Mint、2 PACS - - 是否有 入组评估确认 diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index f5810471c..3285a1cee 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -354,6 +354,10 @@ namespace IRaCIS.Core.Application.ViewModel public string SubjectCode { get; set; } = String.Empty; + [NotDefault] + public Guid TrialReadingCriterionId { get; set; } + + } public class BatchAssignDoctorToSubjectCommand diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs index 5e8cd46ed..9b1db6350 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskAllocationRuleService.cs @@ -45,14 +45,14 @@ namespace IRaCIS.Core.Application.Service /// /// /// - public async Task<(List, object?)> GetDoctorPlanAllocationRuleList(Guid trialId) + public async Task> GetDoctorPlanAllocationRuleList(Guid trialId) { var list = await _taskAllocationRuleRepository.Where(t => t.TrialId == trialId).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - var trialTaskConfig = _trialRepository.Where(t => t.Id == trialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + //var trialTaskConfig = _trialRepository.Where(t => t.Id == trialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return (list, trialTaskConfig); + return /*(*/list/*, trialTaskConfig)*/; } @@ -137,15 +137,15 @@ namespace IRaCIS.Core.Application.Service [HttpPost] [Obsolete] - public async Task<(List, object?)> GetTaskAllocationRuleList(TaskAllocationRuleQuery queryTaskAllocationRule) + public async Task> GetTaskAllocationRuleList(TaskAllocationRuleQuery queryTaskAllocationRule) { var taskAllocationRuleQueryable = _taskAllocationRuleRepository.Where(t => t.TrialId == queryTaskAllocationRule.TrialId /*&& t.IsJudgeDoctor == queryTaskAllocationRule.IsJudgeDoctor*/) .ProjectTo(_mapper.ConfigurationProvider); - var trialTaskConfig = _trialRepository.Where(t => t.Id == queryTaskAllocationRule.TrialId).ProjectTo(_mapper.ConfigurationProvider, new { isJudgeDoctor = queryTaskAllocationRule.IsJudgeDoctor }).FirstOrDefault(); + //var trialTaskConfig = _trialRepository.Where(t => t.Id == queryTaskAllocationRule.TrialId).ProjectTo(_mapper.ConfigurationProvider, new { isJudgeDoctor = queryTaskAllocationRule.IsJudgeDoctor }).FirstOrDefault(); - return (await taskAllocationRuleQueryable.ToListAsync(), trialTaskConfig); + return await taskAllocationRuleQueryable.ToListAsync(); } diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs index 0796c6460..3780a8e12 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs @@ -67,7 +67,7 @@ namespace IRaCIS.Core.Application.Service /// /// [HttpPost] - public async Task<(PageOutput, object?)> GetAnalysisTaskList(VisitTaskQuery queryVisitTask) + public async Task> GetAnalysisTaskList(VisitTaskQuery queryVisitTask) { var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId) .Where(t => t.IsAnalysisCreate) @@ -95,8 +95,8 @@ namespace IRaCIS.Core.Application.Service var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); - var trialTaskConfig = _repository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return (pageList, trialTaskConfig); + //var trialTaskConfig = _repository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + return pageList; } diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 0779be905..883bca956 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -80,20 +80,21 @@ namespace IRaCIS.Core.Application.Service.Allocation /// /// [HttpPost] - public async Task<(PageOutput, object?)> GetSubjectAssignAndTaskStatList(SubjectAssignStatQuery querySubjectAssign) + public async Task/*, object?)*/> GetSubjectAssignAndTaskStatList(SubjectAssignStatQuery querySubjectAssign) { var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId && t.SubjectVisitTaskList.Any()) .WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId) .WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId) .WhereIf(!string.IsNullOrEmpty(querySubjectAssign.SubjectCode), t => t.Code.Contains(querySubjectAssign.SubjectCode)) - .ProjectTo(_mapper.ConfigurationProvider); + .ProjectTo(_mapper.ConfigurationProvider,new { trialReadingCriterionId=querySubjectAssign.TrialReadingCriterionId }); var pageList = await subjectQuery.ToPagedListAsync(querySubjectAssign.PageIndex, querySubjectAssign.PageSize, string.IsNullOrWhiteSpace(querySubjectAssign.SortField) ? nameof(querySubjectAssign.SubjectId) : querySubjectAssign.SortField, querySubjectAssign.Asc); - var trialTaskConfig = _trialRepository.Where(t => t.Id == querySubjectAssign.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return (pageList, trialTaskConfig); + //var trialTaskConfig = _trialReadingCriterionRepository.Where(t => t.Id == querySubjectAssign.TrialId && t.Id==querySubjectAssign.TrialReadingCriterionId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + + return pageList; } /// @@ -578,7 +579,7 @@ namespace IRaCIS.Core.Application.Service.Allocation /// /// [HttpPost] - public async Task<(PageOutput, object?)> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) + public async Task> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService) { //以前访视未产生任务的,在查询这里要产生 var svIdList = await _subjectVisitRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.CheckState == CheckStateEnum.CVPassed && t.IsVisitTaskGenerated == false).Select(t => t.Id).ToListAsync(); @@ -610,8 +611,8 @@ namespace IRaCIS.Core.Application.Service.Allocation var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); - var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return (pageList, trialTaskConfig); + //var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + return pageList; } @@ -665,7 +666,7 @@ namespace IRaCIS.Core.Application.Service.Allocation /// /// [HttpPost] - public async Task<(PageOutput, object?)> GetReadingTaskList(VisitTaskQuery queryVisitTask) + public async Task/*, object?)*/> GetReadingTaskList(VisitTaskQuery queryVisitTask) { var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false) .Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null) @@ -692,9 +693,9 @@ namespace IRaCIS.Core.Application.Service.Allocation var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray); - var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + //var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); - return (pageList, trialTaskConfig); + return pageList; } diff --git a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs index e1b8179e8..d9e7b68bf 100644 --- a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs @@ -76,20 +76,19 @@ namespace IRaCIS.Core.Application.Service .ForMember(o => o.AssignedSubjectCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.TrialId == u.TrialId).Select(t => t.SubjectId).Distinct().Count())) .ForMember(o => o.WaitDealTrialTaskCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.TrialId == u.TrialId).Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect).Count())) .ForMember(o => o.WaitDealAllTaskCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect).Count())); - - - - + + + Guid trialReadingCriterionId = Guid.Empty; CreateMap() .ForMember(o => o.SubjectId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.TrialSite.TrialSiteCode)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Code)) - .ForMember(o => o.VisitTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit).Select(t => t.VisitTaskNum).Distinct().Count())) - .ForMember(o => o.GlobalTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global).Select(t => t.VisitTaskNum).Distinct().Count())) - .ForMember(o => o.OncologyTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology).Select(t => t.VisitTaskNum).Distinct().Count())) - .ForMember(o => o.JudgeTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Select(t => t.VisitTaskNum).Distinct().Count())) - .ForMember(o => o.DoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList)); + .ForMember(o => o.VisitTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit && t.TrialReadingCriterionId==trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count())) + .ForMember(o => o.GlobalTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global && t.TrialReadingCriterionId == trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count())) + .ForMember(o => o.OncologyTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology && t.TrialReadingCriterionId == trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count())) + .ForMember(o => o.JudgeTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge && t.TrialReadingCriterionId == trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count())) + .ForMember(o => o.DoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList.Where(t=>t.TrialReadingCriterionId== trialReadingCriterionId))); CreateMap() .ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.DoctorUser)); diff --git a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs index 205972c99..f20a2b63d 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialDocumentService.cs @@ -212,7 +212,7 @@ namespace IRaCIS.Core.Application.Services .Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id) && t.NeedConfirmedUserTypeList.Any(u => u.NeedConfirmUserTypeId == _userInfo.UserTypeId)) .CountAsync(); - var trialTaskConfig = _trialRepository.Where(t => t.Id == querySystemDocument.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); + var trialTaskConfig = _trialRepository.Where(t => t.Id == querySystemDocument.TrialId).ProjectTo(_mapper.ConfigurationProvider).FirstOrDefault(); return (result, new { NeedSignCount = needSignTrialDocCount + needSignSystemDocCount, NeedSignTrialDocCount = needSignTrialDocCount, NeedSignSystemDocCount = needSignSystemDocCount, TrialStatusStr= trialInfo.TrialStatusStr,TrialConfig= trialTaskConfig }); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs index d91ac95a2..84b91349d 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialConfigDTO.cs @@ -16,11 +16,7 @@ namespace IRaCIS.Core.Application.Contracts /// public string SubjectCodeRule { get; set; } = string.Empty; - public List TrialCriterionIds { get; set; } = new List(); - public List TrialCriterionNames { get; set; } = new List(); - - public List ClinicalDataTrialSetIds { get; set; } = new List(); public bool IsSubjectSecondCodeView { get; set; } @@ -208,6 +204,17 @@ namespace IRaCIS.Core.Application.Contracts } + + public class TrialProcessConfigDTO + { + /// + /// QC流程 0 不审,1 单审,2双审 + /// + public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit; + + public bool IsImageConsistencyVerification { get; set; } = true; + } + public class TrialTaskConfigView : TrialTaskConfig { public ReadingTaskViewMethod ReadingTaskViewEnum { get; set; } @@ -216,8 +223,6 @@ namespace IRaCIS.Core.Application.Contracts public ReadingMethod ReadingType { get; set; } - public ReadingTool ReadingTool { get; set; } - /// /// 阅片是否显示受试者信息 /// @@ -226,7 +231,10 @@ namespace IRaCIS.Core.Application.Contracts /// /// 阅片是否显示既往结果 /// - public bool IsReadingShowPreviousResults { get; set; } + public bool IsReadingShowPreviousResults { get; set; } + + public ReadingTool ReadingTool { get; set; } + @@ -862,11 +870,13 @@ namespace IRaCIS.Core.Application.Contracts public class TrialConfigDTO : BasicTrialConfig { + public List TrialCriterionIds { get; set; } = new List(); + + public List TrialCriterionNames { get; set; } = new List(); + + public List ClinicalDataTrialSetIds { get; set; } = new List(); - public List CriterionIds { get; set; } = new List(); - - public List ClinicalDataSetNames { get; set; } = new List(); public bool IsTrialProcessConfirmed { get; set; } @@ -874,9 +884,6 @@ namespace IRaCIS.Core.Application.Contracts public bool IsTrialUrgentConfirmed { get; set; } - public int DigitPlaces { get; set; } - - /// /// QC流程 0 不审,1 单审,2双审 @@ -888,32 +895,9 @@ namespace IRaCIS.Core.Application.Contracts /// public bool IsImageConsistencyVerification { get; set; } = false; - /// - /// 1 Mint、2 PACS - /// - - public int ImagePlatform { get; set; } = 1; - //阅片方式 public int ReadingMode { get; set; } - //阅片类型 - public int ReadingType { get; set; } - - - public bool IsGlobalReading { get; set; } = true; - - public bool? IsArbitrationReading { get; set; } - - public bool? IsClinicalReading { get; set; } - - - public ArbitrationRule ArbitrationRule { get; set; } - - - - - public bool IsSubjectExpeditedView { get; set; } = false; /// @@ -926,18 +910,42 @@ namespace IRaCIS.Core.Application.Contracts public bool IsPDProgressView { get; set; } - - //public bool IsTrialStart { get; set; } = false; - public bool IsQCQuestionConfirmed { get; set; } public string TrialStatusStr { get; set; } = string.Empty; + //public bool IsTrialStart { get; set; } = false; + //public List CriterionIds { get; set; } = new List(); + + //public List ClinicalDataSetNames { get; set; } = new List(); + //public bool IsGlobalReading { get; set; } = true; + + //public bool? IsArbitrationReading { get; set; } + + //public bool? IsClinicalReading { get; set; } + + + //public ArbitrationRule ArbitrationRule { get; set; } + + + //public int DigitPlaces { get; set; } + + ///// + ///// 1 Mint、2 PACS + ///// + + //public int ImagePlatform { get; set; } = 1; + + + + ////阅片类型 + //public int ReadingType { get; set; } + //读片任务显示是否顺序 - public bool IsReadingTaskViewInOrder { get; set; } + //public bool IsReadingTaskViewInOrder { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index 4ad64f5ea..0c405873b 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -17,8 +17,19 @@ namespace IRaCIS.Core.Application.Service //CreateMap().ForMember(t => t.UserTypes, u => u.MapFrom(k => string.Join(',', k.UserTypeList))); + + //CreateMap().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap(); + + + CreateMap(); - CreateMap().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap(); + + CreateMap () + .ForMember(d => d.QCProcessEnum, u => u.MapFrom(s => s.Trial.QCProcessEnum)) + .ForMember(d => d.IsImageConsistencyVerification, u => u.MapFrom(s => s.Trial.IsImageConsistencyVerification)) + .ReverseMap(); + + CreateMap().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap(); CreateMap().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap(); @@ -153,9 +164,10 @@ namespace IRaCIS.Core.Application.Service CreateMap().ForMember(t => t.TrialId, u => u.MapFrom(c => c.Id)) .ForMember(t => t.TrialCriterionIds, u => u.MapFrom(c => c.ReadingQuestionCriterionTrialList.Where(v =>v.IsConfirm).Select(r => r.Id))) .ForMember(t => t.TrialCriterionNames, u => u.MapFrom(c => c.ReadingQuestionCriterionTrialList.Where(v => v.IsConfirm).Select(r => r.CriterionName))) - .ForMember(t => t.ClinicalDataTrialSetIds, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.Id))) - .ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.ClinicalDataSetName))) - .ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId))); + .ForMember(t => t.ClinicalDataTrialSetIds, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.Id))) + //.ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.ClinicalDataSetName))) + //.ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId))) + ; CreateMap(); CreateMap();