From 0e23719c7bb896e7d7d04e489be063f046bda209 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 3 Jun 2024 14:37:38 +0800 Subject: [PATCH] =?UTF-8?q?=E4=BF=AE=E6=94=B9site=E5=85=B3=E8=81=94?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/UploadDownLoadController.cs | 7 +- .../Helper/FileStoreHelper.cs | 12 +- .../IRaCIS.Core.Application.xml | 18 +- .../Allocation/DTO/AllocationListDTO.cs | 37 - .../DTO/TaskConsistentRuleViewModel.cs | 25 +- .../DTO/TaskMedicalReviewViewModel.cs | 2 +- .../Allocation/DTO/VisitTaskViewModel.cs | 12 +- .../Allocation/TaskConsistentRuleService.cs | 6 +- .../Allocation/TaskMedicalReviewService.cs | 6 +- .../Service/Allocation/VisitTaskService.cs | 18 +- .../Service/Allocation/_MapConfig.cs | 4 +- .../Service/Common/ExcelExportService.cs | 44 +- .../Service/Document/EmailSendService.cs | 22 +- .../Document/TrialEmailNoticeConfigService.cs | 6 +- .../ImageAndDoc/DTO/DicomInstanceModel.cs | 3 +- .../ImageAndDoc/DTO/DicomSeriesModel.cs | 5 +- .../ImageAndDoc/DTO/DicomStudyModel.cs | 6 +- .../ImageAndDoc/DTO/DownloadAndUploadDTO.cs | 2 +- .../ImageAndDoc/DTO/ImageShareModel.cs | 1 - .../ImageAndDoc/DTO/UnionStudyViewDodel.cs | 8 +- .../ImageAndDoc/DicomArchiveService.cs | 8 +- .../ImageAndDoc/DownloadAndUploadService.cs | 10 +- .../Service/ImageAndDoc/ImageShareService.cs | 4 +- .../Service/ImageAndDoc/InstanceService.cs | 16 - .../Service/ImageAndDoc/StudyService.cs | 140 +--- .../Service/ImageAndDoc/_MapConfig.cs | 11 +- .../Service/Inspection/DTO/InspectionModel.cs | 6 +- .../Service/Inspection/InspectionService.cs | 9 +- .../Service/Institution/SiteService.cs | 2 +- .../Service/QC/ClinicalDataService.cs | 27 - .../Service/QC/DTO/NoneDicomStudyViewModel.cs | 2 +- .../Service/QC/DTO/QARecordViewModel.cs | 2 +- .../Service/QC/DTO/QCListViewModel.cs | 20 +- .../Service/QC/QCListService.cs | 301 +-------- .../Service/QC/QCOperationService.cs | 9 +- .../Service/QC/_MapConfig.cs | 6 +- ...tCriteriaEvaluationVisitFilterViewModel.cs | 2 +- .../SubjectCriteriaEvaluationService.cs | 2 +- .../Service/Reading/Dto/GetReadModuleDto.cs | 6 +- .../ReadingPeriod/ReadModuleService.cs | 4 +- .../ReadingPeriod/ReadingPeriodSetService.cs | 6 +- .../Service/Reading/_MapConfig.cs | 2 +- .../ReadingAndReport/DTO/GlobalReportDTO.cs | 90 --- .../Service/ReadingAndReport/DTO/ReportDTO.cs | 280 -------- .../DTO/WorkloadReadingDTO.cs | 39 -- .../ReadingAndReport/GlobalReportService.cs | 197 ------ .../Interface/IGlobalService.cs | 24 - .../Interface/IReportService.cs | 27 - .../Interface/IReviewerReadingService.cs | 10 - .../ReadingAndReport/ReadingService.cs | 184 ----- .../Service/ReadingAndReport/ReportService.cs | 635 ------------------ .../Service/ReadingAndReport/_MapConfig.cs | 20 - .../DTO/TrialSiteSurveyViewModel.cs | 19 +- .../DTO/TrialSiteUserSurveyViewModel.cs | 2 +- .../SiteSurvey/TrialSiteSurveyService.cs | 42 +- .../DTO/UltrasonicDicomViewModel.cs | 5 +- .../UltrasonicDicomService.cs | 13 +- .../Service/Third-partyProject/_MapConfig.cs | 2 +- .../DTO/TrialExternalUserViewModel.cs | 2 - .../TrialSiteUser/DTO/TrialResearchCenter.cs | 2 +- .../TrialSiteUser/DTO/TrialSiteViewModel.cs | 7 +- .../DTO/TrialUserPreparationViewModel.cs | 2 +- .../TrialSiteUser/DTO/UserTrialViewModel.cs | 8 +- .../TrialSiteUser/TrialMaintenanceService.cs | 2 +- .../Service/TrialSiteUser/TrialSiteService.cs | 130 +--- .../Service/TrialSiteUser/_MapConfig.cs | 10 +- .../Visit/DTO/ClinicalStudySubjects.cs | 8 +- .../Service/Visit/DTO/VisitPointViewModel.cs | 26 +- .../Service/Visit/SubjectService.cs | 4 +- .../Service/Visit/SubjectVisitService.cs | 1 - .../Service/Visit/VisitPlanService.cs | 6 +- .../WorkLoad/DTO/WorkloadDistribution.cs | 8 +- .../WorkLoad/WorkloadDistributionService.cs | 573 ---------------- IRaCIS.Core.Application/TestService.cs | 12 +- .../Triggers/AddSubjectTrigger.cs | 30 +- .../Triggers/SubjectStateTrigger.cs | 7 +- .../ConsistencyVerificationHandler.cs | 6 +- IRaCIS.Core.Domain/Image/DicomInstance.cs | 2 +- IRaCIS.Core.Domain/Image/DicomSeries.cs | 2 +- IRaCIS.Core.Domain/Image/DicomStudy.cs | 7 +- IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs | 10 +- IRaCIS.Core.Domain/Image/ImageShare.cs | 1 - .../QC/NoneDicom/NoneDicomStudy.cs | 11 +- .../ReadingPeriod/ReadingPeriodSite.cs | 10 +- .../Reading/View/ReadModuleView.cs | 2 +- .../SiteSurvey/TrialSiteSurvey.cs | 17 +- IRaCIS.Core.Domain/Trial/DataInspection.cs | 7 +- IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs | 5 +- .../TrialSiteUser/TrialSiteUser.cs | 13 +- IRaCIS.Core.Domain/Visit/Subject.cs | 18 +- IRaCIS.Core.Domain/Visit/SubjectVisit.cs | 22 +- .../Common/AuditingData.cs | 131 +--- .../Common/Dto/SetDictionaryValueDto.cs | 7 +- .../NoneDicomStudyConfigration.cs | 11 - .../ReadingPeriodSiteConfigration.cs | 6 +- .../EntityConfigration/StudyConfigration.cs | 14 +- .../StudyMonitorConfigration.cs | 15 +- .../EntityConfigration/SubjectConfigration.cs | 13 - .../SubjectVisitConfigration.cs | 15 +- .../TrialSiteConfigration.cs | 20 +- .../TrialSiteSurveyConfigration .cs | 13 - 101 files changed, 354 insertions(+), 3290 deletions(-) delete mode 100644 IRaCIS.Core.Application/Service/Allocation/DTO/AllocationListDTO.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/DTO/GlobalReportDTO.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/DTO/WorkloadReadingDTO.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/GlobalReportService.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IGlobalService.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReviewerReadingService.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/ReadingService.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs delete mode 100644 IRaCIS.Core.Application/Service/ReadingAndReport/_MapConfig.cs delete mode 100644 IRaCIS.Core.Application/Service/WorkLoad/WorkloadDistributionService.cs diff --git a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs index 64760c043..8d080bce5 100644 --- a/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs +++ b/IRaCIS.Core.API/Controllers/UploadDownLoadController.cs @@ -276,7 +276,6 @@ namespace IRaCIS.Core.API.Controllers var studyMonitor = new StudyMonitor() { TrialId = savedInfo.TrialId, - SiteId = savedInfo.SiteId, SubjectId = savedInfo.SubjectId, SubjectVisitId = savedInfo.SubjectVisitId, @@ -504,7 +503,7 @@ namespace IRaCIS.Core.API.Controllers await _qCCommon.VerifyIsCRCSubmmitAsync(_repository, _userInfo, subjectVisitId); - var sv = (await _repository.Where(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.SiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException(); + var sv = (await _repository.Where(t => t.Id == subjectVisitId).Select(t => new { t.TrialId, t.TrialSiteId, t.SubjectId }).FirstOrDefaultAsync()).IfNullThrowConvertException(); var studyMonitor = await _studyMonitorRepository.FirstOrDefaultAsync(t => t.Id == studyMonitorId); @@ -1073,7 +1072,7 @@ namespace IRaCIS.Core.API.Controllers } //处理好 用户类型 和用户类型枚举 var sysUserTypeList = _usertypeRepository.Where(t => t.UserTypeEnum == UserTypeEnum.CRA || t.UserTypeEnum == UserTypeEnum.ClinicalResearchCoordinator).Select(t => new { UserTypeId = t.Id, t.UserTypeEnum }).ToList(); - var siteList = _trialSiteRepository.Where(t => t.TrialId == trialId && siteCodeList.Contains(t.TrialSiteCode)).Select(t => new { t.TrialSiteCode, t.SiteId }).ToList(); + var siteList = _trialSiteRepository.Where(t => t.TrialId == trialId && siteCodeList.Contains(t.TrialSiteCode)).Select(t => new { t.TrialSiteCode, TrialSiteId= t.Id }).ToList(); foreach (var item in excelList) { @@ -1094,7 +1093,7 @@ namespace IRaCIS.Core.API.Controllers } - item.SiteId = siteList.FirstOrDefault(t => t.TrialSiteCode.ToUpper() == item.TrialSiteCode.ToUpper()).SiteId; + item.TrialSiteId = siteList.FirstOrDefault(t => t.TrialSiteCode.ToUpper() == item.TrialSiteCode.ToUpper()).TrialSiteId; } diff --git a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs index fde3c65c9..0be0c270e 100644 --- a/IRaCIS.Core.Application/Helper/FileStoreHelper.cs +++ b/IRaCIS.Core.Application/Helper/FileStoreHelper.cs @@ -515,18 +515,18 @@ public static class FileStoreHelper // 获取 入组确认 PD 进展发送邮件Word|PDF 存放路径 - public static (string PhysicalPath, string RelativePath, string FileRealName) GetSubjectEnrollConfirmOrPDEmailPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid siteId, Guid subjectId,bool isChangeToPdfFormat=false) + public static (string PhysicalPath, string RelativePath, string FileRealName) GetSubjectEnrollConfirmOrPDEmailPath(IWebHostEnvironment _hostEnvironment, string fileName, Guid trialId, Guid trialSiteId, Guid subjectId,bool isChangeToPdfFormat=false) { var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); - string uploadFolderPath = Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString()); + string uploadFolderPath = Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), trialSiteId.ToString(), subjectId.ToString()); if (!Directory.Exists(uploadFolderPath)) Directory.CreateDirectory(uploadFolderPath); var (trustedFileNameForFileStorage, fileRealName) = FileStoreHelper.GetStoreFileName(fileName, isChangeToPdfFormat); - var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{trustedFileNameForFileStorage}"; + var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{trialSiteId}/{subjectId}/{trustedFileNameForFileStorage}"; var serverFilePath = Path.Combine(uploadFolderPath, trustedFileNameForFileStorage); @@ -541,7 +541,7 @@ public static class FileStoreHelper return Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), siteId.ToString(), subjectId.ToString(), subjectVisitId.ToString(), StaticData.Folder.DicomFolder); } - public static (string PhysicalPath, string RelativePath) GetDicomInstanceFilePath(IWebHostEnvironment _hostEnvironment, Guid trialId, Guid siteId, Guid subjectId, Guid subjectVisitId, Guid studyId, Guid instanceId) + public static (string PhysicalPath, string RelativePath) GetDicomInstanceFilePath(IWebHostEnvironment _hostEnvironment, Guid trialId, Guid subjectId, Guid subjectVisitId, Guid studyId, Guid instanceId) { #region 切换存储前 //var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); @@ -552,7 +552,7 @@ public static class FileStoreHelper //加入访视层级 和Data var path = Path.Combine(rootPath, StaticData.Folder.TrialDataFolder, trialId.ToString(), - siteId.ToString(), subjectId.ToString(), subjectVisitId.ToString(), StaticData.Folder.DicomFolder, studyId.ToString()); + subjectId.ToString(), subjectVisitId.ToString(), StaticData.Folder.DicomFolder, studyId.ToString()); if (!Directory.Exists(path)) { @@ -561,7 +561,7 @@ public static class FileStoreHelper var physicalPath = Path.Combine(path, instanceId.ToString() ); - var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{siteId}/{subjectId}/{subjectVisitId}/{StaticData.Folder.DicomFolder}/{studyId}/{instanceId}"; + var relativePath = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{trialId}/{subjectId}/{subjectVisitId}/{StaticData.Folder.DicomFolder}/{studyId}/{instanceId}"; //var physicalPath = Path.Combine(path, instanceId.ToString() + ".dcm"); diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 99b2b7447..c4439a71d 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1036,7 +1036,7 @@ 项目iD - + 中心 @@ -10915,22 +10915,6 @@ - - - 检查项目 - TUMIDENT (Tumor Identification ) - TUSPLIT (Tumor Split ) - TUMERGE (Tumor Merged) - - - - 添加基线期病灶标识及测量信息 - - - - 获取访视病灶信息 - - TrialSiteEquipmentSurveyView 列表视图模型 diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/AllocationListDTO.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/AllocationListDTO.cs deleted file mode 100644 index 3be6c6710..000000000 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/AllocationListDTO.cs +++ /dev/null @@ -1,37 +0,0 @@ -using IRaCIS.Core.Domain.Share; -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace IRaCIS.Core.Application.Service.ViewModel -{ - public class AllocationVisitViewModel - { - - public Guid SubjectVisitId { get; set; } - public Guid SubjectId { get; set; } - - public string BlindName { get; set; } = string.Empty; - - public decimal VisitNum { get; set; } - - - public Guid SiteId { get; set; } - public String TrialSiteCode { get; set; } = String.Empty; - public string SubjectCode { get; set; } = String.Empty; - - public string VisitName { get; set; } = string.Empty; - - public DateTime? CheckPassedTime { get; set; } - - public bool IsUrgent { get; set; } - - - public ReadingCategory ReadingCategoryEnum { get; set; } - - - - } -} diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs index e2c1b3ef3..a77887387 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskConsistentRuleViewModel.cs @@ -118,7 +118,7 @@ namespace IRaCIS.Core.Application.ViewModel public class ConsistentCommonView { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public String TrialSiteCode { get; set; } public string SubjectCode { get; set; } @@ -200,31 +200,12 @@ namespace IRaCIS.Core.Application.ViewModel } - //public class DoctorConsistentRuleSubjectView - //{ - // public Guid TrialId => VisitTaskList.Select(t => t.TrialId).First(); - // public Guid SiteId => VisitTaskList.Select(t => t.SiteId).First(); - - // public String TrialSiteCode => VisitTaskList.Select(t => t.TrialSiteCode).First(); - // public string SubjectCode => VisitTaskList.Select(t => t.SubjectCode).First(); - - // public Guid SubjectId { get; set; } - - // public bool IsHaveGeneratedTask { get; set; } - // public int? ValidTaskCount { get; set; } - - // public int? ValidVisitCount => VisitTaskList.Select(t => t.TaskName).Distinct().Count(); - - // public List VisitTaskList { get; set; } - - // //public List HistoryDoctorUserList => VisitTaskList.SelectMany(t => t.RelationDoctorUserList).DistinctBy(t=>t.UserId).ToList(); - //} public class InfluenceTaskInfo { public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } @@ -267,7 +248,7 @@ namespace IRaCIS.Core.Application.ViewModel { public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs index d2d513fea..5ad756aac 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/TaskMedicalReviewViewModel.cs @@ -93,7 +93,7 @@ namespace IRaCIS.Core.Application.ViewModel public class TaskMedicalReviewQuery : PageInput { public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } /// /// 传了Id diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index 9a159c9d1..9fe456ef8 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -54,7 +54,7 @@ namespace IRaCIS.Core.Application.ViewModel public Guid UpdateUserId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string BlindTrialSiteCode { get; set; } public String TrialSiteCode { get; set; } = String.Empty; @@ -388,7 +388,7 @@ namespace IRaCIS.Core.Application.ViewModel public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } @@ -499,7 +499,7 @@ namespace IRaCIS.Core.Application.ViewModel [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } @@ -521,7 +521,7 @@ namespace IRaCIS.Core.Application.ViewModel [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } @@ -564,7 +564,7 @@ namespace IRaCIS.Core.Application.ViewModel public class SubjectAssignStat { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } @@ -644,7 +644,7 @@ namespace IRaCIS.Core.Application.ViewModel public class SubjectAssignView { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs index 5edc59fd1..6c40220cd 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskConsistentRuleService.cs @@ -94,7 +94,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) @@ -560,7 +560,7 @@ namespace IRaCIS.Core.Application.Service var query = subjectQuery.Select(t => new DoctorSelfConsistentSubjectView() { TrialId = t.TrialId, - SiteId = t.SiteId, + TrialSiteId = t.TrialSiteId, SubjectCode = t.Code, TrialSiteCode = t.TrialSite.TrialSiteCode, SubjectId = t.Id, @@ -687,7 +687,7 @@ namespace IRaCIS.Core.Application.Service var query = subjectQuery.Select(t => new DoctorGroupConsistentSubjectView() { TrialId = t.TrialId, - SiteId = t.SiteId, + TrialSiteId = t.TrialSiteId, SubjectCode = t.Code, TrialSiteCode = t.TrialSite.TrialSiteCode, SubjectId = t.Id, diff --git a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs index d3f3c196f..111ca86db 100644 --- a/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/TaskMedicalReviewService.cs @@ -59,7 +59,7 @@ namespace IRaCIS.Core.Application.Service .WhereIf(inQuery.IsEffect == true, t => t.VisitTask.TaskState == TaskState.Effect || t.VisitTask.TaskState == TaskState.Freeze) .WhereIf(inQuery.IsEffect == false, t => t.VisitTask.TaskState == TaskState.Adbandon || t.VisitTask.TaskState == TaskState.HaveReturned) - .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) + .WhereIf(inQuery.TrialSiteId != null, t => t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId) .WhereIf(!string.IsNullOrEmpty(inQuery.SubjectCode), t => t.VisitTask.Subject.Code.Contains(inQuery.SubjectCode) || t.VisitTask.Subject.MedicalNo.Contains(inQuery.SubjectCode)) .WhereIf(!string.IsNullOrEmpty(inQuery.TaskName), t => t.VisitTask.TaskName.Contains(inQuery.TaskName) || t.VisitTask.TaskBlindName.Contains(inQuery.TaskName)) @@ -103,7 +103,7 @@ namespace IRaCIS.Core.Application.Service var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == inQuery.TrialId) .Where(t => t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect||t.TaskState==TaskState.Freeze) && t.ReadingTaskState == ReadingTaskState.HaveSigned) - .WhereIf(inQuery.SiteId != null, t => t.Subject.SiteId == inQuery.SiteId) + .WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.SubjectId != null, t => t.SubjectId == inQuery.SubjectId) .WhereIf(inQuery.IsUrgent != null, t => t.IsUrgent == inQuery.IsUrgent) .WhereIf(inQuery.DoctorUserId != null, t => t.DoctorUserId == inQuery.DoctorUserId) @@ -230,7 +230,7 @@ namespace IRaCIS.Core.Application.Service ||x.Id == inQuery.Id // 这里必须找传入id 因为要找到这条的索引 获取下一条 ) .WhereIf(inQuery.SubjectId != null, t => t.VisitTask.SubjectId == inQuery.SubjectId) - .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) + .WhereIf(inQuery.TrialSiteId != null, t => t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.IsUrgent != null, t => t.VisitTask.IsUrgent == inQuery.IsUrgent) .WhereIf(inQuery.AuditState != null, t => t.AuditState == inQuery.AuditState) .WhereIf(inQuery.DoctorUserIdeaEnum != null, t => t.DoctorUserIdeaEnum == inQuery.DoctorUserIdeaEnum) diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index 96db25153..124eb864b 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -148,7 +148,7 @@ namespace IRaCIS.Core.Application.Service.Allocation var isAddtinoarlCriterion = await _trialReadingCriterionRepository.AnyAsync(t => t.Id == querySubjectAssign.TrialReadingCriterionId && t.IsAutoCreate == false); var subjectQuery = _subjectRepository.Where(t => t.TrialId == querySubjectAssign.TrialId && t.SubjectVisitTaskList.Any()) - .WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId) + .WhereIf(querySubjectAssign.TrialSiteId != null, t => t.TrialSiteId == querySubjectAssign.TrialSiteId) .WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId) .WhereIf(querySubjectAssign.DoctorUserId != null, t => t.SubjectDoctorList.Any(t => t.DoctorUserId == querySubjectAssign.DoctorUserId && t.TrialReadingCriterionId == querySubjectAssign.TrialReadingCriterionId)) .WhereIf(!string.IsNullOrEmpty(querySubjectAssign.SubjectCode), t => t.Code.Contains(querySubjectAssign.SubjectCode)) @@ -421,7 +421,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .WhereIf(querySubjectAssign.IsJudgeDoctor == false, t => t.SubjectVisitTaskList.Where(t => t.ArmEnum != Arm.JudgeArm).Any()) .WhereIf(querySubjectAssign.IsJudgeDoctor, t => t.SubjectVisitTaskList.Where(t => t.ArmEnum == Arm.JudgeArm).Any()) - .WhereIf(querySubjectAssign.SiteId != null, t => t.SiteId == querySubjectAssign.SiteId) + .WhereIf(querySubjectAssign.TrialSiteId != null, t => t.TrialSiteId == querySubjectAssign.TrialSiteId) .WhereIf(querySubjectAssign.SubjectId != null, t => t.Id == querySubjectAssign.SubjectId) .WhereIf(querySubjectAssign.IsHaveAssigned != null && querySubjectAssign.IsHaveAssigned == true && querySubjectAssign.IsJudgeDoctor == false, t => t.SubjectDoctorList.Where(t => t.ArmEnum != Arm.JudgeArm).Any()) @@ -684,7 +684,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .WhereIf(queryVisitTask.ReadingCategory == null, t => t.ReadingCategory != ReadingCategory.Judge) .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -724,7 +724,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -765,7 +765,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .WhereIf(queryVisitTask.IsEffect == false, t => t.TaskState == TaskState.Adbandon || t.TaskState == TaskState.HaveReturned) .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -811,7 +811,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .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.TrialSiteId != null, t => t.OriginalReReadingTask.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState) .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState) .WhereIf(queryVisitTask.RequestReReadingType != null, t => t.RequestReReadingType == queryVisitTask.RequestReReadingType) @@ -875,7 +875,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .WhereIf(queryVisitTask.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState) .WhereIf(queryVisitTask.ReadingCategory != null, t => t.OriginalReReadingTask.ReadingCategory == queryVisitTask.ReadingCategory) .WhereIf(queryVisitTask.ReReadingApplyState != null, t => t.OriginalReReadingTask.ReReadingApplyState == queryVisitTask.ReReadingApplyState) - .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.OriginalReReadingTask.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -910,7 +910,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .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.TaskState != null, t => t.OriginalReReadingTask.TaskState == queryVisitTask.TaskState) - .WhereIf(queryVisitTask.SiteId != null, t => t.OriginalReReadingTask.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.OriginalReReadingTask.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -1242,7 +1242,7 @@ namespace IRaCIS.Core.Application.Service.Allocation .Where(t => t.DoctorUserId == _userInfo.Id && t.ReadingTaskState == ReadingTaskState.HaveSigned)//该医生 已经签名的数据 - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.SubjectId != null, t => t.SubjectId == queryVisitTask.SubjectId) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) .WhereIf(queryVisitTask.ReadingCategory != null, t => t.ReadingCategory == queryVisitTask.ReadingCategory) diff --git a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs index 890604b15..70b90f3fa 100644 --- a/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Allocation/_MapConfig.cs @@ -124,7 +124,7 @@ namespace IRaCIS.Core.Application.Service CreateMap().IncludeBase() - .ForMember(o => o.SiteId, t => t.MapFrom(u => u.Subject.SiteId)) + .ForMember(o => o.TrialSiteId, t => t.MapFrom(u => u.Subject.TrialSiteId)) .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => /*u.IsAnalysisCreate == true ? u.BlindTrialSiteCode :*/ u.Subject.TrialSite.TrialSiteCode)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => /*u.IsAnalysisCreate == true ? u.BlindSubjectCode :*/ u.Subject.Code)) .ForMember(o => o.MedicalNo, t => t.MapFrom(u => u.Subject.MedicalNo)) @@ -169,7 +169,7 @@ namespace IRaCIS.Core.Application.Service CreateMap().IncludeBase() - .ForMember(o => o.SiteId, t => t.MapFrom(u => u.Subject.SiteId)) + .ForMember(o => o.TrialSiteId, t => t.MapFrom(u => u.Subject.TrialSiteId)) .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.IsAnalysisCreate == true ? u.BlindTrialSiteCode : u.Subject.TrialSite.TrialSiteCode)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.IsAnalysisCreate == true ? u.BlindSubjectCode : u.Subject.Code)); diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 89cf17456..2a2ae74eb 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -105,7 +105,7 @@ namespace IRaCIS.Core.Application.Service.Common var list = await _trialSiteUserRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters() .WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted) - .WhereIf(!string.IsNullOrWhiteSpace(param.SiteName), t => t.Site.SiteName.Contains(param.SiteName)) + .WhereIf(!string.IsNullOrWhiteSpace(param.SiteName), t => t.TrialSite.TrialSiteName.Contains(param.SiteName) || t.TrialSite.TrialSiteAliasName.Contains(param.SiteName)) .WhereIf(!string.IsNullOrWhiteSpace(param.TrialSiteAliasName), t => t.TrialSite.TrialSiteAliasName.Contains(param.TrialSiteAliasName)) .WhereIf(!string.IsNullOrWhiteSpace(param.TrialSiteCode), @@ -153,9 +153,9 @@ namespace IRaCIS.Core.Application.Service.Common var groupSelectIdQuery = _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId) - .WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId) + .WhereIf(queryParam.TrialSiteId != null, t => t.TrialSiteId == queryParam.TrialSiteId) .WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo)) - .GroupBy(t => t.SiteId) + .GroupBy(t => t.TrialSiteId) .Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First()); @@ -222,7 +222,7 @@ namespace IRaCIS.Core.Application.Service.Common var list = await _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId) .Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true) - .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId) + .WhereIf(visitSearchDTO.TrialSiteId != null, t => t.TrialSiteId == visitSearchDTO.TrialSiteId) .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId) .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo)) @@ -275,7 +275,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum) .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed) - .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId) + .WhereIf(challengeQuery.TrialSiteId != null, t => t.SubjectVisit.TrialSiteId == challengeQuery.TrialSiteId) .WhereIf(challengeQuery.SubjectId != null, t => t.SubjectVisit.SubjectId == challengeQuery.SubjectId) .WhereIf(challengeQuery.CreateUserId != null, t => t.CreateUserId == challengeQuery.CreateUserId) .WhereIf(!string.IsNullOrEmpty(challengeQuery.SubjectCode), t => t.SubjectVisit.Subject.Code.Contains(challengeQuery.SubjectCode)) @@ -318,7 +318,7 @@ namespace IRaCIS.Core.Application.Service.Common .WhereIf(!string.IsNullOrWhiteSpace(param.Name), t => t.ShortName.Contains(param.Name)) .WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex)) .WhereIf(param.Status != null, t => t.Status == param.Status) - .WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId) + .WhereIf(param.TrialSiteId != null, t => t.TrialSiteId == param.TrialSiteId) // CRC 只负责他管理site的受试者 .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(); @@ -537,7 +537,7 @@ namespace IRaCIS.Core.Application.Service.Common .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) .WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId) .WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId) - .WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId) + .WhereIf(studyQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == studyQuery.TrialSiteId) .Select(t => new UnionStudyMonitorExportDto() { TrialSiteCode = t.TrialSite.TrialSiteCode, @@ -642,7 +642,7 @@ namespace IRaCIS.Core.Application.Service.Common 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(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.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)) .Where(x => x.SubjectVisit.AuditState == AuditStateEnum.QCPassed) @@ -656,9 +656,9 @@ namespace IRaCIS.Core.Application.Service.Common StudyCode = t.StudyCode, StudyTime = t.StudyTime, - TrialSiteAliasName = t.TrialSite.TrialSiteAliasName, + TrialSiteAliasName = t.Subject.TrialSite.TrialSiteAliasName, - TrialSiteCode = t.TrialSite.TrialSiteCode, + TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, CheckState = t.SubjectVisit.CheckState, //Uploader = t.Uploader.UserName, @@ -670,7 +670,7 @@ namespace IRaCIS.Core.Application.Service.Common 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(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.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)) .Where(x => x.SubjectVisit.AuditState == AuditStateEnum.QCPassed) @@ -685,9 +685,9 @@ namespace IRaCIS.Core.Application.Service.Common StudyCode = t.StudyCode, StudyTime = t.ImageDate, - TrialSiteAliasName = t.TrialSite.TrialSiteAliasName, + TrialSiteAliasName = t.Subject.TrialSite.TrialSiteAliasName, - TrialSiteCode = t.TrialSite.TrialSiteCode, + TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, CheckState = t.SubjectVisit.CheckState, @@ -735,7 +735,7 @@ namespace IRaCIS.Core.Application.Service.Common var list = await _subjectVisitRepository.Where(x => x.TrialId == checkQuery.TrialId) .Where(x => x.AuditState == AuditStateEnum.QCPassed) //一致性核查中的,或者还没一致性核查的 .WhereIf(checkQuery.CheckState != null, t => t.CheckState == checkQuery.CheckState) - .WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId) + .WhereIf(checkQuery.TrialSiteId != null, t => t.TrialSiteId == checkQuery.TrialSiteId) .WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo)) .WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression) .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id))//CRC 过滤负责的site @@ -774,7 +774,7 @@ namespace IRaCIS.Core.Application.Service.Common .WhereIf(queryVisitTask.TaskState != null, t => t.TaskState == queryVisitTask.TaskState) .WhereIf(queryVisitTask.ArmEnum != null, t => t.ArmEnum == queryVisitTask.ArmEnum) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -827,7 +827,7 @@ namespace IRaCIS.Core.Application.Service.Common 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.TrialSiteId != null, t => t.OriginalReReadingTask.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -875,7 +875,7 @@ namespace IRaCIS.Core.Application.Service.Common { var list = await _repository.Where(t => t.VisitTask.TrialId == inQuery.TrialId) - .WhereIf(inQuery.SiteId != null, t => t.VisitTask.Subject.SiteId == inQuery.SiteId) + .WhereIf(inQuery.TrialSiteId != null, t => t.VisitTask.Subject.TrialSiteId == inQuery.TrialSiteId) .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)) @@ -936,7 +936,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis) .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId) @@ -1020,7 +1020,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis) .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId) @@ -1224,7 +1224,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis) .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId) @@ -1281,7 +1281,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis) .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId) @@ -1350,7 +1350,7 @@ namespace IRaCIS.Core.Application.Service.Common //.WhereIf(queryVisitTask.IsSelfAnalysis != null, t => t.IsSelfAnalysis == queryVisitTask.IsSelfAnalysis) .WhereIf(queryVisitTask.TrialReadingCriterionId != null, t => t.TrialReadingCriterionId == queryVisitTask.TrialReadingCriterionId) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .WhereIf(queryVisitTask.IsUrgent != null, t => t.IsUrgent == queryVisitTask.IsUrgent) .WhereIf(queryVisitTask.DoctorUserId != null, t => t.DoctorUserId == queryVisitTask.DoctorUserId) diff --git a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs index 2fd64bfb4..cf67317ae 100644 --- a/IRaCIS.Core.Application/Service/Document/EmailSendService.cs +++ b/IRaCIS.Core.Application/Service/Document/EmailSendService.cs @@ -75,7 +75,7 @@ namespace IRaCIS.Core.Application.Service var taskInfo = await _repository.Where(t => t.Id == visitTaskId).Select(t => new { - t.Subject.SiteId, + t.Subject.TrialSiteId, t.Trial.ResearchProgramNo, t.Subject.TrialSite.TrialSiteCode, SubjectCode = t.Subject.Code, @@ -102,7 +102,7 @@ namespace IRaCIS.Core.Application.Service return (topicStr, htmlBodyStr, isEn_us, null); }; - await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.SiteId); + await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId); } else { @@ -117,7 +117,7 @@ namespace IRaCIS.Core.Application.Service return (topicStr, htmlBodyStr, isEn_us, null); }; - await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.SiteId); + await SendTrialEmailAsync(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId); } @@ -283,9 +283,9 @@ namespace IRaCIS.Core.Application.Service - public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? siteId = null, Guid? trialReadingCriterionId = null, Func emailAttachFunc=null) + public async Task SendTrialEmailAsync(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? trialSiteId = null, Guid? trialReadingCriterionId = null, Func emailAttachFunc=null) { - var (trialEmailConfig, sendEmailConfig) = await BuildEmailConfig(trialId, businessScenario, topicAndHtmlFunc, siteId, trialReadingCriterionId); + var (trialEmailConfig, sendEmailConfig) = await BuildEmailConfig(trialId, businessScenario, topicAndHtmlFunc, trialSiteId, trialReadingCriterionId); if (sendEmailConfig != null) { @@ -295,7 +295,7 @@ namespace IRaCIS.Core.Application.Service } - public async Task<(TrialEmailNoticeConfig?, SMTPEmailConfig?)> BuildEmailConfig(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? siteId = null, Guid? trialReadingCriterionId = null) + public async Task<(TrialEmailNoticeConfig?, SMTPEmailConfig?)> BuildEmailConfig(Guid trialId, EmailBusinessScenario businessScenario, Func topicAndHtmlFunc, Guid? trialSiteId = null, Guid? trialReadingCriterionId = null) { //找到配置 var trialEmailConfig = await _trialEmailNoticeConfigRepository.Where(t => t.TrialId == trialId && t.TrialReadingCriterionId == trialReadingCriterionId && t.BusinessScenarioEnum == businessScenario, ignoreQueryFilters: true) @@ -333,13 +333,13 @@ namespace IRaCIS.Core.Application.Service .ToList(); //收件人 有CRC CRA , CRC CRA的账户要按照中心发送 - if (siteId == null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA) && onlyToUserId == null) + if (trialSiteId == null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA) && onlyToUserId == null) { throw new BusinessValidationFailedException("当前场景收件人包含CRC CRA,但是没有siteId,请联系后端开发"); } - if (siteId != null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) + if (trialSiteId != null && toUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) { - var curentSiteUserIdList = _repository.Where(t => t.TrialId == trialId && t.SiteId == siteId).Select(t => t.UserId).ToList(); + var curentSiteUserIdList = _repository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList(); toUserList = toUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList(); } @@ -351,9 +351,9 @@ namespace IRaCIS.Core.Application.Service var copyUserList = allUserList.Where(t => copyUserTypeEnumList.Contains(t.UserTypeEnum)) .Where(t => !blackUserIdList.Contains(t.UserId)).ToList(); - if (siteId != null && copyUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) + if (trialSiteId != null && copyUserTypeEnumList.Any(t => t == UserTypeEnum.ClinicalResearchCoordinator || t == UserTypeEnum.CRA)) { - var curentSiteUserIdList = _repository.Where(t => t.TrialId == trialId && t.SiteId == siteId).Select(t => t.UserId).ToList(); + var curentSiteUserIdList = _repository.Where(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId).Select(t => t.UserId).ToList(); copyUserList = copyUserList.Where(t => (t.UserTypeEnum != UserTypeEnum.CRA && t.UserTypeEnum != UserTypeEnum.ClinicalResearchCoordinator) || curentSiteUserIdList.Contains(t.UserId)).ToList(); } diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs index a86786d42..dbd0d57d0 100644 --- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs +++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs @@ -236,7 +236,7 @@ namespace IRaCIS.Core.Application.Service t.SourceSubjectVisitId, t.SouceReadModuleId, t.SubjectId, - t.Subject.SiteId, + t.Subject.TrialSiteId, t.DoctorUserId, t.ReadingTaskState, @@ -317,7 +317,7 @@ namespace IRaCIS.Core.Application.Service }; - var (trialEmailConfig, sendEmailConfig) = await _emailSendService.BuildEmailConfig(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.SiteId, taskInfo.TrialReadingCriterionId); + var (trialEmailConfig, sendEmailConfig) = await _emailSendService.BuildEmailConfig(taskInfo.TrialId, businessScenarioEnum, topicAndHtmlFunc, taskInfo.TrialSiteId, taskInfo.TrialReadingCriterionId); #endregion @@ -659,7 +659,7 @@ namespace IRaCIS.Core.Application.Service var path = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, _userInfo.IsEn_Us ? trialEmailConfig.AttachPath : trialEmailConfig.AttachCNPath); - var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.SiteId, taskInfo.SubjectId, true); + var (serverFilePath, relativePath, fileRealName) = FileStoreHelper.GetSubjectEnrollConfirmOrPDEmailPath(_hostEnvironment, Path.GetFileName(path), taskInfo.TrialId, taskInfo.TrialSiteId, taskInfo.SubjectId, true); if (emailStoreMode == EmailStoreSendMode.StoreLocalSend || emailStoreMode == EmailStoreSendMode.OnlyStoreLocalNotSentEmail) { diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs index fd10ac810..2c44fb236 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs @@ -20,7 +20,6 @@ namespace IRaCIS.Core.Application.Contracts public int SliceLocation { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } @@ -51,7 +50,7 @@ namespace IRaCIS.Core.Application.Contracts public string VisitName { get; set; } = string.Empty; public string Sponsor { get; set; } = string.Empty; public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs index 5af6aa683..d2c7d180e 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomSeriesModel.cs @@ -6,6 +6,9 @@ namespace IRaCIS.Core.Application.Contracts.Dicom.DTO public class DicomSeriesDTO { + + + public bool IsDicom { get; set; } = true; public bool IsBeMark { get; set; } = false; @@ -24,7 +27,7 @@ namespace IRaCIS.Core.Application.Contracts.Dicom.DTO public string SliceThickness { get; set; } = String.Empty; public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomStudyModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomStudyModel.cs index ea1be8156..0e759fafd 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomStudyModel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomStudyModel.cs @@ -4,7 +4,7 @@ { public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } @@ -18,7 +18,7 @@ { public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } @@ -74,7 +74,7 @@ public Guid SubjectId { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } //public string SubjectName { get; set; } public string SubjectCode { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs index 49786d306..744f8dbc5 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DownloadAndUploadDTO.cs @@ -11,7 +11,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc.DTO { public Guid VisitTaskId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubejctId { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/ImageShareModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/ImageShareModel.cs index f5ce0524a..a3e118071 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/ImageShareModel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/ImageShareModel.cs @@ -5,7 +5,6 @@ namespace IRaCIS.Core.Application.Contracts.Dicom.DTO public class ImageShareCommand { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } public Guid SubjectId { get; set; } public Guid? StudyId { get; set; } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index f9a5e6575..8226693c0 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -13,7 +13,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } @@ -147,7 +147,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? SubjectId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectVisitId { get; set; } public string SubjectInfo { get; set; } = String.Empty; @@ -194,7 +194,7 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public Guid TrialId { get; set; } [NotDefault] - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } [NotDefault] public Guid SubjectId { get; set; } [NotDefault] @@ -231,7 +231,7 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public Guid TrialId { get; set; } [NotDefault] - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } [NotDefault] public Guid SubjectId { get; set; } [NotDefault] diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs index 31991c2cd..c3b3bd27e 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DicomArchiveService.cs @@ -152,7 +152,7 @@ namespace IRaCIS.Core.Application.Services } - var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id); + var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id); dicomInstance.Path = relativePath; @@ -270,7 +270,6 @@ namespace IRaCIS.Core.Application.Services TriggerTime = dataset.GetSingleValueOrDefault(DicomTag.TriggerTime, string.Empty), - SiteId = addtionalInfo.SiteId, TrialId = addtionalInfo.TrialId, SubjectId = addtionalInfo.SubjectId, SubjectVisitId = addtionalInfo.SubjectVisitId, @@ -400,7 +399,6 @@ namespace IRaCIS.Core.Application.Services AcquisitionNumber = dataset.GetSingleValueOrDefault(DicomTag.AcquisitionNumber, string.Empty), TriggerTime = dataset.GetSingleValueOrDefault(DicomTag.TriggerTime, string.Empty), - SiteId = dicomStudy.SiteId, TrialId = dicomStudy.TrialId, SubjectId = dicomStudy.SubjectId, SubjectVisitId = dicomStudy.SubjectVisitId, @@ -433,7 +431,6 @@ namespace IRaCIS.Core.Application.Services StudyId = dicomStudy.Id, SeriesId = dicomSeries.Id, - SiteId = dicomStudy.SiteId, TrialId = dicomStudy.TrialId, SubjectId = dicomStudy.SubjectId, SubjectVisitId = dicomStudy.SubjectVisitId, @@ -536,7 +533,6 @@ namespace IRaCIS.Core.Application.Services TriggerTime = dataset.GetSingleValueOrDefault(DicomTag.TriggerTime, string.Empty), - SiteId = Guid.Empty, TrialId = Guid.Empty, SubjectId = Guid.Empty, SubjectVisitId = Guid.Empty, @@ -607,7 +603,6 @@ namespace IRaCIS.Core.Application.Services AcquisitionNumber = dataset.GetSingleValueOrDefault(DicomTag.AcquisitionNumber, string.Empty), TriggerTime = dataset.GetSingleValueOrDefault(DicomTag.TriggerTime, string.Empty), - SiteId = Guid.Empty, TrialId = Guid.Empty, SubjectId = Guid.Empty, SubjectVisitId = Guid.Empty, @@ -630,7 +625,6 @@ namespace IRaCIS.Core.Application.Services StudyInstanceUid = findStudy.StudyInstanceUid, SeriesInstanceUid = findSerice.SeriesInstanceUid, - SiteId = Guid.Empty, TrialId = Guid.Empty, SubjectId = Guid.Empty, SubjectVisitId = Guid.Empty, diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index dc776a144..fda43c6ae 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -59,9 +59,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc SubejctId = u.SubjectId, - - SiteId=u.Subject.SiteId, + + TrialSiteId = u.Subject.TrialSiteId, CriterionModalitys= u.TrialReadingCriterion.CriterionModalitys, @@ -253,7 +253,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString()); study.TrialId = incommand.TrialId; - //study.SiteId = incommand.SiteId; study.SubjectId = incommand.SubjectId; study.VisitTaskId = findOriginStudy.VisitTaskId; //study.SubjectVisitId = incommand.SubjectVisitId; @@ -279,7 +278,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc series.StudyId = study.Id; series.TrialId = incommand.TrialId; - //series.SiteId = incommand.SiteId; series.SubjectId = incommand.SubjectId; //series.SubjectVisitId = incommand.SubjectVisitId; series.VisitTaskId = findOriginStudy.VisitTaskId; @@ -300,7 +298,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc isntance.SeriesId = series.Id; isntance.TrialId = incommand.TrialId; - //isntance.SiteId = incommand.SiteId; isntance.SubjectId = incommand.SubjectId; //isntance.SubjectVisitId = incommand.SubjectVisitId; isntance.VisitTaskId = findOriginStudy.VisitTaskId; @@ -348,8 +345,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc series.StudyId = study.Id; series.TrialId = incommand.TrialId; - //series.SiteId = incommand.SiteId; series.SubjectId = incommand.SubjectId; + series.VisitTaskId = findOriginStudy.VisitTaskId; //series.SubjectVisitId = incommand.SubjectVisitId; @@ -372,7 +369,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc insntance.SeriesId = dicomSeries.Id; insntance.TrialId = incommand.TrialId; - //insntance.SiteId = incommand.SiteId; insntance.SubjectId = incommand.SubjectId; insntance.VisitTaskId = findOriginStudy.VisitTaskId; diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs index e84fb9df6..dc4a1a7fa 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/ImageShareService.cs @@ -49,8 +49,8 @@ namespace IRaCIS.Core.Application.Services #endregion var studyIds = await _studyRepository.AsQueryable() - .Where(t => t.TrialId == imageShareCommand.TrialId && t.SubjectId == imageShareCommand.SubjectId && - t.SiteId == imageShareCommand.SiteId) + .Where(t => t.TrialId == imageShareCommand.TrialId && t.SubjectId == imageShareCommand.SubjectId + ) .Select(u => u.Id).ToListAsync(); if (!studyIds.Any()) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs index 7acae82ed..853d3ab08 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs @@ -60,12 +60,6 @@ namespace IRaCIS.Core.Application.Services path = (await _instanceRepository.Where(s => s.Id == instanceId).Select(t => t.Path).FirstOrDefaultAsync()).IfNullThrowException(); - //DicomInstance dicomInstance = await _instanceRepository.FirstOrDefaultAsync(s => s.Id == instanceId).IfNullThrowException(); - - //DicomStudy dicomStudy = await _studyRepository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId).IfNullThrowException(); - - //var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id); - var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path); using (var sw = ImageHelper.RenderPreviewJpeg(physicalPath)) @@ -86,16 +80,6 @@ namespace IRaCIS.Core.Application.Services var filePath = string.Empty; var path = (await _instanceRepository.Where(s => s.Id == instanceId).Select(t=>t.Path).FirstOrDefaultAsync()).IfNullThrowException(); - //DicomStudy dicomStudy = await _studyRepository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId).IfNullThrowException(); - - ////if (dicomInstance.Anonymize) //被匿名化 - ////{ - //// filePath = _dicomFileStoreHelper.GetInstanceFilePath(dicomStudy, dicomInstance.SeriesId, dicomInstance.Id + ".Anonymize"); - ////} - - ////else - //var (physicalPath, relativePath) = FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id); - var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path); diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 07f72ca22..92082d8d1 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -110,7 +110,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var studyMonitor = new StudyMonitor() { TrialId = preArchiveStudyCommand.TrialId, - SiteId = preArchiveStudyCommand.SiteId, SubjectId = preArchiveStudyCommand.SubjectId, SubjectVisitId = preArchiveStudyCommand.SubjectVisitId, @@ -188,7 +187,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString()); study.TrialId = incommand.TrialId; - study.SiteId = incommand.SiteId; study.SubjectId = incommand.SubjectId; study.SubjectVisitId = incommand.SubjectVisitId; @@ -223,7 +221,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc series.StudyId = study.Id; series.TrialId = incommand.TrialId; - series.SiteId = incommand.SiteId; series.SubjectId = incommand.SubjectId; series.SubjectVisitId = incommand.SubjectVisitId; @@ -243,7 +240,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc isntance.SeriesId = series.Id; isntance.TrialId = incommand.TrialId; - isntance.SiteId = incommand.SiteId; isntance.SubjectId = incommand.SubjectId; isntance.SubjectVisitId = incommand.SubjectVisitId; @@ -290,7 +286,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc series.StudyId = study.Id; series.TrialId = incommand.TrialId; - series.SiteId = incommand.SiteId; series.SubjectId = incommand.SubjectId; series.SubjectVisitId = incommand.SubjectVisitId; @@ -314,7 +309,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc insntance.SeriesId = dicomSeries.Id; insntance.TrialId = incommand.TrialId; - insntance.SiteId = incommand.SiteId; insntance.SubjectId = incommand.SubjectId; insntance.SubjectVisitId = incommand.SubjectVisitId; @@ -364,14 +358,14 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc 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(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) //.WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression) .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) .Select(t => new UnionStudyViewModel() { TrialId = t.TrialId, - SiteId = t.SiteId, + TrialSiteId = t.Subject.TrialSiteId, SubjectId = t.SubjectId, SubjectVisitId = t.SubjectVisitId, VisitName = t.SubjectVisit.VisitName, @@ -396,9 +390,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc StudyTime = t.StudyTime, - TrialSiteAliasName = t.TrialSite.TrialSiteAliasName, + TrialSiteAliasName = t.Subject.TrialSite.TrialSiteAliasName, - TrialSiteCode = t.TrialSite.TrialSiteCode, + TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, Uploader = t.Uploader.UserName, @@ -412,7 +406,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc 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(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.Subject.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) //.WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) .WhereIf(studyQuery.VisitPlanArray != null && studyQuery.VisitPlanArray?.Length > 0, svExpression2) .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) @@ -420,7 +414,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc .Select(t => new UnionStudyViewModel() { TrialId = t.TrialId, - SiteId = t.SiteId, + TrialSiteId = t.Subject.TrialSiteId, SubjectId = t.SubjectId, SubjectVisitId = t.SubjectVisitId, VisitName = t.SubjectVisit.VisitName, @@ -445,9 +439,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc StudyTime = t.ImageDate, - TrialSiteAliasName = t.TrialSite.TrialSiteAliasName, + TrialSiteAliasName = t.Subject.TrialSite.TrialSiteAliasName, - TrialSiteCode = t.TrialSite.TrialSiteCode, + TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, Uploader = t.CreateUser.UserName, @@ -461,7 +455,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var unionQuery = dicomStudyQuery.Union(nodeDicomStudyQuery) .WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId) .WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId) - .WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId); + .WhereIf(studyQuery.TrialSiteId != null, t => t.TrialSiteId == studyQuery.TrialSiteId); return await unionQuery.ToPagedListAsync(studyQuery.PageIndex, studyQuery.PageSize, studyQuery.SortField, studyQuery.Asc); } @@ -478,7 +472,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) .WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId) .WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId) - .WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId) + .WhereIf(studyQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == studyQuery.TrialSiteId) .WhereIf(studyQuery.IsDicom != null, t => t.IsDicom == studyQuery.IsDicom) .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.Uploader), t => t.Uploader.UserName.Contains(studyQuery.Uploader)) .WhereIf(studyQuery.IsSuccess != null, t => t.IsSuccess == studyQuery.IsSuccess) @@ -486,7 +480,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc .Select(t => new UnionStudyMonitorModel() { TrialId = t.TrialId, - SiteId = t.SiteId, + TrialSiteId = t.Subject.TrialSiteId, SubjectId = t.SubjectId, SubjectVisitId = t.SubjectVisitId, VisitName = t.SubjectVisit.VisitName, @@ -530,108 +524,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc - #region 冗余查询 - //var dicomStudyQuery = _repository.Where(t => t.TrialId == studyQuery.TrialId && t.IsDicom) - // .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) - // .WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) - // .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) - // .Select(t => new UnionStudyMonitorModel() - // { - // TrialId = t.TrialId, - // SiteId = t.SiteId, - // SubjectId = t.SubjectId, - // SubjectVisitId = t.SubjectVisitId, - // VisitName = t.SubjectVisit.VisitName, - // VisitNum = t.SubjectVisit.VisitNum, - // SubjectCode = t.Subject.Code, - - - // TrialSiteAliasName = t.TrialSite.TrialSiteAliasName, - - // TrialSiteCode = t.TrialSite.TrialSiteCode, - - // Uploader = t.Uploader.FullName, - - // UploadTime = t.CreateTime, - - - // IP = t.IP, - // FileCount = t.FileCount, - // FileSize = t.FileSize, - // UploadFinishedTime = t.UploadFinishedTime, - // UploadStartTime = t.UploadStartTime, - - // TotalMillisecondsInterval = t.TotalMillisecondsInterval, - - // IsDicomReUpload = t.IsDicomReUpload, - // StudyId = t.Id, - // IsDicom = t.IsDicom, - - // StudyCode = t.DicomStudy.StudyCode - // //DicomStudyCode = t.DicomStudy.StudyCode, - // //NoneDicomCode = 0, - - // }); - - ////.ProjectTo(_mapper.ConfigurationProvider); - - - - //var nodeDicomStudyQuery = _repository.Where(t => t.TrialId == studyQuery.TrialId && t.IsDicom == false) - // .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) - // .WhereIf(!string.IsNullOrEmpty(studyQuery.VisitPlanInfo), studyQuery.VisitPlanInfo.Contains('.') ? t => t.SubjectVisit.VisitNum.ToString().Contains(".") : t => t.SubjectVisit.VisitNum == decimal.Parse(studyQuery.VisitPlanInfo)) - // .WhereIf(!string.IsNullOrWhiteSpace(studyQuery.SubjectInfo), t => t.Subject.Code.Contains(studyQuery.SubjectInfo)) - - // .Select(t => new UnionStudyMonitorModel() - // { - - // TrialId = t.TrialId, - // SiteId = t.SiteId, - // SubjectId = t.SubjectId, - // SubjectVisitId = t.SubjectVisitId, - // VisitName = t.SubjectVisit.VisitName, - // VisitNum = t.SubjectVisit.VisitNum, - // SubjectCode = t.Subject.Code, - // TrialSiteAliasName = t.TrialSite.TrialSiteAliasName, - // TrialSiteCode = t.TrialSite.TrialSiteCode, - // Uploader = t.Uploader.FullName, - // UploadTime = t.CreateTime, - - // IP = t.IP, - // FileCount = t.FileCount, - // FileSize = t.FileSize, - // UploadFinishedTime = t.UploadFinishedTime, - // UploadStartTime = t.UploadStartTime, - - // TotalMillisecondsInterval = t.TotalMillisecondsInterval, - - // IsDicomReUpload = t.IsDicomReUpload, - // StudyId = t.Id, - // IsDicom = t.IsDicom, - - // StudyCode = t.NoneDicomStudy.StudyCode - - // //DicomStudyCode = string.Empty, - // //NoneDicomCode = t.NoneDicomStudy.Code, - - // }); - - ////.ProjectTo(_mapper.ConfigurationProvider); - - - //var unionQuery = dicomStudyQuery.Union(nodeDicomStudyQuery) - // .WhereIf(studyQuery.SubjectId != null, t => t.SubjectId == studyQuery.SubjectId) - // .WhereIf(studyQuery.SubjectVisitId != null, t => t.SubjectId == studyQuery.SubjectVisitId) - // .WhereIf(studyQuery.SiteId != null, t => t.SiteId == studyQuery.SiteId); - - //return await unionQuery.ToPagedListAsync(studyQuery.PageIndex, studyQuery.PageSize, string.IsNullOrEmpty(studyQuery.SortField) ? "UploadTime" : studyQuery.SortField, studyQuery.Asc); - - #endregion - - } @@ -645,18 +540,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc path = (await _dicomInstanceRepository.Where(s => s.StudyId == studyId).Select(t => t.Path).FirstOrDefaultAsync()).IfNullThrowException(); - //DicomInstance dicomInstance = await _repository.FirstOrDefaultAsync(s => s.StudyId == studyId); - - //if (dicomInstance != null) - //{ - // DicomStudy dicomStudy = await _repository.FirstOrDefaultAsync(s => s.Id == dicomInstance.StudyId); - // if (dicomStudy != null) - // { - // var( physicalPath ,relativePath )= FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, dicomInstance.Id); - - // path = physicalPath; - // } - //} + using (var sw = ImageHelper.RenderPreviewJpeg(path)) { diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs index f8bb6695a..721b940e9 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs @@ -40,8 +40,7 @@ namespace IRaCIS.Core.Application.Service CreateMap().IncludeMembers(t => t.Subject, u => u.SubjectVisit) - .ForMember(d => d.UploaderFirstName, u => u.MapFrom(s => s.Site.SiteName)) - .ForMember(d => d.SiteName, u => u.MapFrom(s => s.Site.SiteName)) + .ForMember(d => d.SiteName, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteName)) .ForMember(d => d.UploaderFirstName, u => u.MapFrom(s => s.Uploader.FirstName)) .ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.Uploader.LastName)) .ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime)); @@ -104,8 +103,8 @@ namespace IRaCIS.Core.Application.Service //.ForMember(d => d.Modality, u => u.MapFrom(s => s.Modalities)) .ForMember(d => d.Bodypart, u => u.MapFrom(s => s.BodyPartExamined)) .ForMember(d => d.StudyTime, u => u.MapFrom(s => s.StudyTime)) - .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)) - .ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName)) + .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode)) + .ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteAliasName)) .ForMember(d => d.IsDicom, u => u.MapFrom(s => true)) .ForMember(d => d.Count, u => u.MapFrom(s => s.SeriesCount)) .ForMember(d => d.VisitNum, u => u.MapFrom(s => s.SubjectVisit.VisitNum)) @@ -116,8 +115,8 @@ namespace IRaCIS.Core.Application.Service //.ForMember(d => d.Modality, u => u.MapFrom(s => s.Modalities)) .ForMember(d => d.Bodypart, u => u.MapFrom(s => s.BodyPart)) .ForMember(d => d.StudyTime, u => u.MapFrom(s => s.ImageDate)) - .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.TrialSite.TrialSiteCode)) - .ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.TrialSite.TrialSiteAliasName)) + .ForMember(d => d.TrialSiteCode, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteCode)) + .ForMember(d => d.TrialSiteAliasName, u => u.MapFrom(s => s.Subject.TrialSite.TrialSiteAliasName)) .ForMember(d => d.IsDicom, u => u.MapFrom(s => false)) .ForMember(d => d.Count, u => u.MapFrom(s => s.NoneDicomFileList.Count())) .ForMember(d => d.VisitNum, u => u.MapFrom(s => s.SubjectVisit.VisitNum)) diff --git a/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs b/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs index 0f6b0fe2a..530acadbf 100644 --- a/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs +++ b/IRaCIS.Core.Application/Service/Inspection/DTO/InspectionModel.cs @@ -22,7 +22,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO { public Guid? TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } public Guid? SubjectVisitId { get; set; } @@ -336,7 +336,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string Code { get; set; } = string.Empty; } @@ -441,7 +441,7 @@ namespace IRaCIS.Core.Application.Service.Inspection.DTO /// /// 中心 /// - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } /// /// 受试者 diff --git a/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs b/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs index eeb6ce8c1..b3f13a70b 100644 --- a/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs +++ b/IRaCIS.Core.Application/Service/Inspection/InspectionService.cs @@ -41,10 +41,9 @@ namespace IRaCIS.Core.Application.Service.Inspection join trial in _repository.GetQueryable().IgnoreQueryFilters() on data.TrialId equals trial.Id into trialtemp from leftrial in trialtemp.DefaultIfEmpty() - join site in _repository.GetQueryable().IgnoreQueryFilters() on data.SiteId equals site.Id into sitetemp - from leftsite in sitetemp.DefaultIfEmpty() - join trialSite in _repository.GetQueryable().IgnoreQueryFilters() on new { SiteId = leftsite.Id, Trialid = leftrial.Id } equals new { SiteId = trialSite.SiteId, Trialid = trialSite.TrialId } into trialSitetemp + + join trialSite in _repository.GetQueryable().IgnoreQueryFilters() on data.TrialSiteId equals trialSite.Id into trialSitetemp from lefttrialSite in trialSitetemp.DefaultIfEmpty() @@ -97,7 +96,7 @@ namespace IRaCIS.Core.Application.Service.Inspection BlindName = data.VisitTask.TaskBlindName, TaskName = data.VisitTask.TaskName, TrialId = data.TrialId, - SiteId = data.SiteId, + TrialSiteId = data.TrialSiteId, SubjectId = data.SubjectId, SubjectVisitId = data.SubjectVisitId, //OptType = data.OptType, @@ -161,7 +160,7 @@ namespace IRaCIS.Core.Application.Service.Inspection TrialReadingCriterionName = data.TrialReadingCriterion.CriterionName }; - query = query.WhereIf(dto.SiteId != null, x => x.SiteId == dto.SiteId) + query = query.WhereIf(dto.TrialSiteId != null, x => x.TrialSiteId == dto.TrialSiteId) //.Where(x => (x.TrialId == dto.TrialId) || (x.TrialId == null && x.CreateTime >= trialData.CreateTime && x.CreateTime <= trialData.TrialFinishTime)) .Where(x => x.TrialId == dto.TrialId ) diff --git a/IRaCIS.Core.Application/Service/Institution/SiteService.cs b/IRaCIS.Core.Application/Service/Institution/SiteService.cs index 79c43f703..f8cce2a48 100644 --- a/IRaCIS.Core.Application/Service/Institution/SiteService.cs +++ b/IRaCIS.Core.Application/Service/Institution/SiteService.cs @@ -99,7 +99,7 @@ namespace IRaCIS.Application.Services public async Task DeleteSite(Guid siteId) { - if (await _trialSiteUserRepository.AnyAsync(t => t.SiteId == siteId)) + if (await _trialSiteUserRepository.AnyAsync(t => t.TrialSite.SiteId == siteId)) { //---该中心已经加入项目,不可以被删除。 return ResponseOutput.NotOk(_localizer["Site_InProject"]); diff --git a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs index a0c73a7f7..feede403d 100644 --- a/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/QC/ClinicalDataService.cs @@ -56,33 +56,6 @@ namespace IRaCIS.Core.Application.Contracts return clinicalObj; - #region 老方式 linq join 而且需要映射 - - - //var query = from sv in _subjectVisitRepository.GetAll() - // join subject in _subjectRepository.GetAll() on sv.SubjectId equals subject.Id - // join trialSite in _trialSiteRepository.Find(t => t.TrialId == subjectClinicalDataQuery.TrialId) on sv.SiteId equals trialSite.SiteId - // select new SubjectClinicalDataDto() - // { - // SubjectId = sv.SubjectId, - // SubjectCode = subject.Code, - // SubjectVisitId = sv.Id, - // VisitName = sv.VisitName, - // VisitNum = sv.VisitNum, - // TrialSiteCode = trialSite.TrialSiteCode - // }; - - //var clinicalObj = query.FirstOrDefault(t => t.SubjectVisitId == subjectClinicalDataQuery.SubjectVisitId); - - //clinicalObj.PreviousHistoryList = _previousHistoryRepository.Find(t => t.SubjectVisitId == subjectClinicalDataQuery.SubjectVisitId) - // .ProjectTo(_mapper.ConfigurationProvider).ToList(); - //clinicalObj.PreviousOtherList = _previousOtherRepository.Find(t => t.SubjectVisitId == subjectClinicalDataQuery.SubjectVisitId) - // .ProjectTo(_mapper.ConfigurationProvider).ToList(); - //clinicalObj.PreviousSurgeryList = _previousSurgeryRepository.Find(t => t.SubjectVisitId == subjectClinicalDataQuery.SubjectVisitId) - // .ProjectTo(_mapper.ConfigurationProvider).ToList(); - - #endregion - } diff --git a/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyViewModel.cs index 2fa70b740..87d404622 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/NoneDicomStudyViewModel.cs @@ -41,7 +41,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } public string BodyPart { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs index 72234ea6f..5bd23bee9 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QARecordViewModel.cs @@ -319,7 +319,7 @@ namespace IRaCIS.Core.Application.Contracts.DTO //public string LastName { get; set; } //public string Modalities { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SiteName { get; set; } = String.Empty; public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 18629eff1..dd47abc68 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -20,7 +20,7 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } public bool? IsUrgent { get; set; } @@ -51,7 +51,7 @@ namespace IRaCIS.Core.Application.Contracts public bool? IsUrgent { get; set; } public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? VisitId { get; set; } public Guid? SubjectId { get; set; } @@ -263,7 +263,7 @@ namespace IRaCIS.Core.Application.Contracts //public int? Age { get; set; } //public string Sex { get; set; } = string.Empty; - //public Guid SiteId { get; set; } + //public Guid TrialSiteId { get; set; } //public Guid TrialId { get; set; } //public string MedicalNo { get; set; } = string.Empty; //public string ShortName { get; set; } = string.Empty; @@ -610,7 +610,7 @@ namespace IRaCIS.Core.Application.Contracts public string VisitName { get; set; } = string.Empty; public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } [DictionaryTranslateAttribute("RequestBackState")] public RequestBackStateEnum RequestBackState { get; set; } @@ -1121,7 +1121,7 @@ namespace IRaCIS.Core.Application.Contracts public bool? IsUrgent { get; set; } public Guid? SubjectId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public bool? IsClosed { get; set; } public bool? IsOverTime { get; set; } public Guid? CreateUserId { get; set; } @@ -1184,7 +1184,7 @@ namespace IRaCIS.Core.Application.Contracts public QCChanllengeReuploadEnum ReuploadEnum { get; set; } public DateTime? DeadlineTime { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public AuditStateEnum AuditState { get; set; } public CurrentQC CurrentQCEnum { get; set; } public TrialQCProcess QCProcessEnum { get; set; } @@ -1234,7 +1234,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public string SubjectInfo { get; set; } = String.Empty; @@ -1277,7 +1277,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public string SubjectInfo { get; set; } = String.Empty; public string[]? VisitPlanArray { get; set; } @@ -1350,7 +1350,7 @@ namespace IRaCIS.Core.Application.Contracts public string VisitName { get; set; } = string.Empty; public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } //public string Modality { get; set; } @@ -1438,7 +1438,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? Id { get; set; } public Guid TrialId { get; set; } public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public bool InPlan { get; set; } = true; public int VisitExecuted { get; set; } public decimal VisitNum { get; set; } diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index 8e9c0e9d3..11c4b7e90 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -63,7 +63,7 @@ namespace IRaCIS.Core.Application.Image.QA var query = _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId) .Where(t => t.Subject.FinalSubjectVisitId != null ? t.VisitNum <= t.Subject.FinalSubjectVisit.VisitNum : true) - .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId) + .WhereIf(visitSearchDTO.TrialSiteId != null, t => t.TrialSiteId == visitSearchDTO.TrialSiteId) .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId) .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => t.Subject.Code.Contains(visitSearchDTO.SubjectInfo)) @@ -98,39 +98,6 @@ namespace IRaCIS.Core.Application.Image.QA public async Task<(PageOutput, TrialSubjectAndSVConfig)> GetCRCChallengeList(ChallengeQuery challengeQuery) { - #region CRC 质疑列表 join连表方式 - //var query = from qcChanllenge in _qcChallengeRepository.Find(qcChallengeLambda) - // join subjectVisit in _subjectVisitRepository.Find() on qcChanllenge.SubjectVisitId equals subjectVisit.Id - // join trialSite in _trialSiteRepository.Find(t => t.TrialId == challengeQuery.TrialId) on subjectVisit.SiteId equals trialSite.SiteId - // join subject in _subjectRepository.Find() on subjectVisit.SubjectId equals subject.Id - // select new QCCRCChallengeViewModel() - // { - // Id = qcChanllenge.Id, - // SubjectVisitId = qcChanllenge.SubjectVisitId, - // ChallengeCode = qcChanllenge.ChallengeCode, - // ChallengeType = qcChanllenge.ChallengeType, - // Note = qcChanllenge.Note, - // Content = qcChanllenge.Content, - // UserTypeEnum = qcChanllenge.UserTypeEnum, - // CreateTime = qcChanllenge.CreateTime, - // CreateUser = qcChanllenge.CreateUser, - // CreateUserId = qcChanllenge.CreateUserId, - - // DeadlineTime = qcChanllenge.DeadlineTime, - // IsClosed = qcChanllenge.IsClosed, - // ClosedTime = qcChanllenge.ClosedTime, - // ClosedUser = qcChanllenge.ClosedUser, - // NeedReUpload = qcChanllenge.NeedReUpload, - - // VisitName = subjectVisit.VisitName, - // VisitNum = subjectVisit.VisitNum, - // SubjectCode = subject.Code, - // TrialSiteCode = trialSite.TrialSiteCode, - - // LatestMsgTime = qcChanllenge.LatestMsgTime, - // LatestReplyUser = qcChanllenge.LatestReplyUser, - // }; - #endregion var svExpression = QCCommon.GetQCChallengeFilter(challengeQuery.VisitPlanArray); @@ -138,7 +105,7 @@ namespace IRaCIS.Core.Application.Image.QA //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum) .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed) - .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId) + .WhereIf(challengeQuery.TrialSiteId != null, t => t.SubjectVisit.TrialSiteId == challengeQuery.TrialSiteId) .WhereIf(challengeQuery.SubjectId != null, t => t.SubjectVisit.SubjectId == challengeQuery.SubjectId) .WhereIf(challengeQuery.CreateUserId != null, t => t.CreateUserId == challengeQuery.CreateUserId) .WhereIf(challengeQuery.SubjectCode != null, t => t.SubjectVisit.Subject.Code.Contains(challengeQuery.SubjectCode!)) @@ -170,57 +137,6 @@ namespace IRaCIS.Core.Application.Image.QA [HttpPost] public async Task<(PageOutput, TrialSubjectAndSVConfig)> GetQCChallengeList(ChallengeQuery challengeQuery) { - #region linq方式 + Expression 拼接 - - //Expression> qcChallengeLambda = x => x.TrialId == challengeQuery.TrialId; - - //if (challengeQuery.ReuploadEnum != null) - //{ - // qcChallengeLambda = qcChallengeLambda.And(t => t.ReuploadEnum == challengeQuery.ReuploadEnum); - //} - //if (challengeQuery.IsClosed != null) - //{ - // qcChallengeLambda = qcChallengeLambda.And(t => t.IsClosed == challengeQuery.IsClosed); - //} - //if (challengeQuery.SiteId != null) - //{ - // qcChallengeLambda = qcChallengeLambda.And(t => t.SubjectVisit.SiteId == challengeQuery.SiteId.Value); - //} - //if (challengeQuery.SubjectId != null) - //{ - // qcChallengeLambda = qcChallengeLambda.And(t => t.SubjectVisit.Subject.Id == challengeQuery.SubjectId.Value); - //} - - //var query = from qcChanllenge in _qcChallengeRepository.Find(qcChallengeLambda) - // join subjectVisit in _subjectVisitRepository.Find(subjectVisitLambda) on qcChanllenge.SubjectVisitId equals subjectVisit.Id - // join trialSite in _trialSiteRepository.Find(t => t.TrialId == challengeQuery.TrialId) on subjectVisit.SiteId equals trialSite.SiteId - // join subject in _subjectRepository.Find() on subjectVisit.SubjectId equals subject.Id - // select new QCChallengeViewModel() - // { - // Id = qcChanllenge.Id, - // SubjectVisitId = qcChanllenge.SubjectVisitId, - // ChallengeCode = qcChanllenge.ChallengeCode.ToString(), - // ChallengeType = qcChanllenge.ChallengeType, - // Note = qcChanllenge.Note, - // UserTypeEnum = qcChanllenge.UserTypeEnum, - // Content = qcChanllenge.Content, - // CreateTime = qcChanllenge.CreateTime, - // CreateUserId = qcChanllenge.CreateUserId, - // CreateUser = qcChanllenge.CreateUser, - // SubjectCode = subject.Code, - // TrialSiteCode = trialSite.TrialSiteCode, - // DeadlineTime = qcChanllenge.DeadlineTime, - // IsClosed = qcChanllenge.IsClosed, - // ClosedTime = qcChanllenge.ClosedTime, - // ClosedUser = qcChanllenge.ClosedUser, - // NeedReUpload = qcChanllenge.NeedReUpload, - // VisitName = subjectVisit.VisitName, - // VisitNum = subjectVisit.VisitNum, - // LatestMsgTime = qcChanllenge.LatestMsgTime, - // LatestReplyUser = qcChanllenge.LatestReplyUser, - - // }; - #endregion var svExpression = QCCommon.GetQCChallengeFilter(challengeQuery.VisitPlanArray); @@ -228,7 +144,7 @@ namespace IRaCIS.Core.Application.Image.QA //.WhereIf(challengeQuery.ChallengeState != null, t => t.SubjectVisit.ChallengeState == challengeQuery.ChallengeState) .WhereIf(challengeQuery.ReuploadEnum != null, t => t.ReuploadEnum == challengeQuery.ReuploadEnum) .WhereIf(challengeQuery.IsClosed != null, t => t.IsClosed == challengeQuery.IsClosed) - .WhereIf(challengeQuery.SiteId != null, t => t.SubjectVisit.SiteId == challengeQuery.SiteId) + .WhereIf(challengeQuery.TrialSiteId != null, t => t.SubjectVisit.TrialSiteId == challengeQuery.TrialSiteId) .WhereIf(challengeQuery.SubjectId != null, t => t.SubjectVisit.SubjectId == challengeQuery.SubjectId) .WhereIf(challengeQuery.CreateUserId != null, t => t.CreateUserId == challengeQuery.CreateUserId) .WhereIf(!string.IsNullOrEmpty(challengeQuery.SubjectCode), t => t.SubjectVisit.Subject.Code.Contains(challengeQuery.SubjectCode)) @@ -275,170 +191,12 @@ namespace IRaCIS.Core.Application.Image.QA public async Task<(PageOutput, TrialSubjectAndSVConfig)> GetQCVisitList(QCVisitSearchDTO visitSearchDTO) { - #region 经典 linq - //Expression> subjectLambda = x => true; - - //Expression> subjectVisitLambda = x => x.TrialId == visitSearchDTO.TrialId; - //Expression> studyLambda = x => x.TrialId == visitSearchDTO.TrialId; - ////Expression> visitPlanLambda = x => x.TrialId == subjectVisitSearch.TrialId; - - //if (visitSearchDTO.SiteId != null && visitSearchDTO.SiteId != Guid.Empty)shiwu - //{ - // subjectVisitLambda = subjectVisitLambda.And(t => t.SiteId == visitSearchDTO.SiteId.Value); - // studyLambda = studyLambda.And(t => t.SiteId == visitSearchDTO.SiteId.Value); - //} - - //if (visitSearchDTO.SubjectId != null && visitSearchDTO.SubjectId != Guid.Empty) - //{ - // subjectLambda = subjectLambda.And(t => t.Id == visitSearchDTO.SubjectId.Value); - - // studyLambda = studyLambda.And(t => t.SubjectId == visitSearchDTO.SubjectId.Value); - //} - - //if (!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo)) - //{ - // var search = visitSearchDTO.SubjectInfo.Trim(); - // subjectLambda = subjectLambda.And(t => t.FirstName.Contains(search) || t.LastName.Contains(search) || t.Code.Contains(search)); - //} - - //if (!string.IsNullOrWhiteSpace(visitSearchDTO.VisitPlanInfo)) - //{ - // var visitInfo = visitSearchDTO.VisitPlanInfo.Trim(); - - // if (visitInfo.Contains('.')) // 包含小数点的是计划外访视 - // { - // subjectVisitLambda = subjectVisitLambda.And(t => t.VisitNum.ToString().Contains(".")); - // } - // else - // { - // if (int.TryParse(visitInfo, out var visitNum)) - // { - // subjectVisitLambda = subjectVisitLambda.And(t => t.VisitNum == visitNum); - // } - // } - //} - - //var query = from subjectVisit in _subjectVisitRepository.Where(subjectVisitLambda) - // join subject in _subjectRepository.Where(subjectLambda) on subjectVisit.SubjectId equals subject.Id - // join trialSite in _trialSiteRepository.Where(t => t.TrialId == visitSearchDTO.TrialId) on subjectVisit.SiteId equals trialSite.SiteId - // join study in _studyRepository.Where(studyLambda).GroupBy(t => t.SubjectVisitId).Select(g => new { SubjectVisitId = g.Key, StudyCount = g.Count() }) on subjectVisit.Id equals study.SubjectVisitId into d - // from study in d.DefaultIfEmpty() - // join trial in _trialRepository.AsQueryable() on subjectVisit.TrialId equals trial.Id - - // select new QCVisitViewModel() - // { - // Id = subjectVisit.Id, - // //VisitPlanId = visitStage.Id, - // SubjectId = subjectVisit.SubjectId, - // TrialId = subjectVisit.TrialId, - // SiteId = subjectVisit.SiteId, - - // VisitDay = subjectVisit.VisitDay, - // VisitNum = subjectVisit.VisitNum, - // VisitName = subjectVisit.VisitName, - // SVENDTC = subjectVisit.SVENDTC, - // SVSTDTC = subjectVisit.SVSTDTC, - // SVUPDES = subjectVisit.SVUPDES, - // InPlan = subjectVisit.InPlan, - // VisitExecuted = subjectVisit.VisitExecuted, - - - // StudyCount = study.StudyCount, - // SubjectStatus = subject.Status, - - // SubjectCode = subject.Code, - - // IsUrgent = subjectVisit.IsUrgent, - - // TrialSiteCode = trialSite.TrialSiteCode, - - // EarliestScanDate = subjectVisit.EarliestScanDate, - // LatestScanDate = subjectVisit.LatestScanDate, - - // QCProcessEnum = trial.QCProcessEnum, - // CurrentActionUserId = subjectVisit.CurrentActionUserId, - // CurrentActionUser = subjectVisit.CurrentActionUser, - // CurrentActionUserExpireTime = subjectVisit.CurrentActionUserExpireTime, - // PreliminaryAuditTime = subjectVisit.PreliminaryAuditTime, - // PreliminaryAuitUser = subjectVisit.PreliminaryAuitUser, - // ReviewAuitTime = subjectVisit.ReviewAuitTime, - // ReviewAuitUser = subjectVisit.ReviewAuitUser, - - // AuditState = subjectVisit.AuditState, - // SubmitTime = subjectVisit.SubmitTime, - // IsTake = subjectVisit.IsTake, - - // }; - #endregion - - #region WhereIf + ling 统计 - //var query = from subjectVisit in _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId) - // .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId) - // .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId) - // .WhereIf(!string.IsNullOrEmpty(subjectInfo), t => /*t.Subject.FirstName.Contains(subjectInfo) || t.Subject.LastName.Contains(subjectInfo) ||*/ t.Subject.Code.Contains(subjectInfo)) - // .WhereIf(!string.IsNullOrEmpty(visitInfo), visitInfo.Contains('.') ? t => t.VisitNum.ToString().Contains(".") : t => t.VisitNum.ToString() == visitInfo) - // .WhereIf(visitSearchDTO.AuditState != null, t => t.AuditState == visitSearchDTO.AuditState) - // .WhereIf(visitSearchDTO.HandleUser != null, t => t.PreliminaryAuitUser.Contains(visitSearchDTO.HandleUser) || t.ReviewAuitUser.Contains(visitSearchDTO.HandleUser)) - // .WhereIf(visitSearchDTO.IsUrgent != null, t => t.IsUrgent == visitSearchDTO.IsUrgent) - // //.WhereIf(visitSearchDTO.SubmitState != null, t => t.SubmitState == visitSearchDTO.SubmitState) - // //.WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState) - // join subject in _subjectRepository.AsQueryable() on subjectVisit.SubjectId equals subject.Id - // join trialSite in _trialSiteRepository.Where(t => t.TrialId == visitSearchDTO.TrialId) on subjectVisit.SiteId equals trialSite.SiteId - // join study in _studyRepository.AsQueryable().GroupBy(t => t.SubjectVisitId).Select(g => new { SubjectVisitId = g.Key, StudyCount = g.Count() }) on subjectVisit.Id equals study.SubjectVisitId into d - // from study in d.DefaultIfEmpty() - // join trial in _trialRepository.AsQueryable() on subjectVisit.TrialId equals trial.Id - - // select new QCVisitViewModel() - // { - // Id = subjectVisit.Id, - // //VisitPlanId = visitStage.Id, - // SubjectId = subjectVisit.SubjectId, - // TrialId = subjectVisit.TrialId, - // SiteId = subjectVisit.SiteId, - - // VisitDay = subjectVisit.VisitDay, - // VisitNum = subjectVisit.VisitNum, - // VisitName = subjectVisit.VisitName, - // SVENDTC = subjectVisit.SVENDTC, - // SVSTDTC = subjectVisit.SVSTDTC, - // SVUPDES = subjectVisit.SVUPDES, - // InPlan = subjectVisit.InPlan, - // VisitExecuted = subjectVisit.VisitExecuted, - // IsUrgent = subjectVisit.IsUrgent, - // EarliestScanDate = subjectVisit.EarliestScanDate, - // LatestScanDate = subjectVisit.LatestScanDate, - - // CurrentActionUserId = subjectVisit.CurrentActionUserId, - // CurrentActionUser = subjectVisit.CurrentActionUser, - // CurrentActionUserExpireTime = subjectVisit.CurrentActionUserExpireTime, - // PreliminaryAuditTime = subjectVisit.PreliminaryAuditTime, - // PreliminaryAuitUser = subjectVisit.PreliminaryAuitUser, - // ReviewAuitTime = subjectVisit.ReviewAuitTime, - // ReviewAuitUser = subjectVisit.ReviewAuitUser, - - // AuditState = subjectVisit.AuditState, - // SubmitTime = subjectVisit.SubmitTime, - // IsTake = subjectVisit.IsTake, - - // QCProcessEnum = trial.QCProcessEnum, - - // TrialSiteCode = trialSite.TrialSiteCode, - - // SubjectStatus = subject.Status, - // SubjectCode = subject.Code, - - // StudyCount = study.StudyCount, - - // }; - - #endregion - var svExpression = QCCommon.GetSubjectVisitFilter(visitSearchDTO.VisitPlanArray); var query = _subjectVisitRepository.Where(x => x.TrialId == visitSearchDTO.TrialId) .WhereIf(visitSearchDTO.VisitId != null, t => t.Id == visitSearchDTO.VisitId) .WhereIf(visitSearchDTO.CurrentActionUserId != null, t => t.CurrentActionUserId == visitSearchDTO.CurrentActionUserId) .WhereIf(visitSearchDTO.ChallengeState != null, t => t.ChallengeState == visitSearchDTO.ChallengeState) - .WhereIf(visitSearchDTO.SiteId != null, t => t.SiteId == visitSearchDTO.SiteId) + .WhereIf(visitSearchDTO.TrialSiteId != null, t => t.TrialSiteId == visitSearchDTO.TrialSiteId) .WhereIf(visitSearchDTO.SubjectId != null, t => t.Subject.Id == visitSearchDTO.SubjectId) .WhereIf(!string.IsNullOrEmpty(visitSearchDTO.SubjectInfo), t => /*t.Subject.FirstName.Contains(subjectInfo) || t.Subject.LastName.Contains(subjectInfo) ||*/ t.Subject.Code.Contains(visitSearchDTO.SubjectInfo)) .WhereIf(visitSearchDTO.VisitPlanArray != null && visitSearchDTO.VisitPlanArray?.Length > 0, svExpression) @@ -481,60 +239,13 @@ namespace IRaCIS.Core.Application.Image.QA [HttpPost] public async Task<(PageOutput, TrialSubjectAndSVConfig)> GetConsistencyVerificationList(CheckQuery checkQuery) { - #region linq 废弃 byzhouhang 2021 11 30 - //Expression> subjectLambda = x => true; - //Expression> subjectVisitLambda = x => x.TrialId == checkQuery.TrialId && x.AuditState == AuditStateEnum.QCPassed; - //Expression> studyLambda = x => x.TrialId == checkQuery.TrialId; - //if (checkQuery.SiteId != null && checkQuery.SiteId != Guid.Empty) - //{ - // subjectVisitLambda = subjectVisitLambda.And(t => t.SiteId == checkQuery.SiteId.Value); - //} - //if (checkQuery.SubjectId != null && checkQuery.SubjectId != Guid.Empty) - //{ - // subjectLambda = subjectLambda.And(t => t.Id == checkQuery.SubjectId.Value); - //} - - //if (_userInfo.UserTypeEnumInt == (int)UserType.ClinicalResearchCoordinator) - //{ - // var siteQuery = _userTrialSiteRepository.Where(t => t.UserId == _userInfo.Id && t.TrialId == checkQuery.TrialId).Select(t => t.SiteId); - - // subjectVisitLambda = subjectVisitLambda.And(t => siteQuery.Contains(t.SiteId)); - //} - - //var query = - // from subjectVisit in _subjectVisitRepository.Where(subjectVisitLambda) - // join trialSite in _trialSiteRepository.Where(t => t.TrialId == checkQuery.TrialId) on subjectVisit.SiteId equals trialSite.SiteId - // join subject in _subjectRepository.Where() on subjectVisit.SubjectId equals subject.Id - - // select new QCCheckViewModel() - // { - // Id = subjectVisit.Id, - // AuditState = subjectVisit.AuditState, - - // CheckTime = subjectVisit.CheckTime, - // CheckState = subjectVisit.CheckState, - - // CheckChallengeState = subjectVisit.CheckChallengeState, - - // CheckResult = subjectVisit.CheckResult, - - // VisitName = subjectVisit.VisitName, - // VisitNum = subjectVisit.VisitNum, - - // SubjectCode = subject.Code, - - // //Modality=study.Modalities, - // //StudyTime = subjectVisit.sv, - // TrialSiteCode = trialSite.TrialSiteCode, - // }; - #endregion var svExpression = QCCommon.GetSubjectVisitFilter(checkQuery.VisitPlanArray); var query = _subjectVisitRepository.Where(x => x.TrialId == checkQuery.TrialId) .Where(x => x.AuditState == AuditStateEnum.QCPassed) //一致性核查中的,或者还没一致性核查的 .WhereIf(checkQuery.CheckState != null, t => t.CheckState == checkQuery.CheckState) - .WhereIf(checkQuery.SiteId != null, t => t.SiteId == checkQuery.SiteId) + .WhereIf(checkQuery.TrialSiteId != null, t => t.TrialSiteId == checkQuery.TrialSiteId) .WhereIf(!string.IsNullOrEmpty(checkQuery.SubjectInfo), t => t.Subject.Code.Contains(checkQuery.SubjectInfo)) .WhereIf(checkQuery.VisitPlanArray != null && checkQuery.VisitPlanArray?.Length > 0, svExpression) //.WhereIf(!string.IsNullOrEmpty(checkQuery.VisitPlanInfo), checkQuery.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(checkQuery.VisitPlanInfo)) @@ -580,7 +291,7 @@ namespace IRaCIS.Core.Application.Image.QA var query = _subjectVisitRepository.Where(x => x.TrialId == forwardQuery.TrialId) .Where(t => t.CheckState == CheckStateEnum.CVPassed) .WhereIf(forwardQuery.ForwardState != null, t => t.ForwardState == forwardQuery.ForwardState) - .WhereIf(forwardQuery.SiteId != null, t => t.SiteId == forwardQuery.SiteId) + .WhereIf(forwardQuery.TrialSiteId != null, t => t.TrialSiteId == forwardQuery.TrialSiteId) .WhereIf(!string.IsNullOrEmpty(forwardQuery.SubjectInfo), t => t.Subject.Code.Contains(forwardQuery.SubjectInfo)) .WhereIf(forwardQuery.VisitPlanArray != null && forwardQuery.VisitPlanArray?.Length > 0, svExpression) //.WhereIf(!string.IsNullOrEmpty(forwardQuery.VisitPlanInfo), forwardQuery.VisitPlanInfo.Contains('.') ? t => t.InPlan == false : t => t.VisitNum == decimal.Parse(forwardQuery.VisitPlanInfo)) diff --git a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs index 8d0545a1d..190f47bcc 100644 --- a/IRaCIS.Core.Application/Service/QC/QCOperationService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCOperationService.cs @@ -1651,12 +1651,7 @@ namespace IRaCIS.Core.Application.Image.QA { var physicalPath = FileStoreHelper.GetPhysicalFilePath(_hostEnvironment, path); - - //var dicomStudy = new DicomStudy() { Id = t.StudyId, SubjectId = t.SubjectId, TrialId = trialId, SiteId = t.SiteId, SubjectVisitId = subjectVisitId }; - //var (physicalPath, relativePath) = - - // FileStoreHelper.GetDicomInstanceFilePath(_hostEnvironment, dicomStudy.TrialId, dicomStudy.SiteId, dicomStudy.SubjectId, dicomStudy.SubjectVisitId, dicomStudy.Id, t.InstanceId); - + if (System.IO.File.Exists(physicalPath)) { File.Delete(physicalPath); @@ -2166,7 +2161,7 @@ namespace IRaCIS.Core.Application.Image.QA var targetPath = "/IMPORT-IMAGES/" + info.TrialCode + "_" + info.SubjectCode + "_" + info.VisitName; - var path = FileStoreHelper.GetSubjectVisitDicomFolderPhysicalPath(_hostEnvironment, info.TrialId, info.SiteId, info.SubjectId, info.SubjectVisitId); + var path = FileStoreHelper.GetSubjectVisitDicomFolderPhysicalPath(_hostEnvironment, info.TrialId, info.TrialSiteId, info.SubjectId, info.SubjectVisitId); try { diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 00ed9a7aa..70a2a8fde 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -46,7 +46,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() - .ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.Site.SiteName)) + .ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.TrialSiteName)) .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)) @@ -439,7 +439,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.IsHaveFirstGiveMedicineDate, u => u.MapFrom(s => s.Trial.IsHaveFirstGiveMedicineDate)) //.ForMember(d => d.ChangeDefalutDays, u => u.MapFrom(s => s.Trial.ChangeDefalutDays)) .ForMember(d => d.SubjectFirstGiveMedicineTime, u => u.MapFrom(s => s.Subject.FirstGiveMedicineTime)) - .ForMember(d => d.SiteName, u => u.MapFrom(s => s.Site.SiteName)) + .ForMember(d => d.SiteName, u => u.MapFrom(s => s.TrialSite.TrialSiteName)) .ForMember(d => d.TotalChallengeCount, u => u.MapFrom(s => s.QCChallengeList.Count())) .ForMember(d => d.NotClosedChallengeCount, u => u.MapFrom(s => s.QCChallengeList.Count(c => c.IsClosed == false))); @@ -513,7 +513,7 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.SubmitState, u => u.MapFrom(s => s.SubjectVisit.SubmitState)) - .ForMember(d => d.SiteId, u => u.MapFrom(s => s.SubjectVisit.SiteId)) + .ForMember(d => d.TrialSiteId, u => u.MapFrom(s => s.SubjectVisit.TrialSiteId)) .ForMember(d => d.AuditState, u => u.MapFrom(s => s.SubjectVisit.AuditState)) .ForMember(d => d.IsUrgent, u => u.MapFrom(s => s.SubjectVisit.IsUrgent)) .ForMember(d => d.IsBaseLine, u => u.MapFrom(s => s.SubjectVisit.IsBaseLine)) diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationVisitFilterViewModel.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationVisitFilterViewModel.cs index e13fe0404..0348c7607 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationVisitFilterViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/DTO/SubjectCriteriaEvaluationVisitFilterViewModel.cs @@ -23,7 +23,7 @@ namespace IRaCIS.Core.Application.ViewModel public Guid TrialId { get; set; } public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SubjectCode { get; set; } public Guid TrialReadingCriterionId { get; set; } diff --git a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs index 272b43f1a..e6b07c261 100644 --- a/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs +++ b/IRaCIS.Core.Application/Service/Reading/AdditionalEvaluate/SubjectCriteriaEvaluationService.cs @@ -457,7 +457,7 @@ namespace IRaCIS.Core.Application.Service TrialId = subjectVisit.TrialId, SubjectId = subjectVisit.SubjectId, SubjectCode = subjectVisit.Subject.Code, - SiteId = subjectVisit.SiteId, + TrialSiteId = subjectVisit.TrialSiteId, TrialReadingCriterionId = inQuery.TrialReadingCriterionId, LatestScanDate = subjectVisit.LatestScanDate, EarliestScanDate = subjectVisit.LatestScanDate, diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs index 109bf7b25..de5f048ee 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs @@ -265,7 +265,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string? SiteCode { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } @@ -283,7 +283,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string SiteCode { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } @@ -359,7 +359,7 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public string OutPlanPreviousVisitName { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public bool IsVisit { get; set; } = true; diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs index 2a34db76f..45083a98d 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs @@ -166,11 +166,11 @@ namespace IRaCIS.Application.Services var subjectIds = await subjectQuery.OrderBy(dto.SortField).Select(x => x.SubjectId).Distinct().Skip((dto.PageIndex - 1) * dto.PageSize).Take(dto.PageSize).ToListAsync(); List ReadModuleViewList = await subjectQuery.Where(x => subjectIds.Contains(x.SubjectId)).OrderBy(dto.SortField).ToListAsync(); - List getReadList = ReadModuleViewList.GroupBy(x => new { x.SubjectId, x.SiteId, x.TrialSiteCode, x.SubjectCode }) + List getReadList = ReadModuleViewList.GroupBy(x => new { x.SubjectId, x.TrialSiteId, x.TrialSiteCode, x.SubjectCode }) .Select(x => new GetReadModuleDtoOut() { TrialSiteCode = x.Key.TrialSiteCode, - SiteId = x.Key.SiteId, + TrialSiteId = x.Key.TrialSiteId, SubjectCode = x.Key.SubjectCode, SubjectId = x.Key.SubjectId, Data = x.OrderBy(x=>x.ModuleType).ThenBy(x=>x.VisitNum).ToList(), diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs index 555f98125..3960e93da 100644 --- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadingPeriodSetService.cs @@ -87,7 +87,7 @@ namespace IRaCIS.Application.Services { ReadingPeriodSetId = entity.Id, TrialId = entity.TrialId, - SiteId = x, + TrialSiteId = x, }).ToList(); entity.ReadingPeriodPlanList = addOrEditReadingPeriodSet.SubjectVisitIds.Select(x => new ReadingPeriodPlan @@ -107,7 +107,7 @@ namespace IRaCIS.Application.Services { ReadingPeriodSetId = entity.Id, TrialId = entity.TrialId, - SiteId = x, + TrialSiteId = x, }).ToList(); entity.ReadingPeriodPlanList = addOrEditReadingPeriodSet.SubjectVisitIds.Select(x => new ReadingPeriodPlan @@ -493,7 +493,7 @@ namespace IRaCIS.Application.Services // 当前项目 最晚拍片日期不为null 中心筛选 var visitQuery = _subjectVisitRepository.Where(x => x.TrialId == inDto.TrialId && x.LatestScanDate != null && !x.IsLostVisit) - .WhereIf(inDto.ReadingScope == ReadingScopeEnum.Site, x => inDto.SiteIds.Contains(x.SiteId)) + .WhereIf(inDto.ReadingScope == ReadingScopeEnum.Site, x => inDto.SiteIds.Contains(x.TrialSiteId)) .Where(x=>!x.IsBaseLine);// 排除基线 // 已经存在的访视 需要排除 diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index a9e207a55..96d607f32 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -80,7 +80,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(d => d.SubjectVisitName, u => u.MapFrom(s => s.VisitStage==null?string.Empty: s.VisitStage.VisitName)) - .ForMember(d => d.SiteIds, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.SiteId))) + .ForMember(d => d.SiteIds, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.TrialSiteId))) .ForMember(d => d.SiteCodes, u => u.MapFrom(s => s.ReadingPeriodSites.Select(x => x.TrialSite.TrialSiteCode))) .ForMember(d => d.PlanCount, u => u.MapFrom(s => s.ReadingPeriodPlanList.Count)); diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/GlobalReportDTO.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/GlobalReportDTO.cs deleted file mode 100644 index bb3f617ee..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/GlobalReportDTO.cs +++ /dev/null @@ -1,90 +0,0 @@ -using IRaCIS.Core.Domain.Models; - -namespace IRaCIS.Core.Application.Contracts -{ - public class HistoryVisitRSDTO - { - - public Guid StudyId { get; set; } - public string StudyCode { get; set; } = String.Empty; - - public decimal VisitNum { get; set; } - - public string VisitName { get; set; } = String.Empty; - - public string OverallResponse { get; set; } = String.Empty; - - public string TpCode { get; set; } = String.Empty; - - public GlobalRSSelectView GlobalRSSelect { get; set; } = new GlobalRSSelectView(); - - } - - public class GlobalRSSelectView - { - public bool? Agree { get; set; } - public string NewRS { get; set; } = String.Empty; - public string Note { get; set; } = String.Empty; - } - - public class HistoryGlobalRsDTO - { - - public decimal VisitNum { get; set; } - - public string VisitName { get; set; } = String.Empty; - - public string OverallResponse { get; set; } = String.Empty; - } - - public class PreviousGlobalReadsView - { - public string SubjectNote { get; set; } = String.Empty; - - public List PreviousGlobalReadsList { get; set; } = new List(); - } - - - public class GlobalTaskReportCommand - { - public Guid GlobalId { get; set; } - public string SubjectNote { get; set; } = String.Empty; - public string SubjectCode { get; set; } = String.Empty; - public Guid SubjectId { get; set; } - - public List GlobalRSReportList { get; set; }=new List(); - } - - public class GlobalReportCommand - { - public Guid GlobalId { get; set; } - public string TpCode { get; set; } = String.Empty; - public int VisitNum { get; set; } - public bool? Agree { get; set; } - public string NewRS { get; set; } = String.Empty; - public string Note { get; set; } = String.Empty; - - } - - - public class AdReportDTO - { - public PreviousGlobalReadsView Global1 { get; set; } = new PreviousGlobalReadsView(); - public PreviousGlobalReadsView Global2 { get; set; } = new PreviousGlobalReadsView(); - - public IEnumerable Global1VisitRS { get; set; }=new List(); - public IEnumerable Global2VisitRS { get; set; } = new List(); - - } - - - public class ADReportCommand - { - - public Guid AdId { get; set; } - public Guid SelectGlobalId { get; set; } - public string ADNote { get; set; } = String.Empty; - } - - -} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs deleted file mode 100644 index 81250081e..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/ReportDTO.cs +++ /dev/null @@ -1,280 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace IRaCIS.Core.Application.Contracts -{ - public class LesionInformation - { - public Guid TUId { get; set; } - public int LesionType { get; set; } //病灶类型 - public string STUDYID { get; set; } = string.Empty; // 项目ID - public string USUBJID { get; set; } = string.Empty;// 受试者ID - public int TUSEQ { get; set; } // 病灶序号 - - // 病灶分组,主要是用于将分裂或者结合在一起的已经被标识的肿瘤分类 - public string TUGRPID { get; set; } = string.Empty; - - //内部或外部的肿瘤/病灶标识。 例如:医学影像 ID - public string TUREFID { get; set; } = string.Empty; - - public string TUSPID { get; set; } = string.Empty;// 申办方标识 - - // 关联测量结果,及TUGRPID一起,标识分裂及合并 - public string TULNKID { get; set; } = string.Empty; - - /// - /// 检查项目 - /// TUMIDENT (Tumor Identification ) - /// TUSPLIT (Tumor Split ) - /// TUMERGE (Tumor Merged) - /// - public string TUTESTCD { get; set; } = string.Empty; - public string TUTEST { get; set; } = string.Empty; - - public string TUORRES { get; set; } = string.Empty;//TARGET, NON-TARGET, NEW - - public string TUSTRESC { get; set; } = string.Empty;//包含从 TUORRES拷贝的所有发现的结果 - public string TUNAM { get; set; } = string.Empty;//完成肿瘤标识的供应商名称或标识 - - public string LocDescription { get; set; } = string.Empty;// 部位描述 - public string TULOC { get; set; } = string.Empty; // 解剖学部位 - public string TULAT { get; set; } = string.Empty;//解剖学部位或者样本更详细的偏侧性修饰语,比如,左侧, 右侧,双侧。 - public string TUDIR { get; set; } = string.Empty;//解剖学部位或者样本更详细的方向性修饰语,比如,上边的 ,里面的。 - public string TUPORTOT { get; set; } = string.Empty;//解剖学部位或者样本更详细的分布,安排,分配的修饰语, 比如,全部的,单一的,部分的,多数的。 - - public string TUMETHOD { get; set; } = string.Empty; //用来标识肿瘤的办法。 例如,核磁共振,CT扫描。 - - public string TUEVAL { get; set; } = string.Empty; //评估者的角色。 例如:研究者,独立评估者。 - public string TUEVALID { get; set; } = string.Empty;//这个特定的评估者变量是与 TUEVAL一起使用来提供更详 细的信息 - public string TUACPTFL { get; set; } = string.Empty; - - // 访视信息 - public decimal VISITNUM { get; set; } = 0; - public string VISIT { get; set; } = string.Empty; - public int VISITDY { get; set; } - public string EPOCH { get; set; } = string.Empty; - public string TUDTC { get; set; } = string.Empty; - public int TUDY { get; set; } = 0; - - //TR - - public string TRTESTCD { get; set; } = string.Empty; - public string TRTEST { get; set; } = string.Empty; - public string TRORRES { get; set; } = string.Empty;//原始收到或采集的肿瘤测量/评估结 - public string TRORRESU { get; set; } = string.Empty;//原始单位 - public string TRSTRESC { get; set; } = string.Empty;//标准化结 果 - public double TRSTRESN { get; set; }//标准化结 果(N) - public string TRSTRESU { get; set; } = string.Empty;// 标准化单位 - public string TRSTAT { get; set; } = string.Empty; // 未做状态 - public string TRREASND { get; set; } = string.Empty; // 未做原因 - public string Note { get; set; } = string.Empty; - public string TRGRPID { get; set; } = string.Empty; - public string TRDTC { get; set; } = string.Empty; - public int TRDY { get; set; } = 0; - ////RS - //public string RSCAT { get; set; } // 类别,用来识别对反应评估中使用的标准,以及适当时提供版本号 - //public string RSORRES { get; set; } //原始接收、采集或者计算的肿瘤反应评估的结果。 - //public string RSSTRESC { get; set; } //标准化结果 - - public bool CoveredLesion { get; set; } - } - public class VisitLesion : LesionInformation - { - public LesionInformation CurrentLesion { get; set; } = new LesionInformation(); - } - - public class EfficacyAssessment - { - public string TargetLesion { get; set; } = string.Empty; - public string Non_targetLesion { get; set; } = string.Empty; - public string OverallAssessment { get; set; } = string.Empty; - - public string TargetLesionNote { get; set; } = string.Empty; - public string Non_targetLesionNote { get; set; } = string.Empty; - public string OverallAssessmentNote { get; set; } = string.Empty; - } - - public class PreviousOverallAssessment - { - public string VisitName { get; set; } = string.Empty; - public string OverallAssessment { get; set; } = string.Empty; - } - public class VisitLesionInfo - { - //基线病灶信息及本次访视测量信息 - public IList BLLesionList { get; set; } = new List(); - // public IList BLVisitLesionList { get; set; } = new List(); - //public IList CurrentVisitLesionList { get; set; } = new List(); - - // 以往病灶信息 - public IList PreviousNewLesionList { get; set; } = new List(); - //本次疑似新病灶 - public IList EquivocalNewLesionList { get; set; } = new List(); - public IList UnequivocalNewLesionList { get; set; } = new List(); - public ReportDTO ReportResult { get; set; } = new ReportDTO(); - public EfficacyAssessment Efficacy { get; set; } = new EfficacyAssessment(); - public List PreviousOverallAssessment { get; set; } = new List(); - - public MinVisit MinVisitInfo { get; set; } = new MinVisit(); - } - - public class MinVisit - { - public double MinSum { get; set; } = 0.0; - public string MinVistName { get; set; } = string.Empty; - } - public class ReportCommand - { - public List LesionInformationList { get; set; } = new List(); - - //RS - public string RSCAT { get; set; } = string.Empty;// 类别,用来识别对反应评估中使用的标准,以及适当时提供版本号 - public string RSORRES { get; set; } = string.Empty; //原始接收、采集或者计算的肿瘤反应评估的结果。 - public string RSSTRESC { get; set; } = string.Empty; //标准化结果 - } - public class TUDTO - { - public int LesionType { get; set; } - public string STUDYID { get; set; } = string.Empty; - public string USUBJID { get; set; } = string.Empty; - public int TUSEQ { get; set; } - public string TUGRPID { get; set; } = string.Empty; - public string TUREFID { get; set; } = string.Empty;//内部或外部的肿瘤/病灶标识。 例如:医学影像 ID - public string TUSPID { get; set; } = string.Empty; - public string TULNKID { get; set; } = string.Empty; - public string TUTESTCD { get; set; } = string.Empty; - public string TUTEST { get; set; } = string.Empty; - - public double TUORRES { get; set; } = 0; - public string TUSTRESC { get; set; } = string.Empty; - public string TUNAM { get; set; } = string.Empty; - public string TULOC { get; set; } = string.Empty; - public string TULAT { get; set; } = string.Empty; - public string TUDIR { get; set; } = string.Empty; - public string TUPORTOT { get; set; } = string.Empty; - public string TUMETHOD { get; set; } = string.Empty; - public string TUEVAL { get; set; } = string.Empty; - public string TUEVALID { get; set; } = string.Empty; - public string TUACPTFL { get; set; } = string.Empty; - public double VISITNUM { get; set; } = 0; - public string VISIT { get; set; } = string.Empty; - public string VISITDY { get; set; } = string.Empty; - public string EPOCH { get; set; } = string.Empty; - public string TUDTC { get; set; } = string.Empty; - public int TUDY { get; set; } = 0; - } - public class TRDTO - { - public string STUDYID { get; set; } = string.Empty; - public string DOMAIN { get; set; } = string.Empty; - public string USUBJID { get; set; } = string.Empty; - public int TRSEQ { get; set; } - public string TRGRPID { get; set; } = string.Empty; - public string TRREFID { get; set; } = string.Empty; - public string TRSPID { get; set; } = string.Empty; - public string TRLNKID { get; set; } = string.Empty; - public string TRLNKGRP { get; set; } = string.Empty; - public string TRTESTCD { get; set; } = string.Empty; - public string TRTEST { get; set; } = string.Empty; - public string TRORRES { get; set; } = string.Empty; - public string TRORRESU { get; set; } = string.Empty; - public string TRSTRESC { get; set; } = string.Empty; - public double TRSTRESN { get; set; } = 0; - public string TRSTRESU { get; set; } = string.Empty; - public string TRSTAT { get; set; } = string.Empty; - public string TRREASND { get; set; } = string.Empty; - public string TRNAM { get; set; } = string.Empty; - public string TRMETHOD { get; set; } = string.Empty; - public string TREVAL { get; set; } = string.Empty; - public string TREVALID { get; set; } = string.Empty; - public string TRACPTFL { get; set; } = string.Empty; - public decimal VISITNUM { get; set; } = 0; - public string VISIT { get; set; } = string.Empty; - public int VISITDY { get; set; } = 0; - public string EPOCH { get; set; } = string.Empty; - public string TRDTC { get; set; } = string.Empty; - public int TRDY { get; set; } = 0; - public string Note { get; set; } = string.Empty; - public bool CoveredLesion { get; set; } = true; - } - - public class RSDTO - { - public string STUDYID { get; set; } = string.Empty; - public string DOMAIN { get; set; } = string.Empty; - public string USUBJID { get; set; } = string.Empty; - public int RSSEQ { get; set; } - public string RSGRPID { get; set; } = string.Empty; - public string RSREFID { get; set; } = string.Empty; - public string RSSPID { get; set; } = string.Empty; - public string RSLNKID { get; set; } = string.Empty; - public string RSLNKGRP { get; set; } = string.Empty; - public string RSTESTCD { get; set; } = string.Empty; - public string RSTEST { get; set; } = string.Empty; - public string RSCAT { get; set; } = string.Empty; - public string RSORRES { get; set; } = string.Empty; - public string RSSTRESC { get; set; } = string.Empty; - public string RSSTAT { get; set; } = string.Empty; - public string RSREASND { get; set; } = string.Empty; - public string RSNAM { get; set; } = string.Empty; - - public string RSEVAL { get; set; } = string.Empty; - public string RSEVALID { get; set; } = string.Empty; - public string RSACPTFL { get; set; } = string.Empty; - public decimal VISITNUM { get; set; } = 0; - public string VISIT { get; set; } = string.Empty; - public int VISITDY { get; set; } = 0; - public string EPOCH { get; set; } = string.Empty; - public string RSDTC { get; set; } = string.Empty; - public int RSDY { get; set; } = 0; - public Guid StudyGuid { get; set; } = Guid.Empty; - public Guid TrialGuid { get; set; } = Guid.Empty; - public Guid SubjectGuid { get; set; } = Guid.Empty; - - public string Note { get; set; } = string.Empty; - } - public class ReportDTO - { - public bool Qualified { get; set; } = true; - public string DiseaseProgression { get; set; } = string.Empty; - public string NotEvaluable { get; set; } = string.Empty; - public string Timepoint { get; set; } = string.Empty; - public string TrialCode { get; set; } = string.Empty; - public string SubjectCode { get; set; } = string.Empty; - public decimal? VisitNum { get; set; } - public string VisitName { get; set; } = string.Empty; - public int? DiseaseSituation { get; set; } - public string Comment { get; set; } = String.Empty; - public Guid? TPId { get; set; } - public Guid? DicomStudyId { get; set; } - public string TpCode { get; set; } = string.Empty; - - public bool AffectRead { get; set; }//是否影响读片 - public string AffectReadNote { get; set; } = String.Empty;//备注说明 - } - - - public class VisitReportCommand - { - public List LesionInformation { get; set; } = new List(); - public List TRList { get; set; } = new List(); - public List RSList { get; set; } = new List(); - public ReportDTO ReportResult { get; set; } = new ReportDTO(); - } - - public class BaseLineReportCommand - { - //public Guid TimepointId { get; set; } - public string SumOfDiameter { get; set; } = String.Empty; - public string SumDiameterOfNonLymphNode { get; set; } = String.Empty; - public IList LesionInformation { get; set; } = new List(); - public ReportDTO ReportResult { get; set; } = new ReportDTO(); - } - - public class BaseLineReportDTO - { - public IList LesionInformation { get; set; } = new List(); - public ReportDTO ReportResult { get; set; } = new ReportDTO(); - } -} diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/WorkloadReadingDTO.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/WorkloadReadingDTO.cs deleted file mode 100644 index 965927af7..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/DTO/WorkloadReadingDTO.cs +++ /dev/null @@ -1,39 +0,0 @@ -using IRaCIS.Core.Infrastructure.Extention; - -namespace IRaCIS.Application.Contracts -{ - public class WorkloadReadingDTO - { - public Guid Id { get; set; } - - public Guid StudyId { get; set; } - public Guid TrialId { get; set; } - public string TrialCode { get; set; } = string.Empty; - public string TrialIndication { get; set; } = string.Empty; - public string Sponsor { get; set; } = string.Empty; - public int Expedited { get; set; } - - public Guid SubjectId { get; set; } - public string SubjectCode { get; set; } = string.Empty; - - public string VisitName { get; set; } = string.Empty; - public decimal VisitNum { get; set; } - - - public Guid WorkloadId { get; set; } - public string WorkloadCode { get; set; } = string.Empty; - public int WorkloadType { get; set; } - public int Status { get; set; } - - public DateTime UpdateTime { get; set; } - } - - public class WorkloadQueryParam : PageInput - { - public Guid? TrialId { get; set; } = Guid.Empty; - public string SubjectCode { get; set; } = string.Empty; - public int? Status { get; set; } - public int WorkloadType { get; set; } - public int? Expedited { get; set; } - } -} diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/GlobalReportService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/GlobalReportService.cs deleted file mode 100644 index e63303cb6..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/GlobalReportService.cs +++ /dev/null @@ -1,197 +0,0 @@ -//using IRaCIS.Core.Application.Contracts; -//using System.Linq.Dynamic.Core; -//using AutoMapper; -//using IRaCIS.Application.Contracts; -//using IRaCIS.Core.Infra.EFCore; -//using IRaCIS.Core.Domain.Models; -//using IRaCIS.Core.Infrastructure.Extention; -//using Microsoft.AspNetCore.Mvc; - -//namespace IRaCIS.Core.Application.Services -//{ -// [ ApiExplorerSettings(GroupName = "Reading")] -// public class GlobalReportService : BaseService, IGlobalService -// { -// private readonly IRepository _globalRsRepository; -// private readonly IRepository _globalResultRepository; -// private readonly IRSRepository _rsRepository; -// private readonly IRepository _visitStageRepository; - -// private readonly IRepository _subjectVisitRepository; -// private readonly IWorkloadADRepository _workloadAdRepository; -// private readonly IWorkloadGlobalRepository _workloadGlobalRepository; -// private readonly IRepository _trialRepository; -// private readonly IRepository _subjectRepository; - -// public GlobalReportService(IRepository globalRsRepository, IRepository globalResultRepository, -// IRSRepository rsRepository, IRepository visitStageRepository, IRepository subjectVisitRepository, IWorkloadADRepository workloadAdRepository, -// IWorkloadGlobalRepository workloadGlobalRepository, IRepository trialRepository, IRepository subjectRepository) -// { -// _globalRsRepository = globalRsRepository; -// _globalResultRepository = globalResultRepository; -// _rsRepository = rsRepository; -// _visitStageRepository = visitStageRepository; - -// _subjectVisitRepository = subjectVisitRepository; -// _workloadAdRepository = workloadAdRepository; -// _workloadGlobalRepository = workloadGlobalRepository; -// _trialRepository = trialRepository; -// _subjectRepository = subjectRepository; -// } - -// [HttpGet("{trialId:guid}/{subjectId:guid}/{visitNum:decimal}/{globalId:guid}/{globalCode}")] -// public IEnumerable GetHistoryVisitRsList(Guid trialId, Guid subjectId, decimal visitNum, Guid globalId, string globalCode) -// { - -// var tpGroup = 'T' + globalCode.Trim().Substring(globalCode.Trim().Length - 2); - - -// var query = from rs in _rsRepository.AsQueryable() -// .Where(t => t.SubjectGuid == subjectId && t.TrialGuid == trialId && t.RSTESTCD == "OVRLRESP" && t.VISITNUM <= visitNum && t.TpCode.Contains(tpGroup)) - -// join globalRs in _globalRsRepository.Where(t => t.GlobalId == globalId) on new { rs.TpCode, VisitNum = rs.VISITNUM } equals new { globalRs.TpCode, globalRs.VisitNum } into cc -// from globalRs in cc.DefaultIfEmpty() - -// join visitStage in _visitStageRepository.Where(t => t.TrialId == trialId) on rs.VISITNUM equals visitStage.VisitNum -// select new HistoryVisitRSDTO -// { -// StudyId = rs.StudyGuid, -// StudyCode = rs.STUDYID, -// VisitNum = visitStage.VisitNum, -// VisitName = visitStage.VisitName, -// OverallResponse = rs.RSORRES, -// TpCode = rs.TpCode, -// GlobalRSSelect = new GlobalRSSelectView() -// { -// Agree = globalRs.Agree, -// NewRS = globalRs.NewRS, -// Note = globalRs.Note -// } -// }; - -// var visitRsList = query.OrderBy(t => t.VisitNum).ToList(); - -// return visitRsList; - -// } -// #pragma warning disable -// [HttpGet("{trialId:guid}/{subjectId:guid}/{visitNum:decimal}/{globalId:guid}")] -// public PreviousGlobalReadsView GetHistoryGlobalRsList(Guid trialId, Guid subjectId, decimal visitNum, -// Guid globalId) -// { -// //subjectCode = subjectCode.Trim(); - -// var query = from globalResult in _globalResultRepository.AsQueryable() -// .Where(t => t.SubjectId == subjectId && t.VisitNum < visitNum) -// join visitStage in _visitStageRepository.Where(t => t.TrialId == trialId) on globalResult.VisitNum equals visitStage.VisitNum -// select new HistoryGlobalRsDTO -// { -// VisitNum = visitStage.VisitNum, -// VisitName = visitStage.VisitName, -// OverallResponse = globalResult.Result -// }; - -// var subjectNote = _globalResultRepository.FirstOrDefault(t => t.GlobalId == globalId)?.SubjectNote; - -// return new PreviousGlobalReadsView() -// { -// PreviousGlobalReadsList = query.ToList(), -// SubjectNote = subjectNote -// }; - -// } - -// public IResponseOutput AddGlobalReport(GlobalTaskReportCommand globalTaskReportCommand) -// { -// //删除上一次保存得记录 -// _globalResultRepository.Delete(t => t.GlobalId == globalTaskReportCommand.GlobalId); -// _globalRsRepository.Delete(t => t.GlobalId == globalTaskReportCommand.GlobalId); - - -// var globalRsList = _mapper.Map>(globalTaskReportCommand.GlobalRSReportList); - -// _globalRsRepository.AddRange(globalRsList); - -// var first = globalRsList.OrderByDescending(t => t.VisitNum).First(); - -// var globalResult = new GlobalResult() -// { -// VisitNum = first.VisitNum, -// SubjectCode = globalTaskReportCommand.SubjectCode, -// SubjectNote = globalTaskReportCommand.SubjectNote, -// SubjectId = globalTaskReportCommand.SubjectId, - -// GlobalId = first.GlobalId, -// Result = first.NewRS -// }; - -// _globalResultRepository.Add(globalResult); - -// return ResponseOutput.Result(_globalResultRepository.SaveChanges()) ; - -// } - -// //public string GetCommentsForSubject(Guid globalId) -// //{ -// // return _globalResultRepository.FirstOrDefault(t => t.GlobalId == globalId)?.SubjectNote; -// //} -// [HttpGet("{adId}")] -// public AdReportDTO GetAdReport(Guid adId) -// { -// var adReport = new AdReportDTO(); -// var ad = _workloadAdRepository.FirstOrDefault(t => t.Id == adId); -// var globalId1 = ad.Global1Id; -// var globalId2 = ad.Global2Id; - -// var query = from global in _workloadGlobalRepository.Where(t => t.Id == globalId1 || t.Id == globalId2) -// join trial in _trialRepository.Where(t => t.Id == ad.TrialId) on global.TrialId equals trial.Id -// join subject in _subjectRepository.AsQueryable() on global.SubjectId equals subject.Id -// select new WorkloadReadingDTO -// { -// Id = global.Id, -// WorkloadId = global.Id, -// WorkloadType = 1, -// Status = global.Status, -// UpdateTime = global.UpdateTime, -// TrialId = global.TrialId, -// SubjectId = global.SubjectId, -// SubjectCode = subject.Code, -// //VisitNum = visit.VisitNum, -// //VisitName = visit.VisitName, -// VisitNum = global.VisitNum, -// VisitName = global.VisitName, - -// Expedited = trial.Expedited, -// TrialCode = trial.TrialCode, -// TrialIndication = trial.Indication, -// WorkloadCode = global.GlobalCode -// }; - -// var globalList = query.ToList(); - -// var global1 = globalList.First(t => t.Id == globalId1); -// var global2 = globalList.First(t => t.Id == globalId2); - -// adReport.Global1VisitRS = GetHistoryVisitRsList(global1.TrialId, global1.SubjectId, -// global1.VisitNum, global1.Id, global1.WorkloadCode); - -// adReport.Global2VisitRS = GetHistoryVisitRsList(global2.TrialId, global2.SubjectId -// ,global2.VisitNum, global2.Id, global2.WorkloadCode); - -// adReport.Global1 = GetHistoryGlobalRsList(global1.TrialId, global1.SubjectId, global1.VisitNum, global1.Id); -// adReport.Global2 = GetHistoryGlobalRsList(global2.TrialId, global2.SubjectId, global2.VisitNum, global2.Id); - -// adReport.ADInfo = ad; - -// return adReport; - -// } - -// public IResponseOutput AddAdjudicationReport(ADReportCommand adReportCommand) -// { -// return ResponseOutput.Result(_workloadAdRepository.Update(t => t.Id == adReportCommand.AdId, -// u => new WorkloadAD() -// { AdNote = adReportCommand.ADNote, SelectGlobalId = adReportCommand.SelectGlobalId })) ; -// } -// } -//} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IGlobalService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IGlobalService.cs deleted file mode 100644 index 9211036c6..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IGlobalService.cs +++ /dev/null @@ -1,24 +0,0 @@ -using System; -using System.Collections.Generic; -using IRaCIS.Core.Infrastructure.Extention; - -namespace IRaCIS.Core.Application.Contracts -{ - public interface IGlobalService - { - //string GetCommentsForSubject(Guid globalId); - IEnumerable GetHistoryVisitRsList(Guid trialId, Guid subjectId, decimal visitNum, Guid globalId,string globalCode); - - PreviousGlobalReadsView GetHistoryGlobalRsList(Guid trialId, Guid subjectId, decimal visitNum, Guid globalId); - - IResponseOutput AddGlobalReport(GlobalTaskReportCommand globalTaskReportCommand); - - - - AdReportDTO GetAdReport(Guid adId); - IResponseOutput AddAdjudicationReport(ADReportCommand adReportCommand); - } - - - -} \ No newline at end of file diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs deleted file mode 100644 index 425696500..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReportService.cs +++ /dev/null @@ -1,27 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Text; - -namespace IRaCIS.Core.Application.Contracts -{ - public interface IReportService - { - //bool SaveReport(ReportCommand reportCommand); - - /// 添加基线期病灶标识及测量信息 - bool AddLesion(List lesionInformation, ReportDTO report); - ///// 获取基线期信息 - //IList GetBLLesion(string trialCode, string subjectCode); - - /// - /// 获取访视病灶信息 - /// - VisitLesionInfo GetVisitLineLesion(string trialCode, string subjectCode, decimal visitNum,string tpCode); - - bool SaveVisitReport(VisitReportCommand visitReportCommand); - bool AddBaseLineLesion(BaseLineReportCommand baseLineReportCommand); - BaseLineReportDTO getBLLineLesion(string trialCode, string subjectCode, string tpCode); - - bool SubmiteReport(Guid tpId); - } -} diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReviewerReadingService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReviewerReadingService.cs deleted file mode 100644 index 3c0531a29..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/Interface/IReviewerReadingService.cs +++ /dev/null @@ -1,10 +0,0 @@ -using IRaCIS.Application.Contracts; -using IRaCIS.Core.Infrastructure.Extention; - -namespace IRaCIS.Application.Interfaces -{ - public interface IReviewerReadingService - { - PageOutput GetWorkloadList(WorkloadQueryParam param); - } -} diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/ReadingService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/ReadingService.cs deleted file mode 100644 index f4e5e1aa5..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/ReadingService.cs +++ /dev/null @@ -1,184 +0,0 @@ -//using IRaCIS.Application.Interfaces; -//using IRaCIS.Application.Contracts; -//using IRaCIS.Core.Infra.EFCore; - -//using IRaCIS.Core.Domain.Models; -//using System.Linq.Expressions; -//using IRaCIS.Core.Infrastructure.ExpressionExtend; -//using IRaCIS.Core.Infrastructure.Extention; -//using Microsoft.AspNetCore.Mvc; - -//namespace IRaCIS.Core.Application.Services -//{ -// [ApiExplorerSettings(GroupName = "Reading")] -// public class ReadingService : BaseService, IReviewerReadingService -// { -// private readonly IWorkloadTPRepository _workloadTPRepository; -// private readonly IWorkloadGlobalRepository _workloadGlobalRepository; -// private readonly IWorkloadADRepository _workloadADRepository; -// private readonly IRepository _trialRepository; - -// private readonly IRepository _subjectRepository; -// private readonly IRepository _subjectVisitRepository; - -// public ReadingService(IWorkloadTPRepository workloadTPRepository, -// IWorkloadGlobalRepository workloadGlobalRepository, -// IWorkloadADRepository workloadADRepository, -// IRepository trialRepository, -// IRepository subjectRepository, -// IRepository subjectVisitRepository, -// IUserInfo userInfo) -// { -// _workloadTPRepository = workloadTPRepository; -// _workloadGlobalRepository = workloadGlobalRepository; -// _workloadADRepository = workloadADRepository; -// _trialRepository = trialRepository; - -// _subjectRepository = subjectRepository; -// _subjectVisitRepository = subjectVisitRepository; - -// } -// /// -// /// 获取医生个人任务列表 -// /// WorkloadType 1-tp,2-global,3-ad -// /// -// /// -// /// -// [HttpPost] -// public PageOutput GetWorkloadList(WorkloadQueryParam param) -// { -// #pragma warning disable -// IQueryable query = null; -// Expression> subjectLambda = x => true; -// if (param.SubjectCode != string.Empty) -// { -// subjectLambda = subjectLambda.And(o => o.Code.Contains(param.SubjectCode)); -// } -// Expression> trialLambda = x => true; -// if (param.Expedited != null) -// { -// trialLambda = trialLambda.And(o => o.Expedited == param.Expedited); -// } -// if (param.TrialId != null && param.TrialId != Guid.Empty) -// { -// trialLambda = trialLambda.And(o => o.Id == param.TrialId); -// } - - -// if (param.WorkloadType == 1)// TP -// { -// Expression> workloadLambda = x => true; -// workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id); -// if (param.Status != null) -// { -// if (param.Status == 30)//30 的时候,待读和正在读(未提交的) -// { -// workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40); -// } -// else -// workloadLambda = workloadLambda.And(o => o.Status == param.Status); -// } -// query = from tp in _workloadTPRepository.Where(workloadLambda) -// join trial in _trialRepository.Where(trialLambda) on tp.TrialId equals trial.Id -// join subject in _subjectRepository.Where(subjectLambda) on tp.SubjectId equals subject.Id -// join visit in _subjectVisitRepository.AsQueryable() on tp.SubjectVisitId equals visit.Id -// select new WorkloadReadingDTO -// { -// Id = tp.Id, -// StudyId = tp.StudyId, -// WorkloadId = tp.Id, -// WorkloadType = 1, -// Status = tp.Status, -// UpdateTime = tp.UpdateTime, -// TrialId = tp.TrialId, -// SubjectId = tp.SubjectId, -// SubjectCode = subject.Code, -// VisitNum = visit.VisitNum, -// VisitName = visit.VisitName, -// Expedited = trial.Expedited, -// TrialCode = trial.TrialCode, -// TrialIndication = trial.Indication, -// WorkloadCode = tp.TimepointCode -// }; -// } -// else if (param.WorkloadType == 2)//Global -// { -// Expression> workloadLambda = x => true; -// workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id); -// if (param.Status != null) -// { -// if (param.Status == 30) -// { -// workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40); -// } -// else -// workloadLambda = workloadLambda.And(o => o.Status == param.Status); -// } -// query = from global in _workloadGlobalRepository.Where(workloadLambda) -// join trial in _trialRepository.Where(trialLambda) on global.TrialId equals trial.Id -// join subject in _subjectRepository.Where(subjectLambda) on global.SubjectId equals subject.Id -// //join visit in _subjectVisitRepository.GetAll() on global.VisitId equals visit.Id -// select new WorkloadReadingDTO -// { -// Id = global.Id, -// WorkloadId = global.Id, -// WorkloadType = 1, -// Status = global.Status, -// UpdateTime = global.UpdateTime, -// TrialId = global.TrialId, -// SubjectId = global.SubjectId, -// SubjectCode = subject.Code, -// //VisitNum = visit.VisitNum, -// //VisitName = visit.VisitName, -// VisitNum = global.VisitNum, -// VisitName = global.VisitName, - -// Expedited = trial.Expedited, -// TrialCode = trial.TrialCode, -// TrialIndication = trial.Indication, -// WorkloadCode = global.GlobalCode -// }; -// } -// else if (param.WorkloadType == 3)//AD -// { -// Expression> workloadLambda = x => true; -// workloadLambda = workloadLambda.And(u => u.ReviewerId == _userInfo.Id); -// if (param.Status != null) -// { -// if (param.Status == 30)//30 的时候,待读和正在读(未提交的) -// { -// workloadLambda = workloadLambda.And(o => o.Status == 30 || o.Status == 40); -// } -// else -// workloadLambda = workloadLambda.And(o => o.Status == param.Status); -// } -// query = from ad in _workloadADRepository.Where(workloadLambda) -// join trial in _trialRepository.Where(trialLambda) on ad.TrialId equals trial.Id -// join subject in _subjectRepository.Where(subjectLambda) on ad.SubjectId equals subject.Id -// //join visit in _subjectVisitRepository.GetAll() on ad.visi equals visit.Id -// select new WorkloadReadingDTO -// { -// Id = ad.Id, -// WorkloadId = ad.Id, -// WorkloadType = 1, -// Status = ad.Status, -// UpdateTime = ad.UpdateTime, -// TrialId = ad.TrialId, -// SubjectId = ad.SubjectId, -// SubjectCode = subject.Code, -// //VisitNum = visit.VisitNum, -// //VisitName = visit.VisitName, -// Expedited = trial.Expedited, -// TrialCode = trial.TrialCode, -// TrialIndication = trial.Indication, -// WorkloadCode = ad.ADCode -// }; -// } -// query.OrderByDescending(u => u.UpdateTime); -// var count = query.Count(); -// query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize); -// return new PageOutput(param.PageIndex, -// param.PageSize, count, query.ToList()); -// } -// } -//} diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs deleted file mode 100644 index 396cadbb4..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/ReportService.cs +++ /dev/null @@ -1,635 +0,0 @@ -//using AutoMapper; -//using IRaCIS.Core.Infrastructure.ExpressionExtend; -//using IRaCIS.Core.Application.Contracts; -//using IRaCIS.Core.Infra.EFCore; -//using IRaCIS.Core.Domain.Models; - -//using IRaCIS.Core.Domain.Share; -//using Microsoft.AspNetCore.Authorization; -//using Microsoft.AspNetCore.Mvc; - -//namespace IRaCIS.Core.Application.Services -//{ -// [ ApiExplorerSettings(GroupName = "Reading")] -// public class ReportService : BaseService, IReportService -// { -// private readonly ITURepository _tURepository; -// private readonly ITRRepository _tRRepository; -// private readonly IRSRepository _rSRepository; -// private readonly IRepository _reportRepository; -// private readonly IRepository _visitStageRepository; -// private readonly IRepository _subjectVisitRepository; -// private readonly IWorkloadTPRepository _workloadTPRepository; -// private readonly IWorkloadGlobalRepository _workloadGlobalRepository; - - -// #pragma warning disable -// private string linkGroupId; -// public ReportService(ITURepository tURepository, ITRRepository tRRepository, -// IRSRepository rSRepository, IRepository reportRepository, -// IWorkloadTPRepository workloadTPRepository, -// IRepository visitStageRepository, -// IRepository subjectVisitRepository, -// IWorkloadGlobalRepository workloadGlobalRepository, -// IMapper mapper) -// { -// _tURepository = tURepository; -// _tRRepository = tRRepository; -// _rSRepository = rSRepository; -// _reportRepository = reportRepository; -// _workloadTPRepository = workloadTPRepository; -// _visitStageRepository = visitStageRepository; -// _subjectVisitRepository = subjectVisitRepository; -// _workloadGlobalRepository = workloadGlobalRepository; - - -// } - -// public bool AddLesion(List lesionList, ReportDTO report) -// { -// TU lastTu = _tURepository.AsQueryable().OrderByDescending("TUSEQ").FirstOrDefault(); -// int tuSeq = 101; -// if (lastTu != null) { tuSeq = lastTu.TUSEQ + 1; } -// TR lastTr = _tRRepository.AsQueryable().OrderByDescending("TRSEQ").FirstOrDefault(); -// int trSeq = 1; -// if (lastTr != null) { trSeq = lastTr.TRSEQ + 1; } - -// foreach (var lesion in lesionList) -// { -// var linkId = lesion.TULNKID; -// if (string.IsNullOrWhiteSpace(lesion.TULNKID)) -// { -// linkId = (lesion.TUORRES == "TARGET") ? "T" + tuSeq.ToString() : "NT" + tuSeq.ToString(); -// } -// _tURepository.Add(new TU -// { -// STUDYID = lesion.STUDYID, -// LesionType = lesion.LesionType, -// USUBJID = lesion.USUBJID, -// TUSEQ = tuSeq, -// TULNKID = linkId, - -// TUTESTCD = lesion.TUTESTCD, -// TUTEST = lesion.TUTEST, -// TUORRES = lesion.TUORRES, -// TUSTRESC = lesion.TUSTRESC, - -// TULOC = lesion.TULOC, -// LocDescription = lesion.LocDescription, -// TULAT = lesion.TULAT, -// TUDIR = lesion.TUDIR, -// TUPORTOT = lesion.TUPORTOT, -// TUMETHOD = lesion.TUMETHOD, -// TUEVAL = lesion.TUEVAL, - -// VISIT = lesion.VISIT, -// VISITNUM = lesion.VISITNUM, -// VISITDY = lesion.VISITDY, - -// TUREFID = lesion.TUREFID, -// TUACPTFL = lesion.TUACPTFL, -// TUEVALID = _userInfo.ReviewerCode,//lesion.TUEVALID, -// TUGRPID = string.Empty, -// TUDY = lesion.TUDY,// 检查日 -// EPOCH = lesion.EPOCH, -// TUDTC = lesion.TUDTC, -// TUNAM = lesion.TUNAM, -// TUSPID = lesion.TUSPID, -// TpCode = report.TpCode -// }); -// _tRRepository.Add(new TR -// { -// STUDYID = lesion.STUDYID, - -// USUBJID = lesion.USUBJID, -// TRSEQ = trSeq, -// TRLNKID = linkId, -// TRGRPID = lesion.TRGRPID, -// TRLNKGRP = linkGroupId, - -// TRTESTCD = lesion.TRTESTCD, -// TRTEST = lesion.TRTEST, -// TRORRES = lesion.TRORRES, -// TRORRESU = lesion.TRORRESU, - -// TRNAM = lesion.TUNAM, -// TRMETHOD = lesion.TUMETHOD, -// TREVAL = lesion.TUEVAL, -// TREVALID = _userInfo.ReviewerCode,//lesion.TUEVALID, -// TRACPTFL = lesion.TUACPTFL, -// CoveredLesion = true, -// Note = lesion.Note, - -// VISITNUM = lesion.VISITNUM, -// VISIT = lesion.VISIT, -// VISITDY = lesion.VISITDY, -// EPOCH = lesion.EPOCH, -// TRDTC = lesion.TRDTC, -// TRDY = lesion.TRDY, -// TpCode = report.TpCode -// }); -// tuSeq++; -// trSeq++; -// } - -// return _rSRepository.SaveChanges(); -// } - -// private IList GetBLLesion(string trialCode, string SubjectCode, string tpcodeGroup) -// { -// int[] t = { 1, 2, 3 }; -// var query = from tu in _tURepository.Where(u => t.Contains(u.LesionType) -// && u.STUDYID == trialCode && u.USUBJID == SubjectCode && u.TpCode.Contains(tpcodeGroup) /*u.TUEVALID==_userInfo.ReviewerCode*/) -// join tr in _tRRepository.Where(u => u.VISITNUM == 1 && u.STUDYID == trialCode -// && u.USUBJID == SubjectCode && u.TREVALID == _userInfo.ReviewerCode) -// on tu.TULNKID equals tr.TRLNKID into temp -// from tr in temp.DefaultIfEmpty() -// select new LesionInformation -// { -// TUId = tu.Id, -// LesionType = tu.LesionType, -// TULNKID = tu.TULNKID, -// TUSEQ = tu.TUSEQ, -// TULOC = tu.TULOC, -// LocDescription = tu.LocDescription, -// TULAT = tu.TULAT, -// TUDIR = tu.TUDIR, -// TUPORTOT = tu.TUPORTOT, -// TRORRES = tr.TRORRES, -// VISITNUM = tu.VISITNUM, -// Note = tr.Note -// }; -// return query.ToList(); -// } - -// /// 获取基线期病灶信息及其他信息 -// [HttpGet, Route("getBLLineLesion/{trialCode}/{subjectCode}/{tpCode}")] -// public BaseLineReportDTO getBLLineLesion(string trialCode, string subjectCode, string tpCode) -// { -// var tpcodeGroup = tpCode.Substring(tpCode.Length - 3, 3); -// var report = _reportRepository.FirstOrDefault(u => u.TrialCode == trialCode && u.SubjectCode == subjectCode && u.VisitNum == 1); ; - -// BaseLineReportDTO result = new BaseLineReportDTO -// { -// LesionInformation = GetBLLesion(trialCode, subjectCode, tpcodeGroup).Where(u => u.VISITNUM == 1).ToList(), -// ReportResult = _mapper.Map(report) -// }; -// return result; -// } - -// /// 获取其他访视病灶信息 -// [AllowAnonymous] -// [HttpGet, Route("getVisitLineLesion/{trialCode}/{subjectCode}/{visitNum:decimal}/{tpCode}")] -// public VisitLesionInfo GetVisitLineLesion(string trialCode, string subjectCode, decimal visitNum, string tpCode) -// { -// var tpcodeGroup = tpCode.Substring(tpCode.Length - 3, 3); -// VisitLesionInfo visitLesionInfo = new VisitLesionInfo(); -// var blLesionList = GetBLLesion(trialCode, subjectCode, tpcodeGroup); -// int[] t = { 1, 2, 3 }; -// var query = from tu in _tURepository.Where(u => u.STUDYID == trialCode && u.USUBJID == subjectCode && u.TpCode.Contains(tpcodeGroup) /*u.TUEVALID == _userInfo.ReviewerCode*/) -// join tr in _tRRepository.Where(u => u.VISITNUM == visitNum && u.STUDYID == trialCode && u.USUBJID == subjectCode && u.TpCode.Contains(tpcodeGroup)) -// on tu.TULNKID equals tr.TRLNKID into temp -// from tr in temp.DefaultIfEmpty() -// select new LesionInformation -// { -// TUId = tu.Id, -// TUSEQ = tu.TUSEQ, -// TULOC = tu.TULOC, -// LesionType = tu.LesionType, -// TULNKID = tu.TULNKID, -// LocDescription = tu.LocDescription, -// TULAT = tu.TULAT, -// TUDIR = tu.TUDIR, -// TUPORTOT = tu.TUPORTOT, -// TRORRESU = tr.TRORRESU, -// TRORRES = tr.TRORRES, -// Note = tr.Note, -// CoveredLesion = tr.CoveredLesion, -// VISITNUM = tr.VISITNUM -// }; -// var list = query.ToList(); -// var currentVisitLesion = list.Where(u => t.Contains(u.LesionType) && u.VISITNUM == visitNum).ToList(); -// foreach (var item in blLesionList) -// { -// var temp = _mapper.Map(item); -// temp.CurrentLesion = currentVisitLesion.Where(u => u.STUDYID == item.STUDYID -// && u.USUBJID == item.USUBJID && u.TUEVAL == item.TUEVAL -// && u.TULNKID == item.TULNKID).FirstOrDefault() ?? new LesionInformation(); -// visitLesionInfo.BLLesionList.Add(temp); -// } - -// List blIdList = blLesionList.Select(u => u.TUId).ToList(); -// List visitIdList = currentVisitLesion.Where(u => t.Contains(u.LesionType)).Select(u => u.TUId).ToList(); -// var visitLesion = visitIdList.Except(blIdList); - -// foreach (var item in visitLesion) -// { -// VisitLesion tempLesion = new VisitLesion(); -// tempLesion.CurrentLesion = currentVisitLesion.Where(u => u.TUId == item).FirstOrDefault() ?? new LesionInformation(); -// tempLesion.LesionType = tempLesion.CurrentLesion.LesionType; -// tempLesion.TUSEQ = tempLesion.CurrentLesion.TUSEQ; -// visitLesionInfo.BLLesionList.Add(tempLesion); -// } -// // 以往新病灶,病灶类型为5,且访视编号小于当前访视,且不是基线 -// var previousLesion = list.Where(u => u.VISITNUM < visitNum && u.VISITNUM != 1 && u.LesionType == 5).ToList(); -// foreach (var item in previousLesion) -// { -// var temp = _mapper.Map(item); -// temp.CurrentLesion = currentVisitLesion.Where(u => u.TULNKID==item.TULNKID && u.STUDYID == item.STUDYID && u.USUBJID == item.USUBJID && u.TUEVAL == item.TUEVAL).FirstOrDefault() ?? new LesionInformation(); -// visitLesionInfo.PreviousNewLesionList.Add(temp); -// } - -// visitLesionInfo.EquivocalNewLesionList = list.Where(u => u.VISITNUM <= visitNum && u.LesionType == 4).ToList(); -// visitLesionInfo.UnequivocalNewLesionList = list.Where(u => u.VISITNUM == visitNum && u.LesionType == 5).ToList(); - -// var report = _reportRepository.FirstOrDefault(u => u.TrialCode == trialCode && u.SubjectCode == subjectCode && u.VisitNum == visitNum); ; -// visitLesionInfo.ReportResult = _mapper.Map(report); - -// var rs = _rSRepository.Where(u => u.STUDYID == trialCode && u.USUBJID == subjectCode -// && u.RSEVALID == _userInfo.ReviewerCode && u.VISITNUM == visitNum); - -// var target = rs.FirstOrDefault(u => u.RSTESTCD == "TRGRESP"); -// var non_target = rs.FirstOrDefault(u => u.RSTESTCD == "NTRGRESP"); -// var overall = rs.FirstOrDefault(u => u.RSTESTCD == "OVRLRESP"); - -// visitLesionInfo.Efficacy = new EfficacyAssessment -// { - -// TargetLesion = target?.RSORRES, -// TargetLesionNote = target?.Note, -// Non_targetLesion = non_target?.RSORRES, -// Non_targetLesionNote = non_target?.Note, -// OverallAssessment = overall?.RSORRES, -// OverallAssessmentNote = overall?.Note -// }; - -// var preRS = _rSRepository.Where(u => u.STUDYID == trialCode && u.USUBJID == subjectCode -// && u.VISITNUM < visitNum && u.RSTESTCD == "OVRLRESP" -// && u.RSEVAL == _userInfo.ReviewerCode /*&& u.VISITNUM == visitNum*/) -// .Select(u => new PreviousOverallAssessment -// { -// VisitName = u.VISIT, -// OverallAssessment = u.RSORRES -// }).ToList(); -// visitLesionInfo.PreviousOverallAssessment = preRS; - -// var targetList = _tRRepository.Where(u => (!string.IsNullOrWhiteSpace(u.TRLNKID)) && (!u.TRLNKID.Contains("N")) && u.STUDYID == trialCode && -// u.USUBJID == subjectCode && u.TpCode.Contains(tpcodeGroup) && u.VISITNUM < visitNum).ToList(); - -// var q = from ttt in targetList -// group ttt by ttt.VISIT into s -// select new MinVisit -// { -// MinSum = s.Sum(p => p.TRORRES_Double), -// MinVistName = s.Key -// }; -// var tempList = q.ToList(); -// MinVisit min = new MinVisit(); -// if (tempList.Count>0) -// { -// min = tempList.FirstOrDefault(); -// } -// foreach (var item in tempList) -// { -// if (min.MinSum > item.MinSum) -// { -// min = item; -// } -// } -// visitLesionInfo.MinVisitInfo = min; - -// return visitLesionInfo; -// } - -// /// -// /// 提交报告 -// /// -// [AllowAnonymous] -// [HttpPost("{tpId:guid}")] -// public bool SubmiteReport(Guid tpId) -// { -// // 提交报告 同时查询VisitStage(项目访视计划,看是否需要添加全局) - -// var query = from workloadTp in _workloadTPRepository.Where(u => u.Id == tpId) -// join subjectVisit in _subjectVisitRepository.AsQueryable() -// on workloadTp.SubjectVisitId equals subjectVisit.Id -// join visitStage in _visitStageRepository.AsQueryable() -// on new { workloadTp.TrialId, subjectVisit.VisitNum } equals new { visitStage.TrialId, visitStage.VisitNum } -// select new -// { -// WorkloadTp = workloadTp, -// VisitNum = subjectVisit.VisitNum, -// VisitName = subjectVisit.VisitName, -// NeedGlobal = visitStage.NeedGlobal -// }; -// var workload = query.ToList().FirstOrDefault(); -// if (workload != null) -// { -// if (workload.NeedGlobal)// 需要产生全局 -// { -// var group = workload.WorkloadTp.TimepointCode.Substring(workload.WorkloadTp.TimepointCode.Length - 2, 2); -// _workloadGlobalRepository.Add(new WorkloadGlobal -// { -// GlobalCode = workload.WorkloadTp.TimepointCode + "G" + group, -// ReviewerId = Guid.Empty, -// SiteId = workload.WorkloadTp.SiteId, -// Status = -1, -// SubjectId = workload.WorkloadTp.SubjectId, -// TrialId = workload.WorkloadTp.TrialId, -// VisitId = workload.WorkloadTp.SubjectVisitId, -// VisitNum = workload.VisitNum, -// VisitName = workload.VisitName, -// UpdateTime = DateTime.Now -// }); -// } -// } -// return _workloadTPRepository.Update(u => u.Id == tpId, s => new WorkloadTP -// { -// Status = (int)WorkloadStatus.ReviewFinish -// }); -// } - - -// /// -// /// 保存 基线期病灶及测量信息及其他信息,不会改变状态 -// /// -// [AllowAnonymous] -// [HttpPost] -// public bool AddBaseLineLesion(BaseLineReportCommand baseLineReportCommand) -// { -// if (baseLineReportCommand.LesionInformation.Count < 1) return false; - -// var addedLesion = baseLineReportCommand.LesionInformation[0]; - -// //删除已经有的数据 -// _tURepository.Delete(u => u.VISITNUM == addedLesion.VISITNUM && u.USUBJID == addedLesion.USUBJID && u.TUEVALID == _userInfo.ReviewerCode); -// _tRRepository.Delete(u => u.VISITNUM == addedLesion.VISITNUM && u.USUBJID == addedLesion.USUBJID && u.TREVALID == _userInfo.ReviewerCode); -// _reportRepository.Delete(u => u.TPId == baseLineReportCommand.ReportResult.TPId); - -// _workloadTPRepository.Update(u => u.Id == baseLineReportCommand.ReportResult.TPId, s => new WorkloadTP -// { -// Status = (int)WorkloadStatus.Reading -// }); - -// //序号按照每个项目、每个受试者、每个评估者,一条记录 -// TU lastTu = _tURepository.Where(u => u.STUDYID == addedLesion.STUDYID && u.USUBJID == addedLesion.USUBJID -// && u.TUEVAL == addedLesion.TUEVAL).OrderByDescending("TUSEQ").FirstOrDefault(); -// int tuSeq = 101; -// if (lastTu != null) { tuSeq = lastTu.TUSEQ; } -// TR lastTr = _tRRepository.AsQueryable().OrderByDescending("TRSEQ").FirstOrDefault(); -// int trSeq = 1; -// if (lastTr != null) { trSeq = lastTr.TRSEQ; } - -// linkGroupId = Guid.NewGuid().ToString(); -// foreach (var lesion in baseLineReportCommand.LesionInformation) -// { -// var linkId = lesion.TULNKID; -// if (string.IsNullOrWhiteSpace(lesion.TULNKID)) -// { -// linkId = (lesion.TUORRES == "TARGET") ? "T" + tuSeq.ToString() : "NT" + tuSeq.ToString(); -// } -// _tURepository.Add(new TU -// { -// STUDYID = lesion.STUDYID, -// LesionType = lesion.LesionType, -// USUBJID = lesion.USUBJID, -// TUSEQ = tuSeq, -// TULNKID = linkId, - -// TUTESTCD = lesion.TUTESTCD, -// TUTEST = lesion.TUTEST, -// TUORRES = lesion.TUORRES, -// TUSTRESC = lesion.TUSTRESC, - -// TULOC = lesion.TULOC, -// LocDescription = lesion.LocDescription, -// TULAT = lesion.TULAT, -// TUDIR = lesion.TUDIR, -// TUPORTOT = lesion.TUPORTOT, -// TUMETHOD = lesion.TUMETHOD, -// TUEVAL = lesion.TUEVAL, -// VISIT = lesion.VISIT, -// VISITNUM = lesion.VISITNUM, -// VISITDY = lesion.VISITDY, - -// TUREFID = lesion.TUREFID, -// TUACPTFL = lesion.TUACPTFL, -// TUEVALID = _userInfo.ReviewerCode,//lesion.TUEVALID, -// TUGRPID = string.Empty, -// TUDY = lesion.TUDY,// 检查日 -// EPOCH = lesion.EPOCH, -// TUDTC = lesion.TUDTC, -// TUNAM = lesion.TUNAM, -// TUSPID = lesion.TUSPID, - -// TpCode = baseLineReportCommand.ReportResult.TpCode -// }); -// _tRRepository.Add(new TR -// { -// STUDYID = lesion.STUDYID, - -// USUBJID = lesion.USUBJID, -// TRSEQ = trSeq, -// TRLNKID = linkId, -// TRGRPID = lesion.TRGRPID, -// TRLNKGRP = linkGroupId, - -// TRTESTCD = lesion.TRTESTCD, -// TRTEST = lesion.TRTEST, -// TRORRES = lesion.TRORRES, -// TRORRESU = lesion.TRORRESU, - -// TRNAM = lesion.TUNAM, -// TRMETHOD = lesion.TUMETHOD, -// TREVAL = lesion.TUEVAL, -// TREVALID = _userInfo.ReviewerCode,//lesion.TUEVALID, -// TRACPTFL = lesion.TUACPTFL, - -// Note = lesion.Note, - -// VISITNUM = lesion.VISITNUM, -// VISIT = lesion.VISIT, -// VISITDY = lesion.VISITDY, -// EPOCH = lesion.EPOCH, -// TRDTC = lesion.TRDTC, -// TRDY = lesion.TRDY, -// TpCode = baseLineReportCommand.ReportResult.TpCode -// }); -// tuSeq++; -// trSeq++; -// } - -// _tRRepository.Add(new TR -// { -// STUDYID = addedLesion.STUDYID, - -// USUBJID = addedLesion.USUBJID, -// TRSEQ = trSeq, -// TRLNKID = string.Empty, -// TRGRPID = addedLesion.TRGRPID, -// TRLNKGRP = linkGroupId, - -// TRTESTCD = addedLesion.TRTESTCD, -// TRTEST = "Sum of Diameter", -// TRORRES = baseLineReportCommand.SumOfDiameter, -// TRORRESU = "mm",//addedLesion.TRORRESU, - -// TRNAM = addedLesion.TUNAM, -// TRMETHOD = addedLesion.TUMETHOD, -// TREVAL = addedLesion.TUEVAL, -// TREVALID = _userInfo.ReviewerCode,//addedLesion.TUEVALID, -// TRACPTFL = addedLesion.TUACPTFL, - -// Note = string.Empty, - -// VISITNUM = addedLesion.VISITNUM, -// VISIT = addedLesion.VISIT, -// VISITDY = addedLesion.VISITDY, -// EPOCH = addedLesion.EPOCH, -// TRDTC = addedLesion.TRDTC, -// TRDY = addedLesion.TRDY, -// TpCode = baseLineReportCommand.ReportResult.TpCode -// }); -// trSeq++; -// _tRRepository.Add(new TR -// { -// STUDYID = addedLesion.STUDYID, - -// USUBJID = addedLesion.USUBJID, -// TRSEQ = trSeq, -// TRLNKID = string.Empty, -// TRGRPID = addedLesion.TRGRPID, -// TRLNKGRP = linkGroupId, - -// TRTESTCD = addedLesion.TRTESTCD, -// TRTEST = "Sum Diameters of Non Lymph Node Tumors", -// TRORRES = baseLineReportCommand.SumDiameterOfNonLymphNode, -// TRORRESU = "mm",//addedLesion.TRORRESU, - -// TRNAM = addedLesion.TUNAM, -// TRMETHOD = addedLesion.TUMETHOD, -// TREVAL = addedLesion.TUEVAL, -// TREVALID = _userInfo.ReviewerCode,//addedLesion.TUEVALID, -// TRACPTFL = addedLesion.TUACPTFL, - -// Note = string.Empty, - -// VISITNUM = addedLesion.VISITNUM, -// VISIT = addedLesion.VISIT, -// VISITDY = addedLesion.VISITDY, -// EPOCH = addedLesion.EPOCH, -// TRDTC = addedLesion.TRDTC, -// TRDY = addedLesion.TRDY, -// TpCode = baseLineReportCommand.ReportResult.TpCode -// }); -// trSeq++; -// _reportRepository.Add(_mapper.Map(baseLineReportCommand.ReportResult)); - -// return _reportRepository.SaveChanges(); -// } - -// /// -// /// 添加访视报告信息 -// /// LesionInformation 为新病灶及测量信息(包括分裂及合并产生的) -// /// TRList 已经存在的病灶的测量信息 -// /// RSList 疗效信息 -// /// -// [AllowAnonymous] -// [HttpPost, Route("saveVisitReport")] -// public bool SaveVisitReport(VisitReportCommand visitReportCommand) -// { -// linkGroupId = Guid.NewGuid().ToString(); -// var visitNum = visitReportCommand.ReportResult.VisitNum; -// var subjectId = visitReportCommand.ReportResult.SubjectCode; - -// //删除已经有的数据 -// _tURepository.Delete(u => u.VISITNUM == visitNum && u.USUBJID == subjectId && u.TUEVALID == _userInfo.ReviewerCode); -// _tRRepository.Delete(u => u.VISITNUM == visitNum && u.USUBJID == subjectId && u.TREVALID == _userInfo.ReviewerCode); -// _reportRepository.Delete(u => u.TPId == visitReportCommand.ReportResult.TPId); -// _rSRepository.Delete(u => u.VISITNUM == visitNum && u.RSEVALID == _userInfo.ReviewerCode); - -// var report = visitReportCommand.ReportResult; - -// _workloadTPRepository.Update(u => u.Id == report.TPId, s => new WorkloadTP -// { -// Status = (int)WorkloadStatus.Reading -// }); -// if (visitReportCommand.LesionInformation.Count > 0) -// { -// AddLesion(visitReportCommand.LesionInformation, report); -// } - -// TR lastTr = _tRRepository.AsQueryable().OrderByDescending("TRSEQ").FirstOrDefault(); -// int trSeq = 1; -// if (lastTr != null) { trSeq = lastTr.TRSEQ + 1; } - -// foreach (var lesion in visitReportCommand.TRList) -// { -// _tRRepository.Add(new TR -// { -// STUDYID = lesion.STUDYID, - -// USUBJID = lesion.USUBJID, -// TRSEQ = trSeq, -// TRLNKID = lesion.TRLNKID, -// TRGRPID = lesion.TRGRPID, -// TRLNKGRP = linkGroupId, - -// TRTESTCD = lesion.TRTESTCD, -// TRTEST = lesion.TRTEST, -// TRORRES = lesion.TRORRES, -// TRORRESU = lesion.TRORRESU, - -// TRNAM = lesion.TRNAM, -// TRMETHOD = lesion.TRMETHOD, -// TREVAL = lesion.TREVAL, -// TREVALID = _userInfo.ReviewerCode,// lesion.TREVALID, -// TRACPTFL = lesion.TRACPTFL, - -// Note = lesion.Note, -// CoveredLesion = lesion.CoveredLesion, -// VISITNUM = lesion.VISITNUM, -// VISIT = lesion.VISIT, -// VISITDY = lesion.VISITDY, -// EPOCH = lesion.EPOCH, -// TRDTC = lesion.TRDTC, -// TRDY = lesion.TRDY, -// TpCode = visitReportCommand.ReportResult.TpCode -// }); -// trSeq++; -// } -// foreach (var rs in visitReportCommand.RSList) -// { -// _rSRepository.Add(new RS -// { -// STUDYID = rs.STUDYID, -// USUBJID = rs.USUBJID, -// RSSEQ = 0,// -// RSLNKGRP = linkGroupId, -// RSTESTCD = rs.RSTESTCD, -// RSTEST = rs.RSTEST, -// RSCAT = rs.RSCAT, -// RSORRES = rs.RSORRES, -// RSSTRESC = rs.RSSTRESC, -// RSSTAT = rs.RSSTAT, -// RSREASND = rs.RSCAT, -// RSEVAL = rs.RSEVAL, -// RSEVALID = _userInfo.ReviewerCode,// -// VISITNUM = rs.VISITNUM, -// VISIT = rs.VISIT, -// RSDTC = rs.RSDTC, -// RSDY = rs.RSDY, -// TpCode = visitReportCommand.ReportResult.TpCode, -// StudyGuid = rs.StudyGuid, -// TrialGuid = rs.TrialGuid, -// SubjectGuid = rs.SubjectGuid, -// Note = rs.Note -// }); -// } - -// _reportRepository.Add(_mapper.Map(visitReportCommand.ReportResult)); - -// return _rSRepository.SaveChanges(); -// } -// } -//} diff --git a/IRaCIS.Core.Application/Service/ReadingAndReport/_MapConfig.cs b/IRaCIS.Core.Application/Service/ReadingAndReport/_MapConfig.cs deleted file mode 100644 index 2cccc10dd..000000000 --- a/IRaCIS.Core.Application/Service/ReadingAndReport/_MapConfig.cs +++ /dev/null @@ -1,20 +0,0 @@ -using AutoMapper; -using IRaCIS.Application.Contracts; -using IRaCIS.Core.Application.Contracts; -using IRaCIS.Core.Application.Contracts.Dicom.DTO; -using IRaCIS.Core.Domain.Models; - -namespace IRaCIS.Core.Application.Service -{ - public class ReadingAndReportConfig : Profile - { - public ReadingAndReportConfig() - { - CreateMap(); - - - - } - } - -} diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs index eb5ba3db5..aceccc161 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteSurveyViewModel.cs @@ -36,10 +36,11 @@ namespace IRaCIS.Core.Application.Contracts public class TrialSiteForSelect { + public Guid TrialSiteId => Id; public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid? SiteId { get; set; } public string TrialSiteCode { get; set; } = string.Empty; @@ -78,7 +79,7 @@ namespace IRaCIS.Core.Application.Contracts { [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? UserTypeId { get; set; } @@ -101,7 +102,7 @@ namespace IRaCIS.Core.Application.Contracts { [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? UserTypeId { get; set; } @@ -133,7 +134,7 @@ namespace IRaCIS.Core.Application.Contracts public bool IsDeleted { get; set; } public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public DateTime CreateTime { get; set; } public Guid CreateUserId { get; set; } public DateTime UpdateTime { get; set; } @@ -187,7 +188,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid TrialSiteSurveyId { get; set; } } @@ -197,7 +198,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } ///// UserName //public string UserName { get; set; } @@ -251,7 +252,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public bool IsUpdate { get; set; } @@ -271,7 +272,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid? Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string UserName { get; set; } = string.Empty; public string Phone { get; set; } = string.Empty; public string Email { get; set; } = string.Empty; @@ -342,7 +343,7 @@ namespace IRaCIS.Core.Application.Contracts [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public string UserKeyInfo { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs index 2635d2c80..923e6f585 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/DTO/TrialSiteUserSurveyViewModel.cs @@ -150,7 +150,7 @@ namespace IRaCIS.Core.Application.Contracts public string UserTypeStr { get; set; } [JsonIgnore] - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } [JsonIgnore] public UserTypeEnum UserTypeEnum { get; set; } = UserTypeEnum.Undefined; diff --git a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs index 27fffa1c3..583928be6 100644 --- a/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs +++ b/IRaCIS.Core.Application/Service/SiteSurvey/TrialSiteSurveyService.cs @@ -196,13 +196,13 @@ namespace IRaCIS.Core.Application.Contracts TrialSiteSurvey? currentEntity = null; - var userList = await _trialSiteUserRepository.Where(t => t.TrialId == userInfo.TrialId && t.SiteId == userInfo.SiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var userList = await _trialSiteUserRepository.Where(t => t.TrialId == userInfo.TrialId && t.TrialSiteId == userInfo.TrialSiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); //普通登录 if (userInfo.IsUpdate == false) { - var dbEntityList = await _trialSiteSurveyRepository.Where(t => t.TrialId == userInfo.TrialId && t.SiteId == userInfo.SiteId).ToListAsync(); + var dbEntityList = await _trialSiteSurveyRepository.Where(t => t.TrialId == userInfo.TrialId && t.TrialSiteId == userInfo.TrialSiteId).ToListAsync(); //没有记录 new一份 @@ -236,7 +236,7 @@ namespace IRaCIS.Core.Application.Contracts { - await UnlockSyncSiteUserAsync(userInfo.TrialId, userInfo.SiteId, currentEntity.Id, userList); + await UnlockSyncSiteUserAsync(userInfo.TrialId, userInfo.TrialSiteId, currentEntity.Id, userList); } @@ -250,7 +250,7 @@ namespace IRaCIS.Core.Application.Contracts { //找到最新的调研表 - var currentLatest = await _trialSiteSurveyRepository.Where(t => t.TrialId == userInfo.TrialId && t.SiteId == userInfo.SiteId, true) + var currentLatest = await _trialSiteSurveyRepository.Where(t => t.TrialId == userInfo.TrialId && t.TrialSiteId == userInfo.TrialSiteId, true) .Include(u => u.TrialSiteEquipmentSurveyList).Include(u => u.TrialSiteUserSurveyList).OrderByDescending(t => t.CreateTime).FirstOrDefaultAsync(); if (currentLatest == null) @@ -344,7 +344,7 @@ namespace IRaCIS.Core.Application.Contracts private async Task UnlockSyncSiteUserAsync(Guid trialId, Guid siteId, Guid trialSiteSurveyId, List userList) { - var existList = await _trialSiteUserSurveyRepository.Where(t => t.IsHistoryUser && t.TrialSiteSurvey.TrialId == trialId && t.TrialSiteSurvey.SiteId == siteId, true).ToListAsync(); + var existList = await _trialSiteUserSurveyRepository.Where(t => t.IsHistoryUser && t.TrialSiteSurvey.TrialId == trialId && t.TrialSiteSurvey.TrialSiteId == siteId, true).ToListAsync(); foreach (var item in userList) { @@ -379,10 +379,10 @@ namespace IRaCIS.Core.Application.Contracts if (find.State != TrialSiteSurveyEnum.PMCreatedAndLock && find.IsDeleted != true) { - var userList = await _trialSiteUserRepository.Where(t => t.TrialId == find.TrialId && t.SiteId == find.SiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + var userList = await _trialSiteUserRepository.Where(t => t.TrialId == find.TrialId && t.TrialSiteId == find.TrialSiteId, false, true).ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - await UnlockSyncSiteUserAsync(find.TrialId, find.SiteId, find.Id, userList); + await UnlockSyncSiteUserAsync(find.TrialId, find.TrialSiteId, find.Id, userList); } @@ -460,7 +460,7 @@ namespace IRaCIS.Core.Application.Contracts public async Task> GetTrialSiteSurveyList(TrialSiteSurveyQueryDTO surveyQueryDTO) { var trialSiteSurveyQueryable = _trialSiteSurveyRepository.Where(t => t.TrialId == surveyQueryDTO.TrialId).IgnoreQueryFilters() - .WhereIf(surveyQueryDTO.SiteId != null, t => t.SiteId == surveyQueryDTO.SiteId) + .WhereIf(surveyQueryDTO.TrialSiteId != null, t => t.TrialSiteId == surveyQueryDTO.TrialSiteId) .WhereIf(surveyQueryDTO.IsDeleted != null, t => t.IsDeleted == surveyQueryDTO.IsDeleted) .WhereIf(!string.IsNullOrWhiteSpace(surveyQueryDTO.UserKeyInfo), t => t.UserName.Contains(surveyQueryDTO.UserKeyInfo) || t.Phone.Contains(surveyQueryDTO.UserKeyInfo) || t.Email.Contains(surveyQueryDTO.UserKeyInfo)) .WhereIf(surveyQueryDTO.State != null, t => t.State == surveyQueryDTO.State) @@ -480,7 +480,7 @@ namespace IRaCIS.Core.Application.Contracts { var trialSiteSurveyQueryable = _trialSiteSurveyRepository .Where(t => t.Id != inQuery.TrialSiteSurveyId) - .Where(t => t.TrialId == inQuery.TrialId && t.SiteId == inQuery.SiteId).IgnoreQueryFilters() + .Where(t => t.TrialId == inQuery.TrialId && t.TrialSiteId == inQuery.TrialSiteId).IgnoreQueryFilters() .ProjectTo(_mapper.ConfigurationProvider); return await trialSiteSurveyQueryable.ToListAsync(); @@ -496,10 +496,10 @@ namespace IRaCIS.Core.Application.Contracts var groupSelectIdQuery = _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId) - .WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId) + .WhereIf(queryParam.TrialSiteId != null, t => t.TrialSiteId == queryParam.TrialSiteId) .WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo)) - .GroupBy(t => t.SiteId) + .GroupBy(t => t.TrialSiteId) .Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First()); @@ -611,7 +611,7 @@ namespace IRaCIS.Core.Application.Contracts var trialInfo = await _repository.FirstOrDefaultAsync(t => t.Id == trialSiteSubmitBackCommand.TrialId); - var siteInfo = await _trialSiteRepository.FirstOrDefaultAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.SiteId == survey.SiteId, true); + var siteInfo = await _trialSiteRepository.FirstOrDefaultAsync(t => t.TrialId == trialSiteSubmitBackCommand.TrialId && t.Id == survey.TrialSiteId, true); //主题 @@ -778,10 +778,10 @@ namespace IRaCIS.Core.Application.Contracts var needQuitUserList = allUserList.Where(t => t.IsHistoryUser && t.IsHistoryUserOriginDeleted == false && t.IsHistoryUserDeleted == true).ToList(); - await DealSiteUserQuitSiteAsync(trialId, trialSiteSurvey.SiteId, needQuitUserList); + await DealSiteUserQuitSiteAsync(trialId, trialSiteSurvey.TrialSiteId, needQuitUserList); //将历史锁定的调研表废弃 - await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.SiteId == trialSiteSurvey.SiteId && t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id != trialSiteSurveyId, z => new TrialSiteSurvey() { IsDeleted = true }); + await _trialSiteSurveyRepository.BatchUpdateNoTrackingAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteSurvey.TrialSiteId && t.State == TrialSiteSurveyEnum.PMCreatedAndLock && t.Id != trialSiteSurveyId, z => new TrialSiteSurvey() { IsDeleted = true }); } await _trialSiteSurveyRepository.SaveChangesAsync(); @@ -867,7 +867,7 @@ namespace IRaCIS.Core.Application.Contracts var trialId = joinCommand.TrialId; var userId = (Guid)userInfo.SystemUserId; - var siteId = trialSiteSurvey.SiteId; + var trialSiteId = trialSiteSurvey.TrialSiteId; @@ -893,11 +893,11 @@ namespace IRaCIS.Core.Application.Contracts await _mailVerificationService.SiteSurveyUserJoinEmail(trialId, userId, joinCommand.BaseUrl, joinCommand.RouteUrl); } - var findTrialSiteUser = await _trialSiteUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.SiteId == siteId, true); + var findTrialSiteUser = await _trialSiteUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true); if (findTrialSiteUser == null) { - await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId }); + await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId }); } else @@ -928,7 +928,7 @@ namespace IRaCIS.Core.Application.Contracts var userIdList = list.Select(t => t.SystemUserId).ToList(); - await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.SiteId == siteId && userIdList.Contains(t.UserId), c => new TrialSiteUser() + await _trialSiteUserRepository.UpdatePartialFromQueryAsync(t => t.TrialId == trialId && t.TrialSiteId == siteId && userIdList.Contains(t.UserId), c => new TrialSiteUser() { IsDeleted = true, DeletedTime = DateTime.Now, @@ -988,7 +988,7 @@ namespace IRaCIS.Core.Application.Contracts } var userId = sysUserInfo.Id; - var siteId = item.SiteId; + var trialSiteId = item.TrialSiteId; //判断是否加入到项目 var findTrialUser = await _trialUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId, true); @@ -1012,11 +1012,11 @@ namespace IRaCIS.Core.Application.Contracts } - var findTrialSiteUser = await _trialSiteUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.SiteId == siteId, true); + var findTrialSiteUser = await _trialSiteUserRepository.FirstOrDefaultAsync(t => t.TrialId == trialId && t.UserId == userId && t.TrialSiteId == trialSiteId, true); if (findTrialSiteUser == null) { - await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, SiteId = siteId, UserId = userId }); + await _repository.AddAsync(new TrialSiteUser() { TrialId = trialId, TrialSiteId = trialSiteId, UserId = userId }); } else diff --git a/IRaCIS.Core.Application/Service/Third-partyProject/DTO/UltrasonicDicomViewModel.cs b/IRaCIS.Core.Application/Service/Third-partyProject/DTO/UltrasonicDicomViewModel.cs index 176a33719..1e998cb50 100644 --- a/IRaCIS.Core.Application/Service/Third-partyProject/DTO/UltrasonicDicomViewModel.cs +++ b/IRaCIS.Core.Application/Service/Third-partyProject/DTO/UltrasonicDicomViewModel.cs @@ -23,7 +23,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject.DTO [NotDefault] public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid? SubjectId { get; set; } @@ -51,7 +51,8 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject.DTO public Guid Id { get;set; } public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } + public Guid? SubjectVisitId { get; set; } public String TrialSiteCode { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs index a33e735cb..255ab1556 100644 --- a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs +++ b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs @@ -86,7 +86,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject { var visitTaskQueryable = _visitTaskRepository.Where(t => t.TrialId == queryVisitTask.TrialId && t.IsAnalysisCreate == false && t.TaskState == TaskState.Effect &&t.TaskAllocationState==TaskAllocationState.Allocated && t.SourceSubjectVisitId != null) - .WhereIf(queryVisitTask.SiteId != null, t => t.Subject.SiteId == queryVisitTask.SiteId) + .WhereIf(queryVisitTask.TrialSiteId != null, t => t.Subject.TrialSiteId == queryVisitTask.TrialSiteId) .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) @@ -116,7 +116,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject select new StudyDTO_UltrasonicDicom() { TrialId = dicomStudy.TrialId, - SiteId = dicomStudy.SiteId, + TrialSiteId = dicomStudy.Subject.TrialSiteId, SubjectId = dicomStudy.SubjectId, SubjectVisitId = dicomStudy.SubjectVisitId, VisitName = dicomStudy.SubjectVisit.VisitName, @@ -136,9 +136,9 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject StudyTime = dicomStudy.StudyTime, - TrialSiteAliasName = dicomStudy.TrialSite.TrialSiteAliasName, + TrialSiteAliasName = dicomStudy.Subject.TrialSite.TrialSiteAliasName, - TrialSiteCode = dicomStudy.TrialSite.TrialSiteCode, + TrialSiteCode = dicomStudy.Subject.TrialSite.TrialSiteCode, Uploader = dicomStudy.Uploader.UserName, @@ -255,7 +255,6 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString()); study.TrialId = incommand.TrialId; - study.SiteId = incommand.SiteId; study.SubjectId = incommand.SubjectId; study.SubjectVisitId = incommand.SubjectVisitId; @@ -279,7 +278,6 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject series.StudyId = study.Id; series.TrialId = incommand.TrialId; - series.SiteId = incommand.SiteId; series.SubjectId = incommand.SubjectId; series.SubjectVisitId = incommand.SubjectVisitId; @@ -296,7 +294,6 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject isntance.SeriesId = series.Id; isntance.TrialId = incommand.TrialId; - isntance.SiteId = incommand.SiteId; isntance.SubjectId = incommand.SubjectId; isntance.SubjectVisitId = incommand.SubjectVisitId; @@ -340,7 +337,6 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject series.StudyId = study.Id; series.TrialId = incommand.TrialId; - series.SiteId = incommand.SiteId; series.SubjectId = incommand.SubjectId; series.SubjectVisitId = incommand.SubjectVisitId; @@ -364,7 +360,6 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject insntance.SeriesId = dicomSeries.Id; insntance.TrialId = incommand.TrialId; - insntance.SiteId = incommand.SiteId; insntance.SubjectId = incommand.SubjectId; insntance.SubjectVisitId = incommand.SubjectVisitId; diff --git a/IRaCIS.Core.Application/Service/Third-partyProject/_MapConfig.cs b/IRaCIS.Core.Application/Service/Third-partyProject/_MapConfig.cs index e9cd0ad3c..2b0f49dee 100644 --- a/IRaCIS.Core.Application/Service/Third-partyProject/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Third-partyProject/_MapConfig.cs @@ -18,7 +18,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(o => o.SubjectVisitId, t => t.MapFrom(u => u.SourceSubjectVisitId)) - .ForMember(o => o.SiteId, t => t.MapFrom(u => u.Subject.SiteId)) + .ForMember(o => o.TrialSiteId, t => t.MapFrom(u => u.Subject.TrialSiteId)) .ForMember(o => o.TrialSiteCode, t => t.MapFrom(u => u.Subject.TrialSite.TrialSiteCode)) .ForMember(o => o.SubjectCode, t => t.MapFrom(u => u.Subject.Code)) .ForMember(o => o.UserName, t => t.MapFrom(u => u.DoctorUser.UserName)) diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs index ca5d4e631..13355c066 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialExternalUserViewModel.cs @@ -135,8 +135,6 @@ namespace IRaCIS.Core.Application.ViewModel //[NotDefault] //public Guid TrialId { get; set; } - //[NotDefault] - //public Guid SiteId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialResearchCenter.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialResearchCenter.cs index 65d28aaab..70e7a607a 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialResearchCenter.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialResearchCenter.cs @@ -7,7 +7,7 @@ namespace IRaCIS.Application.Contracts { public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string MainCenter { get; set; } = string.Empty; public DateTime OptTime { get; set; } public int State { get; set; } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialSiteViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialSiteViewModel.cs index 4d6f03f16..864bb7c5e 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialSiteViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialSiteViewModel.cs @@ -38,7 +38,7 @@ namespace IRaCIS.Core.Application.Contracts.DTO public class TrialSiteCommand { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SiteName { get; set; } @@ -54,6 +54,9 @@ namespace IRaCIS.Core.Application.Contracts.DTO public Guid Id { get; set; } + + public string TrialSiteName { get; set; } = String.Empty; + public string TrialSiteAliasName { get; set; } = String.Empty; public string TrialSiteCode { get; set; } = String.Empty; @@ -65,7 +68,7 @@ namespace IRaCIS.Core.Application.Contracts.DTO public class AssginSiteCRCCommand { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid UserId { get; set; } public DateTime? CreateTime { get; set; } = DateTime.Now; public string UserRealName { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialUserPreparationViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialUserPreparationViewModel.cs index 503e64c08..6bd5705cd 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialUserPreparationViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialUserPreparationViewModel.cs @@ -60,7 +60,7 @@ namespace IRaCIS.Core.Application.ViewModel [NotDefault] public Guid UserId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public bool IsExternal { get; set; } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs index 9426b66dc..b331f6278 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/UserTrialViewModel.cs @@ -25,7 +25,7 @@ namespace IRaCIS.Application.Contracts [ExcelFormat("yyyy-MM-dd HH:mm:ss")] public DateTime? DeletedTime { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public string Phone { get; set; } = String.Empty; public DateTime UpdateTime { get; set; } @@ -186,7 +186,7 @@ namespace IRaCIS.Application.Contracts public class SiteCRCCommand : UserTrialCommand { - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid UserTypeId { get; set; } public string UserType { get; set; } = String.Empty; @@ -229,7 +229,7 @@ namespace IRaCIS.Application.Contracts { public Guid Id { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public int? UserCount { get; set; } @@ -304,7 +304,7 @@ namespace IRaCIS.Application.Contracts public class SiteCRCQuery : TrialMaintenanceQuery { - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } } diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs index 1881baa25..0629f5579 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialMaintenanceService.cs @@ -107,7 +107,7 @@ namespace IRaCIS.Application.Services .WhereIf(param.UserTypeId != null, t => t.User.UserTypeId == param.UserTypeId) .WhereIf(!string.IsNullOrWhiteSpace(param.UserRealName), t => (t.User.FullName).Contains(param.UserRealName)) .WhereIf(!string.IsNullOrWhiteSpace(param.OrganizationName), t => t.User.OrganizationName.Contains(param.OrganizationName)) - .ProjectTo(_mapper.ConfigurationProvider, new { siteId = param.SiteId }); + .ProjectTo(_mapper.ConfigurationProvider, new { trialSiteId = param.TrialSiteId }); return await query.ToPagedListAsync(param.PageIndex, param.PageSize, string.IsNullOrWhiteSpace(param.SortField) ? "UpdateTime" : param.SortField, param.Asc); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs index 6d3b7845f..a7742c468 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialSiteService.cs @@ -30,103 +30,6 @@ namespace IRaCIS.Core.Application.Services } - #region 移动废弃 - - ///// - ///// Site用户列表导出 - ///// - ///// - ///// - ///// - ///// - //[HttpPost] - //[AllowAnonymous] - //public async Task TrialSiteUserListExport(SiteCRCExportQueryDTO param, [FromServices] IRepository _commonDocumentRepository, [FromServices] IDictionaryService _dictionaryService) - //{ - - // var exportInfo = (await _trialRepository.Where(t => t.Id == param.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - - // exportInfo.List = await _trialSiteUserRepository.Where(t => t.TrialId == param.TrialId).IgnoreQueryFilters() - // .WhereIf(param.IsDeleted != null, t => t.IsDeleted == param.IsDeleted) - // .WhereIf(!string.IsNullOrWhiteSpace(param.SiteName), t => t.Site.SiteName.Contains(param.SiteName)) - // .WhereIf(!string.IsNullOrWhiteSpace(param.TrialSiteAliasName), - // t => t.TrialSite.TrialSiteAliasName.Contains(param.TrialSiteAliasName)) - // .WhereIf(!string.IsNullOrWhiteSpace(param.TrialSiteCode), - // t => t.TrialSite.TrialSiteCode.Contains(param.TrialSiteCode)) - // .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator, - // t => t.UserId == _userInfo.Id) - // .WhereIf(!string.IsNullOrWhiteSpace(param.UserKeyInfo), t => (t.User.FullName).Contains(param.UserKeyInfo) - // || t.User.UserName.Contains(param.UserKeyInfo) || t.User.EMail.Contains(param.UserKeyInfo)) - - // .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); - - // exportInfo.IsEn_US = _userInfo.IsEn_Us; - // return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSiteUserList_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment,_dictionaryService,typeof(SiteUserExportDTO)); - - //} - - ///// - ///// Site用户汇总表导出 - ///// - ///// - ///// - ///// - ///// - ///// - ///// - ///// - //[HttpPost] - //[AllowAnonymous] - //public async Task TrialSiteUserSummaryListExport(TrialSiteUserSurveyExportQueryDto queryParam, - // [FromServices] IRepository _commonDocumentRepository, - // [FromServices] IRepository _trialSiteSurveyRepository, - // [FromServices] IRepository _trialSiteUserSurveyRepository - // , [FromServices] IDictionaryService _dictionaryService - //) - //{ - - // var data = (await _trialRepository.Where(t => t.Id == queryParam.TrialId).IgnoreQueryFilters().ProjectTo(_mapper.ConfigurationProvider).FirstOrDefaultAsync()).IfNullThrowException(); - - // var groupSelectIdQuery = - // _trialSiteSurveyRepository.Where(t => t.TrialId == queryParam.TrialId) - // .WhereIf(queryParam.SiteId != null, t => t.SiteId == queryParam.SiteId) - // .WhereIf(!string.IsNullOrEmpty(queryParam.FormWriterKeyInfo), t => (t.UserName).Contains(queryParam.FormWriterKeyInfo) || t.Email.Contains(queryParam.FormWriterKeyInfo) || t.Phone.Contains(queryParam.FormWriterKeyInfo)) - // .GroupBy(t => t.SiteId) - // .Select(g => g.OrderByDescending(u => u.CreateTime).Select(t => t.Id).First()); - - - // var query = _trialSiteUserSurveyRepository - // .Where(t => groupSelectIdQuery.Contains(t.TrialSiteSurveyId)) - // .WhereIf(queryParam.UserTypeId != null, t => t.UserTypeId == queryParam.UserTypeId) - // .WhereIf(queryParam.IsGenerateAccount != null, t => t.IsGenerateAccount == queryParam.IsGenerateAccount) - // .WhereIf(queryParam.TrialRoleNameId != null, t => t.TrialRoleNameId == queryParam.TrialRoleNameId) - // .WhereIf(queryParam.State != null && queryParam.State != TrialSiteUserStateEnum.OverTime, t => t.InviteState == queryParam.State) - // .WhereIf(queryParam.State != null && queryParam.State == TrialSiteUserStateEnum.OverTime, t => t.InviteState == TrialSiteUserStateEnum.HasSend && t.ExpireTime < DateTime.Now) - // .WhereIf(!string.IsNullOrEmpty(queryParam.UserName), t => (t.LastName + " / " + t.FirstName).Contains(queryParam.UserName)) - // .WhereIf(!string.IsNullOrEmpty(queryParam.OrganizationName), t => t.OrganizationName.Contains(queryParam.OrganizationName)) - // .ProjectTo(_mapper.ConfigurationProvider); - - // data.List = await query.ToListAsync(); - - - - // var exportInfo = data; - - // exportInfo.IsEn_US = _userInfo.IsEn_Us; - // return await ExcelExportHelper.DataExportAsync(StaticData.Export.TrialSiteUserSummary_Export, exportInfo, exportInfo.TrialCode, _commonDocumentRepository, _hostEnvironment,_dictionaryService,typeof(TrialSiteUserSummaryDto)); - - //} - - - - - #endregion - - - - - - /// Pannel 进去 SiteTab [HttpPost] @@ -179,7 +82,7 @@ namespace IRaCIS.Core.Application.Services [HttpGet, Route("{trialId:guid}/{siteId:guid}")] public async Task> GetTrialSiteCRCList(Guid trialId, Guid siteId) { - var query = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.SiteId == siteId).IgnoreQueryFilters() + var query = _trialSiteUserRepository.Where(t => t.TrialId == trialId && t.TrialSiteId == siteId).IgnoreQueryFilters() .ProjectTo(_mapper.ConfigurationProvider); return await query.ToListAsync(); @@ -241,28 +144,24 @@ namespace IRaCIS.Core.Application.Services if (dbEntity == null) return Null404NotFound(dbEntity); var trialId = dbEntity.TrialId; - var siteId = dbEntity.SiteId; + var trialSiteId = dbEntity.Id; if (editTrialSiteCommand.IsDeleted) { - //if (await _repository.AnyAsync(t => t.TrialId == trialId && t.SiteId == siteId)) - //{ - //---The site has been associated with CRC, and couldn't be deleted. - // return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteAssociatedCRC"]); - //} + if (await _repository.AnyAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId)) + { + //---The site has been associated with CRC, and couldn't be deleted. + return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteAssociatedCRC"]); + } - if (await _repository.AnyAsync(t => t.SiteId == siteId && t.TrialId == trialId)) + if (await _repository.AnyAsync(t => t.TrialSiteId == trialSiteId && t.TrialId == trialId)) { //---The subjects has been added to this site, and couldn't be disable. return ResponseOutput.NotOk(_localizer["TrialSite_ParticipantJoined"]); } - //if (await _repository.AnyAsync(t => t.SiteId == siteId && t.TrialId == trialId)) - //{ - //---The site has been uploaded study, and couldn't be deleted. - // return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteUploadedData"]); - //} + } @@ -387,24 +286,19 @@ namespace IRaCIS.Core.Application.Services if (relation == null) return Null404NotFound(relation); var trialId = relation.TrialId; - var siteId = relation.SiteId; + var trialSiteId = relation.Id; - if (await _repository.AnyAsync(t => t.TrialId == trialId && t.SiteId == siteId)) + if (await _repository.AnyAsync(t => t.TrialId == trialId && t.TrialSiteId == trialSiteId)) { //---The site has been associated with CRC, and couldn't be deleted. return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteAssociatedCRC"]); } - if (await _repository.AnyAsync(t => t.SiteId == siteId && t.TrialId == trialId)) + if (await _repository.AnyAsync(t => t.TrialSiteId == trialSiteId && t.TrialId == trialId)) { //---The subjects has been added to this site, and couldn't be deleted. return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteAssociatedSubject"]); } - if (await _repository.AnyAsync(t => t.SiteId == siteId && t.TrialId == trialId)) - { - //---The site has been uploaded study, and couldn't be deleted. - return ResponseOutput.NotOk(_localizer["TrialSite_CannotDeleteUploadedData"]); - } await _repository.DeleteAsync(relation); diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index 9b8701c4e..8d58678a2 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -91,12 +91,12 @@ namespace IRaCIS.Core.Application.Service .ForMember(t => t.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName)); CreateMap(); - var siteId = Guid.Empty; + var trialSiteId = Guid.Empty; CreateMap().IncludeMembers(t => t.User) .ForMember(d => d.UserRealName, u => u.MapFrom(s => s.User.FullName)) - .ForMember(d => d.SiteId, u => u.MapFrom(t => siteId)) + .ForMember(d => d.TrialSiteId, u => u.MapFrom(t => trialSiteId)) .ForMember(d => d.UserType, u => u.MapFrom(t => t.User.UserTypeRole.UserTypeShortName)) - .ForMember(d => d.IsSelect, u => u.MapFrom(t => t.SiteList.Any(k => k.SiteId == siteId))); + .ForMember(d => d.IsSelect, u => u.MapFrom(t => t.SiteList.Any(k => k.TrialSiteId == trialSiteId))); CreateMap(); var trialId = Guid.Empty; @@ -305,8 +305,8 @@ namespace IRaCIS.Core.Application.Service .ForMember(t => t.ApprovalRequiredSiteCount, u => u.MapFrom(c => userTypeEnumInt == (int)UserTypeEnum.ProjectManager || userTypeEnumInt == (int)UserTypeEnum.APM ? - c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.SPMApproved).Select(t => t.SiteId).Distinct().Count() - : c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.CRCSubmitted).Select(t => t.SiteId).Distinct().Count()) + c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.SPMApproved).Select(t => t.TrialSiteId).Distinct().Count() + : c.TrialSiteSurveyList.Where(t => t.State == TrialSiteSurveyEnum.CRCSubmitted).Select(t => t.TrialSiteId).Distinct().Count()) ) ; diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs b/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs index 9bf61343c..fc1155c32 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/ClinicalStudySubjects.cs @@ -13,7 +13,9 @@ namespace IRaCIS.Application.Contracts public int? Age { get; set; } public string Sex { get; set; } = string.Empty; - public Guid SiteId { get; set; } + + [NotDefault] + public Guid TrialSiteId { get; set; } public Guid TrialId { get; set; } public string MedicalNo { get; set; } = string.Empty; @@ -51,7 +53,7 @@ namespace IRaCIS.Application.Contracts [NotDefault] public Guid TrialId { get; set; } [NotDefault] - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public SubjectStatus Status { get; set; } public DateTime? OutEnrollmentTime { get; set; } @@ -151,7 +153,7 @@ namespace IRaCIS.Application.Contracts public bool? IsMissingImages { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public SubjectStatus? Status { get; set; } } diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs index 0a8ecb67e..00bfd5a2d 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs @@ -9,6 +9,8 @@ namespace IRaCIS.Core.Application.Contracts { public class SubjectVisitCommand { + [NotDefault] + public Guid TrialSiteId { get; set; } public bool IsFinalVisit { get; set; } public string BlindName { get; set; } = string.Empty; @@ -16,7 +18,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? Id { get; set; } public Guid TrialId { get; set; } public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + public bool InPlan { get; set; } = true; public VisitExecutedEnum VisitExecuted { get; set; } public decimal VisitNum { get; set; } @@ -128,7 +130,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid? SubjectId { get; set; } public Guid TrialId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } } public class SubjectVisitSelectItem @@ -289,17 +291,7 @@ namespace IRaCIS.Core.Application.Contracts public Guid SubjectVisitId { get; set; } public string StudyInstanceUid { get; set; } = String.Empty; - - - - //public Guid TrialId { get; set; } - //public Guid SiteId { get; set; } - //public Guid SubjectId { get; set; } - //public DateTime? SVSTDTC { get; set; } - //public DateTime? SVENDTC { get; set; } - - //public string DTFPath { get; set; } - //public string FileRealName { get; set; } + } @@ -307,7 +299,7 @@ namespace IRaCIS.Core.Application.Contracts public class UploadDTFCommand { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } @@ -318,7 +310,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid Id { get; set; } = Guid.Empty; public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } @@ -490,7 +482,7 @@ namespace IRaCIS.Core.Application.Contracts //public List DistributeReviewers { get; set; }=new List(); - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SiteName { get; set; } = String.Empty; public string InstitutionName { get; set; } = String.Empty; public string StudyId { get; set; } = String.Empty;//这个Id是dicom文件中的Id @@ -539,7 +531,7 @@ namespace IRaCIS.Core.Application.Contracts { public Guid? SubjectId { get; set; } - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } public Guid TrialId { get; set; } public string SubjectInfo { get; set; } = String.Empty; diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs index d9b8039c3..b8e0da4b1 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectService.cs @@ -118,7 +118,7 @@ namespace IRaCIS.Application.Services .WhereIf(!string.IsNullOrWhiteSpace(param.Sex), t => t.Sex.Contains(param.Sex)) .WhereIf(param.Status != null, t => t.Status == param.Status) - .WhereIf(param.SiteId != null, t => t.SiteId == param.SiteId) + .WhereIf(param.TrialSiteId != null, t => t.TrialSiteId == param.TrialSiteId) // CRC 只负责他管理site的受试者 .WhereIf(_userInfo.UserTypeEnumInt == (int)UserTypeEnum.ClinicalResearchCoordinator || _userInfo.UserTypeEnumInt == (int)UserTypeEnum.CRA, t => t.TrialSite.CRCUserList.Any(t => t.UserId == _userInfo.Id)) .ProjectTo(_mapper.ConfigurationProvider) @@ -141,7 +141,7 @@ namespace IRaCIS.Application.Services [HttpGet("{siteId:guid}/{trialId:guid}")] public List GetSubjectListBySiteId(Guid siteId, Guid trialId) { - var query = _subjectRepository.Where(t => t.SiteId == siteId && t.TrialId == trialId && t.Status == SubjectStatus.OnVisit).Select(u => new SubjectSelect() + var query = _subjectRepository.Where(t => t.TrialSiteId == siteId && t.TrialId == trialId && t.Status == SubjectStatus.OnVisit).Select(u => new SubjectSelect() { Code = u.Code, FirstName = u.FirstName, diff --git a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs index f2388af05..7230e193f 100644 --- a/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs +++ b/IRaCIS.Core.Application/Service/Visit/SubjectVisitService.cs @@ -669,7 +669,6 @@ namespace IRaCIS.Core.Application.Services Modality=item.Modalities, StudyId=item.StudyId, TrialId=nodicom.TrialId, - SiteId=nodicom.SiteId, SubjectVisitId=nodicom.SubjectVisitId, SubjectId=nodicom.SubjectId, SeriesNumber=1, diff --git a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs index d98c37ca5..29164fa24 100644 --- a/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs +++ b/IRaCIS.Core.Application/Service/Visit/VisitPlanService.cs @@ -268,15 +268,15 @@ namespace IRaCIS.Application.Services foreach (var visitPlan in addvisitStages) { - var subjectSVS = await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId, t.IsFinalVisit }).Distinct().ToListAsync(); + var subjectSVS = await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.TrialSiteId, t.IsFinalVisit }).Distinct().ToListAsync(); - var subjectList = subjectSVS.Select(t => new { t.SubjectId, t.SiteId }).Distinct().ToList(); + var subjectList = subjectSVS.Select(t => new { t.SubjectId, t.TrialSiteId }).Distinct().ToList(); foreach (var subject in subjectList) { var svItem = _mapper.Map(visitPlan); - svItem.SiteId = subject.SiteId; + svItem.TrialSiteId = subject.TrialSiteId; svItem.SubjectId = subject.SubjectId; //设置了末次访视,那么加访视计划的时候,设置为不可用 diff --git a/IRaCIS.Core.Application/Service/WorkLoad/DTO/WorkloadDistribution.cs b/IRaCIS.Core.Application/Service/WorkLoad/DTO/WorkloadDistribution.cs index c577802bb..863e87046 100644 --- a/IRaCIS.Core.Application/Service/WorkLoad/DTO/WorkloadDistribution.cs +++ b/IRaCIS.Core.Application/Service/WorkLoad/DTO/WorkloadDistribution.cs @@ -6,7 +6,7 @@ namespace IRaCIS.Application.Contracts public class WorkloadTPDTO { public Guid Id { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SiteName { get; set; } = String.Empty; public Guid SubjectId { get; set; } public string SubjectCode { get; set; } = String.Empty; @@ -30,7 +30,7 @@ namespace IRaCIS.Application.Contracts public class WorkloadGlobalDTO { public Guid Id { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SiteName { get; set; } = String.Empty; public Guid VisitId { get; set; } public string VisitName { get; set; } = String.Empty; @@ -56,7 +56,7 @@ namespace IRaCIS.Application.Contracts { public Guid Id { get; set; } public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid TrialSiteId { get; set; } public string SiteName { get; set; }=String.Empty; public Guid SubjectId { get; set; } public string SubjectCode { get; set; } = String.Empty; @@ -76,7 +76,7 @@ namespace IRaCIS.Application.Contracts public class WorkloadDistributionQueryParam : PageInput { public Guid TrialId { get; set; } = Guid.Empty; - public Guid? SiteId { get; set; } = Guid.Empty; + public Guid? TrialSiteId { get; set; } = Guid.Empty; public string SubjectCode { get; set; } = string.Empty; public string WorkloadCode { get; set; } = string.Empty; public string Reviewer { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Application/Service/WorkLoad/WorkloadDistributionService.cs b/IRaCIS.Core.Application/Service/WorkLoad/WorkloadDistributionService.cs deleted file mode 100644 index ddc073534..000000000 --- a/IRaCIS.Core.Application/Service/WorkLoad/WorkloadDistributionService.cs +++ /dev/null @@ -1,573 +0,0 @@ -//using IRaCIS.Application.Contracts; -//using IRaCIS.Core.Application.Contracts; -//using System.Linq.Expressions; -//using IRaCIS.Core.Infrastructure.ExpressionExtend; -//using IRaCIS.Core.Infra.EFCore; -//using IRaCIS.Core.Domain.Models; -//using IRaCIS.Core.Domain.Share; -//using IRaCIS.Core.Infrastructure.Extention; -//using Microsoft.AspNetCore.Mvc; - -//namespace IRaCIS.Core.Application.Services -//{ -// /// -// /// TP、Global、AD 工作量分配查看 -// /// -// [ ApiExplorerSettings(GroupName = "Trial")] -//#pragma warning disable -// public class WorkloadDistributionService : BaseService, IWorkloadDistributionService -// { -// private readonly IWorkloadTPRepository _workloadTpRepository; -// private readonly IWorkloadGlobalRepository _workloadGlobalRepository; -// private readonly IWorkloadADRepository _workloadAdRepository; -// private readonly IRepository _subjectVisitRepository; -// private readonly IRepository _studyRepository; -// private readonly IRepository _doctorRepository; -// private readonly IRepository _subjectRepository; -// private readonly IRepository _siteRepository; -// private readonly IWorkloadDetailRepository _workloadDetailRepository; - - -// public WorkloadDistributionService(IWorkloadTPRepository workloadTpRepository, -// IWorkloadGlobalRepository workloadGlobalRepository, -// IWorkloadADRepository workloadAdRepository, -// IRepository subjectVisitRepository, IRepository studyRepository, -// IRepository doctorRepository, IRepository subjectRepository, -// IRepository siteRepository, -// IWorkloadDetailRepository workloadDetailRepository, -// IUserInfo userInfo) -// { -// _workloadTpRepository = workloadTpRepository; -// _workloadGlobalRepository = workloadGlobalRepository; -// _workloadAdRepository = workloadAdRepository; -// _subjectVisitRepository = subjectVisitRepository; -// _studyRepository = studyRepository; -// _doctorRepository = doctorRepository; -// _subjectRepository = subjectRepository; -// _siteRepository = siteRepository; -// _workloadDetailRepository = workloadDetailRepository; - -// } - -// /// -// /// 批量分配Tp -// /// -// /// -// /// -// [HttpPost] -// public IResponseOutput DistributeTP(WorkloadTPCommand workloadTPCommand) -// { -// //当前采用的是没有提示到具体的TP,如有需要在修改下 -// var studyIdList = workloadTPCommand.TpList.Select(u => u.StudyId); -// var temp = _workloadTpRepository.Where(u => studyIdList.Contains(u.StudyId) && u.ReviewerId == workloadTPCommand.ReviewerId); -// if (temp.Any() ) -// { -// return ResponseOutput.NotOk("The TPs of different Arms of the same subject couldn't be assigned to the same reviewer."); -// } -// var success = false; -// workloadTPCommand.TpList.ForEach(t => -// { -// _workloadDetailRepository.Add(new WorkloadDetail -// { -// WorkloadId = t.Id, -// OptUserName = _userInfo.RealName, -// OptTime = DateTime.Now, -// Status = (int)WorkloadStatus.Distributed, -// ReviewerId = workloadTPCommand.ReviewerId -// }); -// _workloadDetailRepository.SaveChanges(); -// success = _workloadTpRepository.Update(u => u.Id == t.Id, k => new WorkloadTP() -// { -// ReviewerId = workloadTPCommand.ReviewerId, -// Status = (int)WorkloadStatus.Distributed -// }); -// }); -// return ResponseOutput.Result(success); -// } - - -// /// -// /// 批量分配AD -// /// -// /// -// /// -// [HttpPost] -// public IResponseOutput DistributeAD(WorkloadAdCommand workloadTPCommand) -// { -// var success = false; -// workloadTPCommand.IdList.ForEach(t => -// { -// _workloadDetailRepository.Add(new WorkloadDetail -// { -// WorkloadId = t, -// OptUserName = _userInfo.RealName, -// OptTime = DateTime.Now, -// Status = (int)WorkloadStatus.Distributed, -// ReviewerId = workloadTPCommand.ReviewerId -// }); -// _workloadDetailRepository.SaveChanges(); -// success = _workloadAdRepository.Update(u => u.Id == t, k => new WorkloadAD() -// { -// ReviewerId = workloadTPCommand.ReviewerId, -// Status = (int)WorkloadStatus.Distributed -// }); -// }); -// return ResponseOutput.Result(success); -// } - -// /// -// /// 批量分配Global -// /// -// /// -// /// -// [HttpPost] -// public IResponseOutput DistributeGlobal(WorkloadGlobalCommand workloadGCommand) -// { -// var temp = _workloadGlobalRepository.Where(u => workloadGCommand.GlobalList.Select(s => s.SubjectId).Contains(u.SubjectId) -// && workloadGCommand.GlobalList.Select(s => s.VisitNum).Contains(u.VisitNum) && -// u.ReviewerId == workloadGCommand.ReviewerId); -// if (temp.Any()) -// { -// return ResponseOutput.NotOk("The Globals of different Arms of the same subject couldn't be assigned to the same reviewer."); -// } - -// var success = false; -// workloadGCommand.GlobalList.ForEach(t => -// { -// _workloadDetailRepository.Add(new WorkloadDetail -// { -// WorkloadId = t.Id, -// OptUserName = _userInfo.RealName, -// OptTime = DateTime.Now, -// Status = (int)WorkloadStatus.Distributed, -// ReviewerId = workloadGCommand.ReviewerId -// }); -// _workloadDetailRepository.SaveChanges(); -// success = _workloadGlobalRepository.Update(u => u.Id == t.Id, k => new WorkloadGlobal() -// { -// ReviewerId = workloadGCommand.ReviewerId, -// Status = (int)WorkloadStatus.Distributed -// }); -// }); -// return ResponseOutput.Result(success); -// } - -// [HttpPost] -// public PageOutput GetWorkloadGlobalList(WorkloadDistributionQueryParam param) -// { -// IQueryable query = null; -// Expression> workloadTPLambda = x => x.TrialId == param.TrialId; -// if (param.SiteId != null) -// { -// workloadTPLambda = workloadTPLambda.And(t => t.SiteId == param.SiteId); -// } - -// if (param.Status != null) -// { -// workloadTPLambda = workloadTPLambda.And(t => t.Status == param.Status); -// } -// if (!string.IsNullOrEmpty(param.WorkloadCode)) -// { -// var globalCode = param.WorkloadCode.Trim(); -// workloadTPLambda = workloadTPLambda.And(t => t.GlobalCode.Contains(globalCode)); -// } -// if (param.GroupId != null && param.GroupId > 0) -// { -// var groupCode = "G0" + param.GroupId; -// workloadTPLambda = workloadTPLambda.And(t => t.GlobalCode.Contains(groupCode)); -// } - -// Expression> subjectLambda = x => x.TrialId == param.TrialId; -// if (!string.IsNullOrEmpty(param.SubjectCode)) -// { -// var subjectCode = param.SubjectCode.Trim(); -// subjectLambda = subjectLambda.And(t => t.Code.Contains(subjectCode)); -// } -// Expression> doctorLambda = x => true; -// if (!string.IsNullOrEmpty(param.Reviewer)) -// { -// var reviewer = param.Reviewer.Trim(); - -// doctorLambda = doctorLambda.And(t => t.ChineseName.Contains(reviewer) -// || t.FirstName.Contains(reviewer) || t.LastName.Contains(reviewer)); -// query = from workloadG in _workloadGlobalRepository.Where(workloadTPLambda) -// join subject in _subjectRepository.Where(subjectLambda) on workloadG.SubjectId equals subject.Id -// join site in _siteRepository.AsQueryable() on workloadG.SiteId equals site.Id -// join doctor in _doctorRepository.Where(doctorLambda) on workloadG.ReviewerId equals doctor.Id -// select new WorkloadGlobalDTO() -// { -// Id = workloadG.Id, -// ReviewerCode = doctor.ReviewerCode, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerId = doctor.Id, -// ReviewerLastName = doctor.LastName, -// SiteId = workloadG.SiteId, -// SiteName = site.SiteName, -// Status = workloadG.Status, -// GlobalCode = workloadG.GlobalCode, -// SubjectCode = subject.Code, -// VisitId = workloadG.VisitId, -// UpdateTime = workloadG.UpdateTime, -// SubjectId = workloadG.SubjectId, -// VisitNum = workloadG.VisitNum, -// VisitName = workloadG.VisitName -// }; -// } -// else -// { -// query = from workloadG in _workloadGlobalRepository.Where(workloadTPLambda) -// join subject in _subjectRepository.Where(subjectLambda) on workloadG.SubjectId equals subject.Id -// join site in _siteRepository.AsQueryable() on workloadG.SiteId equals site.Id -// join doctor in _doctorRepository.Where(doctorLambda) on workloadG.ReviewerId equals doctor.Id into cc -// from doctor in cc.DefaultIfEmpty() -// select new WorkloadGlobalDTO() -// { -// Id = workloadG.Id, -// ReviewerCode = doctor.ReviewerCode, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerId = doctor.Id, -// ReviewerLastName = doctor.LastName, -// SiteId = workloadG.SiteId, -// SiteName = site.SiteName, -// Status = workloadG.Status, -// GlobalCode = workloadG.GlobalCode, -// SubjectCode = subject.Code, -// VisitId = workloadG.VisitId, -// UpdateTime = workloadG.UpdateTime, -// SubjectId = workloadG.SubjectId, -// VisitNum = workloadG.VisitNum, -// VisitName = workloadG.VisitName -// }; -// } - -// var count = query.Count(); - -// var propName = param.SortField == string.Empty ? "GlobalCode" : param.SortField; - -// query = param.Asc -// ? query.OrderBy(propName).ThenBy(t => t.SiteName).ThenBy(t => t.SubjectCode) -// : query.OrderByDescending(propName).ThenBy(t => t.SiteName).ThenBy(t => t.SubjectCode); - -// query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize); -// var list = query.ToList(); - -// return new PageOutput(param.PageIndex, -// param.PageSize, count, list); -// } - -// [HttpPost] -// public PageOutput GetWorkloadADList(WorkloadDistributionQueryParam param) -// { -// IQueryable query = null; -// Expression> workloadAdLambda = x => x.TrialId == param.TrialId; -// if (param.SiteId != null) -// { -// workloadAdLambda = workloadAdLambda.And(t => t.SiteId == param.SiteId); -// } - -// if (param.Status != null) -// { -// workloadAdLambda = workloadAdLambda.And(t => t.Status == param.Status); -// } -// if (!string.IsNullOrEmpty(param.WorkloadCode)) -// { -// var adCode = param.WorkloadCode.Trim(); -// workloadAdLambda = workloadAdLambda.And(t => t.ADCode.Contains(adCode)); -// } - -// Expression> subjectLambda = x => x.TrialId == param.TrialId; -// if (!string.IsNullOrEmpty(param.SubjectCode)) -// { -// var subjectCode = param.SubjectCode.Trim(); -// subjectLambda = subjectLambda.And(t => t.Code.Contains(subjectCode)); - -// } -// Expression> doctorLambda = x => true; -// if (!string.IsNullOrEmpty(param.Reviewer)) -// { -// var reviewer = param.Reviewer.Trim(); -// doctorLambda = doctorLambda.And(t => t.ChineseName.Contains(reviewer) -// || t.FirstName.Contains(reviewer) || t.LastName.Contains(reviewer)); -// query = from workloadAd in _workloadAdRepository.Where(workloadAdLambda) -// join subject in _subjectRepository.Where(subjectLambda) on workloadAd.SubjectId equals subject.Id -// join site in _siteRepository.AsQueryable() on workloadAd.SiteId equals site.Id -// join doctor in _doctorRepository.Where(doctorLambda) on workloadAd.ReviewerId equals doctor.Id -// select new WorkloadADDTO() -// { -// Id = workloadAd.Id, -// ReviewerCode = doctor.ReviewerCode, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerId = doctor.Id, -// ReviewerLastName = doctor.LastName, -// SiteId = workloadAd.SiteId, -// SiteName = site.SiteName, -// Status = workloadAd.Status, -// ADCode = workloadAd.ADCode, -// SubjectCode = subject.Code, -// SubjectId = workloadAd.SubjectId, -// UpdateTime = workloadAd.UpdateTime -// }; -// } -// else -// { -// query = from workloadAd in _workloadAdRepository.Where(workloadAdLambda) -// join subject in _subjectRepository.Where(subjectLambda) on workloadAd.SubjectId equals subject.Id - -// join site in _siteRepository.AsQueryable() on workloadAd.SiteId equals site.Id -// join doctor in _doctorRepository.Where(doctorLambda) on workloadAd.ReviewerId equals doctor.Id into cc -// from doctor in cc.DefaultIfEmpty() -// select new WorkloadADDTO() -// { -// Id = workloadAd.Id, -// ReviewerCode = doctor.ReviewerCode, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerId = doctor.Id, -// ReviewerLastName = doctor.LastName, -// SiteId = workloadAd.SiteId, -// SiteName = site.SiteName, -// Status = workloadAd.Status, -// ADCode = workloadAd.ADCode, -// SubjectCode = subject.Code, -// SubjectId = workloadAd.SubjectId, -// UpdateTime = workloadAd.UpdateTime -// }; - -// } -// var count = query.Count(); - -// var propName = param.SortField == string.Empty ? "ADCode" : param.SortField; - -// query = param.Asc -// ? query.OrderBy(propName).ThenBy(t => t.SiteName).ThenBy(t => t.SubjectCode) -// : query.OrderByDescending(propName).ThenBy(t => t.SiteName).ThenBy(t => t.SubjectCode); - -// query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize); -// var list = query.ToList(); - -// return new PageOutput(param.PageIndex, -// param.PageSize, count, list); -// } - -// [HttpPost] -// public PageOutput GetWorkloadTPList(WorkloadDistributionQueryParam param) -// { -// IQueryable query = null; -// Expression> workloadTPLambda = x => x.TrialId == param.TrialId; -// if (param.SiteId != null) -// { -// workloadTPLambda = workloadTPLambda.And(t => t.SiteId == param.SiteId); -// } - -// if (param.Status != null) -// { -// workloadTPLambda = workloadTPLambda.And(t => t.Status == param.Status); -// } -// if (!string.IsNullOrEmpty(param.WorkloadCode)) -// { -// var timepoint = param.WorkloadCode.Trim(); - -// workloadTPLambda = workloadTPLambda.And(t => t.TimepointCode.Contains(timepoint)); -// } -// if (param.GroupId != null && param.GroupId > 0) -// { -// var groupCode = "T0" + param.GroupId; -// workloadTPLambda = workloadTPLambda.And(t => t.TimepointCode.Contains(groupCode)); -// } - -// Expression> subjectLambda = x => x.TrialId == param.TrialId; -// if (!string.IsNullOrEmpty(param.SubjectCode)) -// { -// var subjectCode = param.SubjectCode.Trim(); -// subjectLambda = subjectLambda.And(t => t.Code.Contains(subjectCode)); -// } -// Expression> doctorLambda = x => true; -// if (!string.IsNullOrEmpty(param.Reviewer)) -// { -// var reviewer = param.Reviewer.Trim(); -// doctorLambda = doctorLambda.And(t => t.ChineseName.Contains(reviewer) -// || t.FirstName.Contains(reviewer) || t.LastName.Contains(reviewer)); -// query = from workloadTp in _workloadTpRepository.Where(workloadTPLambda) -// join subject in _subjectRepository.Where(subjectLambda) on workloadTp.SubjectId equals subject.Id -// join subjectVisit in _subjectVisitRepository.AsQueryable() on workloadTp.SubjectVisitId equals subjectVisit.Id -// join study in _studyRepository.AsQueryable() on workloadTp.StudyId equals study.Id -// join site in _siteRepository.AsQueryable() on workloadTp.SiteId equals site.Id -// join doctor in _doctorRepository.Where(doctorLambda) on workloadTp.ReviewerId equals doctor.Id - -// select new WorkloadTPDTO() -// { -// Id = workloadTp.Id, -// ReviewerCode = doctor.ReviewerCode, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerId = doctor.Id, -// ReviewerLastName = doctor.LastName, -// SiteId = workloadTp.SiteId, -// SiteName = site.SiteName, -// Status = workloadTp.Status, -// StudyCode = study.StudyCode, -// StudyId = workloadTp.StudyId, -// TimepointCode = workloadTp.TimepointCode, -// SubjectCode = subject.Code, -// SubjectVisitId = workloadTp.SubjectVisitId, -// SubjectId = workloadTp.SubjectId, -// VisitNum = subjectVisit.VisitNum, -// VisitName = subjectVisit.VisitName, -// UpdateTime = workloadTp.UpdateTime -// }; -// } -// else -// { -// query = from workloadTp in _workloadTpRepository.Where(workloadTPLambda) -// join subject in _subjectRepository.Where(subjectLambda) on workloadTp.SubjectId equals subject.Id -// join subjectVisit in _subjectVisitRepository.AsQueryable() on workloadTp.SubjectVisitId equals subjectVisit.Id -// join study in _studyRepository.AsQueryable() on workloadTp.StudyId equals study.Id -// join site in _siteRepository.AsQueryable() on workloadTp.SiteId equals site.Id -// join doctor in _doctorRepository.Where(doctorLambda) on workloadTp.ReviewerId equals doctor.Id into cc -// from doctor in cc.DefaultIfEmpty() -// select new WorkloadTPDTO() -// { -// Id = workloadTp.Id, -// ReviewerCode = doctor.ReviewerCode, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerId = doctor.Id, -// ReviewerLastName = doctor.LastName, -// SiteId = workloadTp.SiteId, -// SiteName = site.SiteName, -// Status = workloadTp.Status, -// StudyCode = study.StudyCode, -// StudyId = workloadTp.StudyId, -// TimepointCode = workloadTp.TimepointCode, -// SubjectCode = subject.Code, -// SubjectVisitId = workloadTp.SubjectVisitId, -// SubjectId = workloadTp.SubjectId, -// VisitNum = subjectVisit.VisitNum, -// VisitName = subjectVisit.VisitName, -// UpdateTime = workloadTp.UpdateTime -// }; - -// } -// var count = query.Count(); - -// var propName = param.SortField == string.Empty ? "TimepointCode" : param.SortField; -// query = param.Asc -// ? query.OrderBy(propName).ThenBy(t => t.SiteName).ThenBy(t => t.SubjectCode) -// : query.OrderByDescending(propName).ThenBy(t => t.SiteName).ThenBy(t => t.SubjectCode); -// query = query.Skip((param.PageIndex - 1) * param.PageSize).Take(param.PageSize); -// var list = query.ToList(); - -// return new PageOutput(param.PageIndex, -// param.PageSize, count, list); -// } - -// //修改单个TP -// [HttpPost("{tpId:guid}/{reviewerId:guid}")] -// public IResponseOutput UpdateDistributeAD(Guid tpId, Guid reviewerId) -// { -// _workloadDetailRepository.Add(new WorkloadDetail -// { -// WorkloadId = tpId, -// OptUserName = _userInfo.RealName, -// OptTime = DateTime.Now, -// Status = (int)WorkloadStatus.Distributed, -// ReviewerId = reviewerId -// }); -// _workloadDetailRepository.SaveChanges(); -// var success= _workloadAdRepository.Update(t => t.Id == tpId, u => new WorkloadAD() -// { -// ReviewerId = reviewerId, -// Status = (int)WorkloadStatus.Distributed -// }); - -// return ResponseOutput.Result(success); -// } - -// //修改单个Global -// [HttpPost("{tpId:guid}/{reviewerId:guid}/{subjectId:guid}/{visitNum}")] -// public IResponseOutput UpdateDistributeGlobal(Guid tpId, Guid reviewerId, Guid subjectId, decimal visitNum) -// { -// var temp = _workloadGlobalRepository.Where(u => u.SubjectId == subjectId && -// u.VisitNum == visitNum && -// u.ReviewerId == reviewerId && u.Id != tpId); -// if (temp.Any()) -// { -// return ResponseOutput.NotOk("The Global of the other arm of this subject has already been assigned to this reviewer, and the assignment couldn't be performed."); -// } - -// _workloadDetailRepository.Add(new WorkloadDetail -// { -// WorkloadId = tpId, -// OptUserName = _userInfo.RealName, -// OptTime = DateTime.Now, -// Status = (int)WorkloadStatus.Distributed, -// ReviewerId = reviewerId -// }); -// _workloadDetailRepository.SaveChanges(); -// return ResponseOutput.Result(_workloadGlobalRepository.Update(t => t.Id == tpId, u => new WorkloadGlobal() -// { -// ReviewerId = reviewerId, -// Status = (int)WorkloadStatus.Distributed -// })); -// } - -// //修改单个TP -// [HttpPost("{tpId:guid}/{reviewerId:guid}/{studyId:guid}")] -// public IResponseOutput UpdateDistributeTP(Guid tpId, Guid reviewerId, Guid studyId) -// { -// var temp = _workloadTpRepository.Where(u => u.StudyId == studyId && u.ReviewerId == reviewerId && u.Id != tpId); -// if (temp.Any()) -// { -// return ResponseOutput.NotOk("The TP of the other arm of this subject has already been assigned to this reviewer, and the assignment couldn't be performed."); -// } - -// _workloadDetailRepository.Add(new WorkloadDetail -// { -// WorkloadId = tpId, -// OptUserName = _userInfo.RealName, -// OptTime = DateTime.Now, -// Status = (int)WorkloadStatus.Distributed, -// ReviewerId = reviewerId -// }); -// _workloadDetailRepository.SaveChanges(); -// return ResponseOutput.Result(_workloadTpRepository.Update(t => t.Id == tpId, u => new WorkloadTP() -// { -// ReviewerId = reviewerId, -// Status = (int)WorkloadStatus.Distributed -// })); -// } - -// [HttpGet("{workloadId:guid}")] -// public IResponseOutput> GetWorkloadDetail(Guid workloadId) -// { -// IQueryable query = null; -// query = from detail in _workloadDetailRepository.Where(u => u.WorkloadId == workloadId) -// join doctor in _doctorRepository.AsQueryable() on detail.ReviewerId equals doctor.Id into cc -// from doctor in cc.DefaultIfEmpty() -// select new WorkloadDetailDTO() -// { -// OptTime = detail.OptTime, -// OptUserName = detail.OptUserName, -// ReviewerChineseName = doctor.ChineseName, -// ReviewerFirstName = doctor.FirstName, -// ReviewerLastName = doctor.LastName, -// Status = detail.Status -// }; -// var list = query.OrderByDescending(u => u.OptTime).ToList(); -// return ResponseOutput.Ok(list); -// } - -// [HttpPost("UpdateGlobalStatus/{globalId:guid}")] -// public IResponseOutput UpdateGlobalStatus(Guid globalId) -// { -// return ResponseOutput.Result(_workloadGlobalRepository.Update(u => u.Id == globalId, t => new WorkloadGlobal() -// { -// Status = 0 -// })); -// } - -// } -//} diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 23f24e1e9..70d4595ed 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -271,13 +271,7 @@ namespace IRaCIS.Application.Services var c = MD5Helper.Md5("123456"); - //update DicomInstance set Path = '/IRaCISData/TrialData/' + cast(DicomInstance.TrialId as varchar) + '/' + DicomInstance.SiteId + '/' + DicomInstance.SubjectId + '/' + DicomInstance.SubjectVisitId + '/Dicom/' + DicomInstance.StudyId + '/' + DicomInstance.Id + '.dcm' - - - //await _repository.BatchUpdateAsync(u => u.Path.Contains(".dcm"), t => new DicomInstance() { Path = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{t.TrialId}/{t.SiteId}/{t.SubjectId}/{t.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{t.StudyId}/{t.Id}.dcm" }); - - //await _repository.BatchUpdateAsync(u => !u.Path.Contains(".dcm"), t => new DicomInstance() { Path = $"/{StaticData.Folder.IRaCISDataFolder}/{StaticData.Folder.TrialDataFolder}/{t.TrialId}/{t.SiteId}/{t.SubjectId}/{t.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{t.StudyId}/{t.Id}" }); - + return new { env.EnvironmentName, EMailConfig = _systemEmailConfig.CurrentValue, BasicConfig = _basicConfig.CurrentValue }; @@ -414,12 +408,12 @@ namespace IRaCIS.Application.Services var rootPath = FileStoreHelper.GetIRaCISRootDataFolder(_hostEnvironment); - var studyList = _repository.Where(t => t.SeriesList.Any(t => t.ImageResizePath.Length < 10)).Select(t => new { t.TrialId, t.SiteId, t.SubjectId, t.SubjectVisitId, t.Id }).ToList(); + var studyList = _repository.Where(t => t.SeriesList.Any(t => t.ImageResizePath.Length < 10)).Select(t => new { t.TrialId, t.Subject.TrialSiteId, t.SubjectId, t.SubjectVisitId, t.Id }).ToList(); foreach (var studyitem in studyList) { - var relativePath = $"{studyitem.TrialId}/{studyitem.SiteId}/{studyitem.SubjectId}/{studyitem.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{studyitem.Id}/"; + var relativePath = $"{studyitem.TrialId}/{studyitem.TrialSiteId}/{studyitem.SubjectId}/{studyitem.SubjectVisitId}/{StaticData.Folder.DicomFolder}/{studyitem.Id}/"; try { diff --git a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs index e7bb05555..0bf4d5ebb 100644 --- a/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/AddSubjectTrigger.cs @@ -56,7 +56,7 @@ namespace IRaCIS.Core.Application.Triggers t.Subject = subject; t.SubjectId = subject.Id; t.TrialId = subject.TrialId; - t.SiteId = subject.SiteId; + t.TrialSiteId = subject.TrialSiteId; t.IsEnrollmentConfirm = t.IsBaseLine ? IsEnrollementQualificationConfirm : false; t.Id = NewId.NextGuid(); @@ -67,34 +67,6 @@ namespace IRaCIS.Core.Application.Triggers await _subjectVisitRepository.SaveChangesAsync(); - #region 在f访视计划确认的时候处理 给subject添加访视计划 - ////已添加受试者 都不存在该新增的计划名称 那么该项目所有受试者都增加一个访视记录 - //if (!await _subjectVisitRepository.AnyAsync(t => t.VisitName == visitPlan.VisitName && t.TrialId == visitPlan.TrialId)) - //{ - // var subjectSVS = await _subjectVisitRepository.Where(t => t.TrialId == visitPlan.TrialId).Select(t => new { t.SubjectId, t.SiteId, t.IsFinalVisit }).Distinct().ToListAsync(); - - // var subjects = subjectSVS.Select(t => new { t.SubjectId, t.SiteId }).Distinct().ToList(); - - // foreach (var subject in subjects) - // { - - // var svItem = _mapper.Map(visitPlan); - // svItem.SiteId = subject.SiteId; - // svItem.SubjectId = subject.SubjectId; - // svItem.Id = NewId.NextGuid(); - - // //设置了末次访视,那么加访视计划的时候,设置为不可用 - // if (subjectSVS.Any(t => t.SubjectId == svItem.SubjectId && t.IsFinalVisit)) - // { - // svItem.VisitExecuted = VisitExecutedEnum.Unavailable; - // } - - // await _subjectVisitRepository.AddAsync(svItem); - // } - - // await _subjectVisitRepository.SaveChangesAsync(); - //} - #endregion } diff --git a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs index 884a0e8ec..2c958a2bb 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectStateTrigger.cs @@ -33,15 +33,14 @@ namespace IRaCIS.Core.Application.Triggers { //Site变更 - if ( context.Entity.SiteId != context.UnmodifiedEntity?.SiteId) + if ( context.Entity.TrialSiteId != context.UnmodifiedEntity?.TrialSiteId) { var subjectId = context.Entity.Id; - var siteId = context.Entity.SiteId; + var trialSiteId = context.Entity.TrialSiteId; - await _repository.BatchUpdateAsync(t => t.SubjectId == subjectId, u => new SubjectVisit() { SiteId = siteId }); + await _repository.BatchUpdateAsync(t => t.SubjectId == subjectId, u => new SubjectVisit() { TrialSiteId = trialSiteId }); - await _repository.BatchUpdateAsync(t => t.SubjectId == subjectId, u => new DicomStudy() { SiteId = siteId }); #region 废弃 diff --git a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs index e5df2ff04..b2cb55016 100644 --- a/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs +++ b/IRaCIS.Core.Application/_MediatR/Handlers/ConsistencyVerificationHandler.cs @@ -55,13 +55,12 @@ namespace IRaCIS.Core.Application.MediatR.Handlers (x.CheckState == CheckStateEnum.ToCheck && x.AuditState == AuditStateEnum.QCPassed || (x.CheckState == CheckStateEnum.CVIng && x.AuditState == AuditStateEnum.QCPassed)); var dicomQuery = from sv in _subjectVisitRepository.Where(subjectVisitLambda) - join trialSite in _trialSiteRepository.Where(t => t.TrialId == trialId) on sv.SiteId equals trialSite.SiteId join subject in _subjectRepository.AsQueryable() on sv.SubjectId equals subject.Id join study in _studyRepository.AsQueryable() on sv.Id equals study.SubjectVisitId select new CheckDBModel() { SubjectVisitId = sv.Id, - SiteCode = trialSite.TrialSiteCode, + SiteCode = sv.TrialSite.TrialSiteCode, StudyDate = study.StudyTime == null ? string.Empty : ((DateTime)study.StudyTime).ToString("yyyy-MM-dd"), StudyId = study.Id, Modality = study.ModalityForEdit, @@ -70,13 +69,12 @@ namespace IRaCIS.Core.Application.MediatR.Handlers }; var noneDicomQuey = from sv in _subjectVisitRepository.Where(subjectVisitLambda) - join trialSite in _trialSiteRepository.Where(t => t.TrialId == trialId) on sv.SiteId equals trialSite.SiteId join subject in _subjectRepository.AsQueryable() on sv.SubjectId equals subject.Id join noneDicomStudy in _noneDicomStudyRepository.AsQueryable() on sv.Id equals noneDicomStudy.SubjectVisitId select new CheckDBModel() { SubjectVisitId = sv.Id, - SiteCode = trialSite.TrialSiteCode, + SiteCode = sv.TrialSite.TrialSiteCode, StudyDate = noneDicomStudy.ImageDate.ToString("yyyy-MM-dd"), StudyId = noneDicomStudy.Id, Modality = noneDicomStudy.Modality, diff --git a/IRaCIS.Core.Domain/Image/DicomInstance.cs b/IRaCIS.Core.Domain/Image/DicomInstance.cs index 0299bd657..66a34bb9c 100644 --- a/IRaCIS.Core.Domain/Image/DicomInstance.cs +++ b/IRaCIS.Core.Domain/Image/DicomInstance.cs @@ -42,7 +42,7 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } public bool Anonymize { get; set; } diff --git a/IRaCIS.Core.Domain/Image/DicomSeries.cs b/IRaCIS.Core.Domain/Image/DicomSeries.cs index d59070e40..48bc00912 100644 --- a/IRaCIS.Core.Domain/Image/DicomSeries.cs +++ b/IRaCIS.Core.Domain/Image/DicomSeries.cs @@ -43,7 +43,7 @@ namespace IRaCIS.Core.Domain.Models public string TriggerTime { get; set; } = string.Empty; public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } diff --git a/IRaCIS.Core.Domain/Image/DicomStudy.cs b/IRaCIS.Core.Domain/Image/DicomStudy.cs index f06517ea9..e5193846b 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudy.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudy.cs @@ -15,10 +15,7 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public List SeriesList { get; set; } - [JsonIgnore] - public TrialSite TrialSite { get; set; } - [JsonIgnore] - public Site Site { get; set; } + [JsonIgnore] public List SubjectCriteriaEvaluationVisitStudyFilterList { get; set; } @@ -28,7 +25,7 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid SubjectId { get; set; } diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs index ce264d3c0..c4f12bff0 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs @@ -14,6 +14,10 @@ namespace IRaCIS.Core.Domain.Models [Table("StudyMonitor")] public class StudyMonitor : Entity, IAuditAdd { + + + + [JsonIgnore] [ForeignKey("StudyId")] public DicomStudy DicomStudy { get; set; } @@ -61,8 +65,6 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } - public Guid SiteId { get; set; }=Guid.Empty; - public Guid SubjectId { get; set; } public Guid SubjectVisitId { get; set; } @@ -77,9 +79,7 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public TrialSite TrialSite { get; set; } - [JsonIgnore] - [ForeignKey("SiteId")] - public Site Site { get; set; } + [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } diff --git a/IRaCIS.Core.Domain/Image/ImageShare.cs b/IRaCIS.Core.Domain/Image/ImageShare.cs index b688db37f..4df83bd66 100644 --- a/IRaCIS.Core.Domain/Image/ImageShare.cs +++ b/IRaCIS.Core.Domain/Image/ImageShare.cs @@ -5,7 +5,6 @@ namespace IRaCIS.Core.Domain.Models public class ImageShare: Entity { public Guid TrialId { get; set; } - public Guid SiteId { get; set; } public Guid SubjectId { get; set; } public Guid StudyId { get; set; } diff --git a/IRaCIS.Core.Domain/QC/NoneDicom/NoneDicomStudy.cs b/IRaCIS.Core.Domain/QC/NoneDicom/NoneDicomStudy.cs index ab967b516..f243cd795 100644 --- a/IRaCIS.Core.Domain/QC/NoneDicom/NoneDicomStudy.cs +++ b/IRaCIS.Core.Domain/QC/NoneDicom/NoneDicomStudy.cs @@ -19,8 +19,9 @@ namespace IRaCIS.Core.Domain.Models public List NoneDicomFileList { get; set; } [JsonIgnore] public SubjectVisit SubjectVisit { get; set; } - [JsonIgnore] - public TrialSite TrialSite { get; set; } + + + [JsonIgnore] public Subject Subject { get; set; } @@ -36,11 +37,7 @@ namespace IRaCIS.Core.Domain.Models [Required] public Guid TrialId { get; set; } - /// - /// SiteId - /// - [Required] - public Guid SiteId { get; set; } + /// /// SubjectId diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSite.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSite.cs index 120ac66e4..4250fe278 100644 --- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSite.cs +++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadingPeriodSite.cs @@ -25,10 +25,6 @@ namespace IRaCIS.Core.Domain.Models /// public Guid TrialId { get; set; } - /// - /// 中心ID - /// - public Guid SiteId { get; set; } /// /// 创建时间 @@ -41,12 +37,8 @@ namespace IRaCIS.Core.Domain.Models public Guid CreateUserId { get; set; } - /// - /// 中心 - /// - public Site Site { get; set; } - + public Guid TrialSiteId { get; set; } public TrialSite TrialSite { get; set; } diff --git a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs index bd1ba69fe..a22dbdb78 100644 --- a/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs +++ b/IRaCIS.Core.Domain/Reading/View/ReadModuleView.cs @@ -118,7 +118,7 @@ namespace IRaCIS.Core.Domain.Models /// /// 中心ID /// - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } /// /// 是否为访视 diff --git a/IRaCIS.Core.Domain/SiteSurvey/TrialSiteSurvey.cs b/IRaCIS.Core.Domain/SiteSurvey/TrialSiteSurvey.cs index f31d8782c..1612a4ffe 100644 --- a/IRaCIS.Core.Domain/SiteSurvey/TrialSiteSurvey.cs +++ b/IRaCIS.Core.Domain/SiteSurvey/TrialSiteSurvey.cs @@ -15,8 +15,14 @@ namespace IRaCIS.Core.Domain.Models /// [Table("TrialSiteSurvey")] public class TrialSiteSurvey : Entity, IAuditUpdate, IAuditAdd,ISoftDelete - { - public TrialSiteSurveyEnum State { get; set; } = TrialSiteSurveyEnum.ToSubmit; + { + + + + [Required] + public Guid TrialSiteId { get; set; } + + public TrialSiteSurveyEnum State { get; set; } = TrialSiteSurveyEnum.ToSubmit; // 必须 { get; set; } 否则 翻译出错 @@ -44,12 +50,7 @@ namespace IRaCIS.Core.Domain.Models /// [Required] public Guid TrialId { get; set; } - - /// - /// SiteId - /// - [Required] - public Guid SiteId { get; set; } + /// /// CreateTime diff --git a/IRaCIS.Core.Domain/Trial/DataInspection.cs b/IRaCIS.Core.Domain/Trial/DataInspection.cs index cb7b83207..f34eeeb51 100644 --- a/IRaCIS.Core.Domain/Trial/DataInspection.cs +++ b/IRaCIS.Core.Domain/Trial/DataInspection.cs @@ -33,10 +33,9 @@ namespace IRaCIS.Core.Domain.Models public Guid? TrialId { get; set; } - /// - /// 中心 - /// - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get; set; } + + /// /// 受试者 diff --git a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs index 26597de4b..ac5c027e9 100644 --- a/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs +++ b/IRaCIS.Core.Domain/TrialSiteUser/TrialSite.cs @@ -9,10 +9,12 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } - public Guid SiteId { get; set; } + public Guid? SiteId { get; set; } public string TrialSiteCode { get; set; } = String.Empty; + public string TrialSiteName { get; set; } = String.Empty; + public string TrialSiteAliasName { get; set; }=String.Empty; public Guid CreateUserId { get; set; } @@ -30,6 +32,7 @@ namespace IRaCIS.Core.Domain.Models //导航属性 [ForeignKey("SiteId")] public Site Site { get; set; } + [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } diff --git a/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs b/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs index adee90f14..4bf398bbb 100644 --- a/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs +++ b/IRaCIS.Core.Domain/TrialSiteUser/TrialSiteUser.cs @@ -17,7 +17,11 @@ namespace IRaCIS.Core.Domain.Models public class TrialSiteUser : Entity, IAuditUpdate, IAuditAdd,ISoftDelete { - [Required] + + public Guid TrialSiteId { get; set; } + + + [Required] public Guid UserId { get; set; } @@ -25,8 +29,6 @@ namespace IRaCIS.Core.Domain.Models public Guid TrialId { get; set; } - [Required] - public Guid SiteId { get; set; } public DateTime UpdateTime { get; set; } @@ -50,11 +52,6 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } - [JsonIgnore] - [ForeignKey("SiteId")] - public Site Site { get; set; } - - [JsonIgnore] public TrialSite TrialSite { get; set; } diff --git a/IRaCIS.Core.Domain/Visit/Subject.cs b/IRaCIS.Core.Domain/Visit/Subject.cs index dbf5cedf5..81c9ceb26 100644 --- a/IRaCIS.Core.Domain/Visit/Subject.cs +++ b/IRaCIS.Core.Domain/Visit/Subject.cs @@ -50,17 +50,19 @@ namespace IRaCIS.Core.Domain.Models public Guid? FinalSubjectVisitId { get; set; } - //需要配置是两个键连接 - [JsonIgnore] - public TrialSite TrialSite { get; set; } - [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } + [JsonIgnore] - [ForeignKey("SiteId")] - public Site Site { get; set; } + public TrialSite TrialSite { get; set; } + + public Guid TrialSiteId { get; set; } + + + + [JsonIgnore] public List StudyList { get; set; } = new List(); @@ -69,7 +71,7 @@ namespace IRaCIS.Core.Domain.Models public string LastName { get; set; } = string.Empty; public int? Age { get; set; } public string Sex { get; set; } = string.Empty; - public Guid SiteId { get; set; } = Guid.Empty; + [JsonIgnore] [ForeignKey("LatestSubjectVisitId")] @@ -126,7 +128,5 @@ namespace IRaCIS.Core.Domain.Models public List ClinicalFormList { get; set; } - //是否分配了读片医生 - //public bool IsAssignDoctorUser{get;set;} } } diff --git a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs index c245110fc..671e73ac9 100644 --- a/IRaCIS.Core.Domain/Visit/SubjectVisit.cs +++ b/IRaCIS.Core.Domain/Visit/SubjectVisit.cs @@ -9,12 +9,26 @@ namespace IRaCIS.Core.Domain.Models [Table("SubjectVisit")] public class SubjectVisit : Entity, IAuditUpdate, IAuditAdd, ISoftDelete { - //一个访视 对应有对应Site的 TrialSiteCode 所以 fluentApi中配置 TrialSite 连表用TrialId SiteId 双字段 + + + + + + + public Guid TrialSiteId { get; set; } + [JsonIgnore] public TrialSite TrialSite { get; set; } + + + + + + //一个访视 对应有对应Site的 TrialSiteCode + public Guid TrialId { get; set; } public Guid SubjectId { get; set; } - public Guid SiteId { get; set; } + [JsonIgnore] public VisitStage VisitStage { get; set; } @@ -197,9 +211,7 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("TrialId")] public Trial Trial { get; set; } - [JsonIgnore] - [ForeignKey("SiteId")] - public Site Site { get; set; } + [JsonIgnore] [ForeignKey("SubjectId")] diff --git a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs index bea049c0a..19be959d2 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/AuditingData.cs @@ -1316,73 +1316,6 @@ namespace IRaCIS.Core.Infra.EFCore.Common - #region OLd - //var entitylist = entitys.Where(x => x.Entity.GetType() == typeof(TrialQCQuestionAnswer)).Select(x => x.Entity as TrialQCQuestionAnswer).ToList(); - //var firstEntity = entitylist.FirstOrDefault(); - //var subjectVisit = await _dbContext.SubjectVisit.Where(x => x.Id == firstEntity.SubjectVisitId).FirstOrDefaultAsync(); - //subjectVisit = subjectVisit ?? new SubjectVisit(); - //if (type == "Add") - //{ - - - // await InsertInspection(firstEntity, type, answer => new InspectionConvertDTO() - // { - // SiteId = subjectVisit.SiteId, - // SubjectId = subjectVisit.SubjectId, - // SubjectVisitName = subjectVisit.VisitName, - // TrialId = subjectVisit.TrialId, - // SubjectVisitId = subjectVisit.Id, - - // //GeneralId = subjectVisit.Id, - // //byzhouhang - // ObjectRelationParentId = subjectVisit.Id, - // }, new - // { - // QcQuestionAnswerCommands = await Getdata(entitylist), - // }); - //} - //else if (type == "Update") - //{ - - // var questionIds = entitylist.Where(x => x.SubjectVisitId == subjectVisit.Id).Select(x => x.Id).ToList(); - // var createUserId = entitylist.Select(x => x.CreateUserId).FirstOrDefault(); - // var noUpdateData = _dbContext.TrialQCQuestionAnswer.Where(x => x.CreateUserId == createUserId && x.SubjectVisitId == subjectVisit.Id && !questionIds.Contains(x.Id)).ToList(); - // entitylist.AddRange(noUpdateData); - - // await InsertInspection(firstEntity, type, answer => new InspectionConvertDTO() - // { - // SiteId = subjectVisit.SiteId, - // SubjectId = subjectVisit.SubjectId, - // SubjectVisitName = subjectVisit.VisitName, - // TrialId = subjectVisit.TrialId, - // SubjectVisitId = subjectVisit.Id, - - // //GeneralId = subjectVisit.Id, - // //byzhouhang - // ObjectRelationParentId = subjectVisit.Id, - // }, new - // { - // QcQuestionAnswerCommands = await Getdata(entitylist), - // }); - - - //} - - //async Task> Getdata(List questionAnswers) - //{ - // var ids = questionAnswers.Select(x => x.TrialQCQuestionConfigureId).ToList(); - // var trialQCQuestionConfigureDatas = await _dbContext.TrialQCQuestionConfigure.Where(x => ids.Contains(x.Id)).ToListAsync(); - // var collect = questionAnswers.GroupJoin(trialQCQuestionConfigureDatas, one => one.TrialQCQuestionConfigureId, two => two.Id, (x, y) => new { one = x, two = y }) - // .SelectMany(a => a.two.DefaultIfEmpty(), (c, d) => new { c = c.one, d }) - // .OrderBy(x => x.d.ShowOrder) - // .Select(o => new AnswerDto() - // { - // QuestionName = o.d.QuestionName, - // Answer = o.c.Answer, - // }).ToList(); - // return collect; - //} - #endregion @@ -1504,7 +1437,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common var entity = item.Entity as TrialSiteSurvey; if (entity.TrialSite == null) { - entity.TrialSite = await _dbContext.TrialSite.IgnoreQueryFilters().Where(x => x.SiteId == entity.SiteId && x.TrialId == entity.TrialId).FirstOrDefaultAsync(); + entity.TrialSite = await _dbContext.TrialSite.IgnoreQueryFilters().Where(x => x.Id == entity.TrialSiteId && x.TrialId == entity.TrialId).FirstOrDefaultAsync(); } if (entity.PreliminaryUser == null) @@ -1714,7 +1647,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (entity.TrialSite == null) { - entity.TrialSite = await _dbContext.TrialSite.Where(x => x.TrialId == entity.TrialId && x.SiteId == entity.SiteId).IgnoreQueryFilters().FirstOrDefaultAsync(); + entity.TrialSite = await _dbContext.TrialSite.Where(x => x.Id == entity.TrialSiteId).IgnoreQueryFilters().FirstOrDefaultAsync(); } await InsertInspection(item.Entity as TrialSiteUser, type, x => new InspectionConvertDTO @@ -1736,17 +1669,15 @@ namespace IRaCIS.Core.Infra.EFCore.Common var entity = item.Entity as Subject; var finalSubjectVisitName = await _dbContext.SubjectVisit.AsNoTracking().Where(x => x.Id == entity.FinalSubjectVisitId && entity.FinalSubjectVisitId != null).Select(x => x.VisitName).FirstOrDefaultAsync(); - //var trialSiteCode = await _dbContext.TrialSite.Where(t => t.TrialId == entity.TrialId && t.SiteId == entity.SiteId).Select(t => t.TrialSiteCode).FirstOrDefaultAsync(); - - var trialSiteId = await _dbContext.TrialSite.Where(t => t.TrialId == entity.TrialId && t.SiteId == entity.SiteId).Select(t => t.Id).FirstOrDefaultAsync(); await InsertInspection(entity, type, x => new InspectionConvertDTO() { SubjectId = x.Id, - SiteId = x.SiteId, + + TrialSiteId = x.TrialSiteId, //项目的信息 找离的最近的项目稽查信息 - ObjectRelationParentId = trialSiteId, + ObjectRelationParentId = entity.TrialSiteId, }, new { FinalSubjectVisitName = finalSubjectVisitName, @@ -1861,7 +1792,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common SubjectId = x.SubjectId, SubjectVisitId = x.Id, - SiteId = x.SiteId, + + TrialSiteId = x.TrialSiteId, ExtraIndentification = extraIdentification, @@ -2090,7 +2022,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common var clinicalDataTrialSet = await _dbContext.ClinicalDataTrialSet.Where(t => t.Id == clinicalData.ClinicalDataTrialSetId).FirstOrDefaultAsync(); SubjectVisit? visit = await _dbContext.SubjectVisit.Where(x => x.Id == clinicalData.ReadingId).FirstOrDefaultAsync(); - Site? siteInfo = null; + TrialSite? siteInfo = null; Subject? subject = null; //阅片标准 @@ -2105,7 +2037,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (visit != null) { - siteInfo = await _dbContext.Site.Where(x => x.Id == visit.SiteId).FirstOrDefaultAsync(); + siteInfo = await _dbContext.TrialSite.Where(x => x.Id == visit.TrialSiteId).FirstOrDefaultAsync(); subject = await _dbContext.Subject.Where(x => x.Id == clinicalData.SubjectId).FirstOrDefaultAsync(); } @@ -2117,7 +2049,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common SubjectVisitId = subjectVisitId, }, new { - SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, + SiteCode = siteInfo == null ? "" : siteInfo.TrialSiteCode, SubjectCode = subject == null ? "" : subject.Code, VisitName = visit == null ? "" : visit.VisitName, clinicalDataTrialSet.ClinicalDataSetName, @@ -2140,7 +2072,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common var clinicalDataTrialSet = await _dbContext.ClinicalDataTrialSet.Where(t => t.Id == entity.ClinicalDataTrialSetId).FirstOrDefaultAsync(); SubjectVisit? visit = await _dbContext.SubjectVisit.Where(x => x.Id == entity.ReadingId).FirstOrDefaultAsync(); - Site? siteInfo = null; + TrialSite? siteInfo = null; Subject? subject = null; //阅片标准 @@ -2155,7 +2087,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (visit != null) { - siteInfo = await _dbContext.Site.Where(x => x.Id == visit.SiteId).FirstOrDefaultAsync(); + siteInfo = await _dbContext.TrialSite.Where(x => x.Id == visit.TrialSiteId).FirstOrDefaultAsync(); subject = await _dbContext.Subject.Where(x => x.Id == entity.SubjectId).FirstOrDefaultAsync(); } @@ -2167,7 +2099,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common SubjectVisitId = subjectVisitId, }, new { - SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, + SiteCode = siteInfo == null ? "" : siteInfo.TrialSiteCode, SubjectCode = subject == null ? "" : subject.Code, VisitName = visit == null ? "" : visit.VisitName, clinicalDataTrialSet.ClinicalDataSetName, @@ -2328,8 +2260,8 @@ namespace IRaCIS.Core.Infra.EFCore.Common var siteCodes = string.Empty; if (entity.ReadingScope == ReadingScopeEnum.Site) { - var siteIds = entity.ReadingPeriodSites.Select(t => t.SiteId).ToList(); - var nameList = _dbContext.TrialSite.Where(c => c.TrialId == entity.TrialId && siteIds.Contains(c.SiteId)).Select(t => t.TrialSiteCode).ToList(); + var siteIds = entity.ReadingPeriodSites.Select(t => t.TrialSiteId).ToList(); + var nameList = _dbContext.TrialSite.Where(c => c.TrialId == entity.TrialId && siteIds.Contains(c.Id)).Select(t => t.TrialSiteCode).ToList(); siteCodes = String.Join(',', nameList); } @@ -2421,12 +2353,12 @@ namespace IRaCIS.Core.Infra.EFCore.Common Subject subject = await _dbContext.Subject.Where(x => x.Id == readModule.SubjectId).FirstOrDefaultAsync(); - Site siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync(); + TrialSite siteInfo = await _dbContext.TrialSite.Where(x => x.Id == subject.TrialSiteId).FirstOrDefaultAsync(); var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList(); objData= new { - SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, + SiteCode = siteInfo == null ? "" : siteInfo.TrialSiteCode, SubjectCode = subject == null ? "" : subject.Code, LatestScanDate = latestScanDate, ClinicalDataSetName = string.Join(",", clinicalDataSetNameList), @@ -2464,7 +2396,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common var readModuleCriterionFrom = await _dbContext.ReadModuleCriterionFrom.Where(t => t.ReadModuleId == entity.Id).FirstOrDefaultAsync(); var latestScanDate = await _dbContext.ReadModule.Where(t => t.Id == entity.Id).Select(x => x.SubjectVisit.LatestScanDate).FirstOrDefaultAsync(); - Site? siteInfo = null; + TrialSite? siteInfo = null; Subject? subject = null; //阅片标准 @@ -2486,7 +2418,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common subject = await _dbContext.Subject.Where(x => x.Id == entity.SubjectId).FirstOrDefaultAsync(); - siteInfo = await _dbContext.Site.Where(x => x.Id == subject.SiteId).FirstOrDefaultAsync(); + siteInfo = await _dbContext.TrialSite.Where(x => x.Id == subject.TrialSiteId).FirstOrDefaultAsync(); var clinicalDataSetNameList = clinicalDataTrialSetList.Select(x => x.ClinicalDataSetName).ToList().Distinct(); @@ -2496,7 +2428,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common objData=new { - SiteCode = siteInfo == null ? "" : siteInfo.SiteCode, + SiteCode = siteInfo == null ? "" : siteInfo.TrialSiteCode, SubjectCode = subject == null ? "" : subject.Code, LatestScanDate = latestScanDate, ClinicalDataSetName = string.Join(",", clinicalDataSetNameList), @@ -3473,7 +3405,7 @@ namespace IRaCIS.Core.Infra.EFCore.Common InspectionGeneralData generalData = new InspectionGeneralData() { - SiteId = inspection.SiteId, + TrialSiteId=inspection.TrialSiteId, SubjectId = inspection.SubjectId, SubjectVisitId = inspection.SubjectVisitId, TrialId = inspection.TrialId, @@ -3486,14 +3418,14 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (inspection.VisitTaskId != null) { - if (generalData.TrialId == null || generalData.SiteId == null || generalData.SubjectId == null || generalData.TrialReadingCriterionId == null) + if (generalData.TrialId == null || generalData.TrialSiteId == null || generalData.SubjectId == null || generalData.TrialReadingCriterionId == null) { - var info = await _dbContext.VisitTask.Where(x => x.Id == inspection.VisitTaskId).Select(x => new { SubjectCode = x.Subject.Code, TrialSiteCode = x.Subject.TrialSite.TrialSiteCode, SubjectId = x.SubjectId, x.Subject.SiteId, x.TrialId, x.SourceSubjectVisitId, ReadModuleSubjectVisitId = (Guid?)x.ReadModule.SubjectVisitId, x.TrialReadingCriterionId }).FirstOrDefaultAsync(); + var info = await _dbContext.VisitTask.Where(x => x.Id == inspection.VisitTaskId).Select(x => new { SubjectCode = x.Subject.Code, TrialSiteCode = x.Subject.TrialSite.TrialSiteCode, SubjectId = x.SubjectId, x.Subject.TrialSiteId, x.TrialId, x.SourceSubjectVisitId, ReadModuleSubjectVisitId = (Guid?)x.ReadModule.SubjectVisitId, x.TrialReadingCriterionId }).FirstOrDefaultAsync(); generalData.TrialReadingCriterionId = info?.TrialReadingCriterionId ?? generalData.TrialReadingCriterionId; generalData.TrialId = info?.TrialId ?? generalData.TrialId; generalData.SubjectId = info?.SubjectId ?? generalData.SubjectId; - generalData.SiteId = info?.SiteId ?? generalData.SiteId; + generalData.TrialSiteId = info?.TrialSiteId ?? generalData.TrialSiteId; generalData.SubjectVisitId = info?.SourceSubjectVisitId != null ? info?.SourceSubjectVisitId : (info?.ReadModuleSubjectVisitId != null ? info?.ReadModuleSubjectVisitId : null); //以后移除 @@ -3517,14 +3449,14 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (inspection.SubjectVisitId != null) { - if (generalData.TrialId == null || generalData.SiteId == null || generalData.SubjectId == null) + if (generalData.TrialId == null || generalData.TrialSiteId == null || generalData.SubjectId == null) { var info = await _dbContext.SubjectVisit.Where(x => x.Id == generalData.SubjectVisitId).Select(x => - new { x.SubjectId, x.SiteId, x.TrialId, SubjectCode = x.Subject.Code, TrialSiteCode = x.Subject.TrialSite.TrialSiteCode }).FirstOrDefaultAsync(); + new { x.SubjectId, x.TrialSiteId, x.TrialId, SubjectCode = x.Subject.Code, TrialSiteCode = x.Subject.TrialSite.TrialSiteCode }).FirstOrDefaultAsync(); generalData.TrialId = info?.TrialId ?? generalData.TrialId; - generalData.SiteId = info?.SiteId ?? generalData.SiteId; + generalData.TrialSiteId = info?.TrialSiteId ?? generalData.TrialSiteId; generalData.SubjectId = info?.SubjectId ?? generalData.SubjectId; //以后移除 @@ -3538,21 +3470,22 @@ namespace IRaCIS.Core.Infra.EFCore.Common if (generalData.SubjectId != null) { - if (generalData.TrialId == null || generalData.SiteId == null) + if (generalData.TrialId == null || generalData.TrialSiteId == null) { - var info = await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => new { SubjectId = x.Id, x.SiteId, x.TrialId, SubjectCode = x.Code, TrialSiteCode = x.TrialSite.TrialSiteCode }).FirstOrDefaultAsync(); + var info = await _dbContext.Subject.Where(x => x.Id == generalData.SubjectId).Select(x => new { SubjectId = x.Id, x.TrialSiteId, x.TrialId, SubjectCode = x.Code, TrialSiteCode = x.TrialSite.TrialSiteCode }).FirstOrDefaultAsync(); if (info == null) { var subject = _dbContext.Subject.Find(generalData.SubjectId); generalData.TrialId = subject?.TrialId; - generalData.SiteId = subject?.SiteId; + generalData.TrialSiteId = subject?.TrialSiteId ; } else { generalData.TrialId = info?.TrialId ?? generalData.TrialId; - generalData.SiteId = info?.SiteId ?? generalData.SiteId; + + generalData.TrialSiteId = info?.TrialSiteId ?? generalData.TrialSiteId; } diff --git a/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs b/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs index 501f81324..c28949c72 100644 --- a/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs +++ b/IRaCIS.Core.Infra.EFCore/Common/Dto/SetDictionaryValueDto.cs @@ -180,10 +180,9 @@ namespace IRaCIS.Core.Infra.EFCore.Common.Dto /// public Guid? TrialId { get; set; } - /// - /// 中心 - /// - public Guid? SiteId { get; set; } + public Guid? TrialSiteId { get;set; } + + /// /// 受试者 diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/NoneDicomStudyConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/NoneDicomStudyConfigration.cs index 8d4c9eb5a..506e3a7cf 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/NoneDicomStudyConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/NoneDicomStudyConfigration.cs @@ -11,19 +11,8 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - // builder - // .HasMany(s => s.TrialSiteUserList) - //.WithOne(c => c.DicomStudy) - //.HasForeignKey(s => new { s.TrialId, s.SiteId }) - //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.NoneDicomStudyList) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - } } } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs index 14fe438fe..547a1e0c8 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/ReadingPeriodSiteConfigration.cs @@ -12,11 +12,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.ReadingPeriodSites) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); + } } } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs index 0b2031707..dfed9328a 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs @@ -11,19 +11,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - // builder - // .HasMany(s => s.TrialSiteUserList) - // .WithOne(c => c.DicomStudy) - //.HasForeignKey(s => new { s.TrialId, s.SiteId }) - //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - - - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.StudyList) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - + builder .HasMany(s => s.ReadingClinicalDataList) diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs index b60f29acc..d687884b5 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyMonitorConfigration.cs @@ -12,20 +12,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - // builder - // .HasMany(s => s.TrialSiteUserList) - //.WithOne(c => c.DicomStudy) - //.HasForeignKey(s => new { s.TrialId, s.SiteId }) - //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - - //builder.Property(e => e.TotalMillisecondsInterval).HasValueGenerator().ValueGeneratedOnAdd(); - - - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.StudyMonitorList) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); + } } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs index f43da1239..239c349da 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs @@ -11,19 +11,6 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - // 从 Subject 到 TrialSiteUserList 会用两个建 - //builder - //.HasMany(s => s.TrialSiteUserList) - //.WithOne(c => c.Subject) - //.HasForeignKey(s => new { s.TrialId, s.SiteId }) - //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - - // 受试者 在项目中只有一个site 获取 TrialSiteCode 用两个键 - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.SubjectList) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); //不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如受试者 最新的访视 在这里要显示配置 builder.HasOne(s => s.LatestSubjectVisit); diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs index efe8d6a28..2025d4ce4 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectVisitConfigration.cs @@ -11,20 +11,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - // SubjectVisit 从TrialSite 导航获取 TrialSiteCode 用两个键连接 - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.SubjectVisitList) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - - - // 从 SubjectVisit 到 TrialSiteUserList 会用两个建 这里不行,添加受试者的时候,批量添加访视的时候,siteId trialId 会重复 所以不能这样搞 - // modelBuilder.Entity() - //.HasMany(s => s.TrialSiteUserList) - //.WithOne(c => c.SubjectVisit) - //.HasForeignKey(s => new { s.TrialId, s.SiteId }) - //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); + builder.HasOne(s => s.Subject).WithMany(sv => sv.SubjectVisitList); diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs index 1306cbbf3..c3a433a58 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteConfigration.cs @@ -11,12 +11,7 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - //从 TrialSite 导航到TrialUserSite (Site下负责的CRC用户 )会用两个建 trial Site列表会用到 - builder - .HasMany(s => s.CRCUserList) - .WithOne(c => c.TrialSite) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); + } } @@ -36,18 +31,5 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration } } - //public class SubjectCriteriaEvaluationVisitFilterConfigration : IEntityTypeConfiguration - //{ - - // public void Configure(EntityTypeBuilder builder) - // { - // builder - // .HasMany(s => s.SubjectCriterionTaskList) - // .WithOne(c => c.SubjectCriteriaEvaluationVisitFilter) - // .HasForeignKey(s => new { s.SubjectId, s.TrialReadingCriterionId }) - // .HasPrincipalKey(c => new { c.SubjectId, c.TrialReadingCriterionId }); - - // } - //} } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs index 9e812f194..2637b26c4 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialSiteSurveyConfigration .cs @@ -11,21 +11,8 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration public void Configure(EntityTypeBuilder builder) { - // SubjectVisit 从TrialSite 导航获取 TrialSiteCode 用两个键连接 - builder - .HasOne(s => s.TrialSite) - .WithMany(c => c.TrialSiteSurveyList) - .HasForeignKey(s => new { s.TrialId, s.SiteId }) - .HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - // 从 SubjectVisit 到 TrialSiteUserList 会用两个建 这里不行,添加受试者的时候,批量添加访视的时候,siteId trialId 会重复 所以不能这样搞 - // modelBuilder.Entity() - //.HasMany(s => s.TrialSiteUserList) - //.WithOne(c => c.SubjectVisit) - //.HasForeignKey(s => new { s.TrialId, s.SiteId }) - //.HasPrincipalKey(c => new { c.TrialId, c.SiteId }); - } } }