From 8afd21595705a62f12b1a6b03a664d51245d0383 Mon Sep 17 00:00:00 2001
From: hang <87227557@qq.com>
Date: Fri, 30 Aug 2024 22:40:52 +0800
Subject: [PATCH] =?UTF-8?q?=E8=A7=86=E5=9B=BE=E8=B0=83=E6=95=B4=E4=BF=AE?=
=?UTF-8?q?=E5=A4=8D?=
MIME-Version: 1.0
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit
---
.../IRaCIS.Core.Application.xml | 26 ++
.../Service/Reading/Dto/GetReadModuleDto.cs | 11 +-
.../ReadingPeriod/ReadModuleService.cs | 323 +++++++++++++++++-
.../Reading/ReadingPeriod/ReadModule.cs | 5 +-
IRaCIS.Core.Domain/Trial/Trial.cs | 1 -
5 files changed, 352 insertions(+), 14 deletions(-)
diff --git a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
index 84de882fd..30b2eaff0 100644
--- a/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
+++ b/IRaCIS.Core.Application/IRaCIS.Core.Application.xml
@@ -523,6 +523,25 @@
系统模板文档配置表
+
+
+ 开始时候一些帮助 比如根据配置的字典生成枚举
+
+
+
+
+
+ 开始时候一些帮助 比如根据配置的字典生成枚举
+
+
+
+
+
+ 根据配置的字典名生成后端枚举
+
+
+
+
项目参与人员导出
@@ -15359,6 +15378,13 @@
+
+
+ 用ef 实现之前视图的功能
+
+
+
+
获取读片模块 //加了标准参数
diff --git a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
index 70a2f6e79..1dc49ade4 100644
--- a/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
+++ b/IRaCIS.Core.Application/Service/Reading/Dto/GetReadModuleDto.cs
@@ -1,4 +1,5 @@
using IRaCIS.Core.Domain.Share;
+using Newtonsoft.Json;
using System;
using System.Collections.Generic;
using System.ComponentModel.DataAnnotations;
@@ -268,7 +269,15 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
public Guid? SubjectId { get; set; }
- public List Data { get; set; }
+ public List Data { get; set; } = new List();
+
+ //public List Data =>VisitData.Union(ReadMouduleData).ToList();
+
+
+ [JsonIgnore]
+ public List VisitData { get; set; } = new List();
+ [JsonIgnore]
+ public List ReadMouduleData { get; set; } = new List();
}
diff --git a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
index 7c89abf55..324e8fe40 100644
--- a/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
+++ b/IRaCIS.Core.Application/Service/Reading/ReadingPeriod/ReadModuleService.cs
@@ -9,6 +9,7 @@ using IRaCIS.Core.Application.ViewModel;
using IRaCIS.Core.Infrastructure;
using IRaCIS.Core.Application.Filter;
using IRaCIS.Core.Domain.Models;
+using Microsoft.Identity.Client;
namespace IRaCIS.Application.Services
{
@@ -100,14 +101,33 @@ namespace IRaCIS.Application.Services
return await _readModuleRepository.SaveChangesAsync();
}
+ ///
+ /// 用ef 实现之前视图的功能
+ ///
+ ///
+ ///
[HttpPost]
public async Task>> GetReadModuleList_New(GetReadModuleDto inQuery)
{
- var criterionInfo = _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(t => new { t.CriterionName, t.ReadingType }).FirstOrDefault();
+ var criterionInfo = await _readingQuestionCriterionTrialRepository.Where(t => t.Id == inQuery.TrialReadingCriterionId).Select(x => new
+ {
+ x.CriterionName,
+ x.ReadingType,
+ x.IsReadingTaskViewInOrder,
+ x.IsOncologyReading,
+ x.IsGlobalReading,
+ x.IsReadingPeriod,
+ x.ReadingInfoSignTime,
+ }).FirstNotNullAsync();
var readingType = (int)criterionInfo.ReadingType;
+ var isFilterModuleType = inQuery.ModuleType != null;
+ var isFilterCompleteClinicalData = inQuery.CompleteClinicalData != null;
+ var isFilterReadingStatus = inQuery.ReadingStatus != null;
+ var isFilterName = !string.IsNullOrWhiteSpace(inQuery.Name) ;
+
var query = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId)
.WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
@@ -120,8 +140,11 @@ namespace IRaCIS.Application.Services
TrialSiteCode = t.TrialSite.TrialSiteCode,
TrialSiteId = t.TrialSiteId,
+ #region 分开不用union 在属性里面union
+
//访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
- Data = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
+ VisitData = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
+
.Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
{
Id = sv.Id,
@@ -183,7 +206,7 @@ namespace IRaCIS.Application.Services
t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+
(sv.SubmitState == SubmitStateEnum.Submitted && sv.Trial.ClinicalDataTrialSetList
- .Any(t=>t.ClinicalDataLevel ==ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u=>u.TrialReadingCriterionId==inQuery.TrialReadingCriterionId)) ? 1 : 0),
+ .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u => u.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)) ? 1 : 0),
@@ -193,23 +216,301 @@ namespace IRaCIS.Application.Services
CriterionName = criterionInfo.CriterionName
- }).ToList()
+ })
+
+ .Where(t=>isFilterModuleType? t.ModuleType==inQuery.ModuleType:true)
+ .Where(t => isFilterName ? t.Name == inQuery.Name : true)
+ .Where(t => isFilterReadingStatus ? t.ReadingStatus == inQuery.ReadingStatus : true)
+ .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA ? t.NeedSignClinicalDataCount == 0 : true)
+ .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete ? t.NeedSignClinicalDataCount != t.SignClinicalDataCount : true)
+ .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete ? t.NeedSignClinicalDataCount == t.SignClinicalDataCount : true)
+
+ //搜索条件报错
+ //.WhereIf(inQuery.ModuleType != null, t => t.ModuleType == inQuery.ModuleType)
+ //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA, x => x.NeedSignClinicalDataCount == 0)
+ //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete, x => x.NeedSignClinicalDataCount != x.SignClinicalDataCount)
+ //.WhereIf(inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete, x => x.NeedSignClinicalDataCount != 0 && x.NeedSignClinicalDataCount == x.SignClinicalDataCount)
+ //.WhereIf(inQuery.ReadingStatus != null, x => x.ReadingStatus == inQuery.ReadingStatus)
+ .ToList(),
+
+ //阅片期
+ ReadMouduleData = t.ReadModuleList.Select(rm => new ReadModuleView()
+ {
+ Id = rm.Id,
+ CreateTime = rm.CreateTime,
+ PDState = PDStateEnum.None,
+ IsBaseLine = false,
+ SubjectCode = rm.SubjectVisit.Subject.Code,
+ IsEnrollmentConfirm = false,
+ IsFinalVisit = false,
+ SubjectId = rm.SubjectId,
+ SubjectVisitId = rm.SubjectVisitId,
+ IsUrgent = rm.SubjectVisit.IsUrgent,
+ SubjectVisitName = rm.SubjectVisit.VisitName,
+ IsVisit = false,
+
+ Name = rm.ModuleName,
+ TrialSiteId = rm.Subject.TrialSiteId,
+ TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
+
+ TrialId = rm.TrialId,
+ VisitNum = rm.SubjectVisit.VisitNum,
+ TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ OutPlanPreviousVisitId = null,
+
+ OutPlanPreviousVisitName = null,
+
+ ModuleType = rm.ModuleType,
+
+ //只有阅片期有
+ CutOffVisitId = rm.SubjectVisit.Id,
+ CutOffVisitName = rm.SubjectVisit.VisitName,
+ ReadingSetType = null,
+
+ //之前视图返回的null 应该是没用的?
+ ReadModuleId = rm.Id,
+ ReadModuleName = rm.ModuleName,
+
+ //是否是截止访视?
+ IsCanChangeCutOffVisit = false,
+
+
+ ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
+ (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+
+ (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate
+ )
+ ),
- }); ;
-
- var pageList = await query.ToPagedListAsync(inQuery);
- return ResponseOutput.Ok(pageList);
+ //需要签名数量计算 基线包含subject+访视级别的
+ NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Count()
+ +
+ (rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.CRC &&
+ (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Any() ? 1 : 0)
+ ,
+
+ //签名的数量
+
+ SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
+ t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ +
+ (rm.IsPMConfirm ? 1 : 0),
+
+
+ //标准名 应该是可以不查询的,只要保证逻辑正确
+ CriterionName = criterionInfo.CriterionName
+
+ })
+ .Where(t => isFilterModuleType ? t.ModuleType == inQuery.ModuleType : true)
+ .Where(t => isFilterName ? t.Name == inQuery.Name : true)
+ .Where(t => isFilterReadingStatus ? t.ReadingStatus == inQuery.ReadingStatus : true)
+ .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NA ? t.NeedSignClinicalDataCount == 0 : true)
+ .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.NotComplete ? t.NeedSignClinicalDataCount != t.SignClinicalDataCount : true)
+ .Where(t => isFilterCompleteClinicalData && inQuery.CompleteClinicalData == CompleteClinicalDataEnum.Complete ? t.NeedSignClinicalDataCount == t.SignClinicalDataCount : true)
+ .ToList()
+
+ #endregion
+
+ #region 用union 报错不行的
+
+ ////访视要查询不失访的其次要查在 <= 截止访视的,截止访视没有就查这个受试者所有的
+ //Data = t.SubjectVisitList.Where(t => t.IsLostVisit == false)
+ //.Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
+ //{
+ // Id = sv.Id,
+ // CreateTime = sv.CreateTime,
+ // PDState = sv.PDState,
+ // IsBaseLine = sv.IsBaseLine,
+ // SubjectCode = sv.Subject.Code,
+ // IsEnrollmentConfirm = sv.IsEnrollmentConfirm,
+ // IsFinalVisit = sv.IsFinalVisit,
+ // SubjectId = sv.SubjectId,
+ // SubjectVisitId = sv.Id,
+ // IsUrgent = sv.IsUrgent,
+ // SubjectVisitName = sv.VisitName,
+ // IsVisit = true,
+
+ // Name = sv.VisitName,
+ // TrialSiteId = sv.TrialSiteId,
+ // TrialSiteCode = sv.TrialSite.TrialSiteCode,
+
+ // TrialId = sv.TrialId,
+ // VisitNum = sv.VisitNum,
+ // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ // OutPlanPreviousVisitId = sv.OutPlanPreviousVisitId,
+
+ // OutPlanPreviousVisitName = sv.OutPlanPreviousVisit.VisitName,
+
+ // ModuleType = sv.InPlan ? ModuleTypeEnum.InPlanSubjectVisit : ModuleTypeEnum.OutPlanSubjectVisit,
+
+ // //只有阅片期有
+ // CutOffVisitId = null,
+ // CutOffVisitName = null,
+ // ReadingSetType = null,
+ // ReadModuleId = null,
+ // ReadModuleName = "",
+
+
+ // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ // ReadingStatus = sv.ReadingStatus < ReadingStatusEnum.TaskAllocate ? sv.ReadingStatus :
+ // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+ // (sv.VisitTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate)),
+
+
+
+ // //是否是截止访视?
+ // IsCanChangeCutOffVisit = false,
+
+ // //需要签名数量计算 基线包含subject+访视级别的
+ // NeedSignClinicalDataCount = sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true).
+ // Where(t => sv.IsBaseLine ? t.TrialClinicalDataSet.ClinicalDataLevel <= ClinicalLevel.SubjectVisit : t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.SubjectVisit).Count()
+ // + (sv.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList).Where(t => t.TrialClinicalDataSet.IsConfirm == true)
+ // .Any(t => t.TrialClinicalDataSet.ClinicalDataLevel == ClinicalLevel.Study) ? 1 : 0),
+
+ // //签名的数量
+
+ // SignClinicalDataCount = sv.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.ClinicalDataLevel != ClinicalLevel.Study &&
+ // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ // +
+ // (sv.SubmitState == SubmitStateEnum.Submitted && sv.Trial.ClinicalDataTrialSetList
+ // .Any(t => t.ClinicalDataLevel == ClinicalLevel.Study && t.TrialClinicalDataSetCriteriaList.Any(u => u.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)) ? 1 : 0),
+
+
+
+
+
+ // //标准名 应该是可以不查询的,只要保证逻辑正确
+ // CriterionName = criterionInfo.CriterionName
+
+
+ //})
+ //.Union(t.ReadModuleList.AsQueryable().Select(rm => new ReadModuleView()
+ //{
+ // Id = rm.Id,
+ // CreateTime = rm.CreateTime,
+ // PDState = PDStateEnum.None,
+ // IsBaseLine = false,
+ // SubjectCode = rm.SubjectVisit.Subject.Code,
+ // IsEnrollmentConfirm = false,
+ // IsFinalVisit = false,
+ // SubjectId = rm.SubjectId,
+ // SubjectVisitId = rm.SubjectVisitId,
+ // IsUrgent = rm.SubjectVisit.IsUrgent,
+ // SubjectVisitName = rm.SubjectVisit.VisitName,
+ // IsVisit = false,
+
+ // Name = rm.ModuleName,
+ // TrialSiteId = rm.Subject.TrialSiteId,
+ // TrialSiteCode = rm.Subject.TrialSite.TrialSiteCode,
+
+ // TrialId = rm.TrialId,
+ // VisitNum = rm.SubjectVisit.VisitNum,
+ // TrialReadingCriterionId = inQuery.TrialReadingCriterionId,
+
+ // OutPlanPreviousVisitId = null,
+
+ // OutPlanPreviousVisitName = null,
+
+ // ModuleType = rm.ModuleType,
+
+ // //只有阅片期有
+ // CutOffVisitId = rm.SubjectVisit.Id,
+ // CutOffVisitName = rm.SubjectVisit.VisitName,
+ // ReadingSetType = null,
+
+ // //之前视图返回的null 应该是没用的?
+ // ReadModuleId = rm.Id,
+ // ReadModuleName = rm.ModuleName,
+
+ // //是否是截止访视?
+ // IsCanChangeCutOffVisit = false,
+
+
+ // ///阅片状态 0 1 2 保持访视的,任务全做完了就是5 没完成就是4 否则就是3
+ // ReadingStatus = rm.ReadingStatus < ReadingStatusEnum.TaskAllocate ? rm.ReadingStatus :
+ // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.ReadingTaskState == ReadingTaskState.HaveSigned
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ReadCompleted :
+
+ // (rm.ModuleTaskList.Count(t => t.TaskState == TaskState.Effect && t.IsAnalysisCreate == false && t.TaskAllocationState == TaskAllocationState.Allocated
+ // && t.ReadingCategory != ReadingCategory.Judge && t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId) == readingType ? ReadingStatusEnum.ImageReading : ReadingStatusEnum.TaskAllocate
+ // )
+ // ),
+
+
+
+
+
+ // //需要签名数量计算 基线包含subject+访视级别的
+ // NeedSignClinicalDataCount = rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.PM && (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Count()
+ // +
+ // (rm.Trial.TrialReadingCriterionList.Where(t => t.Id == inQuery.TrialReadingCriterionId).SelectMany(u => u.TrialClinicalDataSetCriterionList.Select(z => z.TrialClinicalDataSet))
+ // .Where(t => t.IsConfirm == true && t.UploadRole == UploadRole.CRC &&
+ // (t.ClinicalDataLevel == ClinicalLevel.SubjectVisit || t.ClinicalDataLevel == ClinicalLevel.ImageRead || t.ClinicalDataLevel == ClinicalLevel.OncologyRead)).Any() ? 1 : 0)
+ // ,
+
+ // //签名的数量
+
+ // SignClinicalDataCount = rm.ReadingClinicalDataList.Where(t => t.IsSign == true && t.ClinicalDataTrialSet.UploadRole == UploadRole.PM &&
+ // t.ClinicalDataTrialSet.TrialClinicalDataSetCriteriaList.Any(t => t.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)).Count()
+ // +
+ // (rm.IsPMConfirm ? 1 : 0),
+
+
+ // //标准名 应该是可以不查询的,只要保证逻辑正确
+ // CriterionName = criterionInfo.CriterionName
+
+ //})).ToList()
+
+ #endregion
+
+
+
+
+
+
+ });
+
+ var pageList = await query.Where(t=> (t.VisitData.Count + t.ReadMouduleData.Count)>0)
+ .ToPagedListAsync(inQuery);
+
+
+ return ResponseOutput.Ok(pageList, new
+ {
+ MaxLength = pageList.CurrentPageData.MaxOrDefault(t => t.Data.Count(),0),
+ IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder,
+ IsClinicalReading = criterionInfo.IsOncologyReading,
+ // OnlyExistsMedicalHistory = !(await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == dto.TrialId && x.ClinicalDataSetName != "既往局部治疗史" && x.IsConfirm)),
+ IsExistsSubjectClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == inQuery.TrialId && x.ClinicalDataLevel == ClinicalLevel.Subject && x.IsConfirm && x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)),
+ IsExistsVisitClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == inQuery.TrialId && x.ClinicalDataLevel == ClinicalLevel.SubjectVisit && x.IsConfirm && x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)),
+ IsExistsStudyClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == inQuery.TrialId && x.ClinicalDataLevel == ClinicalLevel.Study && x.IsConfirm && x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)),
+ IsExistsReadingClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == inQuery.TrialId && x.ClinicalDataLevel == ClinicalLevel.ImageRead && x.IsConfirm && x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)),
+ IsExistsOncologyReadClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.TrialId == inQuery.TrialId && x.ClinicalDataLevel == ClinicalLevel.OncologyRead && x.IsConfirm && x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)),
+ IsGlobalReading = criterionInfo.IsGlobalReading,
+ IsReadingPeriod = criterionInfo.IsReadingPeriod,
+ ReadingInfoSignTime = criterionInfo.ReadingInfoSignTime,
+ ExistClinicalData = await _clinicalDataTrialSetRepository.AnyAsync(x => x.IsConfirm && x.TrialClinicalDataSetCriteriaList.Any(y => y.TrialReadingCriterionId == inQuery.TrialReadingCriterionId)),
+ });
}
///
/// 获取读片模块 //加了标准参数
///
[HttpPost]
- public async Task<(PageOutput, object)> GetReadModuleList(GetReadModuleDto dto)
+ public async Task>> GetReadModuleList(GetReadModuleDto dto)
{
#region MyRegion
@@ -268,7 +569,7 @@ namespace IRaCIS.Application.Services
x.ReadingInfoSignTime,
}).FirstNotNullAsync();
- return (pageOutput, new
+ return ResponseOutput.Ok(pageOutput, new
{
MaxLength = maxcount,
IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder,
@@ -305,7 +606,7 @@ namespace IRaCIS.Application.Services
TrialReadingCriterionId = dto.TrialReadingCriterionId,
});
- GetReadModuleSingleOutdto? readModule = data.Item1.CurrentPageData.FirstOrDefault().Data.Where(x => x.Id == dto.Id).Select(x => new GetReadModuleSingleOutdto()
+ GetReadModuleSingleOutdto? readModule = data.Data.CurrentPageData.FirstOrDefault().Data.Where(x => x.Id == dto.Id).Select(x => new GetReadModuleSingleOutdto()
{
Id = x.Id,
ModuleType = x.ModuleType,
diff --git a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs
index c05a12219..954b857db 100644
--- a/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs
+++ b/IRaCIS.Core.Domain/Reading/ReadingPeriod/ReadModule.cs
@@ -51,10 +51,13 @@ namespace IRaCIS.Core.Domain.Models
public List ModuleTaskList { get; set; }
[JsonIgnore]
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
+
+ [JsonIgnore]
+ public List ReadingClinicalDataList { get; set; }
#endregion
- public Guid SubjectId { get; set; }
+ public Guid SubjectId { get; set; }
public Guid TrialReadingCriterionId { get; set; }
diff --git a/IRaCIS.Core.Domain/Trial/Trial.cs b/IRaCIS.Core.Domain/Trial/Trial.cs
index 2c266cb05..37c384ca9 100644
--- a/IRaCIS.Core.Domain/Trial/Trial.cs
+++ b/IRaCIS.Core.Domain/Trial/Trial.cs
@@ -80,7 +80,6 @@ namespace IRaCIS.Core.Domain.Models
//public List TrialClinicalDataSetCriterionList { get; set; }
[JsonIgnore]
-
public List ClinicalDataTrialSetList { get; set; } = new List { };
[JsonIgnore]
public List ClinicalTrialProjectDetails { get; set; } = new List { };