访视bug
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
a8f6594142
commit
6fd239cf70
|
@ -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
|
||||||
|
|
|
@ -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);
|
||||||
}
|
}
|
||||||
|
|
|
@ -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)
|
||||||
{
|
{
|
||||||
|
|
|
@ -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();
|
||||||
|
|
|
@ -382,6 +382,8 @@ namespace IRaCIS.Application.Contracts
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public class VerifyPacsImageCommand
|
public class VerifyPacsImageCommand
|
||||||
{
|
{
|
||||||
[NotDefault]
|
[NotDefault]
|
||||||
|
|
|
@ -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>();
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue