医生阅片统计+受试者完成任务状态返回
parent
f1471b6424
commit
111d5509bc
|
|
@ -90,6 +90,7 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public class SubjectQueryView : SubjectCommand
|
public class SubjectQueryView : SubjectCommand
|
||||||
{
|
{
|
||||||
|
public bool IsHaveTaskFinished { get; set; }
|
||||||
|
|
||||||
public DateTime? OutEnrollmentTime { get; set; }
|
public DateTime? OutEnrollmentTime { get; set; }
|
||||||
public DateTime? VisitOverTime { get; set; }
|
public DateTime? VisitOverTime { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -39,6 +39,7 @@ namespace IRaCIS.Core.Application.Service
|
||||||
.ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode))
|
.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.LatestBlindName, u => u.MapFrom(s => s.LatestSubjectVisit.BlindName))
|
||||||
.ForMember(d => d.LatestVisitName, u => u.MapFrom(s => s.LatestSubjectVisit.VisitName))
|
.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()))
|
//.ForMember(d => d.FinalSubjectVisitId, u => u.MapFrom(s => s.SubjectVisitList.Where(t => t.IsFinalVisit).Select(c => (Guid?)c.Id).FirstOrDefault()))
|
||||||
|
|
|
||||||
|
|
@ -177,6 +177,17 @@ namespace IRaCIS.Application.Contracts
|
||||||
public bool IsEnable { get; set; }
|
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
|
public class WorkLoadDoctorQueryDTO : PageInput
|
||||||
{
|
{
|
||||||
|
|
@ -212,7 +223,7 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public class WorkLoadAndTrainingDTO
|
public class WorkLoadAndTrainingDTO
|
||||||
{
|
{
|
||||||
|
public Guid? DoctorUserId { get; set; }
|
||||||
public Guid DoctorId { get; set; }/*=Guid.Empty;*/
|
public Guid DoctorId { get; set; }/*=Guid.Empty;*/
|
||||||
public string Code { get; set; } = String.Empty;
|
public string Code { get; set; } = String.Empty;
|
||||||
public string FirstName { get; set; } = String.Empty;
|
public string FirstName { get; set; } = String.Empty;
|
||||||
|
|
@ -356,6 +367,7 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
public class DoctorTaskStat
|
public class DoctorTaskStat
|
||||||
{
|
{
|
||||||
|
public Guid? DoctorUserId { get; set; }
|
||||||
public CriterionType? CriterionType { get; set; }
|
public CriterionType? CriterionType { get; set; }
|
||||||
|
|
||||||
public Guid TrialReadingCriterionId { get; set; }
|
public Guid TrialReadingCriterionId { get; set; }
|
||||||
|
|
|
||||||
|
|
@ -193,6 +193,30 @@ namespace IRaCIS.Core.Application.Service
|
||||||
return ResponseOutput.Result(success2);
|
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>
|
||||||
/// 获取某个项目入组的医生工作量统计列表
|
/// 获取某个项目入组的医生工作量统计列表
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|
@ -254,6 +278,8 @@ namespace IRaCIS.Core.Application.Service
|
||||||
|
|
||||||
//}).ToList(),
|
//}).ToList(),
|
||||||
|
|
||||||
|
DoctorUserId = intoGroup.DoctorUserId,
|
||||||
|
|
||||||
DoctorId = doctor.Id,
|
DoctorId = doctor.Id,
|
||||||
Code = doctor.ReviewerCode,
|
Code = doctor.ReviewerCode,
|
||||||
FirstName = doctor.FirstName,
|
FirstName = doctor.FirstName,
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue