diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 5607ec6b0..df6badcbf 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -9736,6 +9736,11 @@
融合的病灶
+
+
+ 任务Id
+
+
任务Id
@@ -14824,6 +14829,13 @@
+
+
+ 获取标记信息
+
+
+
+
获取手册
@@ -16059,6 +16071,12 @@
+
+
+ 获取项目阅片统计
+
+
+
获取某个项目入组的医生工作量统计列表
@@ -17492,17 +17510,17 @@
- ����
+ 质疑
- һ���Ժ˲�
+ 一致性核查
- ����
+ 复制
diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs b/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs
index c1c3a6153..be61e63a5 100644
--- a/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs
+++ b/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs
@@ -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; }
diff --git a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs
index 68307f231..70ba7081a 100644
--- a/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs
+++ b/IRaCIS.Core.Application/Service/Visit/_MapConfig.cs
@@ -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()))
diff --git a/IRaCIS.Core.Application/Service/WorkLoad/DTO/DoctorWorkLoadViewModel.cs b/IRaCIS.Core.Application/Service/WorkLoad/DTO/DoctorWorkLoadViewModel.cs
index 48ea5892f..710cd6362 100644
--- a/IRaCIS.Core.Application/Service/WorkLoad/DTO/DoctorWorkLoadViewModel.cs
+++ b/IRaCIS.Core.Application/Service/WorkLoad/DTO/DoctorWorkLoadViewModel.cs
@@ -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 DoctorUserIdList { get; set; } = new List();
+ }
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; }
diff --git a/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs b/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs
index 3858fad57..a8f6fd4c5 100644
--- a/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs
+++ b/IRaCIS.Core.Application/Service/WorkLoad/DoctorWorkloadService.cs
@@ -193,6 +193,31 @@ namespace IRaCIS.Core.Application.Service
return ResponseOutput.Result(success2);
}
+ ///
+ /// 获取项目阅片统计
+ ///
+ ///
+ [HttpPost]
+ public async Task> 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;
+ }
+
///
/// 获取某个项目入组的医生工作量统计列表
///
@@ -254,6 +279,8 @@ namespace IRaCIS.Core.Application.Service
//}).ToList(),
+ DoctorUserId = intoGroup.DoctorUserId,
+
DoctorId = doctor.Id,
Code = doctor.ReviewerCode,
FirstName = doctor.FirstName,