修改上传接口
parent
431375946b
commit
c4860cdb74
|
@ -210,12 +210,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public bool IsAdd { get; set; }
|
public bool IsAdd { get; set; }
|
||||||
|
|
||||||
public AddOrUpdateStudyDto Study { get; set; }
|
public AddOrUpdateStudyDto Study { get; set; }
|
||||||
|
|
||||||
|
|
||||||
public List<AddOrUpdateSeriesDto> SeriesList { get; set; }
|
}
|
||||||
|
|
||||||
public List<AddInstanceDto> InstanceList { get; set; }
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
public class AddOrUpdateStudyDto
|
public class AddOrUpdateStudyDto
|
||||||
{
|
{
|
||||||
|
@ -253,6 +250,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public string BodyPartExamined { get; set; } = string.Empty;
|
public string BodyPartExamined { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public List<AddOrUpdateSeriesDto> SeriesList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public class AddOrUpdateSeriesDto
|
public class AddOrUpdateSeriesDto
|
||||||
|
@ -278,6 +278,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
public string AcquisitionNumber { get; set; } = string.Empty;
|
public string AcquisitionNumber { get; set; } = string.Empty;
|
||||||
public string TriggerTime { get; set; } = string.Empty;
|
public string TriggerTime { get; set; } = string.Empty;
|
||||||
|
|
||||||
|
public List<AddInstanceDto> InstanceList { get; set; }
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -168,7 +168,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
await _dicomstudyRepository.AddAsync(study);
|
await _dicomstudyRepository.AddAsync(study);
|
||||||
|
|
||||||
|
|
||||||
foreach (var seriesItem in incommand.SeriesList)
|
foreach (var seriesItem in incommand.Study.SeriesList)
|
||||||
{
|
{
|
||||||
var series = _mapper.Map<DicomSeries>(seriesItem);
|
var series = _mapper.Map<DicomSeries>(seriesItem);
|
||||||
|
|
||||||
|
@ -182,7 +182,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
await _dicomSeriesRepository.AddAsync(series);
|
await _dicomSeriesRepository.AddAsync(series);
|
||||||
|
|
||||||
foreach (var instanceItem in incommand.InstanceList)
|
foreach (var instanceItem in seriesItem.InstanceList)
|
||||||
{
|
{
|
||||||
var isntance = _mapper.Map<DicomInstance>(instanceItem);
|
var isntance = _mapper.Map<DicomInstance>(instanceItem);
|
||||||
isntance.StudyId = study.Id;
|
isntance.StudyId = study.Id;
|
||||||
|
@ -209,34 +209,59 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
var study = await _dicomstudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
|
var study = await _dicomstudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
|
||||||
|
|
||||||
_mapper.Map(incommand.Study, study);
|
//_mapper.Map(incommand.Study, study);
|
||||||
|
|
||||||
//特殊处理逻辑
|
//特殊处理逻辑
|
||||||
SpecialArchiveStudyDeal(study);
|
SpecialArchiveStudyDeal(study);
|
||||||
|
|
||||||
await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == incommand.Study.Id);
|
//await _dicomSeriesRepository.BatchDeleteNoTrackingAsync(t => t.StudyId == incommand.Study.Id);
|
||||||
|
|
||||||
|
|
||||||
foreach (var seriesItem in incommand.SeriesList)
|
// 少了整个序列
|
||||||
|
|
||||||
|
//某个序列下少了instance
|
||||||
|
foreach (var seriesItem in incommand.Study.SeriesList)
|
||||||
{
|
{
|
||||||
var series = _mapper.Map<DicomSeries>(seriesItem);
|
var seriesId = IdentifierHelper.CreateGuid(seriesItem.StudyInstanceUid, seriesItem.SeriesInstanceUid, trialId.ToString());
|
||||||
|
|
||||||
series.Id = IdentifierHelper.CreateGuid(series.StudyInstanceUid, series.SeriesInstanceUid, trialId.ToString());
|
DicomSeries dicomSeries = await _dicomSeriesRepository.FirstOrDefaultAsync(t=>t.Id==seriesId);
|
||||||
series.StudyId = study.Id;
|
|
||||||
|
|
||||||
series.TrialId = incommand.TrialId;
|
//判断重复
|
||||||
series.SiteId = incommand.SiteId;
|
if (dicomSeries == null)
|
||||||
series.SubjectId = incommand.SubjectId;
|
{
|
||||||
series.SubjectVisitId = incommand.SubjectVisitId;
|
|
||||||
|
|
||||||
await _dicomSeriesRepository.AddAsync(series);
|
|
||||||
|
|
||||||
foreach (var instanceItem in incommand.InstanceList)
|
var series = _mapper.Map<DicomSeries>(seriesItem);
|
||||||
|
|
||||||
|
series.Id = seriesId;
|
||||||
|
series.StudyId = study.Id;
|
||||||
|
|
||||||
|
series.TrialId = incommand.TrialId;
|
||||||
|
series.SiteId = incommand.SiteId;
|
||||||
|
series.SubjectId = incommand.SubjectId;
|
||||||
|
series.SubjectVisitId = incommand.SubjectVisitId;
|
||||||
|
|
||||||
|
|
||||||
|
dicomSeries= await _dicomSeriesRepository.AddAsync(series);
|
||||||
|
|
||||||
|
//新的序列 那么 检查的序列数量+1
|
||||||
|
study.SeriesCount += 1;
|
||||||
|
|
||||||
|
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
//该序列掉了instance
|
||||||
|
dicomSeries.InstanceCount += seriesItem.InstanceCount;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
foreach (var instanceItem in seriesItem.InstanceList)
|
||||||
{
|
{
|
||||||
var insntance = _mapper.Map<DicomInstance>(instanceItem);
|
var insntance = _mapper.Map<DicomInstance>(instanceItem);
|
||||||
insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString());
|
insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString());
|
||||||
insntance.StudyId = study.Id;
|
insntance.StudyId = study.Id;
|
||||||
insntance.SeriesId = series.Id;
|
insntance.SeriesId = dicomSeries.Id;
|
||||||
|
|
||||||
insntance.TrialId = incommand.TrialId;
|
insntance.TrialId = incommand.TrialId;
|
||||||
insntance.SiteId = incommand.SiteId;
|
insntance.SiteId = incommand.SiteId;
|
||||||
|
@ -245,16 +270,17 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
|
|
||||||
await _dicomInstanceRepository.AddAsync(insntance);
|
await _dicomInstanceRepository.AddAsync(insntance);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// 不管是新的序列 还是 该序列 掉了Instance 重传的时候 检查的instance 数量都会增加
|
||||||
|
study.InstanceCount += seriesItem.InstanceCount;
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
// 少了整个序列
|
|
||||||
|
|
||||||
//某个序列下少了instance
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
await _dicomstudyRepository.SaveChangesAsync();
|
await _dicomstudyRepository.SaveChangesAsync();
|
||||||
|
|
||||||
return ResponseOutput.Ok();
|
return ResponseOutput.Ok();
|
||||||
|
@ -738,7 +764,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||||
result.AllowReUpload = true;
|
result.AllowReUpload = true;
|
||||||
|
|
||||||
result.UploadedSeriesList = _repository.Where<DicomSeries>(t => t.StudyId == verifyStudyInfo.Id).Select(t => new UploadedSeries()
|
result.UploadedSeriesList = _repository.Where<DicomSeries>(t => t.StudyId == verifyStudyInfo.Id).Select(t => new UploadedSeries()
|
||||||
{ SeriesInstanceUid = t.SeriesInstanceUid, SOPInstanceUIDList = t.DicomInstanceList.Select(c => c.SopInstanceUid).ToList() }).ToList();
|
{ SeriesId=t.Id, SeriesInstanceUid = t.SeriesInstanceUid, SOPInstanceUIDList = t.DicomInstanceList.Select(c => c.SopInstanceUid).ToList() }).ToList();
|
||||||
}
|
}
|
||||||
//不是同一个受试者
|
//不是同一个受试者
|
||||||
else
|
else
|
||||||
|
|
|
@ -319,6 +319,8 @@ namespace IRaCIS.Core.Application.Contracts
|
||||||
|
|
||||||
public class UploadedSeries
|
public class UploadedSeries
|
||||||
{
|
{
|
||||||
|
public Guid SeriesId { get; set; }
|
||||||
|
|
||||||
public string SeriesInstanceUid { get; set; }
|
public string SeriesInstanceUid { get; set; }
|
||||||
|
|
||||||
public List<string> SOPInstanceUIDList { get; set; }
|
public List<string> SOPInstanceUIDList { get; set; }
|
||||||
|
|
Loading…
Reference in New Issue