diff --git a/IRaCIS.Core.Application/Helper/DicomDIRHelper.cs b/IRaCIS.Core.Application/Helper/DicomDIRHelper.cs index 5f5484b7a..6b19410e7 100644 --- a/IRaCIS.Core.Application/Helper/DicomDIRHelper.cs +++ b/IRaCIS.Core.Application/Helper/DicomDIRHelper.cs @@ -57,6 +57,8 @@ namespace IRaCIS.Core.Application.Helper int index = 1; // 全局关闭所有 VR 字段验证 + var studyUid = list.FirstOrDefault()?.StudyInstanceUid; + var dicomDir = new DicomDirectory(); foreach (var item in list.OrderBy(t => t.SeriesNumber).ThenBy(t => t.InstanceNumber)) @@ -129,7 +131,8 @@ namespace IRaCIS.Core.Application.Helper var relativePath = await _oSSService.UploadToOSSAsync(memoryStream, ossFolder, "DICOMDIR", true); - dic.Add("DICOMDIR", relativePath.Split('/').Last()); + + dic.Add($"{studyUid}_DICOMDIR", relativePath.Split('/').Last()); } //清理临时文件 diff --git a/IRaCIS.Core.Application/Service/Visit/PatientService.cs b/IRaCIS.Core.Application/Service/Visit/PatientService.cs index 13d2777df..67e019dfb 100644 --- a/IRaCIS.Core.Application/Service/Visit/PatientService.cs +++ b/IRaCIS.Core.Application/Service/Visit/PatientService.cs @@ -3370,13 +3370,15 @@ namespace IRaCIS.Application.Services foreach (var item in list.GroupBy(t => new { t.StudyInstanceUid, t.DicomStudyId })) { + var studyUid = item.Key.StudyInstanceUid; + var ossFolder = $"DicomDIR/{item.Key.StudyInstanceUid}"; var isSucess = await SafeBussinessHelper.RunAsync(async () => await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), dirDic, ossFolder, _oSSService)); if (isSucess) { - await _SCPStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new SCPStudy() { StudyDIRPath = $"/{ossFolder}/{dirDic["DICOMDIR"]}" }); + await _SCPStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new SCPStudy() { StudyDIRPath = $"/{ossFolder}/{dirDic[$"{studyUid}_DICOMDIR"]}" }); } } @@ -3515,6 +3517,8 @@ namespace IRaCIS.Application.Services foreach (var item in list.GroupBy(t => new { t.StudyInstanceUid, t.DicomStudyId, t.SubjectVisitId, t.TrialId, t.SubjectId })) { + var studyUid = item.Key.StudyInstanceUid; + var ossFolder = $"{item.Key.TrialId}/Image/{item.Key.SubjectId}/{item.Key.SubjectVisitId}/{item.Key.StudyInstanceUid}"; var isSucess = await SafeBussinessHelper.RunAsync(async () => await DicomDIRHelper.GenerateStudyDIRAndUploadAsync(item.ToList(), dirDic, ossFolder, _oSSService)); @@ -3522,7 +3526,7 @@ namespace IRaCIS.Application.Services if (isSucess) { - await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/{dirDic["DICOMDIR"]}" }); + await _dicomStudyRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Key.DicomStudyId, u => new DicomStudy() { StudyDIRPath = $"/{ossFolder}/{dirDic[$"{studyUid}_DICOMDIR"]}" }); } }