diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index c8452203a..e83e73b9c 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -674,20 +674,6 @@
-
-
- 邮件事件消息列表
-
-
-
-
-
-
- 重新发布失败的事件消息
-
-
-
-
质控问题答案导出
@@ -995,6 +981,20 @@
+
+
+ 邮件事件消息列表
+
+
+
+
+
+
+ 重新发布失败的事件消息
+
+
+
+
ExploreRecommendService
@@ -18837,6 +18837,13 @@
+
+
+ 疗效统计表,只针对肿瘤标准 排除基线
+
+
+
+
访视 质疑状态 触发修改
diff --git a/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs b/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs
index 16036f343..5f085ff13 100644
--- a/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs
+++ b/IRaCIS.Core.Application/MassTransit/Command/ConsistenCheckCommand.cs
@@ -1,4 +1,5 @@
-using MiniExcelLibs.Attributes;
+using IRaCIS.Core.Application.Helper;
+using MiniExcelLibs.Attributes;
using System.ComponentModel.DataAnnotations;
namespace IRaCIS.Core.Application.MassTransit.Command
@@ -37,7 +38,8 @@ namespace IRaCIS.Core.Application.MassTransit.Command
public class FullCheckResult: CheckViewModel
{
-
+ public string LatestScanDateStr { get; set; } = string.Empty;
+ public string Modalitys { get; set; } = string.Empty;
public DateTime CheckTime { get; set; }
public string CheckResult { get; set; }
@@ -81,6 +83,7 @@ namespace IRaCIS.Core.Application.MassTransit.Command
public string Modality { get; set; } = string.Empty;
#region 全量一致性核查加入
+ [DictionaryTranslateAttribute("Subject_Visit_Status")]
public SubjectStatus SubjectStatus { get; set; }
diff --git a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs
index 97bb2cdae..f27466de2 100644
--- a/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs
+++ b/IRaCIS.Core.Application/MassTransit/Consumer/ConsistencyCheckConsumer.cs
@@ -197,7 +197,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
// excel 存在
- var excelExceptDB = etcVisitStudyList.Except(dbCheckList);
+ var excelExceptDB = etcVisitStudyList.Except(dbVisitStudyList);
//ETC 和系统的完全一致 两者没有差别
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
@@ -313,8 +313,7 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
var etcList = context.Message.ETCList;
- Expression> subjectVisitLambda = x => x.TrialId == trialId /*&& x.Subject.IsSubjectQuit == false*/ && x.AuditState == AuditStateEnum.QCPassed &&
- (x.CheckState == CheckStateEnum.CVPassed);
+ Expression> subjectVisitLambda = x => x.TrialId == trialId /*&& x.Subject.IsSubjectQuit == false*/ && x.AuditState == AuditStateEnum.QCPassed;
var dicomQuery = from sv in _subjectVisitRepository.Where(subjectVisitLambda)
join subject in _subjectRepository.AsQueryable() on sv.SubjectId equals subject.Id
@@ -390,9 +389,9 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
var dbExceptExcel = dbVisitStudyList.Except(etcVisitStudyList);
// excel 存在
- var excelExceptDB = etcVisitStudyList.Except(dbCheckList);
+ var excelExceptDB = etcVisitStudyList.Except(dbVisitStudyList);
- var dbCurrentVisitFirst = dbCheckList.First();
+ var dbCurrentVisitFirst = dbVisitStudyList.First();
//ETC 和系统的完全一致 两者没有差别
if (dbExceptExcel.Count() == 0 && excelExceptDB.Count() == 0)
@@ -407,8 +406,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
SiteCode = dbCurrentVisitFirst.SiteCode,
SubjectCode = dbCurrentVisitFirst.SubjectCode,
VisitName = dbCurrentVisitFirst.VisitName,
- Modality = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
- StudyDate = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? ""
+ Modalitys = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
+ LatestScanDateStr = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? ""
});
}
else
@@ -425,8 +424,8 @@ namespace IRaCIS.Core.Application.MassTransit.Consumer
SiteCode = dbCurrentVisitFirst.SiteCode,
SubjectCode = dbCurrentVisitFirst.SubjectCode,
VisitName = dbCurrentVisitFirst.VisitName,
- Modality = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
- StudyDate = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? "",
+ Modalitys = string.Join('、', dbVisitStudyList.Select(t => t.Modality)),
+ LatestScanDateStr = dbVisitStudyList.Select(t => t.StudyDate).MaxBy(d => DateTime.Parse(d)) ?? "",
CheckResult = checkResult
});
}
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialStatViewModel.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialStatViewModel.cs
index 87eba5c60..e60d03b3b 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialStatViewModel.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/DTO/TrialStatViewModel.cs
@@ -1,5 +1,8 @@
-using System;
+using IRaCIS.Core.Application.Contracts;
+using IRaCIS.Core.Application.Helper;
+using System;
using System.Collections.Generic;
+using System.ComponentModel.DataAnnotations;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
@@ -76,8 +79,9 @@ namespace IRaCIS.Core.Application.ViewModel
public class EfficacyEvaluationQuery
{
+ [NotDefault]
public Guid TrialId { get; set; }
-
+ [NotDefault]
public Guid TrialReadingCriterionId { get; set; }
}
@@ -87,4 +91,70 @@ namespace IRaCIS.Core.Application.ViewModel
public int SubjectCount { get; set; }
}
+
+ public class EfficacyEvaluationExport
+ {
+
+
+ public Guid Id { get; set; }
+
+ public Guid SubjectId { get; set; }
+
+ public string SubjectCode { get; set; } = String.Empty;
+
+ public decimal VisitTaskNum { get; set; }
+
+ public string TaskName { get; set; }
+ public string TaskBlindName { get; set; }
+
+
+ public ReadingTaskState ReadingTaskState { get; set; }
+
+ public ReadingCategory ReadingCategory { get; set; }
+
+ public bool? IsBaseline { get; set; }
+
+
+ [DictionaryTranslateAttribute("ArmEnum")]
+ public Arm ArmEnum { get; set; }
+
+ //裁判结果选择的访视或者全局任务Id
+ public Arm? JudgeArmEnum { get; set; }
+
+ //裁判选择标记
+ //根据裁判的任务结果 设置访视任务的这个字段 该字段表示 裁判认同该任务的结果
+ [DictionaryTranslateAttribute("YesOrNoAudit")]
+ public bool? IsJudgeSelect { get; set; }
+
+
+ //在当前访视触发裁判,或者在截止日期小于等于当前访视的阅片期触发裁判
+ [DictionaryTranslateAttribute("YesOrNoAudit")]
+ public bool? IsTrigerJudge { get; set; }
+
+ //(如果是访视点裁判,则仅在所选阅片人对应访视 显示;如果是阅片期裁判,则在所选阅片人 阅片期内的所有访视 显示此原因)
+ public string JudgeNote { get; set; } = string.Empty;
+
+
+ public string VisitNote { get; set; }
+
+
+
+
+
+
+
+
+
+
+
+
+
+ public Guid? DoctorUserId { get; set; }
+ public string UserName { get; set; }
+ public List QuestionAnswerList { get; set; }
+
+ public List SubjectCriterionReadingPeriodVisitNumList { get; set; }
+
+ public String TrialSiteCode { get; set; } = String.Empty;
+ }
}
diff --git a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs
index cc79ae16b..f92b862d3 100644
--- a/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs
+++ b/IRaCIS.Core.Application/Service/TrialSiteUser/TrialStatService.cs
@@ -15,7 +15,7 @@ public class TrialStatService(
IRepository _trialDocumentRepository,
IRepository _systemDocumentRepository,
IRepository _systemNoticeRepository,
- IRepository _subjectVisitImageBackRecordReposiotry,
+ IRepository _visitTaskRepository,
IMapper _mapper, IUserInfo _userInfo, IStringLocalizer _localizer) : BaseService
{
@@ -33,7 +33,8 @@ public class TrialStatService(
QCFinishedCount = t.SubjectVisitList.Where(t => t.AuditState == AuditStateEnum.QCPassed || t.AuditState == AuditStateEnum.QCFailed).Count(),
CheckFinishedCount = t.SubjectVisitList.Where(t => t.CheckState == CheckStateEnum.CVPassed).Count(),
- CriterionList = t.TrialReadingCriterionList.Select(t => new VisitReadingCriterionInfo()
+ CriterionList = t.TrialReadingCriterionList.Where(t => inQuery.TrialReadingCriterionId != null ? t.Id == inQuery.TrialReadingCriterionId : true)
+ .Select(t => new VisitReadingCriterionInfo()
{
TrialReadingCriterionId = t.Id,
TrialReadingCriterionName = t.CriterionName,
@@ -84,10 +85,36 @@ public class TrialStatService(
return list;
}
- /////疗效统计表,只针对肿瘤标准 排除基线
- /////
- //public async Task> GetTrialEfficacyEvaluationStatList(EfficacyEvaluationQuery inQuery)
- //{
- //}
+ ///
+ /// 疗效统计表,只针对肿瘤标准 排除基线
+ ///
+ ///
+ ///
+ public async Task> GetTrialEfficacyEvaluationStatList(EfficacyEvaluationQuery inQuery)
+ {
+
+ var query = _visitTaskRepository
+ .Where(t => t.TrialId == inQuery.TrialId && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId && t.IsAnalysisCreate == false && (t.TaskState == TaskState.Effect || t.TaskState == TaskState.Freeze))
+
+ //访视和全局查询已签名完成的,裁判可以是未签名,未完成的
+ .Where(t => (t.ReadingTaskState == ReadingTaskState.HaveSigned && (t.ReadingCategory == ReadingCategory.Visit || t.ReadingCategory == ReadingCategory.Global)) || t.ReadingCategory == ReadingCategory.Judge)
+ .Select(t => new EfficacyEvaluationExport()
+ {
+ Id = t.Id,
+ SubjectId = t.SubjectId,
+ SubjectCode = t.Subject.Code,
+ VisitTaskNum = t.VisitTaskNum,
+ TaskName = t.TaskName,
+ TaskBlindName = t.TaskBlindName,
+ ReadingTaskState = t.ReadingTaskState,
+ ReadingCategory = t.ReadingCategory,
+
+
+
+ });
+
+ return new List { };
+
+ }
}
\ No newline at end of file