From c1d0bf891488e75a0e5df38e60b4264c4e1aa804 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Tue, 16 Dec 2025 09:30:41 +0800
Subject: [PATCH] =?UTF-8?q?uat-ivus-oct-=E5=86=8D=E6=AC=A1=E4=BF=AE?=
=?UTF-8?q?=E6=94=B96?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Consumer/ConsistencyCheckConsumer.cs | 2 +-
.../Document/TrialEmailNoticeConfigService.cs | 24 ++++----
.../ImageAndDoc/DownloadAndUploadService.cs | 61 ++++++++++++++++++-
.../ImageAndDoc/NoneDicomStudyService.cs | 11 +++-
4 files changed, 81 insertions(+), 17 deletions(-)
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs
index b3d9e35ff..326233218 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs
@@ -86,7 +86,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
var noneDicomQuey = from sv in _subjectVisitRepository.Where(subjectVisitLambda)
join subject in _subjectRepository.AsQueryable() on sv.SubjectId equals subject.Id
- join noneDicomStudy in _noneDicomStudyRepository.AsQueryable() on sv.Id equals noneDicomStudy.SubjectVisitId
+ join noneDicomStudy in _noneDicomStudyRepository.Where(t => t.FileCount > 0) on sv.Id equals noneDicomStudy.SubjectVisitId
select new CheckDBModel()
{
SubjectVisitId = sv.Id,
diff --git a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
index 8a81eb8cd..d2637703a 100644
--- a/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
+++ b/IRaCIS.Core.Application/Service/Document/TrialEmailNoticeConfigService.cs
@@ -1763,22 +1763,22 @@ x.ReadingTableQuestionTrial.QuestionMark == QuestionMark.LesionNumber && x.Readi
await _trialEmailNoticeConfigRepository.SaveChangesAsync();
- var cronInfo = await _trialEmailNoticeConfigRepository.Where(t => t.Id == addOrEditTrialEmailNoticeConfig.Id)
- .Select(t => new { t.Id, t.Code, TrialCode = t.Trial.TrialCode, t.EmailCron, t.BusinessScenarioEnum, t.TrialId })
- .FirstAsync();
+ // var cronInfo = await _trialEmailNoticeConfigRepository.Where(t => t.Id == addOrEditTrialEmailNoticeConfig.Id)
+ //.Select(t => new { t.Id, t.Code, TrialCode = t.Trial.TrialCode, t.EmailCron, t.BusinessScenarioEnum, t.TrialId })
+ //.FirstAsync();
- var jobId = $"{cronInfo.TrialId}({cronInfo.TrialCode})_({cronInfo.BusinessScenarioEnum})";
+ // var jobId = $"{cronInfo.TrialId}({cronInfo.TrialCode})_({cronInfo.BusinessScenarioEnum})";
- if (addOrEditTrialEmailNoticeConfig.IsAutoSend)
- {
- HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, addOrEditTrialEmailNoticeConfig.TrialId, addOrEditTrialEmailNoticeConfig.BusinessScenarioEnum, addOrEditTrialEmailNoticeConfig.EmailCron);
+ // if (addOrEditTrialEmailNoticeConfig.IsAutoSend)
+ // {
+ // HangfireJobHelper.AddOrUpdateTrialCronJob(jobId, addOrEditTrialEmailNoticeConfig.TrialId, addOrEditTrialEmailNoticeConfig.BusinessScenarioEnum, addOrEditTrialEmailNoticeConfig.EmailCron);
- }
- else
- {
- HangfireJobHelper.RemoveCronJob(jobId);
- }
+ // }
+ // else
+ // {
+ // HangfireJobHelper.RemoveCronJob(jobId);
+ // }
return ResponseOutput.Ok();
}
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
index 44055be94..291419561 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/DownloadAndUploadService.cs
@@ -901,7 +901,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
///
///
[HttpPost]
- public async Task>> GetIRUploadTaskNoneDicomStudyList(IRUploadStudyQuery inQuery)
+ public async Task>> GetIRUploadTaskNoneDicomStudyList([FromServices] INoneDicomStudyService _noneDicomStudyService, IRUploadStudyQuery inQuery)
{
var subjectCode = inQuery.SubjectCode;
var subjectId = inQuery.SubjectId;
@@ -926,7 +926,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
}
var info = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId)
- .Select(t => new { t.IsImageFilter, t.CriterionModalitys, t.IsReadingTaskViewInOrder }).FirstNotNullAsync();
+ .Select(t => new { t.IsImageFilter, t.CriterionType, t.TrialId, t.CriterionModalitys, t.IsReadingTaskViewInOrder }).FirstNotNullAsync();
var config = await _subjectRepository.Where(t => t.Id == subjectId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList, t.Trial.IsShowStudyName }).FirstOrDefaultAsync();
@@ -934,6 +934,61 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//靶段标注上传,查看访视级别,上传绑定访视级别
if (inQuery.IsImageSegmentLabel == true)
{
+ //存在ivus 和oct 这两种的项目
+ if (_readingQuestionCriterionTrialRepository.Where(t => t.TrialId == info.TrialId &&
+ (t.CriterionType == CriterionType.IVUS || t.CriterionType == CriterionType.OCT)).Distinct().Count() == 2
+ && !_noneDicomStudyReposiotry.Any(t => t.SubjectId == inQuery.SubjectId && t.Modality != "IVUS"))
+ {
+ #region ivus 自动创建非dicom检查
+
+ var addList = await _dicomStudyRepository.Where(t => t.SubjectId == inQuery.SubjectId)
+ .Select(t => new NoneDicomStudyAddOrEdit()
+ {
+ TrialId = t.TrialId,
+ SubjectId = t.SubjectId,
+ SubjectVisitId = t.SubjectVisitId,
+
+ ImageDate = (DateTime)t.StudyTime,
+ BodyPart = t.BodyPartForEdit,
+ BodyPartForEditOther = t.BodyPartForEditOther,
+ Modality = "IVUS"
+
+ }).ToListAsync();
+
+
+ var @lock = _distributedLockProvider.CreateLock($"NoneDicomCode");
+
+ using (await @lock.AcquireAsync())
+ {
+
+ var trialId = addList.FirstOrDefault().TrialId;
+ //默认会是0
+ var code = await _noneDicomStudyReposiotry.Where(t => t.TrialId == trialId).Select(x => x.Code).DefaultIfEmpty().MaxAsync();
+
+ foreach (var g in addList.GroupBy(t => t.SubjectVisitId))
+ {
+ var addOrEditNoneDicomStudy = g.First();
+
+ var optEntity = await _noneDicomStudyReposiotry.InsertFromDTOAsync(addOrEditNoneDicomStudy);
+
+ optEntity.Code = code + 1;
+
+
+ optEntity.StudyCode = AppSettings.GetCodeStr(optEntity.Code, nameof(NoneDicomStudy));
+
+ code++;
+ }
+
+ await _noneDicomStudyReposiotry.SaveChangesAsync();
+ }
+
+ #endregion
+ }
+
+
+
+
+
var list = _noneDicomStudyReposiotry.Where(t => t.SubjectId == subjectId)
.WhereIf(inQuery.SubjectVisitId != null, t => t.SubjectVisitId == inQuery.SubjectVisitId)
//.WhereIf(info.IsImageFilter, t => ("|" + info.CriterionModalitys + "|").Contains("|" + t.Modality + "|"))
@@ -1655,7 +1710,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
//,
NoneDicomStudyList = inQuery.IsImageSegmentLabel != false ? sv.NoneDicomStudyList.Where(t => isQueryNoneDicom ? inQuery.NoneDicomStudyIdList.Contains(t.Id) : false)
- .Where(t => info.IsImageFilter && inQuery.IsImageSegmentLabel==null ? ("|" + info.CriterionModalitys + "|").Contains("|" + t.Modality + "|") : true)
+ .Where(t => info.IsImageFilter && inQuery.IsImageSegmentLabel == null ? ("|" + info.CriterionModalitys + "|").Contains("|" + t.Modality + "|") : true)
.Where(t => t.IsReading)
.Select(nd => new DownloadNoneDicomStudyDto()
{
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs
index bf23ed095..41faa94a0 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/NoneDicomStudyService.cs
@@ -3,6 +3,7 @@
// 生成时间 2021-12-06 10:54:55
// 对此文件的更改可能会导致不正确的行为,并且如果重新生成代码,这些更改将会丢失。
//--------------------------------------------------------------------
+using DocumentFormat.OpenXml.EMMA;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Application.Service.Reading.Dto;
using IRaCIS.Core.Domain.Models;
@@ -96,8 +97,16 @@ namespace IRaCIS.Core.Application.Contracts
}
+ var isFilterIVUSNoneDicom = false;
+ if (_subjectVisitRepository.Where(t => t.Id == subjectVisitId).SelectMany(t => t.Trial.TrialReadingCriterionList)
+ .Where(t => t.CriterionType == CriterionType.IVUS || t.CriterionType == CriterionType.OCT).Distinct().Count() == 2
+ )
+ {
+ isFilterIVUSNoneDicom = true;
+ }
- var list = await noneDicomStudyQueryable.OrderBy(x => x.ImageDate).ThenBy(x => x.CreateTime).ToListAsync();
+ var list = await noneDicomStudyQueryable.Where(t => isFilterIVUSNoneDicom ? t.Modality != "IVUS" : true)
+ .OrderBy(x => x.ImageDate).ThenBy(x => x.CreateTime).ToListAsync();
var config = await _subjectVisitRepository.Where(t => t.Id == subjectVisitId).Select(t => new { t.Trial.ImageFormatList, t.Trial.StudyNameList, t.Trial.IsShowStudyName, AuditState = qcAuditState }).FirstOrDefaultAsync();
return ResponseOutput.Ok(list, config);