diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index f4e8c5515..f1b633343 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -7017,6 +7017,13 @@
+
+
+ 一致性核查表
+
+
+
+
CRC 访视上传列表
diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
index a5593b1a9..04d33e922 100644
--- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
+++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs
@@ -102,7 +102,7 @@ namespace IRaCIS.Core.Application.Service.Allocation
- var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == querySubjectAssign.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder, x.ReadingType,x.IsArbitrationReading,x.IsOncologyReading }).FirstOrDefaultAsync()).IfNullThrowException();
+ var criterionConfig = (await _trialReadingCriterionRepository.Where(x => x.Id == querySubjectAssign.TrialReadingCriterionId).Select(x => new { x.ReadingTool, x.IsReadingTaskViewInOrder, x.ReadingType,x.IsArbitrationReading,x.IsOncologyReading ,x.IsGlobalReading}).FirstOrDefaultAsync()).IfNullThrowException();
return (pageList, criterionConfig);
}
diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
index c3eb93690..bef7a96b2 100644
--- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
+++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs
@@ -322,6 +322,34 @@ namespace IRaCIS.Core.Application.Contracts
}
+
+ public class UnionStudyExportDTO
+ {
+
+ public string Modalities { get; set; } = string.Empty;
+
+
+ public DateTime? StudyTime { get; set; }
+
+ public string SubjectCode { get; set; } = String.Empty;
+
+ public string VisitName { get; set; } = string.Empty;
+
+ public decimal VisitNum { get; set; }
+
+ public string TrialSiteCode { get; set; } = string.Empty;
+
+ public string TrialSiteAliasName { get; set; } = string.Empty;
+
+ //public string Uploader { get; set; } = string.Empty;
+
+ //public DateTime UploadTime { get; set; }
+
+ public string StudyCode { get; set; }
+
+ [DictionaryTranslateAttribute("YesOrNo")]
+ public bool IsDicom { get; set; }
+ }
#endregion
diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs
index c1f59bc1b..75044331e 100644
--- a/IRaCIS.Core.Application/Service/QC/QCListService.cs
+++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs
@@ -174,10 +174,89 @@ namespace IRaCIS.Core.Application.Image.QA
exportInfo.List = list;
- return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadPeriodExportDto));
+ return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSubjectReadingPeriodList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(ReadPeriodExportDto));
}
+ ///
+ /// 一致性核查表
+ ///
+ ///
+ ///
+
+ [HttpPost]
+ public async Task GetDicomAndNoneDicomStudyList_Export(StudyQuery studyQuery,
+ [FromServices] IRepository _commonDocumentRepository,
+ [FromServices] IDictionaryService _dictionaryService)
+ {
+
+ var svExpression = QCCommon.GetDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray);
+
+ var dicomStudyQuery = _repository.Where(t => t.TrialId == studyQuery.TrialId)
+ .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
+ .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression)
+ .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
+ .Select(t => new UnionStudyExportDTO()
+ {
+ VisitName = t.SubjectVisit.VisitName,
+ VisitNum = t.SubjectVisit.VisitNum,
+ IsDicom = true,
+ SubjectCode = t.Subject.Code,
+ Modalities = t.Modalities,
+ StudyCode = t.StudyCode,
+ StudyTime = t.StudyTime,
+
+ TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
+
+ TrialSiteCode = t.TrialSite.TrialSiteCode,
+
+ //Uploader = t.Uploader.UserName,
+ //UploadTime = t.CreateTime
+
+ });
+
+ var svExpression2 = QCCommon.GetNoneDicomStudySubjectVisitFilter(studyQuery.VisitPlanArray);
+
+
+ var nodeDicomStudyQuery = _repository.Where(t => t.TrialId == studyQuery.TrialId)
+ .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))
+ .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression2)
+ .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo))
+
+ .Select(t => new UnionStudyExportDTO()
+ {
+
+ VisitName = t.SubjectVisit.VisitName,
+ VisitNum = t.SubjectVisit.VisitNum,
+ IsDicom = false,
+ SubjectCode = t.Subject.Code,
+ Modalities = t.Modality,
+ StudyCode = t.StudyCode,
+ StudyTime = t.ImageDate,
+
+ TrialSiteAliasName = t.TrialSite.TrialSiteAliasName,
+
+ TrialSiteCode = t.TrialSite.TrialSiteCode,
+
+ //Uploader = t.CreateUser.UserName,
+ //UploadTime = t.CreateTime
+
+ });
+
+
+
+ var list = await dicomStudyQuery.Union(nodeDicomStudyQuery)
+ .ToListAsync();
+
+ var exportInfo = (await _trialRepository.Where(t => t.Id == studyQuery.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException();
+
+ exportInfo.List = list;
+
+ return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialStudyList_Export, exportInfo, "", _commonDocumentRepository, _hostEnvironment, _dictionaryService, typeof(UnionStudyExportDTO));
+ }
+
+
+
#endregion
diff --git a/IRaCIS.Core.Domain/_Config/_StaticData.cs b/IRaCIS.Core.Domain/_Config/_StaticData.cs
index b21ba019b..0236b4fe5 100644
--- a/IRaCIS.Core.Domain/_Config/_StaticData.cs
+++ b/IRaCIS.Core.Domain/_Config/_StaticData.cs
@@ -128,6 +128,12 @@ public static class StaticData
public const string TrialQCImageChanllengeList_Export = "TrialQCImageChanllengeList_Export";
public const string TrialSubjectList_Export = "TrialSubjectList_Export";
+
+ public const string TrialSubjectReadingPeriodList_Export = "TrialSubjectReadingPeriodList_Export";
+
+ public const string TrialStudyList_Export = "TrialStudyList_Export";
+
+
}