From 24261a3dcb51e5fcafd9bc0d33496c2af7803fe3 Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Mon, 30 Mar 2026 10:42:17 +0800 Subject: [PATCH] =?UTF-8?q?instance=20=E7=BA=A7=E5=88=AB=E5=A2=9E=E5=8A=A0?= =?UTF-8?q?=E6=8E=92=E5=BA=8F-=E5=9B=9B=E4=B8=AA=E6=8E=92=E5=BA=8F?= =?UTF-8?q?=E6=8E=A5=E5=8F=A3=E9=83=BD=E5=B7=B2=E4=BF=AE=E6=94=B9=E5=AE=8C?= =?UTF-8?q?=E6=AF=95?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Service/ImageAndDoc/DTO/DicomInstanceModel.cs | 3 +++ .../Service/ImageAndDoc/InstanceService.cs | 10 +++++++++- 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs index a95065a2d..033e402f3 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/DicomInstanceModel.cs @@ -29,6 +29,9 @@ public string SliceThickness { get; set; } = String.Empty; + public string ImagePositionPatient { get; set; } + public string ImageOrientationPatient { get; set; } + } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs index 0377588bf..7b057c5c8 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/InstanceService.cs @@ -29,6 +29,14 @@ namespace IRaCIS.Core.Application.Services .OrderBy(s => s.InstanceNumber).ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime) .ProjectTo(_mapper.ConfigurationProvider).ToListAsync(); + // ⭐ DICOM 空间排序(带兜底) + var sorted = DicomSortHelper.SortSlices( + list, + x => x.ImagePositionPatient, + x => x.ImageOrientationPatient, + x => x.InstanceNumber + ); + var seriesInfo = await _instanceRepository.Where(s => s.SeriesId == seriesId).Select(t => new { t.DicomSerie.ImageResizePath, @@ -38,7 +46,7 @@ namespace IRaCIS.Core.Application.Services t.DicomSerie.SubjectVisit.VisitName }).FirstOrDefaultAsync(); - return ResponseOutput.Ok(list, seriesInfo); + return ResponseOutput.Ok(sorted, seriesInfo); }