访视bug
continuous-integration/drone/push Build is passing Details

IRC_NewDev
hang 2024-09-05 16:57:53 +08:00
parent a8f6594142
commit 6fd239cf70
6 changed files with 46 additions and 33 deletions

View File

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

View File

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

View File

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

View File

@ -638,7 +638,7 @@ namespace IRaCIS.Core.Application.Image.QA
public async Task<List<SubjectVisitSelectItem>> GetSubjectVisitSelectList(Guid subjectId)
{
var maxNum = _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TaskState == TaskState.Effect && t.SignTime != null && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.InOrder).MaxOrDefault(x => x.VisitTaskNum,0);
var maxNum = await _visitTaskRepository.Where(t => t.SubjectId == subjectId && t.TaskState == TaskState.Effect && t.SignTime != null && t.TrialReadingCriterion.IsReadingTaskViewInOrder == ReadingOrder.InOrder).MaxAsync(x => (decimal?)x.VisitTaskNum)??0;
return await _subjectVisitRepository.Where(t => t.SubjectId == subjectId&&t.VisitNum>= maxNum).OrderBy(T => T.VisitNum).ProjectTo<SubjectVisitSelectItem>(_mapper.ConfigurationProvider).ToListAsync();

View File

@ -382,6 +382,8 @@ namespace IRaCIS.Application.Contracts
}
public class VerifyPacsImageCommand
{
[NotDefault]

View File

@ -419,7 +419,6 @@ namespace IRaCIS.Core.Application.Contracts
public Guid SubjectVisitId { get; set; }
public decimal VisitNum { get; set; }
public List<VerifyUploadStudyBasicInfo> StudyInstanceUidList { get; set; } = new List<VerifyUploadStudyBasicInfo>();
}