|
|
|
@ -1,4 +1,6 @@
|
|
|
|
|
using IRaCIS.Core.Application.Contracts;
|
|
|
|
|
using IRaCIS.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Application.Contracts;
|
|
|
|
|
using IRaCIS.Core.Domain.Models;
|
|
|
|
|
using IRaCIS.Core.Domain.Share;
|
|
|
|
|
using IRaCIS.Core.Infrastructure.Extention;
|
|
|
|
|
using Microsoft.AspNetCore.Mvc;
|
|
|
|
@ -164,19 +166,22 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region PM APM 待办
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// 一致性核查待处理
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inQuery"></param>
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <param name="_trialRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<CheckToBeDoneDto>> GetCheckToBeDoneList(CheckToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<CheckToBeDoneDto>>> GetCheckToBeDoneList(CheckToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new CheckToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -184,14 +189,25 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
ExperimentName = t.ExperimentName,
|
|
|
|
|
TrialCode = t.TrialCode,
|
|
|
|
|
UrgentCount = t.SubjectVisitList.Where(u => (u.CheckState == CheckStateEnum.ToCheck || u.CheckState == CheckStateEnum.CVIng) && u.IsUrgent).Count(),
|
|
|
|
|
|
|
|
|
|
ToBeCheckedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.ToCheck).Count(),
|
|
|
|
|
|
|
|
|
|
ToBeRepliedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.ToCheck &&
|
|
|
|
|
u.CheckChallengeDialogList.Any(t => t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)).Count(),
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var totalToBeCheckedCount = await _subjectVisitRepository.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.CheckState == CheckStateEnum.ToCheck).CountAsync();
|
|
|
|
|
|
|
|
|
|
var totalToBeRepliedCount = await _subjectVisitRepository.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.CheckState == CheckStateEnum.ToCheck &&
|
|
|
|
|
u.CheckChallengeDialogList.Any(t => t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)).CountAsync();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeCheckedCount = totalToBeCheckedCount, TotalToBeRepliedCount = totalToBeRepliedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -199,14 +215,18 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// 重阅申请待审核
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inQuery"></param>
|
|
|
|
|
/// <param name="_visitTaskReReadingRepository"></param>
|
|
|
|
|
/// <param name="_trialRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ReReadingApplyToBeDoneDto>> GetReReadingApplyToBeDoneList(ReReadingApplyToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ReReadingApplyToBeDoneDto>>> GetReReadingApplyToBeDoneList(ReReadingApplyToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<VisitTaskReReading> _visitTaskReReadingRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _visitTaskReReadingRepository.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed)
|
|
|
|
|
var query = _visitTaskReReadingRepository
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed)
|
|
|
|
|
.GroupBy(t => new { t.OriginalReReadingTask.Trial.ExperimentName, t.OriginalReReadingTask.Trial.ResearchProgramNo, t.OriginalReReadingTask.Trial.TrialCode, t.OriginalReReadingTask.TrialId })
|
|
|
|
|
.Select(g => new ReReadingApplyToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
@ -222,11 +242,17 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
var toBeApprovalCount = _visitTaskReReadingRepository
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.DocotorHaveApplyed).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeApprovalCount = toBeApprovalCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -236,13 +262,16 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// 阅片人筛选
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inQuery"></param>
|
|
|
|
|
/// <param name="_enrollRepository"></param>
|
|
|
|
|
/// <param name="_trialRepository"></param>
|
|
|
|
|
/// <returns></returns> vvv
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ReviewerSelectToBeDoneDto>> GetReviewerSelectToBeDoneList(ReviewerSelectToBeDoneQuery inQuery
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ReviewerSelectToBeDoneDto>>> GetReviewerSelectToBeDoneList(ReviewerSelectToBeDoneQuery inQuery
|
|
|
|
|
, [FromServices] IRepository<Enroll> _enrollRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new ReviewerSelectToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -256,7 +285,10 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeApprovalCount = await _enrollRepository.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.EnrollStatus == EnrollStatus.HasCommittedToCRO).CountAsync();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { ToBeApprovalCount = toBeApprovalCount }); ;
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -264,14 +296,18 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// 重阅审批
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inQuery"></param>
|
|
|
|
|
/// <param name="_visitTaskReReadingRepository"></param>
|
|
|
|
|
/// <param name="_trialRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ReReadingApprovalToBeDoneDto>> GetReReadingApprovalToBeDoneToBeDoneList(ReReadingApprovalToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ReReadingApprovalToBeDoneDto>>> GetReReadingApprovalToBeDoneToBeDoneList(ReReadingApprovalToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<VisitTaskReReading> _visitTaskReReadingRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
|
|
|
|
|
{
|
|
|
|
|
var query = _visitTaskReReadingRepository.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed)
|
|
|
|
|
var query = _visitTaskReReadingRepository
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed)
|
|
|
|
|
.GroupBy(t => new { t.OriginalReReadingTask.Trial.ExperimentName, t.OriginalReReadingTask.Trial.ResearchProgramNo, t.OriginalReReadingTask.Trial.TrialCode, t.OriginalReReadingTask.TrialId })
|
|
|
|
|
.Select(g => new ReReadingApprovalToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
@ -287,7 +323,11 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeApprovalCount = _visitTaskReReadingRepository
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.OriginalReReadingTask.ReReadingApplyState == ReReadingApplyState.TrialGroupHaveApplyed).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeApprovalCount = toBeApprovalCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -304,12 +344,13 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageClinicalDataToBeDoneDto>> GetImageClinicalDataToBeDoneList(ImageClinicalDataToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageClinicalDataToBeDoneDto>>> GetImageClinicalDataToBeDoneList(ImageClinicalDataToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _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()
|
|
|
|
|
{
|
|
|
|
@ -324,7 +365,11 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
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 });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -337,14 +382,16 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inQuery"></param>
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <param name="_trialRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageQuestionToBeDoneDto>> GetCRCImageQuestionToBeDoneList(ImageQuestionToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageQuestionToBeDoneDto>>> GetCRCImageQuestionToBeDoneList(ImageQuestionToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new ImageQuestionToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -353,6 +400,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
TrialCode = t.TrialCode,
|
|
|
|
|
UrgentCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
|
|
|
|
.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC && u.SubjectVisit.IsUrgent).Count(),
|
|
|
|
|
|
|
|
|
|
ToBeDealedCount = t.SubjectVisitList.SelectMany(c => c.QCChallengeList)
|
|
|
|
|
|
|
|
|
|
.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count(),
|
|
|
|
@ -361,7 +409,12 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _subjectVisitRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.SelectMany(c => c.QCChallengeList)
|
|
|
|
|
.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.IQC).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeDealedCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -372,12 +425,13 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageCheckQuestionToBeDoneDto>> GetImageCheckQuestionToBeDoneList(ImageCheckQuestionToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageCheckQuestionToBeDoneDto>>> GetImageCheckQuestionToBeDoneList(ImageCheckQuestionToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new ImageCheckQuestionToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -385,13 +439,21 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
ExperimentName = t.ExperimentName,
|
|
|
|
|
TrialCode = t.TrialCode,
|
|
|
|
|
UrgentCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply && u.IsUrgent).Count(),
|
|
|
|
|
ToBeDealedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count()
|
|
|
|
|
ToBeReplyedCount = t.SubjectVisitList.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count()
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _subjectVisitRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.CheckState == CheckStateEnum.CVIng && u.CheckChallengeState == CheckChanllengeTypeEnum.PMWaitCRCReply).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReplyedCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -403,12 +465,13 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageReUploadToBeDoneDto>> GetImageReUploadToBeDoneList(ImageReUploadToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageReUploadToBeDoneDto>>> GetImageReUploadToBeDoneList(ImageReUploadToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new ImageReUploadToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -416,13 +479,17 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
ExperimentName = t.ExperimentName,
|
|
|
|
|
TrialCode = t.TrialCode,
|
|
|
|
|
UrgentCount = t.SubjectVisitList.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsUrgent && u.IsPMBackOrReReading).Count(),
|
|
|
|
|
ToBeDealedCount = t.SubjectVisitList.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count(),
|
|
|
|
|
ToBeReUploadCount = t.SubjectVisitList.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count(),
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _subjectVisitRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit && u.IsPMBackOrReReading).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -436,12 +503,13 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageSubmittedToBeDoneDto>> GetImageSubmittedToBeDoneList(ImageSubmittedToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageSubmittedToBeDoneDto>>> GetImageSubmittedToBeDoneList(ImageSubmittedToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new ImageSubmittedToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -455,7 +523,11 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _subjectVisitRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -474,12 +546,14 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageQualityToBeDoneDto>> GetImageQualityToBeDoneList(ImageQualityToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageQualityToBeDoneDto>>> GetImageQualityToBeDoneList(ImageQualityToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository.Where(t => t.QCProcessEnum != TrialQCProcess.NotAudit)
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.QCProcessEnum != TrialQCProcess.NotAudit)
|
|
|
|
|
.Select(t => new ImageQualityToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -501,7 +575,12 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
var toBeDealedCount = _subjectVisitRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(u => u.SubmitState == SubmitStateEnum.ToSubmit).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -513,12 +592,13 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_subjectVisitRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<ImageQuestionToBeDoneDto>> GetQCImageQuestionToBeDoneList(ImageQuestionToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<ImageQuestionToBeDoneDto>>> GetQCImageQuestionToBeDoneList(ImageQuestionToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<SubjectVisit> _subjectVisitRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(t => new ImageQuestionToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
@ -534,7 +614,12 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _subjectVisitRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.SelectMany(c => c.QCChallengeList)
|
|
|
|
|
.Where(u => u.IsClosed == false && u.LatestReplyUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -544,7 +629,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
#region IR待办
|
|
|
|
|
|
|
|
|
|
/// <summary>
|
|
|
|
|
/// IR 影像阅片 待阅量 复杂 --未完成
|
|
|
|
|
/// IR 影像阅片 待阅量
|
|
|
|
|
/// </summary>
|
|
|
|
|
/// <param name="inQuery"></param>
|
|
|
|
|
/// <param name="_visitTaskRepository"></param>
|
|
|
|
@ -552,12 +637,52 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
/// <param name="_trialRepository"></param>
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<IRImageReadingToBeDoneDto>> GetIRImageReadingToBeDoneList(IRImageReadingToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<IRImageReadingToBeDoneDto>>> GetIRImageReadingToBeDoneList(IRImageReadingToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<VisitTask> _visitTaskRepository,
|
|
|
|
|
[FromServices] IRepository<ReadingQuestionCriterionTrial> _trialReadingCriterionRepository,
|
|
|
|
|
[FromServices] IRepository<Trial> _trialRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var newQuery = _trialReadingCriterionRepository.Where(t => t.IsConfirm == true && t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Select(c => new IRImageReadingToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = c.TrialId,
|
|
|
|
|
ResearchProgramNo = c.Trial.ResearchProgramNo,
|
|
|
|
|
ExperimentName = c.Trial.ExperimentName,
|
|
|
|
|
TrialCode = c.Trial.TrialCode,
|
|
|
|
|
CriterionName = c.CriterionName,
|
|
|
|
|
TrialReadingCriterionId = c.Id,
|
|
|
|
|
|
|
|
|
|
UrgentCount = c.VisitTaskList.AsQueryable().Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
|
|
|
|
|
// 前序 不存在 未一致性核查未通过的
|
|
|
|
|
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
|
|
|
|
//前序 不存在 未生成任务的访视
|
|
|
|
|
//.Where(t => g.Key.IsAutoCreate ? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) : true)
|
|
|
|
|
|
|
|
|
|
.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
|
|
|
|
|
.Count(t => t.IsUrgent),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UnReadCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
|
|
|
|
|
// 前序 不存在 未一致性核查未通过的
|
|
|
|
|
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
|
|
|
|
//前序 不存在 未生成任务的访视
|
|
|
|
|
//.WhereIf(g.Key.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
|
|
|
|
|
//.Where(t => g.Key.IsAutoCreate ? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) : true)
|
|
|
|
|
|
|
|
|
|
.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
|
|
|
|
|
.Count(),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HaveSignedCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)
|
|
|
|
|
&& t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
#region 废弃
|
|
|
|
|
//var query = _trialRepository
|
|
|
|
|
// .Select(t => new IRImageReadingToBeDoneDto()
|
|
|
|
|
// {
|
|
|
|
@ -585,48 +710,7 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var newQuery= _trialReadingCriterionRepository.Where(t=>t.IsConfirm==true && t.Trial.TrialUserList.Any(t=>t.UserId==_userInfo.Id))
|
|
|
|
|
.Select(c => new IRImageReadingToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = c.TrialId,
|
|
|
|
|
ResearchProgramNo = c.Trial.ResearchProgramNo,
|
|
|
|
|
ExperimentName = c.Trial.ExperimentName,
|
|
|
|
|
TrialCode = c.Trial.TrialCode,
|
|
|
|
|
CriterionName = c.CriterionName,
|
|
|
|
|
TrialReadingCriterionId = c.Id,
|
|
|
|
|
|
|
|
|
|
UrgentCount = c.VisitTaskList.AsQueryable().Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
|
|
|
|
|
// 前序 不存在 未一致性核查未通过的
|
|
|
|
|
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
|
|
|
|
//前序 不存在 未生成任务的访视
|
|
|
|
|
//.Where(t => g.Key.IsAutoCreate ? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) : true)
|
|
|
|
|
|
|
|
|
|
.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
|
|
|
|
|
.Count(t => t.IsUrgent),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
UnReadCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
|
|
|
|
|
// 前序 不存在 未一致性核查未通过的
|
|
|
|
|
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
|
|
|
|
//前序 不存在 未生成任务的访视
|
|
|
|
|
//.WhereIf(g.Key.IsAutoCreate == false, t => !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum))
|
|
|
|
|
//.Where(t => g.Key.IsAutoCreate ? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) : true)
|
|
|
|
|
|
|
|
|
|
.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
|
|
|
|
|
.Count(),
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
HaveSignedCount = c.VisitTaskList.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze)
|
|
|
|
|
&& t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
|
|
|
|
})
|
|
|
|
|
|
|
|
|
|
;
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// 不能对包含聚合或子查询的表达式执行聚合函数
|
|
|
|
|
|
|
|
|
|
//var query = _visitTaskRepository.Where(t => t.DoctorUserId == _userInfo.Id && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
|
|
|
|
|
// .GroupBy(t => new { t.TrialId, t.Trial.ResearchProgramNo, t.Trial.TrialCode, t.Trial.ExperimentName, t.TrialReadingCriterionId, t.TrialReadingCriterion.CriterionName, t.TrialReadingCriterion.IsAutoCreate })
|
|
|
|
@ -662,10 +746,25 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
// && t.ReadingTaskState == ReadingTaskState.HaveSigned).Count(),
|
|
|
|
|
|
|
|
|
|
// });
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
var result = await newQuery.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ?nameof(IRImageReadingToBeDoneDto.TrialId): inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
|
|
|
|
|
var result = await newQuery.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrEmpty(inQuery.SortField) ? nameof(IRImageReadingToBeDoneDto.TrialId) : inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
var toBeDealedCount = _trialRepository
|
|
|
|
|
.Where(t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.SelectMany(t => t.VisitTaskList)
|
|
|
|
|
.Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect)
|
|
|
|
|
// 前序 不存在 未一致性核查未通过的
|
|
|
|
|
.Where(t => !t.Subject.SubjectVisitList.Any(sv => sv.CheckState != CheckStateEnum.CVPassed && t.VisitTaskNum > sv.VisitNum))
|
|
|
|
|
//前序 不存在 未生成任务的访视
|
|
|
|
|
.Where(t => t.TrialReadingCriterion.IsAutoCreate == false ? !t.Subject.SubjectCriteriaEvaluationVisitFilterList.Where(d => d.TrialReadingCriterionId == t.TrialReadingCriterionId).Any(f => f.IsGeneratedTask == false && t.VisitTaskNum > f.SubjectVisit.VisitNum) : true)
|
|
|
|
|
|
|
|
|
|
.Where(y => y.IsFrontTaskNeedSignButNotSign == false && (y.IsNeedClinicalDataSign == false || y.IsClinicalDataSign == true))
|
|
|
|
|
.Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalUnReadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -677,11 +776,12 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<MedicalCommentsToBeDoneDto>> GetIRMedicalCommentsToBeDoneList(MedicalCommentsToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<MedicalCommentsToBeDoneDto>>> GetIRMedicalCommentsToBeDoneList(MedicalCommentsToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<TaskMedicalReview> _taskMedicalReviewRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _taskMedicalReviewRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.IsClosedDialog == false)
|
|
|
|
|
.GroupBy(t => new
|
|
|
|
|
{
|
|
|
|
@ -703,14 +803,19 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
UrgentCount = g.Where(u => u.VisitTask.IsUrgent
|
|
|
|
|
&& u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count(),
|
|
|
|
|
|
|
|
|
|
ToBeDealedCount = g.Where(u =>
|
|
|
|
|
ToBeReplyedCount = g.Where(u =>
|
|
|
|
|
u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count(),
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _taskMedicalReviewRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.IsClosedDialog == false)
|
|
|
|
|
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
@ -728,11 +833,12 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
|
|
|
|
|
/// <returns></returns>
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<PageOutput<MedicalCommentsToBeDoneDto>> GetMIMMedicalCommentsToBeDoneList(MedicalCommentsToBeDoneQuery inQuery,
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<MedicalCommentsToBeDoneDto>>> GetMIMMedicalCommentsToBeDoneList(MedicalCommentsToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<TaskMedicalReview> _taskMedicalReviewRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
var query = _taskMedicalReviewRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.IsClosedDialog == false)
|
|
|
|
|
.GroupBy(t => new
|
|
|
|
|
{
|
|
|
|
@ -754,15 +860,63 @@ namespace IRaCIS.Core.Application
|
|
|
|
|
UrgentCount = g.Where(u => u.VisitTask.IsUrgent
|
|
|
|
|
&& u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count(),
|
|
|
|
|
|
|
|
|
|
ToBeDealedCount = g.Where(u =>
|
|
|
|
|
ToBeReplyedCount = g.Where(u =>
|
|
|
|
|
u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count(),
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return result;
|
|
|
|
|
var toBeDealedCount = _taskMedicalReviewRepository
|
|
|
|
|
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
|
|
|
|
.Where(t => t.IsClosedDialog == false)
|
|
|
|
|
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count();
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region 项目列表查询
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
[HttpPost]
|
|
|
|
|
public async Task<IResponseOutput<PageOutput<TrialToBeDoneDto>>> GetTrialToBeDoneList(TrialToBeDoneQuery inQuery,
|
|
|
|
|
[FromServices] IRepository<TaskMedicalReview> _taskMedicalReviewRepository)
|
|
|
|
|
{
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var query = _trialRepository.AsQueryable().IgnoreQueryFilters()
|
|
|
|
|
|
|
|
|
|
.WhereIf(inQuery.SponsorId != null, o => o.SponsorId == inQuery.SponsorId)
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(inQuery.Code), o => o.TrialCode.Contains(inQuery.Code))
|
|
|
|
|
.WhereIf(!string.IsNullOrEmpty(inQuery.ResearchProgramNo), o => o.ResearchProgramNo.Contains(inQuery.ResearchProgramNo))
|
|
|
|
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.ExperimentName), o => o.ExperimentName.Contains(inQuery.ExperimentName))
|
|
|
|
|
.WhereIf(_userInfo.UserTypeEnumInt != (int)UserTypeEnum.SuperAdmin, t => t.TrialUserList.Any(t => t.UserId == _userInfo.Id && t.IsDeleted == false) && t.IsDeleted == false)
|
|
|
|
|
.Select(t => new TrialToBeDoneDto()
|
|
|
|
|
{
|
|
|
|
|
TrialId = t.Id,
|
|
|
|
|
ResearchProgramNo = t.ResearchProgramNo,
|
|
|
|
|
ExperimentName = t.ExperimentName,
|
|
|
|
|
TrialCode = t.TrialCode,
|
|
|
|
|
CreateTime=t.CreateTime,
|
|
|
|
|
Sponsor= _userInfo.IsEn_Us? t.Sponsor.SponsorName:t.Sponsor.SponsorNameCN,
|
|
|
|
|
TrialStatusStr=t.TrialStatusStr,
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
});
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//.ProjectTo<TrialDetailDTO>(_mapper.ConfigurationProvider, new { userTypeEnumInt = _userInfo.UserTypeEnumInt, userId = _userInfo.Id });
|
|
|
|
|
|
|
|
|
|
var result= await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, string.IsNullOrWhiteSpace(inQuery.SortField) ? "CreateTime" : inQuery.SortField, inQuery.Asc);
|
|
|
|
|
|
|
|
|
|
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = 0 });
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
#endregion
|
|
|
|
|