修改上传接口

Uat_Study
hang 2023-05-04 13:30:09 +08:00
parent 431375946b
commit c4860cdb74
3 changed files with 56 additions and 25 deletions

View File

@ -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; }
} }

View File

@ -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

View File

@ -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; }