访视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 string RecordPath { get; set; } = string.Empty;
public AddOrUpdateStudyDto Study { get; set; } public AddOrUpdateStudyDto Study { get; set; }
[NotDefault]
public Guid VisitTaskId { get; set; }
} }
public class NewArchiveStudyCommand public class NewArchiveStudyCommand
@ -397,7 +400,7 @@ namespace IRaCIS.Core.Application.Contracts
public string SubjectCode { get; set; } public string SubjectCode { get; set; }
} }
public class IRTaskUploadedDicomStudyQuery public class IRTaskUploadedDicomStudyQuery
{ {
public Guid VisitTaskId { get; set; } public Guid VisitTaskId { get; set; }
} }

View File

@ -1,4 +1,5 @@
using FellowOakDicom; using FellowOakDicom;
using IRaCIS.Application.Contracts;
using IRaCIS.Core.Application.Contracts; using IRaCIS.Core.Application.Contracts;
using IRaCIS.Core.Application.Contracts.Dicom.DTO; using IRaCIS.Core.Application.Contracts.Dicom.DTO;
using IRaCIS.Core.Application.Filter; 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" })] [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })]
public async Task<IResponseOutput> AddOrUpdateArchiveTaskStudy(TaskArchiveStudyCommand incommand) public async Task<IResponseOutput> AddOrUpdateArchiveTaskStudy(TaskArchiveStudyCommand incommand)
{ {
#region 获取该subject 已生成任务的访视的检查 #region 获取该subject 已生成任务的访视的检查
var queryStudy = _visitTaskRepository.Where(t => t.SubjectId == incommand.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new //var queryStudy = _visitTaskRepository.Where(t => t.SubjectId == incommand.SubjectId && t.SourceSubjectVisitId != null && t.DoctorUserId == _userInfo.Id).Select(u => new
{ //{
VisitTaskId = u.Id, // VisitTaskId = u.Id,
SourceSubjectVisitId = u.SourceSubjectVisitId, // SourceSubjectVisitId = u.SourceSubjectVisitId,
OrginalStudyList = u.SourceSubjectVisit.StudyList.Select(t => new StudyBasicInfo() // OrginalStudyList = u.SourceSubjectVisit.StudyList.Select(t => new StudyBasicInfo()
{ // {
Id = t.Id, // Id = t.Id,
StudyInstanceUid = t.StudyInstanceUid // StudyInstanceUid = t.StudyInstanceUid
}).ToList(), // }).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) //if (findOriginStudy == null)
{ //{
return ResponseOutput.NotOk("该检查不属于该受试者,请核查"); // return ResponseOutput.NotOk("该检查不属于该受试者,请核查");
} //}
#endregion #endregion
var visiTaskId = incommand.VisitTaskId;
var modalitys = string.Empty; 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.TrialId = incommand.TrialId;
study.SubjectId = incommand.SubjectId; study.SubjectId = incommand.SubjectId;
study.VisitTaskId = findOriginStudy.VisitTaskId; study.VisitTaskId = visiTaskId;
//study.SubjectVisitId = incommand.SubjectVisitId; //study.SubjectVisitId = incommand.SubjectVisitId;
@ -332,13 +340,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{ {
var series = _mapper.Map<TaskSeries>(seriesItem); 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.StudyId = study.Id;
series.TrialId = incommand.TrialId; series.TrialId = incommand.TrialId;
series.SubjectId = incommand.SubjectId; series.SubjectId = incommand.SubjectId;
//series.SubjectVisitId = incommand.SubjectVisitId; //series.SubjectVisitId = incommand.SubjectVisitId;
series.VisitTaskId = findOriginStudy.VisitTaskId; series.VisitTaskId = visiTaskId;
//前端传递的数量不准,上传的时候,把失败的也加进来了,以实际数组的数字为准 //前端传递的数量不准,上传的时候,把失败的也加进来了,以实际数组的数字为准
series.InstanceCount = seriesItem.InstanceList.Count; series.InstanceCount = seriesItem.InstanceList.Count;
@ -349,7 +357,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
{ {
var isntance = _mapper.Map<TaskInstance>(instanceItem); 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.Id = instanceId;
isntance.StudyId = study.Id; isntance.StudyId = study.Id;
@ -358,7 +366,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
isntance.TrialId = incommand.TrialId; isntance.TrialId = incommand.TrialId;
isntance.SubjectId = incommand.SubjectId; isntance.SubjectId = incommand.SubjectId;
//isntance.SubjectVisitId = incommand.SubjectVisitId; //isntance.SubjectVisitId = incommand.SubjectVisitId;
isntance.VisitTaskId = findOriginStudy.VisitTaskId; isntance.VisitTaskId = visiTaskId;
await _taskInstanceRepository.AddAsync(isntance); await _taskInstanceRepository.AddAsync(isntance);
} }
@ -371,7 +379,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
else 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); var study = await _taskStudyRepository.FirstOrDefaultAsync(t => t.Id == studyId);
@ -390,7 +398,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//某个序列下少了instance //某个序列下少了instance
foreach (var seriesItem in incommand.Study.SeriesList) 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); TaskSeries dicomSeries = await _taskSeriesRepository.FirstOrDefaultAsync(t => t.Id == seriesId);
@ -404,7 +412,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
series.TrialId = incommand.TrialId; series.TrialId = incommand.TrialId;
series.SubjectId = incommand.SubjectId; series.SubjectId = incommand.SubjectId;
series.VisitTaskId = findOriginStudy.VisitTaskId; series.VisitTaskId = visiTaskId;
//series.SubjectVisitId = incommand.SubjectVisitId; //series.SubjectVisitId = incommand.SubjectVisitId;
@ -422,13 +430,13 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
foreach (var instanceItem in seriesItem.InstanceList) foreach (var instanceItem in seriesItem.InstanceList)
{ {
var insntance = _mapper.Map<TaskInstance>(instanceItem); 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.StudyId = study.Id;
insntance.SeriesId = dicomSeries.Id; insntance.SeriesId = dicomSeries.Id;
insntance.TrialId = incommand.TrialId; insntance.TrialId = incommand.TrialId;
insntance.SubjectId = incommand.SubjectId; insntance.SubjectId = incommand.SubjectId;
insntance.VisitTaskId = findOriginStudy.VisitTaskId; insntance.VisitTaskId = visiTaskId;
await _taskInstanceRepository.AddAsync(insntance); 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 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 => 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) 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) 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) 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(); 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 public class VerifyPacsImageCommand
{ {
[NotDefault] [NotDefault]

View File

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