修改斑块明细表,增加单位-修改1

This commit is contained in:
2025-12-18 13:44:39 +08:00
parent 2591a794bf
commit c55f7a427c
6 changed files with 151 additions and 29 deletions
+86
View File
@@ -40,6 +40,7 @@ using SixLabors.ImageSharp.Processing;
using System.Collections.Concurrent;
using System.Diagnostics;
using System.Globalization;
using System.IO;
using System.Linq.Dynamic.Core;
using System.Reactive.Subjects;
using System.Reflection.Metadata.Ecma335;
@@ -74,6 +75,91 @@ namespace IRaCIS.Core.Application.Service
{
public static int IntValue = 100;
public async Task<IResponseOutput> DealIVUSOCTDicomTag(string subjectCode, bool isUploadOss)
{
var trialId = Guid.Parse("01000000-AC13-0242-3AE4-08DC9B0495C6");
var trialCode = "ZY2024002";
//var subjectCodeList = new List<string>() { "04032", "12004", "04005" };
var list = await _dicomInstanceRepository.Where(t => t.TrialId == trialId && t.DicomStudy.SubjectVisit.IsBaseLine)
.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")
.Select(t => new
{
SubjectCode = t.DicomStudy.Subject.Code,
t.DicomStudy.ModalityForEdit,
t.Path
}).ToListAsync();
foreach (var item in list)
{
var stream = await _IOSSService.GetStreamFromOSSAsync(item.Path);
var dicomFile = DicomFile.Open(stream);
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 "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);
// 4 保存到一个 MemoryStream
await using var output = new MemoryStream();
dicomFile.Save(output);
output.Position = 0;
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
{
await _IOSSService.UploadToOSSAsync(output, folder, fileName, false);
}
}
return ResponseOutput.Ok();
}
/// <summary>
/// 重建闭包表
/// </summary>