视图调整修复
continuous-integration/drone/push Build is passing
Details
continuous-integration/drone/push Build is passing
Details
parent
42e3b0df45
commit
8afd215957
|
@ -523,6 +523,25 @@
|
||||||
系统模板文档配置表
|
系统模板文档配置表
|
||||||
</summary>
|
</summary>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="T:IRaCIS.Core.Application.Service.Common.DevelopService">
|
||||||
|
<summary>
|
||||||
|
开始时候一些帮助 比如根据配置的字典生成枚举
|
||||||
|
</summary>
|
||||||
|
<param name="_dictionaryRepository"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Common.DevelopService.#ctor(IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Dictionary})">
|
||||||
|
<summary>
|
||||||
|
开始时候一些帮助 比如根据配置的字典生成枚举
|
||||||
|
</summary>
|
||||||
|
<param name="_dictionaryRepository"></param>
|
||||||
|
</member>
|
||||||
|
<member name="M:IRaCIS.Core.Application.Service.Common.DevelopService.BackDicGenerateEnum(System.String)">
|
||||||
|
<summary>
|
||||||
|
根据配置的字典名生成后端枚举
|
||||||
|
</summary>
|
||||||
|
<param name="dicName"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.TrialUserListExport(IRaCIS.Application.Contracts.TrialMaintenanceExportQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser})">
|
<member name="M:IRaCIS.Core.Application.Service.Common.ExcelExportService.TrialUserListExport(IRaCIS.Application.Contracts.TrialMaintenanceExportQuery,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.CommonDocument},IRaCIS.Application.Interfaces.IDictionaryService,IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.Trial},IRaCIS.Core.Infra.EFCore.IRepository{IRaCIS.Core.Domain.Models.TrialUser})">
|
||||||
<summary>
|
<summary>
|
||||||
项目参与人员导出
|
项目参与人员导出
|
||||||
|
@ -15359,6 +15378,13 @@
|
||||||
<param name="inDto"></param>
|
<param name="inDto"></param>
|
||||||
<returns></returns>
|
<returns></returns>
|
||||||
</member>
|
</member>
|
||||||
|
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleList_New(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)">
|
||||||
|
<summary>
|
||||||
|
用ef 实现之前视图的功能
|
||||||
|
</summary>
|
||||||
|
<param name="inQuery"></param>
|
||||||
|
<returns></returns>
|
||||||
|
</member>
|
||||||
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleList(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)">
|
<member name="M:IRaCIS.Application.Services.ReadModuleService.GetReadModuleList(IRaCIS.Core.Application.Service.Reading.Dto.GetReadModuleDto)">
|
||||||
<summary>
|
<summary>
|
||||||
获取读片模块 //加了标准参数
|
获取读片模块 //加了标准参数
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
using IRaCIS.Core.Domain.Share;
|
using IRaCIS.Core.Domain.Share;
|
||||||
|
using Newtonsoft.Json;
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
@ -268,7 +269,15 @@ namespace IRaCIS.Core.Application.Service.Reading.Dto
|
||||||
|
|
||||||
public Guid? SubjectId { get; set; }
|
public Guid? SubjectId { get; set; }
|
||||||
|
|
||||||
public List<ReadModuleView> Data { get; set; }
|
public List<ReadModuleView> Data { get; set; } = new List<ReadModuleView>();
|
||||||
|
|
||||||
|
//public List<ReadModuleView> Data =>VisitData.Union(ReadMouduleData).ToList();
|
||||||
|
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadModuleView> VisitData { get; set; } = new List<ReadModuleView>();
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadModuleView> ReadMouduleData { get; set; } = new List<ReadModuleView>();
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -9,6 +9,7 @@ using IRaCIS.Core.Application.ViewModel;
|
||||||
using IRaCIS.Core.Infrastructure;
|
using IRaCIS.Core.Infrastructure;
|
||||||
using IRaCIS.Core.Application.Filter;
|
using IRaCIS.Core.Application.Filter;
|
||||||
using IRaCIS.Core.Domain.Models;
|
using IRaCIS.Core.Domain.Models;
|
||||||
|
using Microsoft.Identity.Client;
|
||||||
|
|
||||||
namespace IRaCIS.Application.Services
|
namespace IRaCIS.Application.Services
|
||||||
{
|
{
|
||||||
|
@ -100,14 +101,33 @@ namespace IRaCIS.Application.Services
|
||||||
return await _readModuleRepository.SaveChangesAsync();
|
return await _readModuleRepository.SaveChangesAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// 用ef 实现之前视图的功能
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="inQuery"></param>
|
||||||
|
/// <returns></returns>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<IResponseOutput<PageOutput<GetReadModuleDtoOut>>> GetReadModuleList_New(GetReadModuleDto inQuery)
|
public async Task<IResponseOutput<PageOutput<GetReadModuleDtoOut>>> 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 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)
|
var query = _subjectRepository.Where(t => t.TrialId == inQuery.TrialId)
|
||||||
.WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
|
.WhereIf(inQuery.SubjectId != null, x => x.Id == inQuery.SubjectId)
|
||||||
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
|
.WhereIf(!string.IsNullOrWhiteSpace(inQuery.TrialSiteCode), x => x.TrialSite.TrialSiteCode.Contains(inQuery.TrialSiteCode))
|
||||||
|
@ -120,8 +140,11 @@ namespace IRaCIS.Application.Services
|
||||||
TrialSiteCode = t.TrialSite.TrialSiteCode,
|
TrialSiteCode = t.TrialSite.TrialSiteCode,
|
||||||
TrialSiteId = t.TrialSiteId,
|
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()
|
.Where(sv => t.FinalSubjectVisitId == null ? true : sv.VisitNum < t.LatestSubjectVisit.VisitNum).Select(sv => new ReadModuleView()
|
||||||
{
|
{
|
||||||
Id = sv.Id,
|
Id = sv.Id,
|
||||||
|
@ -193,23 +216,301 @@ namespace IRaCIS.Application.Services
|
||||||
CriterionName = criterionInfo.CriterionName
|
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)),
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// 获取读片模块 //加了标准参数
|
/// 获取读片模块 //加了标准参数
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
public async Task<(PageOutput<GetReadModuleDtoOut>, object)> GetReadModuleList(GetReadModuleDto dto)
|
public async Task<IResponseOutput<PageOutput<GetReadModuleDtoOut>>> GetReadModuleList(GetReadModuleDto dto)
|
||||||
{
|
{
|
||||||
|
|
||||||
#region MyRegion
|
#region MyRegion
|
||||||
|
@ -268,7 +569,7 @@ namespace IRaCIS.Application.Services
|
||||||
x.ReadingInfoSignTime,
|
x.ReadingInfoSignTime,
|
||||||
}).FirstNotNullAsync();
|
}).FirstNotNullAsync();
|
||||||
|
|
||||||
return (pageOutput, new
|
return ResponseOutput.Ok(pageOutput, new
|
||||||
{
|
{
|
||||||
MaxLength = maxcount,
|
MaxLength = maxcount,
|
||||||
IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder,
|
IsReadingTaskViewInOrder = criterionInfo.IsReadingTaskViewInOrder,
|
||||||
|
@ -305,7 +606,7 @@ namespace IRaCIS.Application.Services
|
||||||
TrialReadingCriterionId = dto.TrialReadingCriterionId,
|
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,
|
Id = x.Id,
|
||||||
ModuleType = x.ModuleType,
|
ModuleType = x.ModuleType,
|
||||||
|
|
|
@ -51,6 +51,9 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
public List<VisitTask> ModuleTaskList { get; set; }
|
public List<VisitTask> ModuleTaskList { get; set; }
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
public ReadingQuestionCriterionTrial TrialReadingCriterion { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public List<ReadingClinicalData> ReadingClinicalDataList { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -80,7 +80,6 @@ namespace IRaCIS.Core.Domain.Models
|
||||||
//public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterionList { get; set; }
|
//public List<TrialClinicalDataSetCriterion> TrialClinicalDataSetCriterionList { get; set; }
|
||||||
|
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
|
|
||||||
public List<ClinicalDataTrialSet> ClinicalDataTrialSetList { get; set; } = new List<ClinicalDataTrialSet> { };
|
public List<ClinicalDataTrialSet> ClinicalDataTrialSetList { get; set; } = new List<ClinicalDataTrialSet> { };
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public List<TrialStatusDetail> ClinicalTrialProjectDetails { get; set; } = new List<TrialStatusDetail> { };
|
public List<TrialStatusDetail> ClinicalTrialProjectDetails { get; set; } = new List<TrialStatusDetail> { };
|
||||||
|
|
Loading…
Reference in New Issue