修改统计

This commit is contained in:
2023-06-26 10:28:29 +08:00
parent b4ade5e956
commit 9d96789302
5 changed files with 247 additions and 31 deletions
@@ -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());