医生阅片统计+受试者完成任务状态返回

Test_IRC_Net10
hang 2026-06-09 15:05:19 +08:00
parent f1471b6424
commit 111d5509bc
4 changed files with 41 additions and 1 deletions

View File

@ -90,6 +90,7 @@ namespace IRaCIS.Application.Contracts
public class SubjectQueryView : SubjectCommand
{
public bool IsHaveTaskFinished { get; set; }
public DateTime? OutEnrollmentTime { get; set; }
public DateTime? VisitOverTime { get; set; }

View File

@ -39,6 +39,7 @@ namespace IRaCIS.Core.Application.Service
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
.ForMember(d => d.LatestBlindName, u => u.MapFrom(s => s.LatestSubjectVisit.BlindName))
.ForMember(d => d.LatestVisitName, u => u.MapFrom(s => s.LatestSubjectVisit.VisitName))
.ForMember(d => d.IsHaveTaskFinished, u => u.MapFrom(s => s.SubjectVisitTaskList.Any(t => t.TaskState == TaskState.Effect && t.ReadingTaskState == ReadingTaskState.HaveSigned)))
//.ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => (Guid?)c.Id).FirstOrDefault()))

View File

@ -177,6 +177,17 @@ namespace IRaCIS.Application.Contracts
public bool IsEnable { get; set; }
}
public class TrialReadingStatQuery
{
[NotDefault]
public Guid TrialId { get; set; }
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
public List<Guid?> DoctorUserIdList { get; set; } = new List<Guid?>();
}
public class WorkLoadDoctorQueryDTO : PageInput
{
@ -212,7 +223,7 @@ namespace IRaCIS.Application.Contracts
public class WorkLoadAndTrainingDTO
{
public Guid? DoctorUserId { get; set; }
public Guid DoctorId { get; set; }/*=Guid.Empty;*/
public string Code { get; set; } = String.Empty;
public string FirstName { get; set; } = String.Empty;
@ -356,6 +367,7 @@ namespace IRaCIS.Application.Contracts
public class DoctorTaskStat
{
public Guid? DoctorUserId { get; set; }
public CriterionType? CriterionType { get; set; }
public Guid TrialReadingCriterionId { get; set; }

View File

@ -193,6 +193,30 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Result(success2);
}
/// <summary>
/// 获取项目阅片统计
/// </summary>
/// <returns></returns>
public async Task<List<DoctorTaskStat>> GetDoctorUserTrialReadingStat(TrialReadingStatQuery inQuery)
{
var list = _enrollRepository.Where(x => x.TrialId == inQuery.TrialId && x.EnrollStatus >= EnrollStatus.ConfirmIntoGroup)
.WhereIf(inQuery.DoctorUserIdList.Count > 0, t => inQuery.DoctorUserIdList.Contains(t.DoctorUserId))
.SelectMany(t => t.DoctorUser.VisitTaskList.Where(t => t.TrialReadingCriterion.IsConfirm && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)
.Where(x => x.TaskState == TaskState.Effect && x.TrialId == inQuery.TrialId))
.GroupBy(x => new { x.TrialReadingCriterionId, x.TrialReadingCriterion.CriterionType, x.DoctorUserId })
.Select(g => new DoctorTaskStat()
{
DoctorUserId = g.Key.DoctorUserId,
PendingCount = g.Count(x => x.ReadingTaskState != ReadingTaskState.HaveSigned),
TotalCount = g.Count(),
ComplectedCount = g.Count(x => x.ReadingTaskState == ReadingTaskState.HaveSigned),
TrialReadingCriterionId = g.Key.TrialReadingCriterionId,
CriterionType = g.Key.CriterionType,
}).ToList();
return list;
}
/// <summary>
/// 获取某个项目入组的医生工作量统计列表
/// </summary>
@ -254,6 +278,8 @@ namespace IRaCIS.Core.Application.Service
//}).ToList(),
DoctorUserId = intoGroup.DoctorUserId,
DoctorId = doctor.Id,
Code = doctor.ReviewerCode,
FirstName = doctor.FirstName,