修改任务配置

Uat_Study
hang 2022-10-12 10:36:35 +08:00
parent c04c58e8dc
commit 626b83850b
9 changed files with 102 additions and 78 deletions

View File

@ -5751,6 +5751,11 @@
流程是否确认
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.TrialProcessConfigDTO.QCProcessEnum">
<summary>
QC流程 0 不审1 单审2双审
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.TrialTaskConfigView.IsReadingShowSubjectInfo">
<summary>
阅片是否显示受试者信息
@ -6161,11 +6166,6 @@
影像一致性核查
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.TrialConfigDTO.ImagePlatform">
<summary>
1 Mint、2 PACS
</summary>
</member>
<member name="P:IRaCIS.Core.Application.Contracts.TrialConfigDTO.IsEnrollementQualificationConfirm">
<summary>
是否有 入组评估确认

View File

@ -354,6 +354,10 @@ namespace IRaCIS.Core.Application.ViewModel
public string SubjectCode { get; set; } = String.Empty;
[NotDefault]
public Guid TrialReadingCriterionId { get; set; }
}
public class BatchAssignDoctorToSubjectCommand

View File

@ -45,14 +45,14 @@ namespace IRaCIS.Core.Application.Service
/// </summary>
/// <param name="trialId"></param>
/// <returns></returns>
public async Task<(List<TaskAllocationRuleDTO>, object?)> GetDoctorPlanAllocationRuleList(Guid trialId)
public async Task<List<TaskAllocationRuleDTO>> GetDoctorPlanAllocationRuleList(Guid trialId)
{
var list = await _taskAllocationRuleRepository.Where(t => t.TrialId == trialId).ProjectTo<TaskAllocationRuleDTO>(_mapper.ConfigurationProvider).ToListAsync();
var trialTaskConfig = _trialRepository.Where(t => t.Id == trialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
//var trialTaskConfig = _trialRepository.Where(t => t.Id == trialId).ProjectTo<TrialProcessConfigDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
return (list, trialTaskConfig);
return /*(*/list/*, trialTaskConfig)*/;
}
@ -137,15 +137,15 @@ namespace IRaCIS.Core.Application.Service
[HttpPost]
[Obsolete]
public async Task<(List<DoctorVisitTaskStatView>, object?)> GetTaskAllocationRuleList(TaskAllocationRuleQuery queryTaskAllocationRule)
public async Task<List<DoctorVisitTaskStatView>> GetTaskAllocationRuleList(TaskAllocationRuleQuery queryTaskAllocationRule)
{
var taskAllocationRuleQueryable = _taskAllocationRuleRepository.Where(t => t.TrialId == queryTaskAllocationRule.TrialId /*&& t.IsJudgeDoctor == queryTaskAllocationRule.IsJudgeDoctor*/)
.ProjectTo<DoctorVisitTaskStatView>(_mapper.ConfigurationProvider);
var trialTaskConfig = _trialRepository.Where(t => t.Id == queryTaskAllocationRule.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider, new { isJudgeDoctor = queryTaskAllocationRule.IsJudgeDoctor }).FirstOrDefault();
//var trialTaskConfig = _trialRepository.Where(t => t.Id == queryTaskAllocationRule.TrialId).ProjectTo<TrialProcessConfigDTO>(_mapper.ConfigurationProvider, new { isJudgeDoctor = queryTaskAllocationRule.IsJudgeDoctor }).FirstOrDefault();
return (await taskAllocationRuleQueryable.ToListAsync(), trialTaskConfig);
return await taskAllocationRuleQueryable.ToListAsync();
}

View File

@ -67,7 +67,7 @@ namespace IRaCIS.Core.Application.Service
/// <param name="queryVisitTask"></param>
/// <returns></returns>
[HttpPost]
public async Task<(PageOutput<AnalysisTaskView>, object?)> GetAnalysisTaskList(VisitTaskQuery queryVisitTask)
public async Task<PageOutput<AnalysisTaskView>> GetAnalysisTaskList(VisitTaskQuery queryVisitTask)
{
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId)
.Where(t => t.IsAnalysisCreate)
@ -95,8 +95,8 @@ namespace IRaCIS.Core.Application.Service
var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray);
var trialTaskConfig = _repository.Where<Trial>(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return (pageList, trialTaskConfig);
//var trialTaskConfig = _repository.Where<Trial>(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return pageList;
}

View File

@ -80,20 +80,21 @@ namespace IRaCIS.Core.Application.Service.Allocation
/// </summary>
/// <returns></returns>
[HttpPost]
public async Task<(PageOutput<SubjectAssignStat>, object?)> GetSubjectAssignAndTaskStatList(SubjectAssignStatQuery querySubjectAssign)
public async Task<PageOutput<SubjectAssignStat>/*, object?)*/> GetSubjectAssignAndTaskStatList(SubjectAssignStatQuery querySubjectAssign)
{
var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId && t.SubjectVisitTaskList.Any())
.WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId)
.WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId)
.WhereIf(!string.IsNullOrEmpty(querySubjectAssign.SubjectCode), t => t.Code.Contains(querySubjectAssign.SubjectCode))
.ProjectTo<SubjectAssignStat>(_mapper.ConfigurationProvider);
.ProjectTo<SubjectAssignStat>(_mapper.ConfigurationProvider,new { trialReadingCriterionId=querySubjectAssign.TrialReadingCriterionId });
var pageList = await subjectQuery.ToPagedListAsync(querySubjectAssign.PageIndex, querySubjectAssign.PageSize, string.IsNullOrWhiteSpace(querySubjectAssign.SortField) ? nameof(querySubjectAssign.SubjectId) : querySubjectAssign.SortField, querySubjectAssign.Asc);
var trialTaskConfig = _trialRepository.Where(t => t.Id == querySubjectAssign.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return (pageList, trialTaskConfig);
//var trialTaskConfig = _trialReadingCriterionRepository.Where(t => t.Id == querySubjectAssign.TrialId && t.Id==querySubjectAssign.TrialReadingCriterionId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return pageList;
}
/// <summary>
@ -578,7 +579,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
/// <param name="_visitTaskCommonService"></param>
/// <returns></returns>
[HttpPost]
public async Task<(PageOutput<VisitTaskView>, object?)> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService)
public async Task<PageOutput<VisitTaskView>> GetVisitTaskList(VisitTaskQuery queryVisitTask, [FromServices] IVisitTaskHelpeService _visitTaskCommonService)
{
//以前访视未产生任务的,在查询这里要产生
var svIdList = await _subjectVisitRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.CheckState == CheckStateEnum.CVPassed && t.IsVisitTaskGenerated == false).Select(t => t.Id).ToListAsync();
@ -610,8 +611,8 @@ namespace IRaCIS.Core.Application.Service.Allocation
var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray);
var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return (pageList, trialTaskConfig);
//var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return pageList;
}
@ -665,7 +666,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
/// <param name="queryVisitTask"></param>
/// <returns></returns>
[HttpPost]
public async Task<(PageOutput<ReadingTaskView>, object?)> GetReadingTaskList(VisitTaskQuery queryVisitTask)
public async Task<PageOutput<ReadingTaskView>/*, object?)*/> GetReadingTaskList(VisitTaskQuery queryVisitTask)
{
var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false)
.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null)
@ -692,9 +693,9 @@ namespace IRaCIS.Core.Application.Service.Allocation
var pageList = await visitTaskQueryable.ToPagedListAsync(queryVisitTask.PageIndex, queryVisitTask.PageSize, queryVisitTask.SortField, queryVisitTask.Asc, string.IsNullOrWhiteSpace(queryVisitTask.SortField), defalutSortArray);
var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
//var trialTaskConfig = _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
return (pageList, trialTaskConfig);
return pageList;
}

View File

@ -76,20 +76,19 @@ namespace IRaCIS.Core.Application.Service
.ForMember(o => o.AssignedSubjectCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.TrialId == u.TrialId).Select(t => t.SubjectId).Distinct().Count()))
.ForMember(o => o.WaitDealTrialTaskCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.TrialId == u.TrialId).Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect).Count()))
.ForMember(o => o.WaitDealAllTaskCount, t => t.MapFrom(u => u.DoctorUser.VisitTaskList.Where(t => t.ReadingTaskState != ReadingTaskState.HaveSigned && t.TaskState == TaskState.Effect).Count()));
Guid trialReadingCriterionId = Guid.Empty;
CreateMap<Subject, SubjectAssignStat>()
.ForMember(o => o.SubjectId, t => t.MapFrom(u => u.Id))
.ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.TrialSite.TrialSiteCode))
.ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Code))
.ForMember(o => o.VisitTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.GlobalTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.OncologyTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.JudgeTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.DoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList));
.ForMember(o => o.VisitTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Visit && t.TrialReadingCriterionId==trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.GlobalTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Global && t.TrialReadingCriterionId == trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.OncologyTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Oncology && t.TrialReadingCriterionId == trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.JudgeTaskTypeCount, t => t.MapFrom(u => u.SubjectVisitTaskList.Where(t => t.ReadingCategory == ReadingCategory.Judge && t.TrialReadingCriterionId == trialReadingCriterionId).Select(t => t.VisitTaskNum).Distinct().Count()))
.ForMember(o => o.DoctorUserList, t => t.MapFrom(u => u.SubjectDoctorList.Where(t=>t.TrialReadingCriterionId== trialReadingCriterionId)));
CreateMap<SubjectUser, SubjectUserView>()
.ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.DoctorUser));

View File

@ -212,7 +212,7 @@ namespace IRaCIS.Core.Application.Services
.Where(t => t.IsDeleted == false && !t.SystemDocConfirmedUserList.Any(t => t.ConfirmUserId == _userInfo.Id) && t.NeedConfirmedUserTypeList.Any(u => u.NeedConfirmUserTypeId == _userInfo.UserTypeId))
.CountAsync();
var trialTaskConfig = _trialRepository.Where(t => t.Id == querySystemDocument.TrialId).ProjectTo<TrialTaskConfigView>(_mapper.ConfigurationProvider).FirstOrDefault();
var trialTaskConfig = _trialRepository.Where(t => t.Id == querySystemDocument.TrialId).ProjectTo<TrialProcessConfigDTO>(_mapper.ConfigurationProvider).FirstOrDefault();
return (result, new { NeedSignCount = needSignTrialDocCount + needSignSystemDocCount, NeedSignTrialDocCount = needSignTrialDocCount, NeedSignSystemDocCount = needSignSystemDocCount, TrialStatusStr= trialInfo.TrialStatusStr,TrialConfig= trialTaskConfig });

View File

@ -16,11 +16,7 @@ namespace IRaCIS.Core.Application.Contracts
/// </summary>
public string SubjectCodeRule { get; set; } = string.Empty;
public List<Guid> TrialCriterionIds { get; set; } = new List<Guid>();
public List<string> TrialCriterionNames { get; set; } = new List<string>();
public List<Guid> ClinicalDataTrialSetIds { get; set; } = new List<Guid>();
public bool IsSubjectSecondCodeView { get; set; }
@ -208,6 +204,17 @@ namespace IRaCIS.Core.Application.Contracts
}
public class TrialProcessConfigDTO
{
/// <summary>
/// QC流程 0 不审1 单审2双审
/// </summary>
public TrialQCProcess QCProcessEnum { get; set; } = TrialQCProcess.DoubleAudit;
public bool IsImageConsistencyVerification { get; set; } = true;
}
public class TrialTaskConfigView : TrialTaskConfig
{
public ReadingTaskViewMethod ReadingTaskViewEnum { get; set; }
@ -216,8 +223,6 @@ namespace IRaCIS.Core.Application.Contracts
public ReadingMethod ReadingType { get; set; }
public ReadingTool ReadingTool { get; set; }
/// <summary>
/// 阅片是否显示受试者信息
/// </summary>
@ -226,7 +231,10 @@ namespace IRaCIS.Core.Application.Contracts
/// <summary>
/// 阅片是否显示既往结果
/// </summary>
public bool IsReadingShowPreviousResults { get; set; }
public bool IsReadingShowPreviousResults { get; set; }
public ReadingTool ReadingTool { get; set; }
@ -862,11 +870,13 @@ namespace IRaCIS.Core.Application.Contracts
public class TrialConfigDTO : BasicTrialConfig
{
public List<Guid> TrialCriterionIds { get; set; } = new List<Guid>();
public List<string> TrialCriterionNames { get; set; } = new List<string>();
public List<Guid> ClinicalDataTrialSetIds { get; set; } = new List<Guid>();
public List<Guid> CriterionIds { get; set; } = new List<Guid>();
public List<string> ClinicalDataSetNames { get; set; } = new List<string>();
public bool IsTrialProcessConfirmed { get; set; }
@ -874,9 +884,6 @@ namespace IRaCIS.Core.Application.Contracts
public bool IsTrialUrgentConfirmed { get; set; }
public int DigitPlaces { get; set; }
/// <summary>
/// QC流程 0 不审1 单审2双审
@ -888,32 +895,9 @@ namespace IRaCIS.Core.Application.Contracts
/// </summary>
public bool IsImageConsistencyVerification { get; set; } = false;
/// <summary>
/// 1 Mint、2 PACS
/// </summary>
public int ImagePlatform { get; set; } = 1;
//阅片方式
public int ReadingMode { get; set; }
//阅片类型
public int ReadingType { get; set; }
public bool IsGlobalReading { get; set; } = true;
public bool? IsArbitrationReading { get; set; }
public bool? IsClinicalReading { get; set; }
public ArbitrationRule ArbitrationRule { get; set; }
public bool IsSubjectExpeditedView { get; set; } = false;
/// <summary>
@ -926,18 +910,42 @@ namespace IRaCIS.Core.Application.Contracts
public bool IsPDProgressView { get; set; }
//public bool IsTrialStart { get; set; } = false;
public bool IsQCQuestionConfirmed { get; set; }
public string TrialStatusStr { get; set; } = string.Empty;
//public bool IsTrialStart { get; set; } = false;
//public List<Guid> CriterionIds { get; set; } = new List<Guid>();
//public List<string> ClinicalDataSetNames { get; set; } = new List<string>();
//public bool IsGlobalReading { get; set; } = true;
//public bool? IsArbitrationReading { get; set; }
//public bool? IsClinicalReading { get; set; }
//public ArbitrationRule ArbitrationRule { get; set; }
//public int DigitPlaces { get; set; }
///// <summary>
///// 1 Mint、2 PACS
///// </summary>
//public int ImagePlatform { get; set; } = 1;
////阅片类型
//public int ReadingType { get; set; }
//读片任务显示是否顺序
public bool IsReadingTaskViewInOrder { get; set; }
//public bool IsReadingTaskViewInOrder { get; set; }

View File

@ -17,8 +17,19 @@ namespace IRaCIS.Core.Application.Service
//CreateMap<TrialAttachmentCommand, TrialAttachment>().ForMember(t => t.UserTypes, u => u.MapFrom(k => string.Join(',', k.UserTypeList)));
//CreateMap<TrialTaskConfigView, Trial>().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap();
CreateMap<Trial, TrialProcessConfigDTO>();
CreateMap<TrialTaskConfigView, Trial>().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap();
CreateMap<ReadingQuestionCriterionTrial, TrialTaskConfigView > ()
.ForMember(d => d.QCProcessEnum, u => u.MapFrom(s => s.Trial.QCProcessEnum))
.ForMember(d => d.IsImageConsistencyVerification, u => u.MapFrom(s => s.Trial.IsImageConsistencyVerification))
.ReverseMap();
CreateMap<TrialTaskConfig, Trial>().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap();
CreateMap<TrialReadingTaskViewConfig, Trial>().ForMember(d => d.Id, u => u.MapFrom(s => s.TrialId)).ReverseMap();
@ -153,9 +164,10 @@ namespace IRaCIS.Core.Application.Service
CreateMap<Domain.Models.Trial, TrialConfigDTO>().ForMember(t => t.TrialId, u => u.MapFrom(c => c.Id))
.ForMember(t => t.TrialCriterionIds, u => u.MapFrom(c => c.ReadingQuestionCriterionTrialList.Where(v =>v.IsConfirm).Select(r => r.Id)))
.ForMember(t => t.TrialCriterionNames, u => u.MapFrom(c => c.ReadingQuestionCriterionTrialList.Where(v => v.IsConfirm).Select(r => r.CriterionName)))
.ForMember(t => t.ClinicalDataTrialSetIds, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.Id)))
.ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.ClinicalDataSetName)))
.ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId)));
.ForMember(t => t.ClinicalDataTrialSetIds, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.Id)))
//.ForMember(t => t.ClinicalDataSetNames, u => u.MapFrom(c => c.clinicalDataTrialSets.Where(v => v.IsConfirm).Select(r => r.ClinicalDataSetName)))
//.ForMember(t => t.CriterionIds, u => u.MapFrom(c => c.TrialDicList.Where(v => v.KeyName == StaticData.Criterion).Select(r => r.DictionaryId)))
;
CreateMap<Domain.Models.Trial, TrialSubjectConfig>();
CreateMap<Domain.Models.Trial, TrialSubjectAndSVConfig>();