修改统计
This commit is contained in:
@@ -170,6 +170,15 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
}
|
||||
|
||||
public class MedicalCommentsFirstToBeDoneQuery
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
}
|
||||
|
||||
public class MedicalCommentsToBeDoneDto : TrialBaseInfoDto
|
||||
{
|
||||
public Guid TrialReadingCriterionId { get; set; }
|
||||
@@ -177,6 +186,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public int? UrgentCount { get; set; }
|
||||
|
||||
public int? ToBeReplyedCount { get; set; }
|
||||
|
||||
public int? ToBeReviewedCount { get; set; }
|
||||
}
|
||||
|
||||
public class ImageCheckQuestionToBeDoneQuery : PageInput
|
||||
@@ -291,7 +302,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
}
|
||||
|
||||
public class TrialUserToBeDoneQuery
|
||||
public class TrialUserToBeDoneQuery
|
||||
{
|
||||
[NotDefault]
|
||||
public Guid TrialId { get; set; }
|
||||
@@ -337,6 +348,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
|
||||
public int? Medical_MIM_ToBeDealedCount { get; set; }
|
||||
|
||||
public int? Medical_MIM_ToBeReviewedCount { get; set; }
|
||||
|
||||
public int? Medical_IR_ToBeDealedCount { get; set; }
|
||||
|
||||
public int UserTotalToBeDoneCount => new[]
|
||||
@@ -356,7 +369,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
Reading_SPM_ToBeApprovalCount ?? 0,
|
||||
Reading_PM_ToBeApprovalCount ?? 0,
|
||||
Medical_MIM_ToBeDealedCount ?? 0,
|
||||
Medical_IR_ToBeDealedCount ?? 0
|
||||
Medical_IR_ToBeDealedCount ?? 0,
|
||||
Medical_MIM_ToBeReviewedCount??0
|
||||
}.Sum();
|
||||
|
||||
}
|
||||
|
||||
@@ -1,7 +1,10 @@
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Interfaces;
|
||||
using IRaCIS.Core.Application.ViewModel;
|
||||
using IRaCIS.Core.Domain.Models;
|
||||
using IRaCIS.Core.Domain.Share;
|
||||
using IRaCIS.Core.Infrastructure;
|
||||
using IRaCIS.Core.Infrastructure.Extention;
|
||||
using MathNet.Numerics;
|
||||
using Microsoft.AspNetCore.Mvc;
|
||||
@@ -255,6 +258,40 @@ namespace IRaCIS.Core.Application
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
///PM 阅片人筛选
|
||||
/// </summary>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <param name="_enrollRepository"></param>
|
||||
/// <param name="_trialRepository"></param>
|
||||
/// <returns></returns> vvv
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput<PageOutput<ReviewerSelectToBeDoneDto>>> GetPM_ReviewerSelectToBeDoneList(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,
|
||||
ResearchProgramNo = t.ResearchProgramNo,
|
||||
ExperimentName = t.ExperimentName,
|
||||
TrialCode = t.TrialCode,
|
||||
|
||||
IsUrgent = t.IsUrgent || t.IsSubjectExpeditedView,
|
||||
ToBeApprovalCount = t.EnrollList.Where(u => u.EnrollStatus == EnrollStatus.InviteIntoGroup).Count()
|
||||
});
|
||||
|
||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
||||
|
||||
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 }); ;
|
||||
|
||||
}
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
@@ -262,14 +299,14 @@ namespace IRaCIS.Core.Application
|
||||
#region SPM CPM 待办
|
||||
|
||||
/// <summary>
|
||||
/// 阅片人筛选
|
||||
///SPM 阅片人筛选
|
||||
/// </summary>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <param name="_enrollRepository"></param>
|
||||
/// <param name="_trialRepository"></param>
|
||||
/// <returns></returns> vvv
|
||||
[HttpPost]
|
||||
public async Task<IResponseOutput<PageOutput<ReviewerSelectToBeDoneDto>>> GetReviewerSelectToBeDoneList(ReviewerSelectToBeDoneQuery inQuery
|
||||
public async Task<IResponseOutput<PageOutput<ReviewerSelectToBeDoneDto>>> GetSPM_ReviewerSelectToBeDoneList(ReviewerSelectToBeDoneQuery inQuery
|
||||
, [FromServices] IRepository<Enroll> _enrollRepository,
|
||||
[FromServices] IRepository<Trial> _trialRepository)
|
||||
{
|
||||
@@ -653,6 +690,10 @@ namespace IRaCIS.Core.Application
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -845,7 +886,7 @@ namespace IRaCIS.Core.Application
|
||||
.Where(t => t.IsClosedDialog == false && t.VisitTask.DoctorUserId == _userInfo.Id)
|
||||
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.MIM).Count();
|
||||
|
||||
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
||||
return ResponseOutput.Ok(result, new { TotalToBeReplyedCount = toBeDealedCount });
|
||||
|
||||
}
|
||||
|
||||
@@ -860,6 +901,7 @@ namespace IRaCIS.Core.Application
|
||||
/// MIM医学反馈
|
||||
/// </summary>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <param name="_taskMedicalReviewRepository"></param>
|
||||
|
||||
/// <returns></returns>
|
||||
[HttpPost]
|
||||
@@ -893,19 +935,63 @@ namespace IRaCIS.Core.Application
|
||||
ToBeReplyedCount = g.Where(u =>
|
||||
u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count(),
|
||||
|
||||
ToBeReviewedCount=g.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count()
|
||||
|
||||
});
|
||||
|
||||
var result = await query.ToPagedListAsync(inQuery.PageIndex, inQuery.PageSize, inQuery.SortField, inQuery.Asc);
|
||||
|
||||
var toBeDealedCount = _taskMedicalReviewRepository
|
||||
var toBeReplyedQuery = _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();
|
||||
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer);
|
||||
|
||||
return ResponseOutput.Ok(result, new { TotalToBeReUploadCount = toBeDealedCount });
|
||||
var toBeReplyedCount = toBeReplyedQuery.Count();
|
||||
|
||||
var tobeReviewedCount = _taskMedicalReviewRepository
|
||||
.Where(t => t.Trial.TrialUserList.Any(t => t.UserId == _userInfo.Id))
|
||||
.Where(t => t.IsClosedDialog == false)
|
||||
.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count();
|
||||
|
||||
//var firstToBeDone = toBeDealedQuery.ProjectTo<TaskMedicalReviewView>(_mapper.ConfigurationProvider).FirstOrDefault();
|
||||
|
||||
return ResponseOutput.Ok(result, new { TotalToBeReplyedCount = toBeReplyedCount, TotalTobeReviewedCount = tobeReviewedCount });
|
||||
|
||||
}
|
||||
|
||||
|
||||
/// <summary>
|
||||
/// 获取某项目 某标准 第一条未读的医学审核
|
||||
/// </summary>
|
||||
/// <param name="inQuery"></param>
|
||||
/// <param name="_taskMedicalReviewService"></param>
|
||||
/// <returns></returns>
|
||||
/// <exception cref="BusinessValidationFailedException"></exception>
|
||||
public async Task<TaskMedicalReviewView> GetMedicalCommentsFirstToBeDone(MedicalCommentsFirstToBeDoneQuery inQuery,
|
||||
[FromServices] ITaskMedicalReviewService _taskMedicalReviewService)
|
||||
{
|
||||
var result = await _taskMedicalReviewService.GetMIMMedicalReviewTaskList(new TaskMedicalReviewQuery()
|
||||
{
|
||||
TrialId = inQuery.TrialId,
|
||||
IsGetBeRead = true,
|
||||
PageIndex = 1,
|
||||
PageSize = 1,
|
||||
TrialReadingCriterionId = inQuery.TrialReadingCriterionId
|
||||
});
|
||||
|
||||
if (result.Data.CurrentPageData.Count == 1)
|
||||
{
|
||||
return result.Data.CurrentPageData[0];
|
||||
}
|
||||
else
|
||||
{
|
||||
throw new BusinessValidationFailedException(_localizer["MedicalReview_Finish"]);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
@@ -1086,13 +1172,18 @@ namespace IRaCIS.Core.Application
|
||||
.Where(t => t.IsClosedDialog == false)
|
||||
.Where(u => u.ReadingMedicalReviewDialogList.OrderByDescending(l => l.CreateTime).First().UserTypeEnumInt == (int)UserTypeEnum.IndependentReviewer).Count() : 0,
|
||||
|
||||
Medical_MIM_ToBeReviewedCount=
|
||||
(t.User.UserTypeEnum == UserTypeEnum.MIM) ?
|
||||
t.Trial.TaskMedicalReviewList
|
||||
.Where(t => t.IsClosedDialog == false)
|
||||
.Where(u => !u.IsInvalid && u.AuditState != MedicalReviewAuditState.HaveSigned).Count():0
|
||||
|
||||
});
|
||||
|
||||
|
||||
var list = await query.ToListAsync();
|
||||
|
||||
var result = list.Where(t => t.UserTotalToBeDoneCount > 0).OrderBy(t=>t.UserType).ToList();
|
||||
var result = list.Where(t => t.UserTotalToBeDoneCount > 0).OrderBy(t => t.UserType).ToList();
|
||||
|
||||
//var result= list.GroupBy(t => t.UserType).ToDictionary(g => g.Key, g => g.ToList());
|
||||
|
||||
|
||||
Reference in New Issue
Block a user