From caca3e77a52b688c82aad1454c131009eb28cae4 Mon Sep 17 00:00:00 2001
From: hang <872297557@qq.com>
Date: Fri, 18 Jul 2025 12:17:55 +0800
Subject: [PATCH] =?UTF-8?q?=E5=A4=8D=E6=A0=B8=E7=A8=BD=E6=9F=A5=E4=BF=AE?=
=?UTF-8?q?=E6=94=B9014?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../Service/ImageAndDoc/StudyService.cs | 16 +++++++++---
.../TrialSiteUser/TrialConfigService.cs | 25 ++++++++++++++++---
2 files changed, 33 insertions(+), 8 deletions(-)
diff --git a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
index fe0feed5a..51bf23ad6 100644
--- a/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
+++ b/IRaCIS.Core.Application/Service/ImageAndDoc/StudyService.cs
@@ -579,7 +579,7 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
///
[HttpGet("{subjectVisitId:guid}")]
[AllowAnonymous]
- public IResponseOutput> GetAllRelationStudyList(Guid subjectVisitId)
+ public IResponseOutput> GetAllRelationStudyList(Guid subjectVisitId,bool? isReading)
{
#region 废弃
//var studylist = _studyRepository.Where(u => u.SubjectVisitId == subjectVisitId && u.IsDeleted == false).Select(t => new { StudyId = t.Id, t.SubjectId, t.TrialId }).ToList();
@@ -607,10 +607,18 @@ namespace IRaCIS.Core.Application.Service.ImageAndDoc
var studyInfo = _dicomStudyRepository.Where(u => u.SubjectVisitId == subjectVisitId).Select(t => new { t.SubjectId, t.TrialId }).FirstOrDefault().IfNullThrowException();
- var query = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId)
- .ProjectTo(_mapper.ConfigurationProvider).ToList();
+ var list = _dicomStudyRepository.Where(t => t.SubjectVisitId != subjectVisitId && t.TrialId == studyInfo.TrialId && t.SubjectId == studyInfo.SubjectId)
+ .Select(t=> new RelationStudyDTO()
+ {
+ StudyId = t.Id,
+ StudyCode = t.StudyCode,
+ VisitName = t.SubjectVisit.VisitName,
+ Modalities = t.Modalities,
+ Description = t.Description,
+ SeriesCount = t.SeriesList.Where(t=> isReading==true? t.IsReading==true:true).Count()
+ }) .ToList();
- var list = query.OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList();
+ list = list.Where(t=>t.SeriesCount>0).OrderBy(u => u.VisitName).ThenBy(s => s.StudyCode).ToList();
return ResponseOutput.Ok(list);
}
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
index e9ca04d77..3d1c4ab83 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialConfigService.cs
@@ -865,6 +865,23 @@ namespace IRaCIS.Core.Application
}
else if (signConfirmDTO.SignCode == ((int)SignEnum.TrialQCQuestionConfirmUpdate).ToString())
{
+ var trialConfirmTime = _trialRepository.Where(t => t.Id == signConfirmDTO.TrialId).Select(t => t.QCQuestionConfirmedTime).FirstOrDefault();
+
+ if (trialConfirmTime != null)
+ {
+ //删除复审中间临时数据
+ await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit
+ && t.CurrentQCEnum == CurrentQC.SecondReview && t.UpdateTime > trialConfirmTime);
+
+ //删除质控中 临时保存的问题答案 (因为添加那里只会新增 和全部更新,如果不处理,那么有新增,也有更新,稽查那里也会有问题)
+ await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.AuditState == AuditStateEnum.InPrimaryQC
+ && t.CurrentQCEnum == CurrentQC.First);
+
+ await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.AuditState == AuditStateEnum.InSecondaryQC
+ && t.CurrentQCEnum == CurrentQC.Second);
+
+ }
+
await _trialRepository.UpdatePartialFromQueryAsync(t => t.Id == signConfirmDTO.TrialId, u => new Trial() { QCQuestionConfirmedTime = null, QCQuestionConfirmedUserId = null, IsQCQuestionConfirmed = false });
}
else if (signConfirmDTO.SignCode == ((int)SignEnum.SecondReviewConfirm).ToString())
@@ -873,15 +890,15 @@ namespace IRaCIS.Core.Application
if (trialConfirmTime != null)
{
- //删除复审中间临时数据
- await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit
- && t.CurrentQCEnum == CurrentQC.SecondReview && t.UpdateTime> trialConfirmTime);
+ //删除复审中间临时数据--没重置,一直点生成复核任务
+ await _qcQuestionAnswerRepository.BatchDeleteNoTrackingAsync(t => t.SubjectVisit.TrialId == signConfirmDTO.TrialId && t.SubjectVisit.SecondReviewState == SecondReviewState.WaitAudit
+ && t.CurrentQCEnum == CurrentQC.SecondReview && t.UpdateTime > trialConfirmTime);
//重复二次复核签名
await _subjectVisitRepository.UpdatePartialFromQueryAsync(t => t.TrialId == signConfirmDTO.TrialId && t.AuditState == AuditStateEnum.QCPassed
&& !t.TrialQCQuestionAnswerList.Any(t => t.SecondReviewTime == trialConfirmTime), u => new SubjectVisit() { SecondReviewState = SecondReviewState.WaitAudit });
-
+
}
}