Merge branch 'Test_IRC_Net8' of https://gitea.frp.extimaging.com/XCKJ/irc-netcore-api into Test_IRC_Net8
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
commit
27bdc95f6e
|
|
@ -17269,17 +17269,17 @@
|
||||||
</member>
|
</member>
|
||||||
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Question">
|
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Question">
|
||||||
<summary>
|
<summary>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
质疑
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Consistency">
|
<member name="F:IRaCIS.Core.Application.ViewModel.AccessToDialogueEnum.Consistency">
|
||||||
<summary>
|
<summary>
|
||||||
һ<EFBFBD><EFBFBD><EFBFBD>Ժ˲<EFBFBD>
|
一致性核查
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.CopyFrontAuditConfigItemDto">
|
<member name="T:IRaCIS.Core.Application.ViewModel.CopyFrontAuditConfigItemDto">
|
||||||
<summary>
|
<summary>
|
||||||
<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
复制
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeView">
|
<member name="T:IRaCIS.Core.Application.ViewModel.SystemNoticeView">
|
||||||
|
|
@ -18400,6 +18400,36 @@
|
||||||
ISystemDocumentService
|
ISystemDocumentService
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.DicomStudyDTO.PatientWeight">
|
||||||
|
<summary>
|
||||||
|
体重
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.DicomStudyDTO.RadionuclideTotalDose">
|
||||||
|
<summary>
|
||||||
|
总剂量
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.DicomStudyDTO.RadionuclideHalfLife">
|
||||||
|
<summary>
|
||||||
|
半衰期
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.DicomStudyDTO.RadiopharmaceuticalStartTime">
|
||||||
|
<summary>
|
||||||
|
注射时间
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.DicomStudyDTO.AcquisitionTime">
|
||||||
|
<summary>
|
||||||
|
成像 / 采集时间
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.DicomStudyDTO.IsHasEmptyPatientInfo">
|
||||||
|
<summary>
|
||||||
|
是否存在空字符串字段(PatientSex、PatientWeight、RadionuclideTotalDose、RadionuclideHalfLife、RadiopharmaceuticalStartTime、AcquisitionTime 任意一个为空/空字符串)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="P:IRaCIS.Core.Application.Contracts.EditPatientInfoCommand.PatientSex">
|
<member name="P:IRaCIS.Core.Application.Contracts.EditPatientInfoCommand.PatientSex">
|
||||||
<summary>
|
<summary>
|
||||||
性别
|
性别
|
||||||
|
|
@ -19648,6 +19678,11 @@
|
||||||
成像 / 采集时间
|
成像 / 采集时间
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="P:IRaCIS.Core.Application.Contracts.VisitStudyDTO.IsHasEmptyPatientInfo">
|
||||||
|
<summary>
|
||||||
|
是否存在空字符串字段(PatientSex、PatientWeight、RadionuclideTotalDose、RadionuclideHalfLife、RadiopharmaceuticalStartTime、AcquisitionTime 任意一个为空/空字符串)
|
||||||
|
</summary>
|
||||||
|
</member>
|
||||||
<member name="T:IRaCIS.Core.Application.Services.SystemBasicDataService">
|
<member name="T:IRaCIS.Core.Application.Services.SystemBasicDataService">
|
||||||
<summary>
|
<summary>
|
||||||
SystemBasicDataService
|
SystemBasicDataService
|
||||||
|
|
|
||||||
|
|
@ -102,6 +102,8 @@ namespace IRaCIS.Core.Application.Contracts.Dicom.DTO
|
||||||
|
|
||||||
public Guid? SeriesId { get; set; }
|
public Guid? SeriesId { get; set; }
|
||||||
|
|
||||||
|
public bool? IsMasked { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public int ShowOrder { get; set; }
|
public int ShowOrder { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|
|
||||||
|
|
@ -72,7 +72,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
InstanceNumber = k.InstanceNumber,
|
InstanceNumber = k.InstanceNumber,
|
||||||
IsReading = true,
|
IsReading = true,
|
||||||
IsDeleted = false,
|
IsDeleted = false,
|
||||||
FileSize = k.FileSize
|
FileSize = k.FileSize,
|
||||||
|
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
|
|
@ -103,7 +104,7 @@ namespace IRaCIS.Core.Application.Services
|
||||||
.WhereIf(isReading == true, t => t.IsReading == true)
|
.WhereIf(isReading == true, t => t.IsReading == true)
|
||||||
.OrderBy(t => t.SeriesId).ThenBy(t => t.InstanceNumber)
|
.OrderBy(t => t.SeriesId).ThenBy(t => t.InstanceNumber)
|
||||||
.ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
.ThenBy(s => s.InstanceTime).ThenBy(s => s.CreateTime)
|
||||||
.Select(t => new { t.SeriesId, t.Id, t.Path, t.NumberOfFrames, t.InstanceNumber, t.HtmlPath, t.IsReading, t.IsDeleted, t.FileSize }).ToListAsync();//.GroupBy(u => u.SeriesId);
|
.Select(t => new { t.SeriesId, t.Id, t.Path, t.NumberOfFrames, t.InstanceNumber, t.HtmlPath, t.IsReading, t.IsDeleted, t.FileSize ,t.IsMasked}).ToListAsync();//.GroupBy(u => u.SeriesId);
|
||||||
|
|
||||||
|
|
||||||
foreach (var series in seriesList)
|
foreach (var series in seriesList)
|
||||||
|
|
@ -119,7 +120,8 @@ namespace IRaCIS.Core.Application.Services
|
||||||
InstanceNumber = k.InstanceNumber,
|
InstanceNumber = k.InstanceNumber,
|
||||||
IsReading = k.IsReading,
|
IsReading = k.IsReading,
|
||||||
IsDeleted = k.IsDeleted,
|
IsDeleted = k.IsDeleted,
|
||||||
FileSize = k.FileSize
|
FileSize = k.FileSize,
|
||||||
|
IsMasked = k.IsMasked
|
||||||
|
|
||||||
}).ToList();
|
}).ToList();
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -92,7 +92,11 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
idPathList = await _dicomInstanceRepository.Where(t => t.SeriesId == inCommand.SeriesId).Select(t => new InstanceIdPath { Id = t.Id, Path = t.Path }).ToListAsync();
|
idPathList = await _dicomInstanceRepository.Where(t => t.SeriesId == inCommand.SeriesId).Select(t => new InstanceIdPath { Id = t.Id, Path = t.Path }).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
var errorPathList = new List<string>();
|
var errorList = new List<InstanceIdPath>();
|
||||||
|
|
||||||
|
var okList = new List<InstanceIdPath>();
|
||||||
|
|
||||||
|
var batchId = Guid.NewGuid();
|
||||||
|
|
||||||
foreach (var item in idPathList)
|
foreach (var item in idPathList)
|
||||||
{
|
{
|
||||||
|
|
@ -106,20 +110,27 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
var prefix = path.Substring(1, path.LastIndexOf('/') - 1);
|
var prefix = path.Substring(1, path.LastIndexOf('/') - 1);
|
||||||
|
|
||||||
var maskPath = $"{Path.GetFileName(path)}.MaskImage";
|
//每次都用一个新的名字
|
||||||
|
var maskFileName = $"{Path.GetFileName(path)}.{batchId}_MaskDicom";
|
||||||
|
|
||||||
|
if (path.Contains("_MaskDicom"))
|
||||||
|
{
|
||||||
//清理缓存的里面的遮盖图,多次遮盖同一张图时,清除缓存很重要
|
//清理缓存的里面的遮盖图,多次遮盖同一张图时,清除缓存很重要
|
||||||
await _oSSService.DeleteFromPrefix(maskPath, true);
|
await _oSSService.DeleteFromPrefix(path, true); //清理缓存的里面的遮盖图,多次遮盖同一张图时,清除缓存很重要
|
||||||
|
}
|
||||||
|
|
||||||
await _oSSService.UploadToOSSAsync(outPutStream, prefix, maskPath);
|
await _oSSService.UploadToOSSAsync(outPutStream, prefix, maskFileName, false);
|
||||||
|
|
||||||
var newPath = path + ".MaskImage";
|
var newPath = $"/{prefix}/{maskFileName}";
|
||||||
|
|
||||||
|
okList.Add(new InstanceIdPath() { Id = item.Id, Path = newPath });
|
||||||
|
|
||||||
await _dicomInstanceRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new DicomInstance() { Path = newPath, IsMasked = true });
|
await _dicomInstanceRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new DicomInstance() { Path = newPath, IsMasked = true });
|
||||||
}
|
}
|
||||||
catch (Exception ex)
|
catch (Exception ex)
|
||||||
{
|
{
|
||||||
errorPathList.Add(path);
|
|
||||||
|
errorList.Add(new InstanceIdPath() { Id = item.Id, Path = path });
|
||||||
|
|
||||||
Log.Logger.Error(ex, $"StudyMaskImage Error for InstanceIdList Path:{path} {ex.Message}");
|
Log.Logger.Error(ex, $"StudyMaskImage Error for InstanceIdList Path:{path} {ex.Message}");
|
||||||
}
|
}
|
||||||
|
|
@ -128,7 +139,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
await _dicomInstanceRepository.SaveChangesAsync();
|
await _dicomInstanceRepository.SaveChangesAsync();
|
||||||
|
|
||||||
return ResponseOutput.Ok(errorPathList);
|
return ResponseOutput.Ok(new { OkList = okList, ErrorList = errorList });
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
@ -158,13 +169,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
idPathList = await _dicomInstanceRepository.Where(t => t.SeriesId == inCommand.SeriesId).Select(t => new InstanceIdPath { Id = t.Id, Path = t.Path }).ToListAsync();
|
idPathList = await _dicomInstanceRepository.Where(t => t.SeriesId == inCommand.SeriesId).Select(t => new InstanceIdPath { Id = t.Id, Path = t.Path }).ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
var okList = new List<InstanceIdPath>();
|
||||||
|
|
||||||
foreach (var item in idPathList)
|
foreach (var item in idPathList)
|
||||||
{
|
{
|
||||||
if (item.Path.EndsWith(".MaskImage"))
|
if (item.Path.EndsWith("_MaskDicom"))
|
||||||
{
|
{
|
||||||
var newPath = item.Path[..^10];
|
await _oSSService.DeleteFromPrefix(item.Path, true);
|
||||||
|
|
||||||
//await _oSSService.DeleteFromPrefix(newPath, true);
|
var length = Guid.Empty.ToString().Length + "_MaskDicom".Length;
|
||||||
|
var newPath = item.Path[..^length];
|
||||||
|
|
||||||
|
okList.Add(new InstanceIdPath() { Id = item.Id, Path = newPath });
|
||||||
|
|
||||||
await _dicomInstanceRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new DicomInstance() { Path = newPath, IsMasked = false });
|
await _dicomInstanceRepository.BatchUpdateNoTrackingAsync(t => t.Id == item.Id, u => new DicomInstance() { Path = newPath, IsMasked = false });
|
||||||
}
|
}
|
||||||
|
|
@ -174,7 +190,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
await _dicomInstanceRepository.SaveChangesAsync();
|
await _dicomInstanceRepository.SaveChangesAsync();
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok(new { OkList = okList });
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue