diff --git a/IRaCIS.Core.Application/Helper/OSSService.cs b/IRaCIS.Core.Application/Helper/OSSService.cs
index 0dd43aa93..f82c22725 100644
--- a/IRaCIS.Core.Application/Helper/OSSService.cs
+++ b/IRaCIS.Core.Application/Helper/OSSService.cs
@@ -912,7 +912,7 @@ public class OSSService : IOSSService
}
///
- /// 删除某个目录的文件
+ /// 删除某个目录的文件 (包含单个文件,oss单个文件需要去除前缀/)
///
///
///
diff --git a/IRaCIS.Core.Application/TestService.cs b/IRaCIS.Core.Application/TestService.cs
index ca52fee6d..0a2ffbadc 100644
--- a/IRaCIS.Core.Application/TestService.cs
+++ b/IRaCIS.Core.Application/TestService.cs
@@ -75,8 +75,8 @@ namespace IRaCIS.Core.Application.Service
{
public static int IntValue = 100;
-
- public async Task DealIVUSOCTDicomTag(string subjectCode, bool isUploadOss)
+ [AllowAnonymous]
+ public async Task DealIVUSOCTDicomTag(string subjectCode, bool? isUploadOss)
{
var trialId = Guid.Parse("01000000-AC13-0242-3AE4-08DC9B0495C6");
@@ -85,39 +85,47 @@ namespace IRaCIS.Core.Application.Service
//var subjectCodeList = new List() { "04032", "12004", "04005" };
var list = await _dicomInstanceRepository.Where(t => t.TrialId == trialId && t.DicomStudy.SubjectVisit.IsBaseLine)
- .Where(t => t.DicomStudy.Subject.Code== subjectCode)
+ .Where(t => t.DicomStudy.Subject.Code == subjectCode)
.WhereIf(subjectCode == "04032", t => t.DicomStudy.ModalityForEdit == "OCT")
.WhereIf(subjectCode == "12004", t => t.DicomStudy.ModalityForEdit == "IVUS")
- .WhereIf(subjectCode == "04005 ", t => t.DicomStudy.ModalityForEdit == "IVUS" || t.DicomStudy.ModalityForEdit == "OCT")
+ .WhereIf(subjectCode == "04004", t => t.DicomStudy.ModalityForEdit == "IVUS" || t.DicomStudy.ModalityForEdit == "OCT")
+ .WhereIf(subjectCode == "04005", t => t.DicomStudy.ModalityForEdit == "IVUS" || t.DicomStudy.ModalityForEdit == "OCT")
.Select(t => new
{
SubjectCode = t.DicomStudy.Subject.Code,
t.DicomStudy.ModalityForEdit,
- t.Path
+ t.Path,
+ t.FileSize
}).ToListAsync();
foreach (var item in list)
{
+ Console.WriteLine(item.Path);
- var stream = await _IOSSService.GetStreamFromOSSAsync(item.Path);
+ await using var stream = await _IOSSService.GetStreamFromOSSAsync(item.Path);
- var dicomFile = DicomFile.Open(stream);
+ var dicomFile = DicomFile.Open(stream, FileReadOption.ReadLargeOnDemand);
switch (item.SubjectCode)
{
case "04032":
- dicomFile.Dataset.AddOrUpdate(DicomTag.PatientID, $"{trialCode}_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.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.PatientID, $"{trialCode}-04005");
dicomFile.Dataset.AddOrUpdate(DicomTag.ClinicalTrialSubjectID, "04005");
break;
@@ -131,28 +139,53 @@ namespace IRaCIS.Core.Application.Service
var fileName = Path.GetFileName(item.Path);
- // 4 保存到一个 MemoryStream
- await using var output = new MemoryStream();
- dicomFile.Save(output);
- output.Position = 0;
- if (isUploadOss == false)
+ //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)
{
- // 本地完整路径
- var localPath = Path.Combine(Directory.GetCurrentDirectory(), fileName);
+ //4 保存到一个 MemoryStream
+ await using var output = new MemoryStream();
+ dicomFile.Save(output);
+ output.Position = 0;
- // 写入文件
- await using var fileStream = File.Create(localPath);
- await output.CopyToAsync(fileStream);
- // 可选:确保写入完成再关闭
- await fileStream.FlushAsync();
- }
- else
- {
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);
+
+
}
}