修改上传
This commit is contained in:
@@ -23,6 +23,9 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
private static object lockCodeGenerate = new object();
|
||||
|
||||
|
||||
private List<Guid> _instanceIdList = new List<Guid>();
|
||||
|
||||
public DicomArchiveService(IRepository<DicomStudy> studyRepository,
|
||||
IRepository<DicomSeries> seriesRepository,
|
||||
IRepository<DicomInstance> instanceRepository,
|
||||
@@ -122,7 +125,7 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
DicomStudy dicomStudy = CreateDicomStudy(dataset, addtionalInfo, out bool isStudyNeedAdd);
|
||||
DicomSeries dicomSeries = CreateDicomSeries(dataset, dicomStudy, out bool isSeriesNeedAdd);
|
||||
DicomInstance dicomInstance = CreateDicomInstance(dataset, dicomStudy, dicomSeries);
|
||||
DicomInstance dicomInstance = CreateDicomInstance(dataset, dicomStudy, dicomSeries,out bool isInstanceNeedAdd);
|
||||
|
||||
dicomSeries.DicomStudy = dicomStudy;
|
||||
|
||||
@@ -147,7 +150,11 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
dicomInstance.Path = relativePath;
|
||||
|
||||
await _instanceRepository.AddAsync(dicomInstance);
|
||||
if (isInstanceNeedAdd)
|
||||
{
|
||||
await _instanceRepository.AddAsync(dicomInstance);
|
||||
|
||||
}
|
||||
|
||||
|
||||
var samplesPerPixel = dataset.GetSingleValueOrDefault(DicomTag.SamplesPerPixel, string.Empty);
|
||||
@@ -379,11 +386,14 @@ namespace IRaCIS.Core.Application.Services
|
||||
|
||||
}
|
||||
|
||||
private DicomInstance CreateDicomInstance(DicomDataset dataset, DicomStudy dicomStudy, DicomSeries dicomSeries)
|
||||
private DicomInstance CreateDicomInstance(DicomDataset dataset, DicomStudy dicomStudy, DicomSeries dicomSeries, out bool isInstanceNeedAdd)
|
||||
{
|
||||
string sopInstanceUid = dataset.GetString(DicomTag.SOPInstanceUID);
|
||||
Guid instanceId = IdentifierHelper.CreateGuid(dicomStudy.StudyInstanceUid, dicomSeries.SeriesInstanceUid, sopInstanceUid, dicomStudy.TrialId.ToString());
|
||||
|
||||
|
||||
|
||||
|
||||
DicomInstance dicomInstance = new DicomInstance
|
||||
{
|
||||
Id = instanceId,
|
||||
@@ -417,13 +427,20 @@ namespace IRaCIS.Core.Application.Services
|
||||
WindowWidth = dataset.GetSingleValueOrDefault(DicomTag.WindowWidth, string.Empty),
|
||||
};
|
||||
|
||||
++dicomStudy.InstanceCount;
|
||||
++dicomSeries.InstanceCount;
|
||||
isInstanceNeedAdd = false;
|
||||
|
||||
if (!_instanceIdList.Contains(instanceId))
|
||||
{
|
||||
++dicomStudy.InstanceCount;
|
||||
++dicomSeries.InstanceCount;
|
||||
|
||||
isInstanceNeedAdd = true;
|
||||
|
||||
_instanceIdList.Add(instanceId);
|
||||
}
|
||||
|
||||
return dicomInstance;
|
||||
|
||||
|
||||
|
||||
}
|
||||
|
||||
|
||||
|
||||
@@ -456,7 +456,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
[HttpGet("{trialId:guid}")]
|
||||
public async Task<TrialSurveyInitInfo> GetTrialSurveyInitInfo(Guid trialId)
|
||||
{
|
||||
var info = await _repository.Where<Trial>(t => t.Id == trialId)/*.IgnoreQueryFilters()*/.ProjectTo<TrialSurveyInitInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
var info = await _repository.Where<Trial>(t => t.Id == trialId).IgnoreQueryFilters().ProjectTo<TrialSurveyInitInfo>(_mapper.ConfigurationProvider).FirstOrDefaultAsync().IfNullThrowException();
|
||||
|
||||
return info;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user