diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml index 3e79fff0b..e8ac5c764 100644 --- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml +++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml @@ -1031,13 +1031,12 @@ - + IR 阅片页面获取下载检查的信息 会根据标准进行过滤检查,(后端要考虑到一致性分析 subjectCode的问题) 检查在访视下面,所以需要传递下载的访视Id,另外下载访视下面那些检查,就把访视下的对应的检查Id 丢到数组里就好 - @@ -1047,6 +1046,20 @@ + + + 影像下载成功回调 + + + + + + + 项目影像下载监控列表 + + + + 打包和匿名化影像 默认是匿名化打包,也可以不匿名化打包 @@ -4732,11 +4745,6 @@ 文件路径 - - - 创建时间 - - 创建人 @@ -14778,13 +14786,6 @@ 影像阅片临床数据签名 - - - 一致性分析的临床数据 - - - - 获取下拉菜单 diff --git a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs index 2f0b41192..9f5dbfc37 100644 --- a/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs +++ b/IRaCIS.Core.Application/Service/Allocation/DTO/VisitTaskViewModel.cs @@ -221,7 +221,6 @@ namespace IRaCIS.Core.Application.ViewModel public class AnalysisTaskView : ReadingTaskView { - public bool? IsSelfAnalysis { get; set; } public int ConsistentClinicalDataCount { get; set; } = 0; diff --git a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs index e480900e2..55193572a 100644 --- a/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs +++ b/IRaCIS.Core.Application/Service/Allocation/VisitTaskService.cs @@ -965,7 +965,6 @@ namespace IRaCIS.Core.Application.Service.Allocation else { var taskQuery = _visitTaskRepository.Where(x => x.TrialId == inQuery.TrialId && x.DoctorUserId == _userInfo.Id && x.TaskState == TaskState.Effect && x.TrialReadingCriterionId == trialReadingCriterionId) - // .Where(x=>x.Subject.ClinicalDataList.Any(c => c.IsSign && (c.ReadingId == x.SouceReadModuleId || c.ReadingId == x.SourceSubjectVisitId))) .Where(x => !x.Subject.IsDeleted).Where(x => (x.IsNeedClinicalDataSign && x.IsClinicalDataSign) || !x.IsNeedClinicalDataSign); iRUnReadOut = new IRUnReadOutDto() diff --git a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs index 27ced84d5..fcb0823f4 100644 --- a/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs +++ b/IRaCIS.Core.Application/Service/Common/ExcelExportService.cs @@ -821,7 +821,7 @@ namespace IRaCIS.Core.Application.Service.Common .WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId) .WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.IsDicom != null, t => t.IsDicom == inQuery.IsDicom) - .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.Uploader.UserName.Contains(inQuery.Uploader)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.CreateUser.UserName.Contains(inQuery.Uploader)) .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode)) .Select(t => new UnionStudyMonitorExportDto() @@ -838,7 +838,7 @@ namespace IRaCIS.Core.Application.Service.Common IsDicom = t.IsDicom, - Uploader = t.Uploader.UserName, + Uploader = t.CreateUser.UserName, IP = t.IP, diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index 7d82d7ec2..cb64cd532 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -1,4 +1,5 @@ using IRaCIS.Core.Application.Service.ImageAndDoc.DTO; +using IRaCIS.Core.Domain.Share; using Newtonsoft.Json; using System; using System.Collections.Generic; @@ -551,6 +552,54 @@ namespace IRaCIS.Core.Application.Contracts } + public class TrialImageDownloadView + { + public Guid TrialId { get; set; } + + public string SubjectCode { get; set; } + + public bool IsSuccess { get; set; } + + public DateTime DownloadStartTime { get; set; } + public DateTime? DownloadEndTime { get; set; } + + public string VisitName { get; set; } + + public ImageType ImageType { get; set; } + + public int NoneDicomStudyCount { get; set; } + + public int DicomStudyCount { get; set; } + + public int ImageCount { get; set; } + public long ImageSize { get; set; } + + + public string UserName { get; set; } + + public string UserFullName { get; set; } + public DateTime CreateTime { get; set; } + + } + + public class TrialIamgeDownQuery:PageInput + { + [NotDefault] + public Guid TrialId { get; set; } + + public string? SubjectCode { get; set; } + + public ImageType? ImageType { get; set; } + + public UserTypeEnum? UserType { get; set; } + + public bool? IsSuccess { get; set; } + + public DateTime? DownloadStartTime { get; set; } + public DateTime? DownloadEndTime { get; set; } + + public string? IP { get; set; } + } public class SubjectVisitTaskInfo { diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 41d195d93..890a2c9bc 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -49,7 +49,9 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc IRepository _readingQuestionCriterionTrialRepository, IRepository _noneDicomStudyReposiotry, IRepository _noneDicomStudyFileReposiotry, - IDistributedLockProvider _distributedLockProvider) : BaseService, IDownloadAndUploadService + IDistributedLockProvider _distributedLockProvider, + IRepository _trialImageDownloadRepository, + IRepository _subjectRepository) : BaseService, IDownloadAndUploadService { @@ -220,9 +222,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } - - - [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task PreArchiveDicomStudy(PriArchiveTaskStudyCommand preArchiveStudyCommand) @@ -678,11 +677,14 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc var isQueryDicom = inQuery.DicomStudyIdList.Count > 0; var isQueryNoneDicom = inQuery.NoneDicomStudyIdList.Count > 0; + var imageType = (isQueryDicom && isQueryNoneDicom) ? ImageType.DicomAndNoneDicom : (isQueryDicom ? ImageType.Dicom : ImageType.NoneDicom); + var query = from sv in _subjectVisitRepository.Where(t => t.Id == inQuery.SubjectVisitId) select new { + TrialId = sv.TrialId, SubjectCode = sv.Subject.Code, VisitName = sv.VisitName, @@ -719,14 +721,32 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { file.FileName, file.Path, - file.FileType + file.FileType, + file.FileSize, }) }).ToList() }; var result = query.FirstOrDefault(); - return ResponseOutput.Ok(result); + var preDownloadInfo = new TrialImageDownload() + { + Id = NewId.NextSequentialGuid(), + TrialId = result.TrialId, + SubjectCode = result.SubjectCode, + IP = _userInfo.IP, + DownloadStartTime = DateTime.Now, + IsSuccess = false, + ImageType = imageType, + VisitName = string.Join(" | ", result.VisitName), + NoneDicomStudyCount = result.NoneDicomStudyList.Count(), + DicomStudyCount = result.StudyList.Count(), + ImageCount = result.StudyList.Sum(s => s.SeriesList.Sum(s => s.InstanceList.Count())) + result.NoneDicomStudyList.Sum(s => s.FileList.Count()), + ImageSize = result.StudyList.Sum(t => t.SeriesList.Sum(s => s.InstanceList.Sum(i => i.FileSize))) + result.NoneDicomStudyList.Sum(t => t.FileList.Sum(s => s.FileSize)) + ?? 0 + }; + await _trialImageDownloadRepository.AddAsync(preDownloadInfo, true); + return ResponseOutput.Ok(result, preDownloadInfo.Id); } @@ -752,10 +772,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } var query = _visitTaskRepository.Where(t => t.SubjectId == inQuery.SubjectId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId - && t.SourceSubjectVisitId != null && t.DoctorUserId == doctorUserId && t.TaskState == TaskState.Effect && t.IsAnalysisCreate == isAnalysisCreate) + && t.SourceSubjectVisitId != null && t.DoctorUserId == doctorUserId && t.TaskState == TaskState.Effect) .ProjectTo(_mapper.ConfigurationProvider); - + //这里过滤是否是一致性分析的 var list = await query.Where(t => t.SubjectCode == inQuery.SubjectCode).ToListAsync(); foreach (var item in list) @@ -817,17 +837,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc /// 检查在访视下面,所以需要传递下载的访视Id,另外下载访视下面那些检查,就把访视下的对应的检查Id 丢到数组里就好 /// /// - /// /// [HttpPost] - public async Task GetIRReadingDownloadStudyInfo(IRDownloadQuery inQuery, [FromServices] IRepository _subjectRepository) + public async Task GetIRReadingDownloadStudyInfo(IRDownloadQuery inQuery) { var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId) - .Select(t => new { t.IsImageFilter, t.CriterionModalitys }).FirstNotNullAsync(); + .Select(t => new { t.IsImageFilter, t.CriterionModalitys, t.TrialId }).FirstNotNullAsync(); var isQueryDicom = inQuery.DicomStudyIdList.Count > 0; var isQueryNoneDicom = inQuery.NoneDicomStudyIdList.Count > 0; + var imageType = (isQueryDicom && isQueryNoneDicom) ? ImageType.DicomAndNoneDicom : (isQueryDicom ? ImageType.Dicom : ImageType.NoneDicom); + var taskIdList = inQuery.SubjectVisitTaskList.Select(t => t.TaskId).ToList(); var subjectVisitIdList = inQuery.SubjectVisitTaskList.Select(t => t.SubjectVisitId).ToList(); @@ -856,7 +877,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc InstancePathList = z.DicomInstanceList.Select(k => new { - k.Path + k.Path, + k.FileSize }) }) @@ -874,7 +896,8 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc { file.FileName, file.Path, - file.FileType + file.FileType, + file.FileSize }) }) }; @@ -885,7 +908,25 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc - return ResponseOutput.Ok(result); + var preDownloadInfo = new TrialImageDownload() + { + Id = NewId.NextSequentialGuid(), + TrialId = info.TrialId, + SubjectCode = inQuery.SubjectCode, + IP=_userInfo.IP, + DownloadStartTime = DateTime.Now, + IsSuccess = false, + ImageType = imageType, + VisitName = string.Join(" | ", result.Select(t => t.VisitName).OrderBy(t => t).ToList()), + NoneDicomStudyCount = result.Sum(t => t.NoneDicomStudyList.Count()), + DicomStudyCount = result.Sum(t => t.StudyList.Count()), + ImageCount = result.Sum(t => t.StudyList.Sum(s => s.SeriesList.Sum(s => s.InstancePathList.Count())) + t.NoneDicomStudyList.Sum(s => s.FileList.Count())), + ImageSize = result.Sum(t => t.StudyList.Sum(t => t.SeriesList.Sum(s => s.InstancePathList.Sum(i => i.FileSize))) + t.NoneDicomStudyList.Sum(t => t.FileList.Sum(s => s.FileSize)) + ) ?? 0 + }; + + await _trialImageDownloadRepository.AddAsync(preDownloadInfo,true); + return ResponseOutput.Ok(result, preDownloadInfo.Id); } /// @@ -937,6 +978,40 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc + /// + /// 影像下载成功回调 + /// + /// + /// + public async Task DownloadImageSuccess(Guid trialImageDownloadId) + { + await _trialImageDownloadRepository.UpdatePartialFromQueryAsync(t => t.Id == trialImageDownloadId, u => new TrialImageDownload() + { DownloadEndTime = DateTime.Now, IsSuccess = true }, true); + return ResponseOutput.Ok(); + } + + /// + /// 项目影像下载监控列表 + /// + /// + /// + [HttpPost] + public async Task> GetTrialDownloadList(TrialIamgeDownQuery inQuery) + { + var query = _trialImageDownloadRepository.Where(t => t.TrialId == inQuery.TrialId) + .WhereIf(inQuery.SubjectCode.IsNotNullOrEmpty(), t => t.SubjectCode.Contains(inQuery.SubjectCode)) + .WhereIf(inQuery.IP.IsNotNullOrEmpty(), t => t.IP.Contains(inQuery.IP)) + .WhereIf(inQuery.ImageType != null, t => t.ImageType == inQuery.ImageType) + .WhereIf(inQuery.UserType != null, t => t.CreateUser.UserTypeEnum == inQuery.UserType) + .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) + .WhereIf(inQuery.DownloadStartTime != null, t => t.DownloadStartTime >= inQuery.DownloadStartTime) + .WhereIf(inQuery.DownloadEndTime != null, t => t.DownloadEndTime <= inQuery.DownloadEndTime) + + .ProjectTo(_mapper.ConfigurationProvider); + + return await query.ToPagedListAsync(inQuery); + } + #region 之前后端下载废弃 /// @@ -1361,9 +1436,6 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc } #endregion - - - #region 按照任务为维度 展示上传的列表 废弃 /// /// IR 影像上传任务列表 --old 20240903 界面调整,现在先废弃 diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 9c7bc702c..a3eb2f0fe 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -411,7 +411,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, - Uploader = t.Uploader.UserName, + Uploader = t.CreateUser.UserName, UploadTime = t.CreateTime @@ -493,7 +493,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc .WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectId == inQuery.SubjectVisitId) .WhereIf(inQuery.TrialSiteId != null, t => t.Subject.TrialSiteId == inQuery.TrialSiteId) .WhereIf(inQuery.IsDicom != null, t => t.IsDicom == inQuery.IsDicom) - .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.Uploader.UserName.Contains(inQuery.Uploader)) + .WhereIf(!string.IsNullOrWhiteSpace(inQuery.Uploader), t => t.CreateUser.UserName.Contains(inQuery.Uploader)) .WhereIf(inQuery.IsSuccess != null, t => t.IsSuccess == inQuery.IsSuccess) .WhereIf(!string.IsNullOrWhiteSpace(inQuery.StudyCode), t => t.StudyCode.Contains(inQuery.StudyCode)) .Select(t => new UnionStudyMonitorModel() @@ -514,7 +514,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc TrialSiteCode = t.Subject.TrialSite.TrialSiteCode, - Uploader = t.Uploader.UserName, + Uploader = t.CreateUser.UserName, UploadTime = t.CreateTime, diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs index 78b0c12ea..6b0cf422a 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/_MapConfig.cs @@ -43,8 +43,8 @@ namespace IRaCIS.Core.Application.Service CreateMap().IncludeMembers(t => t.Subject, u => u.SubjectVisit) .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.UploaderFirstName, u => u.MapFrom(s => s.CreateUser.FirstName)) + .ForMember(d => d.UploaderLastName, u => u.MapFrom(s => s.CreateUser.LastName)) .ForMember(d => d.UploadedTime, u => u.MapFrom(s => s.CreateTime)); CreateMap(); @@ -69,7 +69,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(o => o.IsCompleteClinicalData, t => t.MapFrom(u => !u.ReadingClinicalDataList.Any(x => x.ReadingClinicalDataPDFList.Count() == 0))) .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) - .ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName)) + .ForMember(o => o.Uploader, t => t.MapFrom(u => u.CreateUser.LastName + " / " + u.CreateUser.FirstName)) .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)) .ForMember(o => o.IsHaveUploadFailed, t => t.MapFrom(u => u.DicomStudyMonitorList.Any(t => t.FailedFileCount > 0))) .ForMember(o => o.Modalities, t => t.MapFrom(u => string.Join('、', u.SeriesList.Select(t => t.Modality).Distinct()))); @@ -143,7 +143,10 @@ namespace IRaCIS.Core.Application.Service .ForMember(d => d.NoneDicomStudyList, u => u.MapFrom(s => s.SourceSubjectVisit.NoneDicomStudyList)) ; - + CreateMap() + .ForMember(d => d.UserFullName, u => u.MapFrom(s => s.CreateUser.FullName)) + .ForMember(d => d.UserName, u => u.MapFrom(s => s.CreateUser.UserName)); + } } diff --git a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs index 4e27834da..9bef9dc24 100644 --- a/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs +++ b/IRaCIS.Core.Application/Service/QC/DTO/QCListViewModel.cs @@ -1279,7 +1279,6 @@ namespace IRaCIS.Core.Application.Contracts public bool IsBaseLine { get; set; } public bool IsUrgent { get; set; } - public Guid? ClinicalDataSignUserId { get; set; } public bool IsQCConfirmedReupload { get; set; } diff --git a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs index 0806e360d..7420acff1 100644 --- a/IRaCIS.Core.Application/Service/QC/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/QC/_MapConfig.cs @@ -536,7 +536,7 @@ namespace IRaCIS.Core.Application.Service // 一致性核查文件 CreateMap() - .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.User.FirstName + "/" + t.User.LastName)); + .ForMember(d => d.CreateUserName, u => u.MapFrom(t => t.CreateUser.FullName)); //CRC 质疑列表 diff --git a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs index 7d2d5a84e..2b1568116 100644 --- a/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs +++ b/IRaCIS.Core.Application/Service/Reading/ClinicalData/ReadingClinicalDataService.cs @@ -376,11 +376,11 @@ namespace IRaCIS.Application.Services return ResponseOutput.Result(result); } - /// - /// 一致性分析的临床数据 - /// - /// - /// + ///// + ///// 一致性分析的临床数据 + ///// + ///// + ///// //public async Task ReadClinicalDataSign(ReadingClinicalDataSignIndto inDto) //{ diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs index 00ac54b9e..180f9eee2 100644 --- a/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs +++ b/IRaCIS.Core.Application/Service/Reading/Dto/ClinicalDataServiceViewModel.cs @@ -161,11 +161,6 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto public List TrialCriterionNameList { get; set; } - /// - /// 创建时间 - /// - public DateTime CreateTime { get; set; } - /// /// 创建人 /// diff --git a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs index fe279c652..1cdb45816 100644 --- a/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/Reading/_MapConfig.cs @@ -337,7 +337,7 @@ namespace IRaCIS.Core.Application.Service CreateMap() .ForMember(o => o.UploadedTime, t => t.MapFrom(u => u.CreateTime)) - .ForMember(o => o.Uploader, t => t.MapFrom(u => u.Uploader.LastName + " / " + u.Uploader.FirstName)) + .ForMember(o => o.Uploader, t => t.MapFrom(u => u.CreateUser.LastName + " / " + u.CreateUser.FirstName)) .ForMember(o => o.StudyId, t => t.MapFrom(u => u.Id)); CreateMap() diff --git a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs index b72a4ea04..e03d132b2 100644 --- a/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs +++ b/IRaCIS.Core.Application/Service/Third-partyProject/UltrasonicDicomService.cs @@ -132,7 +132,7 @@ namespace IRaCIS.Core.Application.Service.Third_partyProject TrialSiteCode = dicomStudy.Subject.TrialSite.TrialSiteCode, - Uploader = dicomStudy.Uploader.UserName, + Uploader = dicomStudy.CreateUser.UserName, UploadTime = dicomStudy.CreateTime }; diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs index ed572a3c3..7666c65a7 100644 --- a/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs +++ b/IRaCIS.Core.Application/Service/TrialSiteUser/_MapConfig.cs @@ -191,8 +191,8 @@ namespace IRaCIS.Core.Application.Service CreateMap(); CreateMap() - .ForMember(t => t.UserRealName, u => u.MapFrom(c => c.User.FullName)) - .ForMember(t => t.UserName, u => u.MapFrom(c => c.User.UserName)); + .ForMember(t => t.UserRealName, u => u.MapFrom(c => c.CreateUser.FullName)) + .ForMember(t => t.UserName, u => u.MapFrom(c => c.CreateUser.UserName)); diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index 7f2b67c54..3123ebec9 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -159,10 +159,10 @@ namespace IRaCIS.Application.Services ConfirmUserId = confirm.ConfirmUserId, ConfirmTime = confirm.ConfirmTime, - RealName = confirm.User.FullName, - UserName = confirm.User.UserName, - UserTypeId = confirm.User.UserTypeId, - UserTypeShortName = confirm.User.UserTypeRole.UserTypeShortName, + RealName = confirm.ConfirmUser.FullName, + UserName = confirm.ConfirmUser.UserName, + UserTypeId = confirm.ConfirmUser.UserTypeId, + UserTypeShortName = confirm.ConfirmUser.UserTypeRole.UserTypeShortName, FullFilePath = sysDoc.Path }; diff --git a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs index 505700b95..acf9923a2 100644 --- a/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs +++ b/IRaCIS.Core.Application/Triggers/SubjectVisitCheckPassedTrigger.cs @@ -65,40 +65,7 @@ namespace IRaCIS.Core.Application.Triggers } - } - // 触发临床数据 - //if (context.ChangeType == ChangeType.Added) - //{ - // var cRCClinicalDatas = await _clinicalDataTrialSetRepository.Where(x => x.TrialId == context.Entity.TrialId && x.UploadRole == UploadRole.CRC && x.IsConfirm) - - // .Select(x => new - // { - // x.Id, - // x.ClinicalDataLevel, - // }).ToListAsync(); - - // List readingClinicals = new List(); - // readingClinicals.AddRange( - - // cRCClinicalDatas.WhereIf(!context.Entity.IsBaseLine, x => x.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Select(x => new ReadingClinicalData() - // { - // ClinicalDataTrialSetId = x.Id, - // IsVisit = true, - // SubjectId = context.Entity.SubjectId, - // ReadingId = context.Entity.Id, - // TrialId = context.Entity.TrialId - - // }).ToList() - - // ); - - - // await _readingClinicalDataRepository.AddRangeAsync(readingClinicals); - // await _readingClinicalDataRepository.SaveChangesAsync(); - - //} - - + } } } } \ No newline at end of file diff --git a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs index 0adc8f6e1..0dc2897ef 100644 --- a/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs +++ b/IRaCIS.Core.Domain/Allocation/VisitTaskReReading.cs @@ -31,10 +31,6 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public User RequestReReadingConfirmUser { get; set; } - - [JsonIgnore] - public User CreateUser { get; set; } - [JsonIgnore] public Trial Trial { get; set; } diff --git a/IRaCIS.Core.Domain/BaseModel/Entity.cs b/IRaCIS.Core.Domain/BaseModel/Entity.cs index 26c0b0fc9..854414413 100644 --- a/IRaCIS.Core.Domain/BaseModel/Entity.cs +++ b/IRaCIS.Core.Domain/BaseModel/Entity.cs @@ -31,7 +31,7 @@ namespace IRaCIS.Core.Domain.Models #region 领域事件 仅仅允许通过提供的方法进行操作 - + [JsonIgnore] private readonly List _domainEvents = []; [JsonIgnore] @@ -68,6 +68,10 @@ namespace IRaCIS.Core.Domain.Models public Guid CreateUserId { get; set; } public DateTime CreateTime { get; set; } + + [ForeignKey("CreateUserId")] + [JsonIgnore] + public User CreateUser { get; set; } } public abstract class BaseAddDeleteAuditEntity : Entity, IAuditAdd, ISoftDelete @@ -78,6 +82,10 @@ namespace IRaCIS.Core.Domain.Models public Guid? DeleteUserId { get; set; } public bool IsDeleted { get; set; } public DateTime? DeletedTime { get; set; } + + [ForeignKey("CreateUserId")] + [JsonIgnore] + public User CreateUser { get; set; } } public abstract class BaseFullAuditEntity : Entity, IAuditUpdate, IAuditAdd @@ -86,6 +94,10 @@ namespace IRaCIS.Core.Domain.Models public DateTime CreateTime { get; set; } public Guid UpdateUserId { get; set; } public DateTime UpdateTime { get; set; } + + [ForeignKey("CreateUserId")] + [JsonIgnore] + public User CreateUser { get; set; } } @@ -98,6 +110,10 @@ namespace IRaCIS.Core.Domain.Models public DateTime CreateTime { get; set; } public Guid UpdateUserId { get; set; } public DateTime UpdateTime { get; set; } + + [ForeignKey("CreateUserId")] + [JsonIgnore] + public User CreateUser { get; set; } } @@ -108,6 +124,8 @@ namespace IRaCIS.Core.Domain.Models public Guid CreateUserId { get; set; } public DateTime CreateTime { get; set; } + + } public abstract class BaseAuditUpdateEntity : Entity, IAuditUpdate diff --git a/IRaCIS.Core.Domain/Document/SystemDocConfirmedUser.cs b/IRaCIS.Core.Domain/Document/SystemDocConfirmedUser.cs index c684334ef..13b1121ef 100644 --- a/IRaCIS.Core.Domain/Document/SystemDocConfirmedUser.cs +++ b/IRaCIS.Core.Domain/Document/SystemDocConfirmedUser.cs @@ -21,7 +21,7 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] [ForeignKey("ConfirmUserId")] - public User User { get; set; } + public User ConfirmUser { get; set; } #endregion diff --git a/IRaCIS.Core.Domain/Image/DicomStudy.cs b/IRaCIS.Core.Domain/Image/DicomStudy.cs index b22588a77..be3b91965 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudy.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudy.cs @@ -24,11 +24,6 @@ namespace IRaCIS.Core.Domain.Models [ForeignKey("SubjectVisitId")] public SubjectVisit SubjectVisit { get; set; } - - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User Uploader { get; set; } - [JsonIgnore] public List ReadingClinicalDataList { get; set; } diff --git a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs index e3d7716da..896391437 100644 --- a/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs +++ b/IRaCIS.Core.Domain/Image/DicomStudyMonitor.cs @@ -37,9 +37,6 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] [ForeignKey("TrialId")] public Trial Trial { get; set; } - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User Uploader { get; set; } #endregion diff --git a/IRaCIS.Core.Domain/Image/NoneDicomStudy.cs b/IRaCIS.Core.Domain/Image/NoneDicomStudy.cs index cc952b815..84f13892f 100644 --- a/IRaCIS.Core.Domain/Image/NoneDicomStudy.cs +++ b/IRaCIS.Core.Domain/Image/NoneDicomStudy.cs @@ -27,11 +27,6 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public Subject Subject { get; set; } - - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User CreateUser { get; set; } - #endregion diff --git a/IRaCIS.Core.Domain/Image/TaskStudy.cs b/IRaCIS.Core.Domain/Image/TaskStudy.cs index 7cabd23e5..7d163196d 100644 --- a/IRaCIS.Core.Domain/Image/TaskStudy.cs +++ b/IRaCIS.Core.Domain/Image/TaskStudy.cs @@ -26,11 +26,6 @@ namespace IRaCIS.Core.Domain.Models public Subject Subject { get; set; } - - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User Uploader { get; set; } - #endregion public Guid SeqId { get; set; } diff --git a/IRaCIS.Core.Domain/Image/TrialImageDownload.cs b/IRaCIS.Core.Domain/Image/TrialImageDownload.cs new file mode 100644 index 000000000..12b65c1fa --- /dev/null +++ b/IRaCIS.Core.Domain/Image/TrialImageDownload.cs @@ -0,0 +1,50 @@ +using IRaCIS.Core.Domain.Models; +using System; +using System.Collections.Generic; +using System.ComponentModel.DataAnnotations.Schema; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace IRaCIS.Core.Domain.Models +{ + [Table("TrialImageDownload")] + public class TrialImageDownload : BaseFullAuditEntity + { + #region 导航属性 + [JsonIgnore] + public Trial Trial { get; set; } + + #endregion + + public Guid TrialId { get; set; } + + public string SubjectCode { get; set; } + + public bool IsSuccess { get; set; } + + public DateTime DownloadStartTime { get; set; } + public DateTime? DownloadEndTime { get; set; } + + public string VisitName { get; set; } + + public ImageType ImageType { get; set; } + + public int NoneDicomStudyCount { get; set; } + + public int DicomStudyCount { get; set; } + + public int ImageCount { get; set; } + public long ImageSize { get; set; } + + public string IP { get; set; } + + } + + public enum ImageType + { + Dicom = 1, + NoneDicom = 2, + DicomAndNoneDicom = 3 + }; +} diff --git a/IRaCIS.Core.Domain/Management/Notice/SystemNotice.cs b/IRaCIS.Core.Domain/Management/Notice/SystemNotice.cs index 33fc437d5..25ea4b33a 100644 --- a/IRaCIS.Core.Domain/Management/Notice/SystemNotice.cs +++ b/IRaCIS.Core.Domain/Management/Notice/SystemNotice.cs @@ -24,8 +24,6 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public List NoticeUserReadList { get; set; } = new List(); - [JsonIgnore] - public User CreateUser { get; set; } #endregion diff --git a/IRaCIS.Core.Domain/Management/User.cs b/IRaCIS.Core.Domain/Management/User.cs index c024f2824..89b77911a 100644 --- a/IRaCIS.Core.Domain/Management/User.cs +++ b/IRaCIS.Core.Domain/Management/User.cs @@ -16,17 +16,13 @@ namespace IRaCIS.Core.Domain.Models [JsonIgnore] public List SystemDocConfirmedList { get; set; } - [JsonIgnore] - public List UserDoctors { get; set; } = new List(); + [JsonIgnore] public List UserTrials { get; set; } = new List(); [JsonIgnore] public List VisitTaskList { get; set; } - [JsonIgnore] - [ForeignKey("DoctorId")] - public Doctor Doctor { get; set; } #endregion diff --git a/IRaCIS.Core.Domain/Management/UserFeedBack.cs b/IRaCIS.Core.Domain/Management/UserFeedBack.cs index d02c8c12e..b9006d951 100644 --- a/IRaCIS.Core.Domain/Management/UserFeedBack.cs +++ b/IRaCIS.Core.Domain/Management/UserFeedBack.cs @@ -25,11 +25,9 @@ namespace IRaCIS.Core.Domain.Models public SubjectVisit SubjectVisit { get; set; } [JsonIgnore] public TrialSite TrialSite { get; set; } - [JsonIgnore] - public User CreateUser { get; set; } + [JsonIgnore] - public VisitTask VisitTask { get; set; } [NotMapped] diff --git a/IRaCIS.Core.Domain/QC/CheckChallengeDialog.cs b/IRaCIS.Core.Domain/QC/CheckChallengeDialog.cs index 3dd8bc9a0..f956548f0 100644 --- a/IRaCIS.Core.Domain/QC/CheckChallengeDialog.cs +++ b/IRaCIS.Core.Domain/QC/CheckChallengeDialog.cs @@ -18,8 +18,6 @@ namespace IRaCIS.Core.Domain.Models public Guid SubjectVisitId { get; set; } - public User CreateUser { get; set; } - public UserTypeEnum UserTypeEnum { get; set; } diff --git a/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs b/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs index 89f04ad74..d49718324 100644 --- a/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs +++ b/IRaCIS.Core.Domain/QC/ConsistencyCheckFile.cs @@ -11,9 +11,7 @@ namespace IRaCIS.Core.Domain.Models public class InspectionFile : BaseAddAuditEntity { #region 导航属性 - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User User { get; set; } + #endregion public string FileName { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Domain/QC/QCChallenge.cs b/IRaCIS.Core.Domain/QC/QCChallenge.cs index 86513fc7e..a74cc9901 100644 --- a/IRaCIS.Core.Domain/QC/QCChallenge.cs +++ b/IRaCIS.Core.Domain/QC/QCChallenge.cs @@ -9,9 +9,6 @@ namespace IRaCIS.Core.Domain.Models { #region 导航属性 [JsonIgnore] - [ForeignKey("CreateUserId")] - public User CreateUser { get; set; } - [JsonIgnore] [ForeignKey("LatestReplyUserId")] public User LatestReplyUser { get; set; } [JsonIgnore] diff --git a/IRaCIS.Core.Domain/QC/QCChallengeDialog.cs b/IRaCIS.Core.Domain/QC/QCChallengeDialog.cs index b01a25b0f..253aab1a2 100644 --- a/IRaCIS.Core.Domain/QC/QCChallengeDialog.cs +++ b/IRaCIS.Core.Domain/QC/QCChallengeDialog.cs @@ -9,9 +9,6 @@ namespace IRaCIS.Core.Domain.Models #region 导航属性 [JsonIgnore] public QCChallenge QCChallenge { get; set; } - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User CreateUser { get; set; } #endregion public string TalkContent { get; set; } = string.Empty; diff --git a/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicalReviewDialog.cs b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicalReviewDialog.cs index bfa14c86f..425608dcc 100644 --- a/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicalReviewDialog.cs +++ b/IRaCIS.Core.Domain/Reading/MedicalAudit/ReadingMedicalReviewDialog.cs @@ -47,9 +47,6 @@ namespace IRaCIS.Core.Domain.Models } } - [JsonIgnore] - [ForeignKey("CreateUserId")] - public User CreateUser { get; set; } #endregion /// diff --git a/IRaCIS.Core.Domain/SQLFile/20230613.sql b/IRaCIS.Core.Domain/SQLFile/20230613.sql deleted file mode 100644 index a5c0d9fd6..000000000 --- a/IRaCIS.Core.Domain/SQLFile/20230613.sql +++ /dev/null @@ -1,102 +0,0 @@ ---同步重阅申请表结构后,再维护该字段 - -UPDATE VisitTaskReReading -SET TrialId = VisitTask.TrialId -FROM VisitTaskReReading -INNER JOIN VisitTask ON VisitTaskReReading.OriginalReReadingTaskId = VisitTask.Id; - -delete VisitTaskReReading where TrialId is NULL - - ---数据库列字符串列 长度 -SELECT t.name AS table_name, - c.name AS column_name, - d.name AS constraint_name, - ty.Name as typeName, - c.max_length as length -FROM sys.tables t -INNER JOIN sys.columns c ON c.object_id = t.object_id -LEFT JOIN sys.default_constraints d ON d.parent_object_id = c.object_id AND d.parent_column_id = c.column_id -INNER JOIN sys.types ty on ty.system_type_id = c.system_type_id -AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar') -WHERE c.max_length < 100 AND c.max_length > 0 - ---带维护sql 的查询 - -SELECT t.name AS table_name, - c.name AS column_name, - d.name AS constraint_name, - ty.Name as typeName, - c.max_length as length, - 'ALTER TABLE ' + QUOTENAME(t.name) + ' DROP CONSTRAINT [' + d.name + ']' AS drop_constraint_sql, - CASE WHEN c.max_length = -1 THEN 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(MAX)' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END - WHEN c.max_length > 0 AND c.max_length < 100 THEN 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(' + CAST(100 AS VARCHAR(10)) + ')' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END - WHEN c.max_length = 8000 THEN 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' NVARCHAR(' + CAST(4000 AS VARCHAR(10)) + ')' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END - ELSE 'ALTER TABLE ' + QUOTENAME(t.name) + ' ALTER COLUMN ' + QUOTENAME(c.name) + ' ' + ty.name + '(' + CAST(c.max_length AS VARCHAR(10)) + ')' + CASE WHEN c.is_nullable = 1 THEN ' NULL' ELSE ' NOT NULL' END - END AS AlterColumnSQL, - 'ALTER TABLE ' + QUOTENAME(t.name) + ' ADD CONSTRAINT ' +'DF_'+t.name+ '_'+ c.name + ' DEFAULT ' + d.definition + ' FOR ' + QUOTENAME(c.name) AS add_constraint_sql -FROM sys.tables t -INNER JOIN sys.columns c ON c.object_id = t.object_id -LEFT JOIN sys.default_constraints d ON d.parent_object_id = c.object_id AND d.parent_column_id = c.column_id -INNER JOIN sys.types ty on ty.system_type_id = c.system_type_id -AND ty.name in ('nvarchar', 'varchar', 'char', 'nchar') -and (ty.name != 'nvarchar' or (ty.name = 'nvarchar' and (c.max_length = -1 or (c.max_length < 100 and c.max_length > 0)))) - - - ---修改默认约束名 -SELECT - OBJECT_SCHEMA_NAME(dc.parent_object_id) AS schema_name, - OBJECT_NAME(dc.parent_object_id) AS table_name, - dc.name AS constraint_name, - COL_NAME(dc.parent_object_id, dc.parent_column_id) AS column_name, - CONCAT('EXEC sp_rename N''', dc.name, ''', N''DF_', OBJECT_NAME(dc.parent_object_id), '_', COL_NAME(dc.parent_object_id, dc.parent_column_id), '''') AS executable_sql -FROM - sys.default_constraints dc -WHERE - dc.is_system_named = 1 -- 只查询自动生成的系统默认约束 - AND dc.name NOT LIKE 'DF\[_%]\[_%]' ESCAPE '\'; -- 排除符合 "DF_表名_列名" 格式的约束名 - - SELECT - sys.tables.name AS table_name, - sys.columns.name AS column_name, - sys.default_constraints.name AS constraint_name, - 'EXEC sp_rename N''' + sys.default_constraints.name + ''', N''DF_' + sys.tables.name + '_' + sys.columns.name + '''' - AS executable_sql -FROM sys.default_constraints -INNER JOIN sys.tables ON sys.default_constraints.parent_object_id = sys.tables.object_id -INNER JOIN sys.columns ON sys.default_constraints.parent_column_id = sys.columns.column_id AND sys.tables.object_id = sys.columns.object_id - - - --修改主键 - SELECT - OBJECT_NAME(i.object_id) AS '表名', - COL_NAME(ic.object_id, ic.column_id) AS '列名', - i.name AS '索引名', - CONCAT('EXEC sp_rename ''', i.name, ''', ''PK_', OBJECT_NAME(i.object_id), '_', - COL_NAME(ic.object_id, ic.column_id), '''') - AS '修改索引名为 PK_表名_字段名', - i.is_primary_key AS '是否主键' -FROM - sys.indexes i -INNER JOIN - sys.index_columns ic ON i.object_id = ic.object_id AND i.index_id = ic.index_id -WHERE - (i.is_primary_key = 1 OR i.is_unique_constraint = 1) - AND OBJECTPROPERTY(i.object_id, 'IsSystemTable') = 0 - AND OBJECTPROPERTY(i.object_id, 'IsMSShipped') = 0 - AND OBJECT_NAME(i.object_id) <> 'sysdiagrams'; - - - ----------------------------维护临床数据是否应用 之前默认都是应用 现在添加字段 把状态都改为应用 - update ClinicalDataTrialSet set IsApply=1 - - ---维护 删除临床数据配置,导致删除阅片期问题 - delete ReadingClinicalData -from ReadingClinicalData -INNER JOIN ReadModule on ReadingClinicalData.ReadingId = ReadModule.Id - - -where not EXISTS (select Id from TrialClinicalDataSetCriterion where ReadModule.TrialReadingCriterionId =TrialClinicalDataSetCriterion.TrialReadingCriterionId) \ No newline at end of file diff --git a/IRaCIS.Core.Domain/SQLFile/23231012.sql b/IRaCIS.Core.Domain/SQLFile/23231012.sql deleted file mode 100644 index 79bd6d1e8..000000000 --- a/IRaCIS.Core.Domain/SQLFile/23231012.sql +++ /dev/null @@ -1,15 +0,0 @@ --- 查询指定 code 的记录及其父项 -SELECT * -FROM Dictionary -WHERE code = 'BusinessModule' - -UNION - --- 查询指定 code 的记录及其子项 -SELECT t.* -FROM Dictionary t -INNER JOIN ( - SELECT Id - FROM Dictionary - WHERE code = 'BusinessModule' -) AS selected ON t.ParentId = selected.Id; diff --git a/IRaCIS.Core.Domain/SQLFile/4.21号发布后维护.sql b/IRaCIS.Core.Domain/SQLFile/4.21号发布后维护.sql deleted file mode 100644 index f21e13bd7..000000000 --- a/IRaCIS.Core.Domain/SQLFile/4.21号发布后维护.sql +++ /dev/null @@ -1,188 +0,0 @@ ---- 1、变更的表名 - ---EXEC sp_rename 'old_table_name', 'new_table_name'; -EXEC sp_rename 'CriterionNidus', 'CriterionNidusSystem'; -EXEC sp_rename 'ReadingCriterionDictionary', 'ReadingSystemCriterionDictionary'; - - ----- 2、处理发布环境的表数据拆分 - ---会直接创建表 CriterionNidusSystem_copy - --SELECT * - --INTO CriterionNidusSystem_copy - --FROM CriterionNidusSystem - --WHERE IsSystemCriterion = 0; - ---创建CriterionNidusTrial 将数据迁移过来 -SELECT * -INTO CriterionNidusTrial -FROM CriterionNidusSystem -WHERE IsSystemCriterion = 0; - - -SELECT * -INTO ReadingTrialCriterionDictionary -FROM ReadingSystemCriterionDictionary -WHERE IsSystemCriterion = 0; - - ------ 三、维护稽查数据 -select Count(*) from DataInspection where EntityName='CriterionNidus' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Add' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Update' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Deleted' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Add/IsTrial' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Add/IsTrial/Auto' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Update/IsTrial' -select Count(*) from DataInspection where EntityName='CriterionNidus' and Identification='CriterionNidus/Deleted/IsTrial' - - -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/QuestionType' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/LesionType' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/OncologyAssessType' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/GlobalAssessType' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/QuestionType/IsTrial' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/LesionType/IsTrial' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/OncologyAssessType/IsTrial' -select Count(*) from DataInspection where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/GlobalAssessType/IsTrial' - - ---系统 CriterionNidusSystem -update DataInspection SET Identification='CriterionNidusSystem/Add', EntityName='CriterionNidusSystem' where EntityName='CriterionNidus' and Identification='CriterionNidus/Add' -update DataInspection SET Identification='CriterionNidusSystem/Update' , EntityName='CriterionNidusSystem' where EntityName='CriterionNidus' and Identification='CriterionNidus/Update' -update DataInspection SET Identification='CriterionNidusSystem/Deleted', EntityName='CriterionNidusSystem' where EntityName='CriterionNidus' and Identification='CriterionNidus/Deleted' - ---项目 CriterionNidusTrial -update DataInspection SET Identification='CriterionNidusTrial/Add' , EntityName='CriterionNidusTrial' where EntityName='CriterionNidus' and Identification='CriterionNidus/Add/IsTrial' -update DataInspection SET Identification='CriterionNidusTrial/Add/Auto' , EntityName='CriterionNidusTrial' where EntityName='CriterionNidus' and Identification='CriterionNidus/Add/IsTrial/Auto' -update DataInspection SET Identification='CriterionNidusTrial/Update' , EntityName='CriterionNidusTrial' where EntityName='CriterionNidus' and Identification='CriterionNidus/Update/IsTrial' -update DataInspection SET Identification='CriterionNidusTrial/Deleted' , EntityName='CriterionNidusTrial' where EntityName='CriterionNidus' and Identification='CriterionNidus/Deleted/IsTrial' - ---系统ReadingSystemCriterionDictionary -update DataInspection SET Identification='ReadingSystemCriterionDictionary/Add/QuestionType', EntityName='ReadingSystemCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/QuestionType' -update DataInspection SET Identification='ReadingSystemCriterionDictionary/Add/LesionType' , EntityName='ReadingSystemCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/LesionType' -update DataInspection SET Identification='ReadingSystemCriterionDictionary/Add/OncologyAssessType', EntityName='ReadingSystemCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/OncologyAssessType' -update DataInspection SET Identification='ReadingSystemCriterionDictionary/Add/GlobalAssessType', EntityName='ReadingSystemCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/GlobalAssessType' - ---项目ReadingTrialCriterionDictionary -update DataInspection SET Identification='ReadingTrialCriterionDictionary/Add/QuestionType', EntityName='ReadingTrialCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/QuestionType/IsTrial' -update DataInspection SET Identification='ReadingTrialCriterionDictionary/Add/LesionType' , EntityName='ReadingTrialCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/LesionType/IsTrial' -update DataInspection SET Identification='ReadingTrialCriterionDictionary/Add/OncologyAssessType', EntityName='ReadingTrialCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/OncologyAssessType/IsTrial' -update DataInspection SET Identification='ReadingTrialCriterionDictionary/Add/GlobalAssessType', EntityName='ReadingTrialCriterionDictionary' where EntityName='ReadingCriterionDictionary' and Identification='ReadingCriterionDictionary/Add/GlobalAssessType/IsTrial' - - - ---国际化indication 维护 -UPDATE Trial SET IndicationEnum = CASE - WHEN Indication = '肺癌' THEN 0 - WHEN Indication = '实体瘤' THEN 1 - WHEN Indication = '淋巴瘤' THEN 2 - WHEN Indication = '乳腺癌' THEN 3 - WHEN Indication = '白血病' THEN 4 - WHEN Indication = '胃癌' THEN 5 - WHEN Indication = '肝癌' THEN 6 - WHEN Indication = '骨髓癌' THEN 7 - WHEN Indication = '肠癌' THEN 8 - WHEN Indication = '前列腺癌' THEN 9 - WHEN Indication = '肾癌' THEN 10 - WHEN Indication = '宫颈癌' THEN 11 - WHEN Indication = '头颈部癌' THEN 12 - WHEN Indication = '卵巢癌' THEN 13 - WHEN Indication = '胆癌' THEN 14 - WHEN Indication = '食管癌' THEN 15 - WHEN Indication = '腹膜癌' THEN 16 - WHEN Indication = '上皮癌' THEN 17 - WHEN Indication = '黑色素瘤' THEN 18 - WHEN Indication = '甲状腺癌' THEN 19 - WHEN Indication = '输卵管癌' THEN 20 - WHEN Indication = '胰腺癌' THEN 21 - WHEN Indication = '膀胱癌' THEN 22 - WHEN Indication = '鼻咽癌' THEN 23 - WHEN Indication = '胶质瘤' THEN 24 - WHEN Indication = '子宫癌' THEN 25 - WHEN Indication = '尿道癌' THEN 26 - WHEN Indication = '软组织肉瘤' THEN 27 - WHEN Indication = '神经内分泌瘤' THEN 28 - WHEN Indication = '睾丸癌' THEN 29 - WHEN Indication = '骨肉瘤' THEN 30 - WHEN Indication = '间皮瘤' THEN 31 - WHEN Indication = '绒毛膜病' THEN 32 - WHEN Indication = '胃肠道间质瘤' THEN 33 - WHEN Indication = '骨癌' THEN 34 - WHEN Indication = '脑瘤' THEN 35 - WHEN Indication = '胸腺瘤' THEN 36 - WHEN IndicationTypeId = '437a81b3-c5ad-49fd-82a1-8f441c4ba8da' THEN 37 - WHEN IndicationTypeId = '433d9801-5fa0-42bb-604b-08d9c1232c4f' THEN 38 - WHEN IndicationTypeId = 'a5fdd212-a716-4df4-604c-08d9c1232c4f' THEN 39 - ELSE IndicationEnum - END; - - select DISTINCT IndicationEnum ,Indication from Trial - - update Trial set Indication='' where IndicationEnum not in (37,38,39) - - --- 附加评估发布设置之前的默认值 -Update ReadingQuestionCriterionTrial set IsAdditionalAssessment=0,IsAutoCreate=1 - ---- 维护临床数据英文名称 -update clinicalDataSystemSet set clinicalDataSystemSet.ClinicalDataSetEnName=DictionaryChild.Value from Dictionary DictionaryChild -inner join clinicalDataSystemSet on CONVERT(varchar(200),clinicalDataSystemSet.ClinicalDataSetEnum) =DictionaryChild.Code -inner join Dictionary DictionaryParent on DictionaryParent.Id=DictionaryChild.ParentId -where DictionaryParent.Code='ClinicalDataType' -go - - -update ClinicalDataTrialSet set ClinicalDataTrialSet.ClinicalDataSetEnName=clinicalDataSystemSet.ClinicalDataSetEnName from clinicalDataSystemSet -inner join ClinicalDataTrialSet on ClinicalDataTrialSet.SystemClinicalDataSetId=clinicalDataSystemSet.Id - - - ----------------维护项目器官表 将器官信息在项目表里面存冗余 -update OrganTrialInfo set -OrganTrialInfo.PartEN=OrganInfo.PartEN , -OrganTrialInfo.Part=OrganInfo.Part, -OrganTrialInfo.TULOC=OrganInfo.TULOC, -OrganTrialInfo.TULOCEN=OrganInfo.TULOCEN, -OrganTrialInfo.TULAT=OrganInfo.TULAT, -OrganTrialInfo.TULATEN=OrganInfo.TULATEN, -OrganTrialInfo.IsLymphNodes=OrganInfo.IsLymphNodes, -OrganTrialInfo.IsCanEditPosition=OrganInfo.IsCanEditPosition, -OrganTrialInfo.Classification=OrganInfo.Classification, -OrganTrialInfo.ClassificationEN=OrganInfo.ClassificationEN, -OrganTrialInfo.ShowOrder=OrganInfo.ShowOrder, -OrganTrialInfo.OrganType=OrganInfo.OrganType -from OrganInfo inner join OrganTrialInfo -on OrganInfo.Id=OrganTrialInfo.OrganInfoId where OrganTrialInfo.OrganType is null - - - - -update FrontAuditConfig set Identification='' where Identification is NULL - ---新增字段 - -ALTER TABLE [dbo].[Trial] ADD [AttendedReviewerTypes] varchar(255) COLLATE Chinese_PRC_CI_AS DEFAULT '' NOT NULL -GO - -ALTER TABLE [dbo].[Trial] ADD [DeclarationTypes] varchar(255) COLLATE Chinese_PRC_CI_AS DEFAULT '' NOT NULL -GO - - ---维护sql -UPDATE Trial SET AttendedReviewerTypes = '|' + CAST(AttendedReviewerType AS VARCHAR(10)) + '|' - -update Trial set DeclarationTypes ='|' + (select Code from Dictionary where Id= Trial.DeclarationTypeId) + '|' - - ---验证sql -select DISTINCT AttendedReviewerType ,AttendedReviewerTypes, DeclarationTypeId, Dictionary.Code,DeclarationTypes,Dictionary.[Value] from Trial inner join Dictionary on Trial.DeclarationTypeId=Dictionary.Id - - - - - - - - diff --git a/IRaCIS.Core.Domain/SQLFile/Portal.sql b/IRaCIS.Core.Domain/SQLFile/Portal.sql deleted file mode 100644 index de4ed4438..000000000 --- a/IRaCIS.Core.Domain/SQLFile/Portal.sql +++ /dev/null @@ -1,8 +0,0 @@ --- 20221223同步表数据 --- Dictionary FrontAuditConfig Menu UserType UserTypeMenu ReadingQuestionSystem ReadingTableQuestionSystem OrganInfo ReadingQuestionCriterionSystem TumorAssessment --- 需要特别注意的表 CriterionNidus ReadingCriterionDictionary - -select * from CriterionNidus where IsSystemCriterion=1 -select * from ReadingCriterionDictionary where IsSystemCriterion=1 -delete CriterionNidus where IsSystemCriterion=1 -delete ReadingCriterionDictionary where IsSystemCriterion=1 diff --git a/IRaCIS.Core.Domain/SQLFile/Test.sql b/IRaCIS.Core.Domain/SQLFile/Test.sql deleted file mode 100644 index cda90f2e8..000000000 --- a/IRaCIS.Core.Domain/SQLFile/Test.sql +++ /dev/null @@ -1,1060 +0,0 @@ ------2022-05-27------------------------ - -update DataInspection set BatchId=Id where BatchId is null - -update QCChallenge set Code=ChallengeCode - -update QCChallenge set ChallengeCode='Q'+ RIGHT('00000'+CAST( Code AS nvarchar(50)),5); - - - - ------2022-08-11------------------------ - -update [dbo].[Site] set Code= convert(int,RIGHT(SiteCode,4)) -update Site set SiteName= substring(SiteName,1,charindex('医院',SiteName)+1),AliasName=substring(SiteName,charindex('医院',SiteName)+2,30) where SiteName like '%医院%医院' - - -update Doctor set Physician='Chief Physician',PhysicianCN='主任医师' where RankId='dcbf4d1a-8373-4539-a0ae-1ba76d57bb48' -update Doctor set Physician='Deputy Chief Physician',PhysicianCN='副主任医师' where RankId='3a6e3335-cea4-4803-a136-d6301883a937' -update Doctor set RankOther='Professor',RankOtherCN='教授' where RankId='dcbf4d1a-8373-4539-a0ae-1ba76d57bb48' -update Doctor set RankOther='Associate Professor',RankOtherCN='副教授' where RankId='3a6e3335-cea4-4803-a136-d6301883a937' -update Doctor set Physician='Staff',PhysicianCN='医师' where RankId='82411c2e-9832-4c6f-a859-e3b6e796760d' - - -update DataInspection set JsonDetail= replace(cast(JsonDetail as varchar(max)),'Insepection','CommonData') - -update ReadingClinicalData set FileCount=(select count(*) from ReadingClinicalDataPDF where ReadingClinicalDataId =ReadingClinicalData.Id) -update NoneDicomStudy set FileCount=(select count(*) from NoneDicomStudyFile where NoneDicomStudyId =NoneDicomStudy.Id) - - -update DataInspection set CreateUserName= (select UserName from [User] where [User].Id = DataInspection.CreateUserId) - -update DataInspection set RoleName=(select UserName from [User] INNER join UserType on [User].UserTypeId =UserType.Id where [User].Id=DataInspection.CreateUserId) - -update DataInspection set CreateUserRealName=(select LastName+' / '+FirstName from [User] where [User].Id=DataInspection.CreateUserId) - - -update TrialDocUserTypeConfirmedUser set CreateUserId=ConfirmUserId,CreateTime=SignFirstViewTime -update SystemDocConfirmedUser set CreateUserId=ConfirmUserId,CreateTime=SignFirstViewTime -update TrialDocUserTypeConfirmedUser set CreateUserId=ConfirmUserId,CreateTime=getdate() where SignFirstViewTime is null -update SystemDocConfirmedUser set CreateUserId=ConfirmUserId,CreateTime=getdate() where SignFirstViewTime is null -update TrialDocUserTypeConfirmedUser set IsDeleted=0 where IsDeleted is null -update SystemDocConfirmedUser set IsDeleted=0 where IsDeleted is null - - -update EnrollReadingCategory set TrialReadingCriterionId= ISNUll((select top 1 Id from ReadingQuestionCriterionTrial where IsConfirm=1 and TrialId=Enroll.TrialId ) ,'00000000-0000-0000-0000-000000000000') -FROM EnrollReadingCategory INNER JOIN Enroll ON (EnrollReadingCategory.EnrollId = Enroll.Id) - -update VisitTask set TrialReadingCriterionId=(select top 1 Id from ReadingQuestionCriterionTrial where IsConfirm=1 and TrialId=VisitTask.TrialId) -select * from EnrollReadingCategory where TrialReadingCriterionId is null -select * from VisitTask where TrialReadingCriterionId is null - - - update Site set Site.Code = (select b.code2 from (select Id,row_number() over(order by Site.SiteName) code2 from Site) b where b.Id =Site.Id) - update Site set SiteCode= 'S'+ RIGHT('0000'+CAST(Site.Code as varchar(10)),4) - - --不用同步 -update FrontAuditConfig set ValueCN='任务名称' where Value='TaskName' and ValueCN='访视/阅片期名称' and Code='TaskName' -update FrontAuditConfig set ValueCN='任务盲态标识' where Value='TaskBlindName' and ValueCN='访视盲态名称' and Code='TaskBlindName' - - -----------------------------------------之前的------------------------------------------------------------- - - - ---无序维护sql -update VisitTask set TaskBlindName='Follow-up' - from VisitTask -INNER join ReadingQuestionCriterionTrial on VisitTask.TrialReadingCriterionId=ReadingQuestionCriterionTrial.Id -INNER join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - where SubjectVisit.IsBaseLine=0 and ReadingQuestionCriterionTrial.IsReadingTaskViewInOrder=0 - - --- 有序维护sql -update VisitTask set TaskBlindName='Follow-up '+ cast(sv.rn as varchar) - from VisitTask -join ReadingQuestionCriterionTrial on VisitTask.TrialReadingCriterionId=ReadingQuestionCriterionTrial.Id ---join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id -join ( select Id SubjectVisitId, IsBaseLine, ROW_NUMBER() over( partition by SubjectId order by VisitNum asc )-1 rn,VisitNum from SubjectVisit where IsLostVisit=0) sv on VisitTask.SourceSubjectVisitId=sv.SubjectVisitId -where sv.IsBaseLine=0 and ReadingQuestionCriterionTrial.IsReadingTaskViewInOrder=1 - -update VisitTask set TaskBlindName='Baseline' from VisitTask -join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id where SubjectVisit.IsBaseLine=1 - - - - -----------------------------------------------修改 ---------------------------------------- -update Dictionary set code =0 where Id='15bb5529-a6fe-439f-5196-08da179a7080' -update Dictionary set code =1 where Id='0628d7be-afba-4471-5197-08da179a7080' -update Dictionary set code =2 where Id='41bfec4b-dbfb-401d-5198-08da179a7080' -update Dictionary set code =-1 where Id='1fac678d-69b6-41c3-5199-08da179a7080' -go - - -update ReadingQuestionCriterionTrial set DigitPlaces=DigitPlaces-1 where DigitPlaces is not null -update ReadingQuestionCriterionTrial set DigitPlaces=-1 where DigitPlaces=3 - - - - - - ---阅片标准维护 -update DataInspection set ObjectRelationParentId3 = (select top 1 TrialReadingCriterionId from SubjectUser where Id =DataInspection.GeneralId) where EntityName='SubjectUser' -update DataInspection set ObjectRelationParentId2 = (select top 1 TrialReadingCriterionId from ReadingPeriodSet where Id =DataInspection.GeneralId) where EntityName='ReadingPeriodSet' -update DataInspection set ObjectRelationParentId2 = (select top 1 TrialReadingCriterionId from ReadModule where Id =DataInspection.GeneralId) where EntityName='ReadModule' -update DataInspection set ObjectRelationParentId2 = (select top 1 TrialReadingCriterionId from TaskConsistentRule where Id =DataInspection.GeneralId) where EntityName='TaskConsistentRule' -update DataInspection set ObjectRelationParentId3 = (select top 1 TrialReadingCriterionId from VisitTask where Id =DataInspection.GeneralId) where EntityName='VisitTask' - -update ReadingTableQuestionTrial set DictionaryCode='' where DictionaryCode is null - - - - ---维护RowInfo的OrderMark - -select * from ReadingTableAnswerRowInfo -update ReadingTableAnswerRowInfo set ReadingTableAnswerRowInfo.OrderMark=ReadingQuestionTrial.OrderMark from ReadingQuestionTrial -inner join ReadingTableAnswerRowInfo on ReadingTableAnswerRowInfo.QuestionId=ReadingQuestionTrial.Id - - - -delete ReadingTableQuestionAnswer where TableQuestionId in (select id from ReadingTableQuestionTrial where QuestionMark=3) -go -delete ReadingTableQuestionTrial where QuestionMark=3 -go -delete ReadingTableQuestionSystem where QuestionMark=3 -go - - -------------------------------------2022-12-13---------------------------- -update ReadingQuestionSystem set DefaultValue='' -update ReadingQuestionTrial set DefaultValue='' - -----------删除之后要重新同步器官数据 -delete OrganInfo where SystemCriterionId='B0450000-9B8E-98FA-6658-08DA4DAB1FAC' -delete OrganTrialInfo -    where (select count(1) as num from OrganInfo where OrganInfo.Id = OrganTrialInfo.OrganInfoId) = 0 - - -----2022-12-15 -Update Trial set BlindBaseLineName='Baseline',BlindFollowUpPrefix='Follow-up' -update DataInspection set VisitTaskId = GeneralId where EntityName='VisitTask' - ---2022-12-17 维护稽查数据 -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('OriginalReReadingTaskId":"',JsonDetail)+26,36) where EntityName='VisitTaskReReading' -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('VisitTaskId":"',JsonDetail)+14,36) where EntityName='TaskMedicalReview' -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('VisitTaskId":"',JsonDetail)+14,36) where EntityName='ReadingOncologyTaskInfo' -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('VisitTaskId":"',JsonDetail)+14,36) where EntityName='ReadingMedicalReviewDialog' -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('VisitTaskId":"',JsonDetail)+14,36) where EntityName='ReadingTaskQuestionAnswer' -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('VisitTaskId":"',JsonDetail)+14,36) where EntityName='ReadingTableAnswerRowInfo' -update DataInspection set VisitTaskId= substring(JsonDetail,CHARINDEX('VisitTaskId":"',JsonDetail)+14,36) where EntityName='ReadingMedicineQuestionAnswer' - - -update DataInspection set SubjectVisitId=null where EntityName='ReadModule' -update DataInspection set TrialReadingCriterionId=(select TrialReadingCriterionId from VisitTask where Id =VisitTaskId) where VisitTaskId is not null and TrialReadingCriterionId is null - - - ---稽查bug 数据维护 - -update DataInspection set TrialReadingCriterionId= substring(JsonDetail,CHARINDEX('TrialCriterionId":"',JsonDetail)+19 + -( DATALENGTH( left( cast([JsonDetail] as VARCHAR(2500)) ,charindex('TrialCriterionId":"',JsonDetail)) ) - -LEN ( left( cast([JsonDetail] as VARCHAR(2500)) ,charindex('TrialCriterionId":"',JsonDetail)) ) -),36) where EntityName='ReadingTableQuestionTrial' -update DataInspection set TrialReadingCriterionId= substring(JsonDetail,CHARINDEX('ReadingQuestionCriterionTrialId":"',JsonDetail)+34,36) where EntityName='ReadingQuestionTrial' -update DataInspection set TrialReadingCriterionId= GeneralId where EntityName='ReadingQuestionCriterionTrial' - ---维护临床数据状态 -update ReadingClinicalData set IsSign=1 where EXISTS(select * from SubjectVisit where Id=ReadingId and IsBaseLine=1 and IsConfirmedClinicalData=1) and IsSign=0 -update ReadingClinicalData set ReadingClinicalDataState=3 where IsSign=1 and ReadingClinicalDataState!=3 - - - ---20221223--发布生产开始 - - - -update DataInspection set Identification='ReadingMedicineQuestionAnswer/Add' , ObjectTypeId='E8250000-3E2C-0016-8166-08DA7E8DFF90',OptTypeId='02FCF476-4089-4B2C-B9BE-08DA0E391693',ModuleTypeId='A4460000-3E2C-0016-F305-08DA7E8C40BB' where EntityName='ReadingMedicineQuestionAnswer' -update DataInspection set ObjectTypeId='A4100000-3E2C-0016-A716-08DA7E8DA9BD',OptTypeId='02FCF476-4089-4B2C-B9BE-08DA0E391693',ModuleTypeId='A4460000-3E2C-0016-F305-08DA7E8C40BB' where Identification='ReadingMedicalReview/saveMedicalReviewInfo/TaskMedicalReview/Update' -update DataInspection set Identification='ReadingMedicalReviewDialog/Add' , ObjectTypeId='D8270000-3E2C-0016-2A14-08DA3EDB77FD',OptTypeId='02FCF476-4089-4B2C-B9BE-08DA0E391693',ModuleTypeId='A4460000-3E2C-0016-F305-08DA7E8C40BB' where EntityName='ReadingMedicalReviewDialog' - -update DataInspection set Identification='ReadingMedicalReviewDialog/Add/IR' from DataInspection INNER JOIN [User] on DataInspection.CreateUserId = [User].Id where DataInspection.EntityName='ReadingMedicalReviewDialog' and [User].UserTypeEnum=13 -update DataInspection set Identification='ReadingMedicalReviewDialog/Add/MIM' from DataInspection INNER JOIN [User] on DataInspection.CreateUserId = [User].Id where DataInspection.EntityName='ReadingMedicalReviewDialog' and [User].UserTypeEnum=14 - - - ----------修改 ReadingMedicineQuestionAnswer的VisitTaskId -update ReadingMedicineQuestionAnswer set ReadingMedicineQuestionAnswer.VisitTaskId=TaskMedicalReview.VisitTaskId from TaskMedicalReview -inner join ReadingMedicineQuestionAnswer on ReadingMedicineQuestionAnswer.TaskMedicalReviewId=TaskMedicalReview.id - - - - -update frontAuditConfig set DictionaryCode ='' where Code='AuditState' and DictionaryCode='AuditState' - -----正式环境 修改TrialCode 错误的 - - - - - -----------------------------2023-1-09 - --- 修改Hospital 的SiteId -update Hospital set Hospital.SiteId=Site.Id from Site -inner join Hospital on Hospital.HospitalName=Site.SiteName - - ----2023 -1-10 ---处理访视 - --基线 -update VisitTask set IsNeedClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=1 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and (ClinicalDataLevel=0 or ClinicalDataLevel=1) and IsConfirm=1) and IsNeedClinicalDataSign=0 - - - update VisitTask set IsNeedClinicalDataSign =0 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=1 and not EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and (ClinicalDataLevel=0 or ClinicalDataLevel=1) and IsConfirm=1) and IsNeedClinicalDataSign=1 - - --非基线 -update VisitTask set IsNeedClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1) and IsNeedClinicalDataSign =0 - - - update VisitTask set IsNeedClinicalDataSign =0 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and not EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1) and IsNeedClinicalDataSign =1 - ---处理裁判 - -update VisitTask set IsNeedClinicalDataSign =0,IsClinicalDataSign=0 where VisitTask.ReadingCategory=4 - ---处理肿瘤学 - -update VisitTask set IsNeedClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id - where VisitTask.ReadingCategory=5 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=3 and IsConfirm=1) - and IsNeedClinicalDataSign =0 - - update VisitTask set IsNeedClinicalDataSign =0 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id - where VisitTask.ReadingCategory=5 and not EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=3 and IsConfirm=1) - and IsNeedClinicalDataSign =1 - ---处理全局 - -update VisitTask set IsNeedClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id - where VisitTask.ReadingCategory=2 and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=2 and IsConfirm=1) - and IsNeedClinicalDataSign =0 - - -update VisitTask set IsNeedClinicalDataSign =0 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id - where VisitTask.ReadingCategory=2 and not EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=2 and IsConfirm=1 ) - and IsNeedClinicalDataSign=1 - - - -----处理 是否所有临床数据都签名的字段 ---处理访视 - --基线 -update VisitTask set IsClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=1 and VisitTask.IsClinicalDataSign =0 and VisitTask.IsNeedClinicalDataSign=1 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and (ClinicalDataLevel=0 or ClinicalDataLevel=1) and IsConfirm=1) - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ( ClinicalDataLevel=0 or ClinicalDataLevel=1) and IsConfirm=1 and UploadRole=1 - ) - =(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1 - -- 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署 - ) - ---处理基线脏数据 - update VisitTask set IsClinicalDataSign =0 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=1 and VisitTask.IsClinicalDataSign =1 and VisitTask.IsNeedClinicalDataSign=1 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and (ClinicalDataLevel=0 or ClinicalDataLevel=1) and IsConfirm=1) - and ( - select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ( ClinicalDataLevel=0 or ClinicalDataLevel=1) and IsConfirm=1 and UploadRole=1 - ) - !=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1 - -- 有可能仅仅CRC Subject级别 需要签名 CRC自动签名了 没有PM需要签名的文档 此时应该设置为已签署 - ) - - - - --非基线 -update VisitTask set IsClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and VisitTask.IsClinicalDataSign =0 and VisitTask.IsNeedClinicalDataSign=1 - - -- 非基线 可能只有CRC 访视级别 PM 没有 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1) - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1 and UploadRole=1 ) - =(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1) - - --维护错误数据 - update VisitTask set IsClinicalDataSign =0 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join SubjectVisit on VisitTask.SourceSubjectVisitId=SubjectVisit.Id - where VisitTask.ReadingCategory=1 and SubjectVisit.IsBaseLine=0 and VisitTask.IsClinicalDataSign =1 and VisitTask.IsNeedClinicalDataSign=1 - - -- 非基线 可能只有CRC 访视级别 PM 没有 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1) - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=1 and IsConfirm=1 and UploadRole=1 ) - !=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SourceSubjectVisitId and ClinicalDataTrialSet.UploadRole=1) - - ---处理肿瘤学 - -update VisitTask set IsClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id - where VisitTask.ReadingCategory=5 and VisitTask.IsClinicalDataSign =0 and VisitTask.IsNeedClinicalDataSign=1 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=3 and IsConfirm=1) - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=3 and IsConfirm=1) - =(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SouceReadModuleId and ClinicalDataTrialSet.UploadRole=1) - - - ---处理全局 -update VisitTask set IsClinicalDataSign =1 from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id - where VisitTask.ReadingCategory=2 and VisitTask.IsClinicalDataSign =0 and VisitTask.IsNeedClinicalDataSign=1 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=2 and IsConfirm=1) - - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=2 and IsConfirm=1) - =(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SouceReadModuleId and ClinicalDataTrialSet.UploadRole=1) - - --维护脏数据 - update VisitTask set IsClinicalDataSign =0 from VisitTask - - --select VisitTask.Id as VisitTaskId ,Trial.Id, Trial.ExperimentName, VisitTask.TaskName,ReadingQuestionCriterionTrial.CriterionName,Subject.Code ,VisitTask.IsNeedClinicalDataSign,VisitTask.IsClinicalDataSign ,VisitTask.DoctorUserId from VisitTask -inner join ReadingQuestionCriterionTrial on ReadingQuestionCriterionTrial.Id=VisitTask.TrialReadingCriterionId -inner join ReadModule on VisitTask.SouceReadModuleId=ReadModule.Id -inner join Subject on VisitTask.SubjectId=Subject.Id -inner join Trial on VisitTask.TrialId=Trial.Id - where VisitTask.ReadingCategory=2 and VisitTask.IsClinicalDataSign =1 and VisitTask.IsNeedClinicalDataSign=1 - and EXISTS (select * from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=2 and IsConfirm=1) - - and (select count(*) from ClinicalDataTrialSet where TrialId=VisitTask.TrialId and CriterionEnumListStr LIKE '%|'+ CAST(ReadingQuestionCriterionTrial.CriterionType AS varchar(20))+'|%' and ClinicalDataLevel=2 and IsConfirm=1 ) - !=(select count(*) from ReadingClinicalData inner join ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId =ClinicalDataTrialSet.Id - where ReadingClinicalData.TrialId=VisitTask.TrialId and IsSign=1 and ReadingClinicalDataState=3 and ReadingId=VisitTask.SouceReadModuleId and ClinicalDataTrialSet.UploadRole=1 and ClinicalDataLevel=2 ) - - - --处理字段 IsFrontTaskNeedSignButNotSign - - UPDATE v SET [v].[IsFrontTaskNeedSignButNotSign] =1 -FROM [VisitTask] AS [v] -WHERE EXISTS ( - - SELECT 1 - FROM [VisitTask] AS [v0] - where [v0].SubjectId=v.SubjectId and [v0].TrialReadingCriterionId=V.TrialReadingCriterionId and [v0].TrialId=V.TrialId and EXISTS( - SELECT 1 - FROM [VisitTask] AS [v1] - WHERE [v1].SubjectId=v.SubjectId and V1.TrialReadingCriterionId=V.TrialReadingCriterionId and V1.TrialId=V.TrialId and [v1].[IsNeedClinicalDataSign]=1 and V1.IsClinicalDataSign=0 and V1.VisitTaskNum< [v0].[VisitTaskNum] - - ) and [v0].[IsFrontTaskNeedSignButNotSign]=0 AND [v0].[Id] = [v].[Id] ) - - - UPDATE v SET [v].[IsFrontTaskNeedSignButNotSign] =0 -FROM [VisitTask] AS [v] -WHERE EXISTS ( - - SELECT 1 - FROM [VisitTask] AS [v0] - where [v0].SubjectId=v.SubjectId and [v0].TrialReadingCriterionId=V.TrialReadingCriterionId and [v0].TrialId=V.TrialId and not EXISTS( - SELECT 1 - FROM [VisitTask] AS [v1] - WHERE [v1].SubjectId=v.SubjectId and V1.TrialReadingCriterionId=V.TrialReadingCriterionId and V1.TrialId=V.TrialId and [v1].[IsNeedClinicalDataSign]=1 and V1.IsClinicalDataSign=0 and V1.VisitTaskNum< [v0].[VisitTaskNum] - - ) and [v0].[IsFrontTaskNeedSignButNotSign]=1 AND [v0].[Id] = [v].[Id] ) - - update ReadingClinicalData set IsVisit=1 from ReadingClinicalData INNER JOIN ClinicalDataTrialSet on ReadingClinicalData.ClinicalDataTrialSetId = ClinicalDataTrialSet.Id where ClinicalDataTrialSet.ClinicalDataLevel in (0,1) and ReadingClinicalData.IsVisit=0 - update VisitTask set IsClinicalDataSign=0 where IsNeedClinicalDataSign=0 and IsClinicalDataSign=1 - - -- 判断 访视 和阅片期 是否有脏数据吧 ---查询确认 -select V.SubjectId, V.SourceSubjectVisitId, V.TrialReadingCriterionId,V.IsSelfAnalysis, v.DoctorUserId,V.ArmEnum,Count(*) as EffectCount,max(v.CreateTime),max(v.Id) as Id from VisitTask V -join ReadingQuestionCriterionTrial on V.TrialReadingCriterionId = ReadingQuestionCriterionTrial.Id -where V.TaskState=0 and V.SourceSubjectVisitId is not null and ReadingQuestionCriterionTrial.ReadingType=2 -GROUP BY V.TrialId, V.SubjectId, V.SourceSubjectVisitId , V.TrialReadingCriterionId ,V.IsSelfAnalysis,V.ArmEnum ,v.DoctorUserId -HAVING Count(*)>1 - ---删除脏的多生成的任务 -delete VisitTask where Id in (select max(v.Id) as Id from VisitTask V -join ReadingQuestionCriterionTrial on V.TrialReadingCriterionId = ReadingQuestionCriterionTrial.Id -where V.TaskState=0 and V.SourceSubjectVisitId is not null and ReadingQuestionCriterionTrial.ReadingType=2 -GROUP BY V.TrialId, V.SubjectId, V.SourceSubjectVisitId , V.TrialReadingCriterionId ,V.IsSelfAnalysis,V.ArmEnum ,v.DoctorUserId -HAVING Count(*)>1) - -select V.TrialId, V.SubjectId, V.SouceReadModuleId, V.TrialReadingCriterionId,V.IsSelfAnalysis, V.ArmEnum,Count(*) as EffectCount,max(v.CreateTime),max(v.Id) as Id from VisitTask V -join ReadingQuestionCriterionTrial on V.TrialReadingCriterionId = ReadingQuestionCriterionTrial.Id -where V.TaskState=0 and V.SouceReadModuleId is not null and ReadingQuestionCriterionTrial.ReadingType=2 -GROUP BY V.TrialId, V.SubjectId, V.SouceReadModuleId , V.TrialReadingCriterionId ,V.IsSelfAnalysis,V.ArmEnum -HAVING Count(*)>2 - - -----2023年 开始 - -- 维护临床数据 先运行swagger 维护数据的方法 - ----------------------维护表格问题ID 2013-1-31 -update ReadingTableQuestionTrial set ReadingTableQuestionTrial.SystemTableQuestionId= ReadingTableQuestionSystem.Id from ReadingTableQuestionSystem -inner join ReadingTableQuestionTrial on ReadingTableQuestionSystem.QuestionName=ReadingTableQuestionTrial.QuestionName -inner join ReadingQuestionTrial on ReadingTableQuestionTrial.ReadingQuestionId=ReadingQuestionTrial.Id and ReadingQuestionTrial.ReadingQuestionSystemId=ReadingTableQuestionSystem.ReadingQuestionId - -where ReadingQuestionTrial.ReadingQuestionSystemId is not null and ReadingTableQuestionTrial.SystemTableQuestionId is null - - - --------------------维护访视任务 IsSelfAnalysis 为 null 的 ------------------------ - - update VisitTask - set RelatedVisitTaskIds= iif(STUFF((SELECT ',' + '"'+ CONVERT(nvarchar(80),Id) +'"' FROM VisitTask vt where - vt.TrialId=VisitTask.TrialId and - vt.SubjectId =VisitTask.SubjectId and - vt.ArmEnum =VisitTask.ArmEnum and - vt.DoctorUserId =VisitTask.DoctorUserId and - vt.ReadingTaskState =2 and - vt.TrialReadingCriterionId =VisitTask.TrialReadingCriterionId and - vt.TaskState =0 and - vt.VisitTaskNum <=VisitTask.VisitTaskNum and - vt.IsAnalysisCreate =VisitTask.IsAnalysisCreate and - vt.IsSelfAnalysis is null and - vt.ReadingCategory = VisitTask.ReadingCategory - FOR XML PATH('')),1,1,'') is null,'[]','['+ STUFF((SELECT ',' + '"'+ CONVERT(nvarchar(80),Id) +'"' FROM VisitTask vt where - vt.TrialId=VisitTask.TrialId and - vt.SubjectId =VisitTask.SubjectId and - vt.ArmEnum =VisitTask.ArmEnum and - vt.DoctorUserId =VisitTask.DoctorUserId and - vt.ReadingTaskState =2 and - vt.TrialReadingCriterionId =VisitTask.TrialReadingCriterionId and - vt.TaskState =0 and - vt.VisitTaskNum <=VisitTask.VisitTaskNum and - vt.IsAnalysisCreate =VisitTask.IsAnalysisCreate and - vt.IsSelfAnalysis is null and - vt.ReadingCategory = VisitTask.ReadingCategory - FOR XML PATH('')),1,1,'') +']') , - - PastResultTaskIds=iif(STUFF((SELECT ',' + '"'+ CONVERT(nvarchar(80),Id) +'"' FROM VisitTask vt where - vt.TrialId=VisitTask.TrialId and - vt.SubjectId =VisitTask.SubjectId and - vt.ArmEnum =VisitTask.ArmEnum and - vt.DoctorUserId =VisitTask.DoctorUserId and - vt.ReadingTaskState =2 and - vt.TrialReadingCriterionId =VisitTask.TrialReadingCriterionId and - vt.TaskState =0 and - vt.VisitTaskNum InfluenceStudyList { get; set; } = new List(); diff --git a/IRaCIS.Core.Domain/Visit/VisitPlanInfluenceStudy.cs b/IRaCIS.Core.Domain/Visit/VisitPlanInfluenceStudy.cs index d0173db02..aaf77f1f2 100644 --- a/IRaCIS.Core.Domain/Visit/VisitPlanInfluenceStudy.cs +++ b/IRaCIS.Core.Domain/Visit/VisitPlanInfluenceStudy.cs @@ -15,9 +15,6 @@ namespace IRaCIS.Core.Domain.Models { #region 导航属性 [JsonIgnore] - [ForeignKey("CreateUserId")] - public User CreateUser { get; set; } - [JsonIgnore] [ForeignKey("VisitPlanInfluenceStatId")] public VisitPlanInfluenceStat VisitPlanInfluenceStat { get; set; } [JsonIgnore] diff --git a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs index d6673ef2e..bdf501aa4 100644 --- a/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs +++ b/IRaCIS.Core.Infra.EFCore/Context/IRaCISDBContext.cs @@ -527,6 +527,10 @@ namespace IRaCIS.Core.Infra.EFCore public virtual DbSet EnrollReadingCriterion { get; set; } #endregion + public virtual DbSet TrialImageDownload { get; set; } + + + } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs deleted file mode 100644 index 5fa1e61c3..000000000 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/StudyConfigration.cs +++ /dev/null @@ -1,42 +0,0 @@ -using IRaCIS.Core.Domain.Models; -using Microsoft.EntityFrameworkCore; -using Microsoft.EntityFrameworkCore.Metadata.Builders; - - -namespace IRaCIS.Core.Infra.EFCore.EntityConfigration -{ - //public class StudyConfigration : IEntityTypeConfiguration - //{ - - // /// - // /// 一个外键,关联多个表 ReadingId - // /// - // /// - // public void Configure(EntityTypeBuilder builder) - // { - - // builder - // .HasMany(s => s.ReadingClinicalDataList) - // .WithOne(c => c.DicomStudy) - // .HasForeignKey(s => new { s.StudyId }) - // .HasPrincipalKey(c => new { c.Id }); - - - // builder - // .HasMany(s => s.ReadingConsistentClinicalDataList) - // .WithOne(c => c.DicomStudy) - // .HasForeignKey(s => new { s.StudyId }) - // .HasPrincipalKey(c => new { c.Id }); - - // } - //} - - //public class UserConfigration : IEntityTypeConfiguration - //{ - // public void Configure(EntityTypeBuilder builder) - // { - // //对于阅片人来讲,会有很多任务 - // builder.HasMany(t => t.VisitTaskList).WithOne(t => t.DoctorUser).HasForeignKey(t => t.DoctorUserId).IsRequired(false); - // } - //} -} diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs index 1fb1584fd..a71465dd8 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/SubjectConfigration.cs @@ -1,17 +1,17 @@ using IRaCIS.Core.Domain.Models; using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.Metadata.Builders; +using System.Reflection.Emit; namespace IRaCIS.Core.Infra.EFCore.EntityConfigration { public class SubjectConfigration : IEntityTypeConfiguration - { + { public void Configure(EntityTypeBuilder builder) { - //不能同时配置一对多 和一对一 但是有时表要存储多的最新的 比如受试者 最新的访视 在这里要显示配置 - builder.HasOne(s => s.LatestSubjectVisit).WithMany().HasForeignKey(t => t.LatestSubjectVisitId); + builder.HasOne(s => s.LatestSubjectVisit).WithMany().HasForeignKey(t => t.LatestSubjectVisitId); builder.HasOne(s => s.FinalSubjectVisit).WithMany().HasForeignKey(t => t.FinalSubjectVisitId); builder.HasMany(s => s.SubjectVisitList).WithOne(sv => sv.Subject).HasForeignKey(t => t.SubjectId); } @@ -20,10 +20,8 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration { public void Configure(EntityTypeBuilder builder) { - //自身同时存在一对多 和一对一的关系,配置一对多的就可以,一对一 不用配置,有点奇怪 builder.HasMany(t => t.ChildList).WithOne(t => t.Parent).HasForeignKey(d => d.ParentId); - } } @@ -46,4 +44,50 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration builder.HasMany(t => t.EarlierSubjectUserList).WithOne(t => t.ReplacedSubjectUser).HasForeignKey(t => t.ReplacedSubjectUserId); } } + + public class UserConfigration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + //User 和VisitTask 存在一对多的关系 这里不显式配置就报错,why? + builder.HasMany(t => t.VisitTaskList).WithOne(t => t.DoctorUser).HasForeignKey(t => t.DoctorUserId); + + //builder.HasOne(t => t.Doctor).WithOne(t => t.User); + } + } + + public class SystemDocConfirmedUserConfigration : IEntityTypeConfiguration + { + public void Configure(EntityTypeBuilder builder) + { + #region 不用显示配置 + //// 配置 CreateUser 关系 + //builder.HasOne(s => s.CreateUser) + // .WithMany() // 假设 User 表没有对应的反向导航属性,如果有,填入属性名 + // .HasForeignKey(s => s.CreateUserId); + ////.OnDelete(DeleteBehavior.Restrict); // 可根据业务需求调整删除行为 + #endregion + + // 配置 ConfirmUser 关系 (一个用户可以签名多个文档) + builder.HasOne(s => s.ConfirmUser) // ConfirmUser + .WithMany(t => t.SystemDocConfirmedList) + .HasForeignKey(s => s.ConfirmUserId); + //.OnDelete(DeleteBehavior.Restrict); + } + } + + public class TrialUserConfigration : IEntityTypeConfiguration + { + //当一个实体,针对同一个类,有两个一对一导航属性,但是是不同的外键,一个外键是一对一,一个是一对多,那么需要显示配置一对多的关系 + public void Configure(EntityTypeBuilder builder) + { + //TrialUser 和User 之间 一对多 (一个用户可以参与多个项目) + builder.HasOne(s => s.User) + .WithMany(t => t.UserTrials) + .HasForeignKey(s => s.UserId); + + //TrialUser User 一对一 创建人 + } + } + } diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialUserConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialUserConfigration.cs index c4f782f0c..98ccf65cd 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialUserConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/TrialUserConfigration.cs @@ -5,8 +5,6 @@ using Microsoft.EntityFrameworkCore.Metadata.Builders; namespace IRaCIS.Core.Infra.EFCore.EntityConfigration { - - public class SubjectCriteriaEvaluationConfigration : IEntityTypeConfiguration { diff --git a/IRaCIS.Core.Infra.EFCore/EntityConfigration/VisitTaskConfigration.cs b/IRaCIS.Core.Infra.EFCore/EntityConfigration/VisitTaskConfigration.cs index 0e15a0649..2f355ef5e 100644 --- a/IRaCIS.Core.Infra.EFCore/EntityConfigration/VisitTaskConfigration.cs +++ b/IRaCIS.Core.Infra.EFCore/EntityConfigration/VisitTaskConfigration.cs @@ -25,8 +25,6 @@ namespace IRaCIS.Core.Infra.EFCore.EntityConfigration //subject 删除了,但是任务没删除,导致的查询问题 builder.HasQueryFilter(b => b.Subject.IsDeleted == false); - //builder.HasOne(t => t.Subject).WithMany(s => s.SubjectVisitTaskList).HasForeignKey(t => t.SubjectId); - //builder.HasMany(t => t.TaskMedicalReviewList).WithOne(t => t.VisitTask).HasForeignKey(t => t.VisitTaskId); } } public class ReadingQuestionTrialConfigration : IEntityTypeConfiguration diff --git a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs index 6f49c3b84..3ec49f294 100644 --- a/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs +++ b/IRaCIS.Core.Infra.EFCore/Interceptor/AuditEntityInterceptor.cs @@ -96,8 +96,11 @@ public class AuditEntityInterceptor(IUserInfo _userInfo, ILogger 类型 public static bool IsNullOrEmpty(this IEnumerable enumerable) diff --git a/IRaCIS.Core.Test/CodeFirstTest/CodeFirst使用说明 b/IRaCIS.Core.Test/CodeFirstTest/CodeFirst使用说明 index 78ded9bf4..7f0fbe6cd 100644 --- a/IRaCIS.Core.Test/CodeFirstTest/CodeFirst使用说明 +++ b/IRaCIS.Core.Test/CodeFirstTest/CodeFirst使用说明 @@ -3,12 +3,12 @@ https://www.cnblogs.com/cqpanda/p/16815263.html - # dotnet ef migrations add ǩ -p Ŀ -c -o ǨļĿ¼ + # dotnet ef migrations add Ǩ -p Ŀ -c ݿ -o ǨļĿ¼ 1Ǩļ dotnet ef migrations add Initial -p IRaCIS.Core.Test -c IRCContext -o CodeFirstTest/MSSQL/Migrations - 2ղɵǨļ + 2ղɵǨļδµݿģ dotnet ef migrations remove -p IRaCIS.Core.Test -c IRCContext 3Ǩļµݿ @@ -17,7 +17,7 @@ https://www.cnblogs.com/cqpanda/p/16815263.html 4鿴Ǩ dotnet ef migrations list -p IRaCIS.Core.Test -c IRCContext - 5ijθµݿǨ + 5ijθµݿǨƣԶִdown dotnet ef database update ijǨƵǰһǨ -p IRaCIS.Core.Test -c IRCContext