@@ -244,6 +244,9 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public string RecordPath { get; set; } = string.Empty;
|
||||
|
||||
public AddOrUpdateStudyDto Study { get; set; }
|
||||
|
||||
[NotDefault]
|
||||
public Guid VisitTaskId { get; set; }
|
||||
}
|
||||
|
||||
public class NewArchiveStudyCommand
|
||||
@@ -397,7 +400,7 @@ namespace IRaCIS.Core.Application.Contracts
|
||||
public string SubjectCode { get; set; }
|
||||
}
|
||||
|
||||
public class IRTaskUploadedDicomStudyQuery
|
||||
public class IRTaskUploadedDicomStudyQuery
|
||||
{
|
||||
public Guid VisitTaskId { get; set; }
|
||||
}
|
||||
|
||||
@@ -1,4 +1,5 @@
|
||||
using FellowOakDicom;
|
||||
using IRaCIS.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts;
|
||||
using IRaCIS.Core.Application.Contracts.Dicom.DTO;
|
||||
using IRaCIS.Core.Application.Filter;
|
||||
@@ -240,35 +241,42 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
|
||||
}
|
||||
|
||||
|
||||
//public async Task<List<VerifyStudyUploadResult>> VerifyIRStudyAllowUpload(VerifyUploadOrReupload inCommand)
|
||||
//{
|
||||
|
||||
//}
|
||||
|
||||
|
||||
[TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
|
||||
public async Task<IResponseOutput> AddOrUpdateArchiveTaskStudy(TaskArchiveStudyCommand incommand)
|
||||
{
|
||||
#region 获取该subject 已生成任务的访视的检查
|
||||
|
||||
var queryStudy = _visitTaskRepository.Where(t => t.SubjectId == incommand.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new
|
||||
{
|
||||
VisitTaskId = u.Id,
|
||||
SourceSubjectVisitId = u.SourceSubjectVisitId,
|
||||
OrginalStudyList = u.SourceSubjectVisit.StudyList.Select(t => new StudyBasicInfo()
|
||||
{
|
||||
Id = t.Id,
|
||||
StudyInstanceUid = t.StudyInstanceUid
|
||||
}).ToList(),
|
||||
});
|
||||
//var queryStudy = _visitTaskRepository.Where(t => t.SubjectId == incommand.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new
|
||||
//{
|
||||
// VisitTaskId = u.Id,
|
||||
// SourceSubjectVisitId = u.SourceSubjectVisitId,
|
||||
// OrginalStudyList = u.SourceSubjectVisit.StudyList.Select(t => new StudyBasicInfo()
|
||||
// {
|
||||
// Id = t.Id,
|
||||
// StudyInstanceUid = t.StudyInstanceUid
|
||||
// }).ToList(),
|
||||
//});
|
||||
|
||||
var studyList = await queryStudy.ToListAsync();
|
||||
//var studyList = await queryStudy.ToListAsync();
|
||||
|
||||
|
||||
var findOriginStudy = studyList.FirstOrDefault(c => c.OrginalStudyList.Any(t => t.StudyInstanceUid == incommand.Study.StudyInstanceUid));
|
||||
//var findOriginStudy = studyList.FirstOrDefault(c => c.OrginalStudyList.Any(t => t.StudyInstanceUid == incommand.Study.StudyInstanceUid));
|
||||
|
||||
if (findOriginStudy == null)
|
||||
{
|
||||
return ResponseOutput.NotOk("该检查不属于该受试者,请核查");
|
||||
}
|
||||
//if (findOriginStudy == null)
|
||||
//{
|
||||
// return ResponseOutput.NotOk("该检查不属于该受试者,请核查");
|
||||
//}
|
||||
|
||||
#endregion
|
||||
|
||||
|
||||
var visiTaskId = incommand.VisitTaskId;
|
||||
|
||||
var modalitys = string.Empty;
|
||||
|
||||
@@ -309,10 +317,10 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
}
|
||||
|
||||
|
||||
study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString());
|
||||
study.Id = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), visiTaskId.ToString());
|
||||
study.TrialId = incommand.TrialId;
|
||||
study.SubjectId = incommand.SubjectId;
|
||||
study.VisitTaskId = findOriginStudy.VisitTaskId;
|
||||
study.VisitTaskId = visiTaskId;
|
||||
//study.SubjectVisitId = incommand.SubjectVisitId;
|
||||
|
||||
|
||||
@@ -332,13 +340,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
{
|
||||
var series = _mapper.Map<TaskSeries>(seriesItem);
|
||||
|
||||
series.Id = IdentifierHelper.CreateGuid(seriesItem.StudyInstanceUid, seriesItem.SeriesInstanceUid, incommand.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString());
|
||||
series.Id = IdentifierHelper.CreateGuid(seriesItem.StudyInstanceUid, seriesItem.SeriesInstanceUid, incommand.TrialId.ToString(), visiTaskId.ToString());
|
||||
series.StudyId = study.Id;
|
||||
|
||||
series.TrialId = incommand.TrialId;
|
||||
series.SubjectId = incommand.SubjectId;
|
||||
//series.SubjectVisitId = incommand.SubjectVisitId;
|
||||
series.VisitTaskId = findOriginStudy.VisitTaskId;
|
||||
series.VisitTaskId = visiTaskId;
|
||||
|
||||
//前端传递的数量不准,上传的时候,把失败的也加进来了,以实际数组的数字为准
|
||||
series.InstanceCount = seriesItem.InstanceList.Count;
|
||||
@@ -349,7 +357,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
{
|
||||
var isntance = _mapper.Map<TaskInstance>(instanceItem);
|
||||
|
||||
Guid instanceId = IdentifierHelper.CreateGuid(study.StudyInstanceUid, series.SeriesInstanceUid, isntance.SopInstanceUid, study.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString());
|
||||
Guid instanceId = IdentifierHelper.CreateGuid(study.StudyInstanceUid, series.SeriesInstanceUid, isntance.SopInstanceUid, study.TrialId.ToString(), visiTaskId.ToString());
|
||||
|
||||
isntance.Id = instanceId;
|
||||
isntance.StudyId = study.Id;
|
||||
@@ -358,7 +366,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
isntance.TrialId = incommand.TrialId;
|
||||
isntance.SubjectId = incommand.SubjectId;
|
||||
//isntance.SubjectVisitId = incommand.SubjectVisitId;
|
||||
isntance.VisitTaskId = findOriginStudy.VisitTaskId;
|
||||
isntance.VisitTaskId = visiTaskId;
|
||||
|
||||
await _taskInstanceRepository.AddAsync(isntance);
|
||||
}
|
||||
@@ -371,7 +379,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
else
|
||||
{
|
||||
|
||||
var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), findOriginStudy.VisitTaskId.ToString());
|
||||
var studyId = IdentifierHelper.CreateGuid(incommand.Study.StudyInstanceUid, incommand.TrialId.ToString(), visiTaskId.ToString());
|
||||
|
||||
var study = await _taskStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
|
||||
|
||||
@@ -390,7 +398,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
//某个序列下少了instance
|
||||
foreach (var seriesItem in incommand.Study.SeriesList)
|
||||
{
|
||||
var seriesId = IdentifierHelper.CreateGuid(seriesItem.StudyInstanceUid, seriesItem.SeriesInstanceUid, trialId.ToString(), findOriginStudy.VisitTaskId.ToString());
|
||||
var seriesId = IdentifierHelper.CreateGuid(seriesItem.StudyInstanceUid, seriesItem.SeriesInstanceUid, trialId.ToString(), visiTaskId.ToString());
|
||||
|
||||
TaskSeries dicomSeries = await _taskSeriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId);
|
||||
|
||||
@@ -404,7 +412,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
|
||||
series.TrialId = incommand.TrialId;
|
||||
series.SubjectId = incommand.SubjectId;
|
||||
series.VisitTaskId = findOriginStudy.VisitTaskId;
|
||||
series.VisitTaskId = visiTaskId;
|
||||
//series.SubjectVisitId = incommand.SubjectVisitId;
|
||||
|
||||
|
||||
@@ -422,13 +430,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
foreach (var instanceItem in seriesItem.InstanceList)
|
||||
{
|
||||
var insntance = _mapper.Map<TaskInstance>(instanceItem);
|
||||
insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString(), findOriginStudy.VisitTaskId.ToString());
|
||||
insntance.Id = IdentifierHelper.CreateGuid(insntance.StudyInstanceUid, insntance.SeriesInstanceUid, insntance.SopInstanceUid, trialId.ToString(), visiTaskId.ToString());
|
||||
insntance.StudyId = study.Id;
|
||||
insntance.SeriesId = dicomSeries.Id;
|
||||
|
||||
insntance.TrialId = incommand.TrialId;
|
||||
insntance.SubjectId = incommand.SubjectId;
|
||||
insntance.VisitTaskId = findOriginStudy.VisitTaskId;
|
||||
insntance.VisitTaskId = visiTaskId;
|
||||
|
||||
await _taskInstanceRepository.AddAsync(insntance);
|
||||
}
|
||||
|
||||
@@ -740,6 +740,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
|
||||
var visitList = _subjectVisitRepository.Where(t => t.SubjectId == verifyInfo.SubjectId).Select(t => new { t.VisitNum, t.EarliestScanDate, t.LatestScanDate, t.Id }).ToList();
|
||||
|
||||
var currentVisitNum = visitList.Where(t => t.Id == verifyInfo.SubjectVisitId).First().VisitNum;
|
||||
|
||||
verifyInfo.StudyInstanceUidList.ForEach(waitUploadItem =>
|
||||
{
|
||||
@@ -748,7 +749,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
{
|
||||
|
||||
//小于当前访视 最近的最晚拍片
|
||||
var before = visitList.Where(u => u.VisitNum < verifyInfo.VisitNum).Max(k => k.LatestScanDate);
|
||||
var before = visitList.Where(u => u.VisitNum < currentVisitNum).Max(k => k.LatestScanDate);
|
||||
|
||||
if (before != null && waitUploadItem.StudyDate != null && before > waitUploadItem.StudyDate)
|
||||
{
|
||||
@@ -759,7 +760,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
|
||||
}
|
||||
|
||||
//大于当前访视 最近的最早拍片日期
|
||||
var after = visitList.Where(u => u.VisitNum > verifyInfo.VisitNum).Min(k => k.EarliestScanDate);
|
||||
var after = visitList.Where(u => u.VisitNum > currentVisitNum).Min(k => k.EarliestScanDate);
|
||||
|
||||
if (after != null && waitUploadItem.StudyDate != null && after < waitUploadItem.StudyDate)
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user