From 6fd239cf705c9a1e62b27a0df3e9c2925baf390a Mon Sep 17 00:00:00 2001 From: hang <872297557@qq.com> Date: Thu, 5 Sep 2024 16:57:53 +0800 Subject: [PATCH] =?UTF-8?q?=E8=AE=BF=E8=A7=86bug?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../ImageAndDoc/DTO/UnionStudyViewDodel.cs | 5 +- .../ImageAndDoc/DownloadAndUploadService.cs | 64 +++++++++++-------- .../Service/ImageAndDoc/StudyService.cs | 5 +- .../Service/QC/QCListService.cs | 2 +- .../Service/Visit/DTO/PatientViewModel.cs | 2 + .../Service/Visit/DTO/VisitPointViewModel.cs | 1 - 6 files changed, 46 insertions(+), 33 deletions(-) diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs index c19e0db99..78c83b748 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DTO/UnionStudyViewDodel.cs @@ -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; } } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs index 38ce72e8f..d112ef13f 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs @@ -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> VerifyIRStudyAllowUpload(VerifyUploadOrReupload inCommand) + //{ + + //} + + [TypeFilter(typeof(TrialResourceFilter), Arguments = new object[] { "AfterStopCannNotOpt" })] public async Task 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(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(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(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); } diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs index 2eb2fe4e0..ef6d6c0c9 100644 --- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs +++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs @@ -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) { diff --git a/IRaCIS.Core.Application/Service/QC/QCListService.cs b/IRaCIS.Core.Application/Service/QC/QCListService.cs index 731296631..eab79edba 100644 --- a/IRaCIS.Core.Application/Service/QC/QCListService.cs +++ b/IRaCIS.Core.Application/Service/QC/QCListService.cs @@ -638,7 +638,7 @@ namespace IRaCIS.Core.Application.Image.QA public async Task> 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(_mapper.ConfigurationProvider).ToListAsync(); diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs index 2409b3028..fe54d8536 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/PatientViewModel.cs @@ -382,6 +382,8 @@ namespace IRaCIS.Application.Contracts } + + public class VerifyPacsImageCommand { [NotDefault] diff --git a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs index 382023c91..31e34b7b0 100644 --- a/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs +++ b/IRaCIS.Core.Application/Service/Visit/DTO/VisitPointViewModel.cs @@ -419,7 +419,6 @@ namespace IRaCIS.Core.Application.Contracts public Guid SubjectVisitId { get; set; } - public decimal VisitNum { get; set; } public List StudyInstanceUidList { get; set; } = new List(); }