diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 501d061f..a9999245 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -6064,6 +6064,21 @@ 关闭一致性质疑Dto + + + 审核建议 + + + + + 医学审核对话关闭原因 + + + + + 无效的 为True无效 + + @@ -7101,6 +7116,27 @@ + + + PM阅片跟踪 + + + + + + + PM 重阅追踪 + + + + + + + PM 医学审核(挑选任务生成后的列表) + + + + CRC 访视上传列表 diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index e3bea6e2..a1c479c0 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -683,7 +683,7 @@ namespace IRaCIS.Core.Application.Service.Allocation public async Task/*, object?)*/> GetReadingTaskList(VisitTaskQuery queryVisitTask) { var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false) - .Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null) + //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null) .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 5d58fabf..c37771d6 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -1,5 +1,6 @@ using IRaCIS.Core.Application.Contracts.DTO; using IRaCIS.Core.Application.Helper; +using IRaCIS.Core.Application.ViewModel; using IRaCIS.Core.Domain.Share; using System.ComponentModel.DataAnnotations; @@ -160,21 +161,11 @@ namespace IRaCIS.Core.Application.Contracts public SubjectStatus SubjectState { get; set; } public string ChallengeCode { get; set; } = String.Empty; - public String TrialSiteCode { get; set; } = String.Empty; - public string SubjectCode { get; set; } = String.Empty; - public string VisitName { get; set; } = string.Empty; - - public DateTime? CreateTime { get; set; } - - public string CreateUserName { get; set; } = String.Empty; - - - public DateTime? LatestMsgTime { get; set; } @@ -205,6 +196,11 @@ namespace IRaCIS.Core.Application.Contracts [DictionaryTranslateAttribute("ReuploadEnum")] public QCChanllengeReuploadEnum ReuploadEnum { get; set; } + + + + public string DialogStr { get; set; } + //public SubmitStateEnum SubmitState { get; set; } //public string? CurrentActionUserName { get; set; } @@ -274,23 +270,30 @@ namespace IRaCIS.Core.Application.Contracts public string LatestVisitName { get; set; } = string.Empty; public string LatestBlindName { get; set; } = string.Empty; - + [DictionaryTranslateAttribute("YesOrNo")] public bool IsMissingImages => MissingSubmmitCount > 0; - + [DictionaryTranslateAttribute("YesOrNo")] public bool IsEnrollmentConfirmed { get; set; } - + [DictionaryTranslateAttribute("YesOrNo")] public bool IsPDProgress { get; set; } public int? RadiologyClinicalDataCount { get; set; } + [DictionaryTranslateAttribute("YesOrNo")] public bool IsHaveRadiologyClinicalData => RadiologyClinicalDataCount != null && RadiologyClinicalDataCount > 0; public int? OncologyClinicalDataCount { get; set; } - + [DictionaryTranslateAttribute("YesOrNo")] public bool IsHaveOncologyClinicalData => OncologyClinicalDataCount != null && OncologyClinicalDataCount > 0; + public int? ChallengeWaitReplyCount { get; set; } + + + public int? CheckWaitReplyCount { get; set; } + + } @@ -344,9 +347,6 @@ namespace IRaCIS.Core.Application.Contracts public string TrialSiteAliasName { get; set; } = string.Empty; - //public string Uploader { get; set; } = string.Empty; - - //public DateTime UploadTime { get; set; } public string StudyCode { get; set; } @@ -363,8 +363,11 @@ namespace IRaCIS.Core.Application.Contracts public DateTime? CheckPassedTime { get; set; } + [DictionaryTranslateAttribute("AuditStateRC")] public AuditStateEnum AuditState { get; set; } + + [DictionaryTranslateAttribute("CheckState")] public CheckStateEnum CheckState { get; set; } public String TrialSiteCode { get; set; } = String.Empty; public string SubjectCode { get; set; } = String.Empty; @@ -393,6 +396,128 @@ namespace IRaCIS.Core.Application.Contracts public string CheckResult { get; set; } = String.Empty; } + + public class ReadingTaskExportDto + { + //public TaskAllocationState TaskAllocationState { get; set; } + + //public DateTime? AllocateTime { get; set; } + + //public bool IsPMSetBack { get; set; } + + public string TaskCode { get; set; } + + public string TaskName { get; set; } + public string TaskBlindName { get; set; } + + public decimal VisitTaskNum { get; set; } + + [DictionaryTranslateAttribute("ReadingCategory")] + public ReadingCategory ReadingCategory { get; set; } + + + [DictionaryTranslateAttribute("TaskState")] + public TaskState TaskState { get; set; } + + public DateTime? SignTime { get; set; } + + public DateTime? CreateTime { get; set; } + + public bool IsUrgent { get; set; } + public Arm ArmEnum { get; set; } + + public String TrialSiteCode { get; set; } = String.Empty; + public string SubjectCode { get; set; } = String.Empty; + + public string TrialReadingCriterionName { get; set; } + + [DictionaryTranslateAttribute("ReadingTaskState")] + public ReadingTaskState ReadingTaskState { get; set; } + + [DictionaryTranslateAttribute("ReReadingApplyState")] + public ReReadingApplyState ReReadingApplyState { get; set; } + public DateTime? SuggesteFinishedTime { get; set; } + public string UserCode { get; set; } + public string UserName { get; set; } + public string FullName { get; set; } + + public string UserTypeShortName { get; set; } + } + + + public class ReReadingTaskExportDto + { + + + public ReadingTaskExportDto ApplyTask { get; set; } + + + + public string? ReReadingNewTaskCode { get; set; } + + + + [DictionaryTranslateAttribute("RequestReReadingType")] + public RequestReReadingType RequestReReadingType { get; set; } + + public string RequestReReadingRejectReason { get; set; } = string.Empty; + + public DateTime? RequestReReadingTime { get; set; } + + public string RequestReReadingReason { get; set; } = string.Empty; + + public DateTime? SuggesteFinishedTime { get; set; } + + [DictionaryTranslateAttribute("RequestReReadingResult")] + public RequestReReadingResult RequestReReadingResultEnum { get; set; } + + + + + } + + + + public class TaskMedicalReviewExportDto : ReadingTaskExportDto + { + + public string MedicalNo { get; set; } = string.Empty; + + + [DictionaryTranslateAttribute("MedicalReviewAuditState")] + public MedicalReviewAuditState AuditState { get; set; } + public DateTime? AuditSignTime { get; set; } + + [DictionaryTranslateAttribute("MedicalReviewDoctorUserIdea")] + public MedicalReviewDoctorUserIdea DoctorUserIdeaEnum { get; set; } + + /// + /// 审核建议 + /// + public AuditAdvice AuditAdviceEnum { get; set; } + + + public bool IsHaveQuestion { get; set; } + + + + public UserSimpleInfo DoctorUser { get; set; } + + public UserSimpleInfo MedicalManagerUser { get; set; } + + + /// + /// 医学审核对话关闭原因 + /// + public MedicalDialogClose MedicalDialogCloseEnum { get; set; } + + + /// + /// 无效的 为True无效 + /// + public bool IsInvalid { get; set; } + } + #endregion diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index 727c4488..e71a6b5f 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -4,11 +4,9 @@ using IRaCIS.Core.Domain.Share; using IRaCIS.Core.Application.Contracts.DTO; using IRaCIS.Core.Application.Service; using Microsoft.AspNetCore.Authorization; -using IRaCIS.Core.Application.Helper; using IRaCIS.Application.Interfaces; -using Newtonsoft.Json; -using Newtonsoft.Json.Linq; using IRaCIS.Application.Contracts; +using IRaCIS.Core.Application.ViewModel; namespace IRaCIS.Core.Application.Image.QA { @@ -72,6 +70,8 @@ namespace IRaCIS.Core.Application.Image.QA .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.BlindName).ToList(); + var exportInfo = (await _trialRepository.Where(t => t.Id == visitSearchDTO.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = list; @@ -114,6 +114,7 @@ namespace IRaCIS.Core.Application.Image.QA .WhereIf(challengeQuery.IsOverTime != null, t => DateTime.Now > t.DeadlineTime) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.SubjectCode).ThenBy(t => t.ChallengeCode).ToList(); var exportInfo = (await _trialRepository.Where(t => t.Id == challengeQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); @@ -145,6 +146,8 @@ namespace IRaCIS.Core.Application.Image.QA .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + list = list.OrderBy(t => t.TrialSiteCode).ThenBy(t => t.Code).ToList(); + var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); exportInfo.List = list; @@ -285,6 +288,127 @@ namespace IRaCIS.Core.Application.Image.QA return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectVisitCheckList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(PMKCheckEXportDTO)); } + + + + /// + /// PM阅片跟踪 + /// + /// + /// + [HttpPost] + public async Task GetReadingTaskList(VisitTaskQuery queryVisitTask, + [FromServices] IRepository _commonDocumentRepository, + [FromServices] IDictionaryService _dictionaryService) + { + var list = await _repository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false) + //.Where(t => t.IsAnalysisCreate == false && t.DoctorUserId != null) + + .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) + .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) + .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) + .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId) + .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory) + .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.ReadingTaskState == queryVisitTask.ReadingTaskState) + .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.TaskAllocationState == queryVisitTask.TaskAllocationState) + .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) + + + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate) || (t.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.IsAnalysisCreate == false)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.TaskName.Contains(queryVisitTask.TaskName) || t.TaskBlindName.Contains(queryVisitTask.TaskName)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.BlindSubjectCode.Contains(queryVisitTask.SubjectCode)) + .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.AllocateTime > queryVisitTask.BeginAllocateDate) + .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1)) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + //var defalutSortArray = new string[] { nameof(VisitTask.IsUrgent) + " desc", nameof(VisitTask.SubjectId), nameof(VisitTask.VisitTaskNum) }; + + var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); + + exportInfo.List = list; + + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReadingTaskList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadingTaskExportDto)); + } + + + + + /// + /// PM 重阅追踪 + /// + /// + /// + [HttpPost] + public async Task GetReReadingTaskList(VisitTaskQuery queryVisitTask, + [FromServices] IRepository _commonDocumentRepository, + [FromServices] IDictionaryService _dictionaryService) + { + + + var list = await _repository.Where(t => t.OriginalReReadingTask.TrialId == queryVisitTask.TrialId /*&& t.OriginalReReadingTask.IsAnalysisCreate == false*/) + .WhereIf(queryVisitTask.RootReReadingTaskId != null, t => t.RootReReadingTaskId == queryVisitTask.RootReReadingTaskId || t.OriginalReReadingTaskId == queryVisitTask.RootReReadingTaskId) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskCode), t => t.OriginalReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!) || t.RootReReadingTask.TaskCode.Contains(queryVisitTask.TaskCode!)) + .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState) + .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState) + .WhereIf(queryVisitTask.SubjectId != null, t => t.OriginalReReadingTask.SubjectId == queryVisitTask.SubjectId) + .WhereIf(queryVisitTask.IsUrgent != null, t => t.OriginalReReadingTask.IsUrgent == queryVisitTask.IsUrgent) + .WhereIf(queryVisitTask.DoctorUserId != null, t => t.OriginalReReadingTask.DoctorUserId == queryVisitTask.DoctorUserId) + .WhereIf(queryVisitTask.ReadingTaskState != null, t => t.OriginalReReadingTask.ReadingTaskState == queryVisitTask.ReadingTaskState) + .WhereIf(queryVisitTask.TaskAllocationState != null, t => t.OriginalReReadingTask.TaskAllocationState == queryVisitTask.TaskAllocationState) + .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.OriginalReReadingTask.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) + + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TrialSiteCode), t => (t.OriginalReReadingTask.BlindTrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate) || (t.OriginalReReadingTask.Subject.TrialSite.TrialSiteCode.Contains(queryVisitTask.TrialSiteCode!) && t.OriginalReReadingTask.IsAnalysisCreate == false)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.TaskName), t => t.OriginalReReadingTask.TaskName.Contains(queryVisitTask.TaskName) || t.OriginalReReadingTask.TaskBlindName.Contains(queryVisitTask.TaskName)) + .WhereIf(!string.IsNullOrEmpty(queryVisitTask.SubjectCode), t => t.OriginalReReadingTask.Subject.Code.Contains(queryVisitTask.SubjectCode) || t.OriginalReReadingTask.BlindSubjectCode.Contains(queryVisitTask.SubjectCode)) + .WhereIf(queryVisitTask.BeginAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime > queryVisitTask.BeginAllocateDate) + .WhereIf(queryVisitTask.EndAllocateDate != null, t => t.OriginalReReadingTask.AllocateTime < queryVisitTask.EndAllocateDate!.Value.AddDays(1)) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + //var defalutSortArray = new string[] { nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.IsUrgent) + " desc", nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.SubjectId), nameof(ReReadingTaskView.OriginalReReadingTask) + "." + nameof(ReReadingTaskView.OriginalReReadingTask.VisitTaskNum) }; + + var exportInfo = (await _trialRepository.Where(t => t.Id == queryVisitTask.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); + + exportInfo.List = list; + + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialReReadingTaskList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReReadingTaskExportDto)); + } + + + + /// + /// PM 医学审核(挑选任务生成后的列表) + /// + /// + /// + [HttpPost] + public async Task GetMedicalReviewTaskList(TaskMedicalReviewQuery inQuery, + [FromServices] IRepository _commonDocumentRepository, + [FromServices] IDictionaryService _dictionaryService) + { + + var list = await _repository.Where(t => t.VisitTask.TrialId == inQuery.TrialId) + .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) + .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId) + .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode)) + .WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.VisitTask.TaskName.Contains(inQuery.TaskName) || t.VisitTask.TaskBlindName.Contains(inQuery.TaskName)) + .WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent) + .WhereIf(inQuery.DoctorUserId != null, t => t.VisitTask.DoctorUserId == inQuery.DoctorUserId) + .WhereIf(!string.IsNullOrEmpty(inQuery.TrialSiteCode), t => (t.VisitTask.BlindTrialSiteCode.Contains(inQuery.TrialSiteCode) && t.VisitTask.IsAnalysisCreate) || (t.VisitTask.Subject.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode) && t.VisitTask.IsAnalysisCreate == false)) + .WhereIf(inQuery.ReadingCategory != null, t => t.VisitTask.ReadingCategory == inQuery.ReadingCategory) + .WhereIf(inQuery.ReadingTaskState != null, t => t.VisitTask.ReadingTaskState == inQuery.ReadingTaskState) + + .WhereIf(inQuery.TrialReadingCriterionId != null, t => t.VisitTask.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) + .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + + var exportInfo = (await _trialRepository.Where(t => t.Id == inQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); + + exportInfo.List = list; + + return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialMedicalReviewList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(TaskMedicalReviewExportDto)); + } + #endregion diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 4519e204..959b8a69 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -36,6 +36,9 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.CreateUserName, u => u.MapFrom(s => s.CreateUser.UserName)) .ForMember(d => d.LatestReplyUserName, u => u.MapFrom(t => t.LatestReplyUser.UserName)) + + .ForMember(d=>d.DialogStr,u=>u.MapFrom(t=> string.Join('|', t.DialogList.OrderBy(t => t.CreateTime).Select(c => c.CreateUser.UserName + " " + c.CreateTime.ToString("yyyy-mm-dd hh:mm:ss") + " :" + c.TalkContent)) )) + .ForMember(d => d.SubjectState, u => u.MapFrom(s => s.SubjectVisit.Subject.Status)); @@ -57,7 +60,11 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.IsEnrollmentConfirmed, u => u.MapFrom(s => s.SubjectVisitList.Any(t => t.PDState == PDStateEnum.PDProgress))) .ForMember(d => d.RadiologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.ImageRead))) - .ForMember(d => d.OncologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead))); + .ForMember(d => d.OncologyClinicalDataCount, u => u.MapFrom(s => s.ClinicalDataList.Count(t => t.ClinicalDataTrialSet.ClinicalDataLevel == ClinicalLevel.OncologyRead))) + + .ForMember(d => d.ChallengeWaitReplyCount, u => u.MapFrom(s => s.SubjectVisitList.SelectMany(c=>c.QCChallengeList).Count(t => t.IsClosed==false && !t.DialogList.Any(t=>t.CreateUser.UserTypeEnum ==UserTypeEnum.ClinicalResearchCoordinator)))) + .ForMember(d => d.CheckWaitReplyCount, u => u.MapFrom(s => s.SubjectVisitList.Count(t =>t.CheckState ==CheckStateEnum.CVIng && t.CheckChallengeState !=CheckChanllengeTypeEnum.Closed && !t.CheckChallengeDialogList.Any(t => t.CreateUser.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator)))) + ; CreateMap() @@ -76,6 +83,34 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SubjectCode, u => u.MapFrom(s => s.Subject.Code)) .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)); + CreateMap() + .ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionName)) + .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindTrialSiteCode : u.Subject.TrialSite.TrialSiteCode)) + .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code)) + .ForMember(o => o.UserCode, t => t.MapFrom(u => u.DoctorUser.UserCode)) + .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName)) + .ForMember(o => o.FullName, t => t.MapFrom(u => u.DoctorUser.FullName)) + .ForMember(o => o.UserTypeShortName, t => t.MapFrom(u => u.DoctorUser.UserTypeRole.UserTypeShortName)); + + + + CreateMap() + .ForMember(o => o.ReReadingNewTaskCode, t => t.MapFrom(u => u.NewReReadingTask.TaskCode)) + .ForMember(o => o.ApplyTask, t => t.MapFrom(u => u.OriginalReReadingTask)); + + + + CreateMap().IncludeMembers(t => t.VisitTask) + + .ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.VisitTask.TrialReadingCriterion.CriterionName)) + .ForMember(o => o.MedicalNo, t => t.MapFrom(u => u.VisitTask.Subject.MedicalNo)) + .ForMember(o => o.DoctorUser, t => t.MapFrom(u => u.VisitTask.DoctorUser)) + .ForMember(o => o.MedicalManagerUser, t => t.MapFrom(u => u.MedicalManagerUser)); + + CreateMap() + .ForMember(o => o.TrialReadingCriterionName, t => t.MapFrom(u => u.TrialReadingCriterion.CriterionName)) + .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindTrialSiteCode : u.Subject.TrialSite.TrialSiteCode)) + .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.IsSelfAnalysis == true ? u.BlindSubjectCode : u.Subject.Code)); #endregion diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs index 3a0a8772..78c0c692 100644 --- a/IRaCIS.Core.Domain/_Config/_StaticData.cs +++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs @@ -136,6 +136,15 @@ public static class StaticData public const string TrialSubjectVisitCheckList_Export = "TrialSubjectVisitCheckList_Export"; + + public const string TrialReadingTaskList_Export = "TrialReadingTaskList_Export"; + + public const string TrialReReadingTaskList_Export = "TrialReReadingTaskList_Export"; + + + public const string TrialMedicalReviewList_Export = "TrialMedicalReviewList_Export"; + + }