diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 694cf9cf6..ff3b45ce7 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -1151,7 +1151,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc DicomStudyId = t.DicomStudy.Id, - PatientId = info.TrialCode + "-" + t.DicomStudy.PatientId, + PatientId = info.TrialCode + "-" + t.DicomStudy.Subject.Code, PatientName = t.DicomStudy.PatientName, PatientBirthDate = t.DicomStudy.PatientBirthDate, PatientSex = t.DicomStudy.PatientSex, @@ -1582,7 +1582,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc DicomStudyId = t.TaskStudy.Id, - PatientId = info.TrialCode + "-" + t.TaskStudy.PatientId, + PatientId = info.TrialCode + "-" + t.TaskStudy.Subject.Code, PatientName = t.TaskStudy.PatientName, PatientBirthDate = t.TaskStudy.PatientBirthDate, PatientSex = t.TaskStudy.PatientSex, @@ -2265,7 +2265,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc DicomStudyId = t.DicomStudy.Id, - PatientId = t.Trial.TrialCode + "-" + t.DicomStudy.PatientId, + PatientId = t.Trial.TrialCode + "-" + t.DicomStudy.Subject.Code, PatientName = t.DicomStudy.PatientName, PatientBirthDate = t.DicomStudy.PatientBirthDate, PatientSex = t.DicomStudy.PatientSex, diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs index c98bf2044..15792688f 100644 --- a/IRaCIS.Core.Application/TestService.cs +++ b/IRaCIS.Core.Application/TestService.cs @@ -170,104 +170,121 @@ namespace IRaCIS.Core.Application.Service .Select(t => new { SubjectCode = t.DicomStudy.Subject.Code, - t.DicomStudy.ModalityForEdit, - t.Path, - t.FileSize - }).ToListAsync(); + //t.DicomStudy.ModalityForEdit, + //t.Path, + //t.FileSize, + t.DicomStudy.PatientId, + t.DicomStudy.Id, + t.DicomStudy.StudyDIRPath + }).Distinct().ToListAsync(); foreach (var item in list) { - Console.WriteLine(item.Path); - - await using var stream = await _IOSSService.GetStreamFromOSSAsync(item.Path); - - var dicomFile = DicomFile.Open(stream, FileReadOption.ReadLargeOnDemand); - - switch (item.SubjectCode) + if (item.SubjectCode != item.PatientId) { - case "04032": + await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new DicomStudy() { PatientId = item.SubjectCode }); - dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-04032"); - dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04032"); - - break; - case "12004": - dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-12004"); - dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "12004"); - break; - - case "04004": - dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-04004"); - dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04004"); - break; - - case "04005": - dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-04005"); - dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04005"); - break; - - - default: - break; + await _IOSSService.DeleteFromPrefix(item.StudyDIRPath.TrimStart("/"), true); } - - //获取原始目录 和文件名 - var folder = item.Path.Substring(0, item.Path.LastIndexOf('/')).TrimStart('/'); - var fileName = Path.GetFileName(item.Path); - - - - - //if (isUploadOss == false) - //{ - // // 本地完整路径 - // var localPath = Path.Combine(Directory.GetCurrentDirectory(), fileName); - - // // 写入文件 - // await using var fileStream = File.Create(localPath); - // await output.CopyToAsync(fileStream); - - // // 可选:确保写入完成再关闭 - // await fileStream.FlushAsync(); - //} - //else - if (isUploadOss == true) - { - //4 保存到一个 MemoryStream - await using var output = new MemoryStream(); - dicomFile.Save(output); - output.Position = 0; - - - await _IOSSService.UploadToOSSAsync(output, folder, fileName, false); - - //var pipe = new System.IO.Pipelines.Pipe(); - - //// 写入端:fo-dicom - //_ = Task.Run(async () => - //{ - // try - // { - // await using var writer = pipe.Writer.AsStream(); - // dicomFile.Save(writer); // 直接写 Pipe - // await pipe.Writer.CompleteAsync(); - // } - // catch (Exception ex) - // { - // await pipe.Writer.CompleteAsync(ex); - // } - //}); - - ////await _IOSSService.UploadToOSSAsync(pipe.Reader.AsStream(), folder, fileName, false); - - await _IOSSService.DeleteFromPrefix(item.Path.TrimStart("/"), true); - - - } - } + return ResponseOutput.Ok(); + + //foreach (var item in list) + //{ + // Console.WriteLine(item.Path); + + // await using var stream = await _IOSSService.GetStreamFromOSSAsync(item.Path); + + // var dicomFile = DicomFile.Open(stream, FileReadOption.ReadLargeOnDemand); + + // switch (item.SubjectCode) + // { + // case "04032": + + // dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-04032"); + // dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04032"); + + // break; + // case "12004": + // dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-12004"); + // dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "12004"); + // break; + + // case "04004": + // dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-04004"); + // dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04004"); + // break; + + // case "04005": + // dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}-04005"); + // dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04005"); + // break; + + + // default: + // break; + // } + + // //获取原始目录 和文件名 + // var folder = item.Path.Substring(0, item.Path.LastIndexOf('/')).TrimStart('/'); + // var fileName = Path.GetFileName(item.Path); + + + + + // //if (isUploadOss == false) + // //{ + // // // 本地完整路径 + // // var localPath = Path.Combine(Directory.GetCurrentDirectory(), fileName); + + // // // 写入文件 + // // await using var fileStream = File.Create(localPath); + // // await output.CopyToAsync(fileStream); + + // // // 可选:确保写入完成再关闭 + // // await fileStream.FlushAsync(); + // //} + // //else + // if (isUploadOss == true) + // { + // //4 保存到一个 MemoryStream + // await using var output = new MemoryStream(); + // dicomFile.Save(output); + // output.Position = 0; + + + // await _IOSSService.UploadToOSSAsync(output, folder, fileName, false); + + // //var pipe = new System.IO.Pipelines.Pipe(); + + // //// 写入端:fo-dicom + // //_ = Task.Run(async () => + // //{ + // // try + // // { + // // await using var writer = pipe.Writer.AsStream(); + // // dicomFile.Save(writer); // 直接写 Pipe + // // await pipe.Writer.CompleteAsync(); + // // } + // // catch (Exception ex) + // // { + // // await pipe.Writer.CompleteAsync(ex); + // // } + // //}); + + // ////await _IOSSService.UploadToOSSAsync(pipe.Reader.AsStream(), folder, fileName, false); + + // await _IOSSService.DeleteFromPrefix(item.Path.TrimStart("/"), true); + + + // } + + + //} + + //return ResponseOutput.Ok(); } /// diff --git a/IRaCIS.Core.Domain/Image/TaskInstance.cs b/IRaCIS.Core.Domain/Image/TaskInstance.cs index de9cafd42..8d1d691e3 100644 --- a/IRaCIS.Core.Domain/Image/TaskInstance.cs +++ b/IRaCIS.Core.Domain/Image/TaskInstance.cs @@ -13,6 +13,9 @@ public class TaskInstance : BaseFullAuditEntity, IEntitySeqId [ForeignKey("StudyId")] public TaskStudy TaskStudy { get; set; } + [JsonIgnore] + [ForeignKey("SubjectId")] + public Subject Subject { get; set; } [JsonIgnore] [ForeignKey("SubjectVisitId")]